├── .clang-format ├── .dockerignore ├── .github └── workflows │ ├── build.yml │ ├── monitor-eiafx-config.yml │ └── update-contracts.yml ├── .gitignore ├── .prettierrc.json ├── COPYING ├── Dockerfile ├── Makefile ├── README.md ├── api ├── computed.go ├── egginc.pb.go ├── egginc.proto ├── icons.go └── request.go ├── artifacts ├── effect_numbers.go ├── effect_numbers.py └── effects.go ├── cmd ├── afx_config.go ├── backup.go ├── config.go ├── contracts.go ├── ei_config.go ├── events.go ├── peek.go ├── peeked.go ├── refresh.go ├── root.go ├── serve.go ├── status.go └── units.go ├── config └── config.go ├── contract └── progress.go ├── coop ├── activity.go ├── display.go ├── sort.go └── wrap.go ├── css ├── app.css └── components │ ├── AutoRefreshToggle.css │ ├── CoopTable.css │ └── EventTable.css ├── db ├── backup.go ├── coop.go ├── crud.go ├── init.go ├── migrate.go └── types.go ├── demo ├── _redirects ├── favicon.ico ├── index-by-1608802500.html ├── index.html ├── peek │ └── space-bots-2020 │ │ └── XXXXXXXXX │ │ └── index.html ├── peeked │ └── index.html └── static │ ├── app.83da2b39.css │ ├── coop.78e819b5.js │ ├── favicon-180.png │ └── peeker.3d7c0e74.js ├── docker-compose.yml ├── go.mod ├── go.sum ├── js ├── CoopTable.vue ├── app.js ├── coop.js ├── events.js ├── index.js ├── peeker.js └── utils.js ├── main.go ├── migrations ├── 1_init_schema.up.sql ├── 2_add_contract_first_seen_timestamp.up.sql ├── 3_add_contract_expiry_timestamp.up.sql ├── 4_add_index_coop_status_timestamp.up.sql ├── 5_add_contract_expiry_month.up.sql └── 6_rebuild_event.up.sql ├── misc ├── ContractAggregator │ ├── .gitignore │ ├── Makefile │ ├── README.md │ ├── contracts.go │ ├── csv.go │ ├── data │ │ └── contracts.csv │ ├── go.mod │ ├── go.sum │ ├── main.go │ ├── migrations │ └── utils.go └── protobuf │ ├── README.md │ └── ei.proto ├── notify ├── contract.go ├── notify.go └── pushover.go ├── package.json ├── port └── wasm │ ├── README.md │ └── _common │ └── eiafx │ ├── .gitignore │ ├── Makefile │ ├── cmd │ └── monitor │ │ ├── go.mod │ │ ├── go.sum │ │ └── main.go │ ├── config.go │ ├── eiafx-config.json │ ├── eiafx-config.txt │ ├── eiafx-data.json │ └── eiafx.go ├── postcss.config.js ├── solo ├── capacity.go ├── contract.go ├── display.go ├── pb │ ├── computed.go │ ├── solo.pb.go │ └── solo.proto ├── player.go ├── rate.go └── serialized.go ├── static ├── .gitignore ├── egginc-extras │ ├── README.md │ ├── icon_golden_egg.png │ ├── icon_piggy_golden_egg.png │ ├── icon_piggy_level_up.png │ └── icon_piggy_multiply.png ├── egginc │ ├── README.md │ ├── afx.png │ ├── afx_alien_wood_1.png │ ├── afx_alien_wood_2.png │ ├── afx_alien_wood_3.png │ ├── afx_ancient_tungsten_1.png │ ├── afx_ancient_tungsten_2.png │ ├── afx_ancient_tungsten_3.png │ ├── afx_aurelian_brooch_1.png │ ├── afx_aurelian_brooch_2.png │ ├── afx_aurelian_brooch_3.png │ ├── afx_aurelian_brooch_4.png │ ├── afx_beak_of_midas_1.png │ ├── afx_beak_of_midas_2.png │ ├── afx_beak_of_midas_3.png │ ├── afx_beak_of_midas_4.png │ ├── afx_book_of_basan_1.png │ ├── afx_book_of_basan_2.png │ ├── afx_book_of_basan_3.png │ ├── afx_book_of_basan_4.png │ ├── afx_carved_rainstick_1.png │ ├── afx_carved_rainstick_2.png │ ├── afx_carved_rainstick_3.png │ ├── afx_carved_rainstick_4.png │ ├── afx_celestial_bronze_1.png │ ├── afx_celestial_bronze_2.png │ ├── afx_celestial_bronze_3.png │ ├── afx_centaurian_steel_1.png │ ├── afx_centaurian_steel_2.png │ ├── afx_centaurian_steel_3.png │ ├── afx_clarity_stone_1.png │ ├── afx_clarity_stone_2.png │ ├── afx_clarity_stone_3.png │ ├── afx_clarity_stone_4.png │ ├── afx_demeters_necklace_1.png │ ├── afx_demeters_necklace_2.png │ ├── afx_demeters_necklace_3.png │ ├── afx_demeters_necklace_4.png │ ├── afx_dilithium_monocle_1.png │ ├── afx_dilithium_monocle_2.png │ ├── afx_dilithium_monocle_3.png │ ├── afx_dilithium_monocle_4.png │ ├── afx_dilithium_stone_1.png │ ├── afx_dilithium_stone_2.png │ ├── afx_dilithium_stone_3.png │ ├── afx_dilithium_stone_4.png │ ├── afx_eridani_feather_1.png │ ├── afx_eridani_feather_2.png │ ├── afx_eridani_feather_3.png │ ├── afx_et_aluminum_1.png │ ├── afx_et_aluminum_2.png │ ├── afx_et_aluminum_3.png │ ├── afx_gold_meteorite_1.png │ ├── afx_gold_meteorite_2.png │ ├── afx_gold_meteorite_3.png │ ├── afx_interstellar_compass_1.png │ ├── afx_interstellar_compass_2.png │ ├── afx_interstellar_compass_3.png │ ├── afx_interstellar_compass_4.png │ ├── afx_lalande_hide_1.png │ ├── afx_lalande_hide_2.png │ ├── afx_lalande_hide_3.png │ ├── afx_life_stone_1.png │ ├── afx_life_stone_2.png │ ├── afx_life_stone_3.png │ ├── afx_life_stone_4.png │ ├── afx_light_eggendil_1.png │ ├── afx_light_eggendil_2.png │ ├── afx_light_eggendil_3.png │ ├── afx_light_eggendil_4.png │ ├── afx_lunar_stone_1.png │ ├── afx_lunar_stone_2.png │ ├── afx_lunar_stone_3.png │ ├── afx_lunar_stone_4.png │ ├── afx_lunar_totem_1.png │ ├── afx_lunar_totem_2.png │ ├── afx_lunar_totem_3.png │ ├── afx_lunar_totem_4.png │ ├── afx_mercurys_lens_1.png │ ├── afx_mercurys_lens_2.png │ ├── afx_mercurys_lens_3.png │ ├── afx_mercurys_lens_4.png │ ├── afx_neo_medallion_1.png │ ├── afx_neo_medallion_2.png │ ├── afx_neo_medallion_3.png │ ├── afx_neo_medallion_4.png │ ├── afx_ornate_gusset_1.png │ ├── afx_ornate_gusset_2.png │ ├── afx_ornate_gusset_3.png │ ├── afx_ornate_gusset_4.png │ ├── afx_phoenix_feather_1.png │ ├── afx_phoenix_feather_2.png │ ├── afx_phoenix_feather_3.png │ ├── afx_phoenix_feather_4.png │ ├── afx_prophecy_stone_1.png │ ├── afx_prophecy_stone_2.png │ ├── afx_prophecy_stone_3.png │ ├── afx_prophecy_stone_4.png │ ├── afx_puzzle_cube_1.png │ ├── afx_puzzle_cube_2.png │ ├── afx_puzzle_cube_3.png │ ├── afx_puzzle_cube_4.png │ ├── afx_quantum_metronome_1.png │ ├── afx_quantum_metronome_2.png │ ├── afx_quantum_metronome_3.png │ ├── afx_quantum_metronome_4.png │ ├── afx_quantum_stone_1.png │ ├── afx_quantum_stone_2.png │ ├── afx_quantum_stone_3.png │ ├── afx_quantum_stone_4.png │ ├── afx_shell_stone_1.png │ ├── afx_shell_stone_2.png │ ├── afx_shell_stone_3.png │ ├── afx_shell_stone_4.png │ ├── afx_ship_bcr.png │ ├── afx_ship_chicken_1.png │ ├── afx_ship_chicken_9.png │ ├── afx_ship_chicken_heavy.png │ ├── afx_ship_corellihen_corvette.png │ ├── afx_ship_defihent.png │ ├── afx_ship_galeggtica.png │ ├── afx_ship_henerprise.png │ ├── afx_ship_in_a_bottle_1.png │ ├── afx_ship_in_a_bottle_2.png │ ├── afx_ship_in_a_bottle_3.png │ ├── afx_ship_in_a_bottle_4.png │ ├── afx_ship_millenium_chicken.png │ ├── afx_ship_voyegger.png │ ├── afx_solar_titanium_1.png │ ├── afx_solar_titanium_2.png │ ├── afx_solar_titanium_3.png │ ├── afx_soul_stone_1.png │ ├── afx_soul_stone_2.png │ ├── afx_soul_stone_3.png │ ├── afx_soul_stone_4.png │ ├── afx_space_rocks_1.png │ ├── afx_space_rocks_2.png │ ├── afx_space_rocks_3.png │ ├── afx_spaceship_placeholder.png │ ├── afx_tachyon_deflector_1.png │ ├── afx_tachyon_deflector_2.png │ ├── afx_tachyon_deflector_3.png │ ├── afx_tachyon_deflector_4.png │ ├── afx_tachyon_stone_1.png │ ├── afx_tachyon_stone_2.png │ ├── afx_tachyon_stone_3.png │ ├── afx_tachyon_stone_4.png │ ├── afx_tau_ceti_geode_1.png │ ├── afx_tau_ceti_geode_2.png │ ├── afx_tau_ceti_geode_3.png │ ├── afx_terra_stone_1.png │ ├── afx_terra_stone_2.png │ ├── afx_terra_stone_3.png │ ├── afx_terra_stone_4.png │ ├── afx_the_chalice_1.png │ ├── afx_the_chalice_2.png │ ├── afx_the_chalice_3.png │ ├── afx_the_chalice_4.png │ ├── afx_titanium_actuator_1.png │ ├── afx_titanium_actuator_2.png │ ├── afx_titanium_actuator_3.png │ ├── afx_titanium_actuator_4.png │ ├── afx_tungsten_ankh_1.png │ ├── afx_tungsten_ankh_2.png │ ├── afx_tungsten_ankh_3.png │ ├── afx_tungsten_ankh_4.png │ ├── afx_vial_martian_dust_1.png │ ├── afx_vial_martian_dust_2.png │ ├── afx_vial_martian_dust_3.png │ ├── afx_vial_martian_dust_4.png │ ├── b_icon_blank_check.png │ ├── b_icon_boost_beacon_blue.png │ ├── b_icon_boost_beacon_blue_big.png │ ├── b_icon_boost_beacon_orange.png │ ├── b_icon_boost_beacon_purple.png │ ├── b_icon_jimbos_blue.png │ ├── b_icon_jimbos_blue_big.png │ ├── b_icon_jimbos_orange.png │ ├── b_icon_jimbos_orange_big.png │ ├── b_icon_jimbos_purple.png │ ├── b_icon_jimbos_purple_big.png │ ├── b_icon_money_printer.png │ ├── b_icon_quantum_bulb.png │ ├── b_icon_soul_beacon_blue.png │ ├── b_icon_soul_beacon_orange.png │ ├── b_icon_soul_beacon_purple.png │ ├── b_icon_soul_mirror_blue.png │ ├── b_icon_soul_mirror_orange.png │ ├── b_icon_soul_mirror_purple.png │ ├── b_icon_subsidy_application.png │ ├── b_icon_tachyon_prism_blue.png │ ├── b_icon_tachyon_prism_blue_big.png │ ├── b_icon_tachyon_prism_orange.png │ ├── b_icon_tachyon_prism_orange_big.png │ ├── b_icon_tachyon_prism_purple.png │ ├── b_icon_tachyon_prism_purple_big.png │ ├── b_icon_token.png │ ├── b_icon_token_package.png │ ├── b_icon_video.png │ ├── black.png │ ├── chicken_box.png │ ├── chicken_box_large.png │ ├── contract_bg.png │ ├── coop_diagram.png │ ├── egg_ai.png │ ├── egg_antimatter.png │ ├── egg_chocolate.png │ ├── egg_darkmatter.png │ ├── egg_dilithium.png │ ├── egg_easter.png │ ├── egg_edible.png │ ├── egg_enlightenment.png │ ├── egg_firework.png │ ├── egg_fusion.png │ ├── egg_graviton.png │ ├── egg_immortality.png │ ├── egg_medical.png │ ├── egg_medical2.png │ ├── egg_of_prophecy.png │ ├── egg_prodigy.png │ ├── egg_pumpkin.png │ ├── egg_quantum.png │ ├── egg_rocketfuel.png │ ├── egg_soul.png │ ├── egg_superfood.png │ ├── egg_supermaterial.png │ ├── egg_tachyon.png │ ├── egg_terraform.png │ ├── egg_universe.png │ ├── egg_unknown.png │ ├── egg_vision.png │ ├── egg_waterballoon.png │ ├── ei_app_icon.png │ ├── ei_hab_icon_bunker.png │ ├── ei_hab_icon_center.png │ ├── ei_hab_icon_chicken_universe.png │ ├── ei_hab_icon_coop.png │ ├── ei_hab_icon_double_decker.png │ ├── ei_hab_icon_eggkea.png │ ├── ei_hab_icon_eggtopia.png │ ├── ei_hab_icon_hab10k.png │ ├── ei_hab_icon_hab1k.png │ ├── ei_hab_icon_hanger.png │ ├── ei_hab_icon_long_house.png │ ├── ei_hab_icon_monolith.png │ ├── ei_hab_icon_portal.png │ ├── ei_hab_icon_shack.png │ ├── ei_hab_icon_short_house.png │ ├── ei_hab_icon_super_shack.png │ ├── ei_hab_icon_the_standard.png │ ├── ei_hab_icon_tower.png │ ├── ei_hab_icon_warehouse.png │ ├── ei_particles.png │ ├── ei_simple_gradient.png │ ├── ei_vehicle_icon_10ft.png │ ├── ei_vehicle_icon_24ft.png │ ├── ei_vehicle_icon_double_semi.png │ ├── ei_vehicle_icon_future_semi.png │ ├── ei_vehicle_icon_hover_semi.png │ ├── ei_vehicle_icon_hyperloop_car.png │ ├── ei_vehicle_icon_hyperloop_car_blank.png │ ├── ei_vehicle_icon_hyperloop_engine.png │ ├── ei_vehicle_icon_mega_semi.png │ ├── ei_vehicle_icon_pickup.png │ ├── ei_vehicle_icon_quantum_transporter.png │ ├── ei_vehicle_icon_semi.png │ ├── ei_vehicle_icon_transit_van.png │ ├── ei_vehicle_icon_trike.png │ ├── finger_point.png │ ├── finger_point2.png │ ├── free_permit.png │ ├── golden_egg_box.png │ ├── golden_egg_crate.png │ ├── golden_egg_pallet.png │ ├── icon_afx_chest_1.png │ ├── icon_afx_chest_2.png │ ├── icon_afx_chest_3.png │ ├── icon_afx_consume.png │ ├── icon_afx_craft.png │ ├── icon_afx_mission.png │ ├── icon_afx_set.png │ ├── icon_afx_stone_add.png │ ├── icon_afx_stone_add_large.png │ ├── icon_afx_stone_check.png │ ├── icon_afx_stone_remove.png │ ├── icon_arrow.png │ ├── icon_bock.png │ ├── icon_bock_v.png │ ├── icon_boost_shop.png │ ├── icon_boost_token_flat.png │ ├── icon_calendar.png │ ├── icon_camera.png │ ├── icon_cash_pile.png │ ├── icon_cash_stack.png │ ├── icon_cash_ton.png │ ├── icon_check_mark_overlay.png │ ├── icon_checkbox.png │ ├── icon_checkbox_checked.png │ ├── icon_chick.png │ ├── icon_coop.png │ ├── icon_credits.png │ ├── icon_disclosure.png │ ├── icon_egg_flow.png │ ├── icon_eggs_4_dozen.png │ ├── icon_eggs_dozen.png │ ├── icon_eggs_half_dozen.png │ ├── icon_eggs_truckload.png │ ├── icon_elite_contracts.png │ ├── icon_farm_to_table.png │ ├── icon_gc.png │ ├── icon_gift.png │ ├── icon_golden_egg1000.png │ ├── icon_gpgs_achievements.png │ ├── icon_gpgs_icon.png │ ├── icon_gpgs_leaderboards.png │ ├── icon_gpgs_quests.png │ ├── icon_hatchery_refill.png │ ├── icon_help.png │ ├── icon_home_farm.png │ ├── icon_inf.png │ ├── icon_info.png │ ├── icon_info_black.png │ ├── icon_larrow.png │ ├── icon_lightbulb.png │ ├── icon_logout.png │ ├── icon_mini_farm.png │ ├── icon_mission_complete_big.png │ ├── icon_more_games.png │ ├── icon_newspaper.png │ ├── icon_official_mail.png │ ├── icon_package.png │ ├── icon_piggy.png │ ├── icon_play.png │ ├── icon_play_2x.png │ ├── icon_player.png │ ├── icon_rarrow.png │ ├── icon_return_arrow.png │ ├── icon_settings.png │ ├── icon_share_droid.png │ ├── icon_share_ios.png │ ├── icon_small_arrow.png │ ├── icon_sort.png │ ├── icon_star.png │ ├── icon_stats.png │ ├── icon_trophy.png │ ├── icon_trophy_bronze.png │ ├── icon_trophy_diamond.png │ ├── icon_trophy_gold.png │ ├── icon_trophy_plat.png │ ├── icon_trophy_silver.png │ ├── icon_unlimited_chickens.png │ ├── icon_warp_long.png │ ├── icon_warp_short.png │ ├── icon_wb_package.png │ ├── icon_zzz.png │ ├── national_eggquirer.png │ ├── new_yolk_times.png │ ├── piggy_bank.png │ ├── piggy_bank1.png │ ├── piggy_bank2.png │ ├── piggy_bank3.png │ ├── piggy_bank4.png │ ├── piggy_bank5.png │ ├── piggy_bank6.png │ ├── piggy_bank7.png │ ├── pro_permit.png │ ├── r_icon_accounting_tricks.png │ ├── r_icon_atomic_purification.png │ ├── r_icon_autonomous_vehicles.png │ ├── r_icon_better_incubators.png │ ├── r_icon_better_incubators2.png │ ├── r_icon_bust_unions.png │ ├── r_icon_cheaper_contractors.png │ ├── r_icon_comfortable_nests.png │ ├── r_icon_compact_incubators.png │ ├── r_icon_coordinated_clucking.png │ ├── r_icon_crystalline_shelling.png │ ├── r_icon_dark_containment.png │ ├── r_icon_double_egg_size.png │ ├── r_icon_driver_training.png │ ├── r_icon_drone_rewards.png │ ├── r_icon_egg_bots.png │ ├── r_icon_egg_quality.png │ ├── r_icon_egg_quality2.png │ ├── r_icon_eggsistor_miniturization.png │ ├── r_icon_enlightened_chickens.png │ ├── r_icon_epic_clucking.png │ ├── r_icon_epic_egg_laying.png │ ├── r_icon_epic_hatchery.png │ ├── r_icon_epic_internal_hatchery.png │ ├── r_icon_epic_multiplier.png │ ├── r_icon_even_bigger_eggs.png │ ├── r_icon_excitable.png │ ├── r_icon_exoskeletons.png │ ├── r_icon_free_tuneups.png │ ├── r_icon_genetic_purification.png │ ├── r_icon_grav_plating.png │ ├── r_icon_gravitational_coupling.png │ ├── r_icon_graviton_coating.png │ ├── r_icon_hab_capacity.png │ ├── r_icon_hatchery_capacity.png │ ├── r_icon_hatchery_rebuild.png │ ├── r_icon_hen_house_ac.png │ ├── r_icon_hold_to_hatch.png │ ├── r_icon_hold_to_research.png │ ├── r_icon_hover_upgrades.png │ ├── r_icon_hyper_portalling.png │ ├── r_icon_improved_genetics.png │ ├── r_icon_improved_leafsprings.png │ ├── r_icon_internal_hatchery.png │ ├── r_icon_internal_hatchery2.png │ ├── r_icon_internal_hatchery_calm.png │ ├── r_icon_internal_hatchery_expansion.png │ ├── r_icon_internal_hatchery_expansion2.png │ ├── r_icon_internal_hatchery_sharing.png │ ├── r_icon_lab_upgrade.png │ ├── r_icon_lightweight_boxes.png │ ├── r_icon_machine_learning_incubators.png │ ├── r_icon_matter_reconfiguration.png │ ├── r_icon_microlux_suites.png │ ├── r_icon_motivational_clucking.png │ ├── r_icon_multiversal_layering.png │ ├── r_icon_neural_linking.png │ ├── r_icon_neural_net_refinement.png │ ├── r_icon_os_mult.png │ ├── r_icon_os_mult2.png │ ├── r_icon_padded_packaging.png │ ├── r_icon_prestige_bonus.png │ ├── r_icon_prime_certification.png │ ├── r_icon_prophecy_bonus.png │ ├── r_icon_quantum_egg_storage.png │ ├── r_icon_relativity_optimization.png │ ├── r_icon_shell_fortification.png │ ├── r_icon_silo_capacity.png │ ├── r_icon_silo_quality.png │ ├── r_icon_soul_food.png │ ├── r_icon_super_alloy_frames.png │ ├── r_icon_superfeed.png │ ├── r_icon_supplements.png │ ├── r_icon_telepathic_will.png │ ├── r_icon_time_compression.png │ ├── r_icon_timeline_diversion.png │ ├── r_icon_timeline_splicing.png │ ├── r_icon_traffic_management.png │ ├── r_icon_transportation_lobbyist.png │ ├── r_icon_vehicle_capacity.png │ ├── r_icon_vehicle_speed.png │ ├── r_icon_video_doubler_time.png │ ├── r_icon_warp_boost.png │ ├── r_icon_wormhole_dampening.png │ ├── sale_sticker.png │ ├── sprites.png │ ├── washington_peck.png │ ├── workshop_background_temp.png │ └── zh2_icon.png ├── favicon-180.png ├── favicon.ico └── favicon.svg ├── tailwind.config.js ├── templates ├── components │ ├── auto_refresh_toggle.html │ ├── contract_filter.html │ ├── coop.html │ ├── hide_full_toggle.html │ ├── hide_solos_toggle.html │ ├── peeker.html │ ├── progress_bar.html │ ├── solo.html │ ├── solo_coop.html │ └── status_label.html ├── fragments │ ├── banners.html │ ├── footer.html │ ├── head.html │ └── nav.html └── views │ ├── events.html │ ├── index.html │ ├── peek.html │ └── peeked.html ├── util ├── messages.go ├── numfmt.go ├── table.go └── time.go ├── web ├── api.go ├── events.go ├── index.go ├── peek.go ├── peeked.go ├── server.go └── shared.go ├── webpack.common.js ├── webpack.dev.js ├── webpack.prod.js └── yarn.lock /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Proto 3 | BasedOnStyle: Google 4 | ... 5 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | /* 2 | !/api 3 | !/artifacts 4 | !/cmd 5 | !/config 6 | !/contract 7 | !/coop 8 | !/css 9 | !/db 10 | !/js 11 | !/migrations 12 | !/notify 13 | !/solo 14 | !/static 15 | /static/* 16 | !/static/egginc 17 | /static/egginc/* 18 | !/static/egginc/egg_*.png 19 | !/static/egginc/b_icon_*.png 20 | !/static/egginc/r_icon_*.png 21 | !/static/egginc-extras 22 | /static/egginc-extras/* 23 | !/static/egginc-extras/*.png 24 | !/static/favicon.ico 25 | !/static/favicon-180.png 26 | !/templates 27 | !/util 28 | !/web 29 | !/go.mod 30 | !/go.sum 31 | !/main.go 32 | !/package.json 33 | !/yarn.lock 34 | !/*.js 35 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | on: 3 | push: 4 | pull_request_target: 5 | workflow_dispatch: 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - name: Set up QEMU 12 | uses: docker/setup-qemu-action@v1 13 | - name: Set up Docker Buildx 14 | uses: docker/setup-buildx-action@v1 15 | - name: Login to DockerHub 16 | uses: docker/login-action@v1 17 | with: 18 | username: ${{ secrets.DOCKER_USERNAME }} 19 | password: ${{ secrets.DOCKER_ACCESS_TOKEN }} 20 | - run: | 21 | echo "BUILD=$(date -u +%Y-%m-%d).$(git rev-parse --short=8 HEAD 2>/dev/null || echo 'snapshot')" >> $GITHUB_ENV 22 | - name: Build and push 23 | uses: docker/build-push-action@v2 24 | with: 25 | platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 26 | tags: fanaticscripter/eggcontractor:latest 27 | push: ${{ github.ref == 'refs/heads/master' }} 28 | build-args: | 29 | BUILD=${{ env.BUILD }} 30 | GIT_COMMIT=${{ github.sha }} 31 | 32 | ContractAggregator: 33 | runs-on: ubuntu-latest 34 | defaults: 35 | run: 36 | working-directory: misc/ContractAggregator 37 | steps: 38 | - uses: actions/checkout@v2 39 | - name: Set up Go 40 | uses: actions/setup-go@v2 41 | with: 42 | go-version: "^1.16" 43 | - name: Build 44 | run: | 45 | make 46 | -------------------------------------------------------------------------------- /.github/workflows/monitor-eiafx-config.yml: -------------------------------------------------------------------------------- 1 | name: monitor /ei_afx/config 2 | on: 3 | push: 4 | pull_request_target: 5 | workflow_dispatch: 6 | schedule: 7 | - cron: "0 * * * *" 8 | jobs: 9 | monitor: 10 | runs-on: ubuntu-latest 11 | defaults: 12 | run: 13 | working-directory: port/wasm/_common/eiafx 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Set up Go 17 | uses: actions/setup-go@v2 18 | with: 19 | go-version: "^1.16" 20 | - name: Build and monitor 21 | run: | 22 | make alert || true 23 | -------------------------------------------------------------------------------- /.github/workflows/update-contracts.yml: -------------------------------------------------------------------------------- 1 | name: update contracts 2 | on: 3 | push: 4 | pull_request_target: 5 | workflow_dispatch: 6 | schedule: 7 | - cron: "0 * * * *" 8 | jobs: 9 | update: 10 | runs-on: ubuntu-latest 11 | defaults: 12 | run: 13 | working-directory: misc/ContractAggregator 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Set up Go 17 | uses: actions/setup-go@v2 18 | with: 19 | go-version: "^1.16" 20 | - name: Build 21 | run: | 22 | make 23 | - name: Create config file 24 | run: | 25 | cat >config.toml </etc/apt/sources.list.d/yarn.list && \ 6 | curl -sSL https://deb.nodesource.com/setup_14.x | bash - && \ 7 | apt-get update && \ 8 | apt-get install -y --no-install-recommends nodejs yarn 9 | COPY package.json yarn.lock /src/ 10 | RUN yarn install 11 | COPY postcss.config.js tailwind.config.js webpack.*.js /src/ 12 | COPY css /src/css 13 | COPY js /src/js 14 | COPY templates /src/templates 15 | RUN yarn webpack --config webpack.prod.js && \ 16 | yarn postcss --env=production css/app.css -o static/app.css 17 | 18 | COPY . /src/ 19 | ARG BUILD 20 | ARG GIT_COMMIT 21 | RUN CGO_ENABLED=1 GOOS=linux go build -a -ldflags "-linkmode external -extldflags \"-static\" \ 22 | -X github.com/fanaticscripter/EggContractor/web.AppBuild=$BUILD \ 23 | -X github.com/fanaticscripter/EggContractor/web.GitCommit=$GIT_COMMIT" 24 | 25 | FROM --platform=$BUILDPLATFORM scratch 26 | WORKDIR / 27 | COPY --from=builder /src/EggContractor / 28 | COPY --from=builder /src/migrations /migrations 29 | COPY --from=builder /src/static /static 30 | COPY --from=builder /src/templates /templates 31 | COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo 32 | COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ 33 | # The cgo DNS resolver could be problematic in the scratch image. 34 | ENV GODEBUG=netdns=go 35 | ENV EGGCONTRACTOR_CONFIG_FILE=/config.toml 36 | ENTRYPOINT ["/EggContractor"] 37 | CMD ["serve"] 38 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | MAKEFLAGS += -j4 2 | 3 | BUILD = $(shell date -u +%Y-%m-%d).$(shell git rev-parse --short=8 HEAD 2>/dev/null || echo 'snapshot') 4 | GITCOMMIT = $(shell git rev-parse HEAD 2>/dev/null || echo 'master') 5 | 6 | .PHONY: all dev go protobuf webpack webpack-dev postcss postcss-dev fmt serve serve-prod docker clean 7 | 8 | all: go webpack postcss 9 | 10 | dev: go webpack-dev postcss-dev 11 | rm -f public/egginc public/egginc-extras 12 | ln -sf ../static/egginc public/egginc 13 | ln -sf ../static/egginc-extras public/egginc-extras 14 | 15 | go: protobuf 16 | GOFLAGS=-trimpath go build -ldflags "-X github.com/fanaticscripter/EggContractor/web.AppBuild=$(BUILD) -X github.com/fanaticscripter/EggContractor/web.GitCommit=$(GITCOMMIT)" 17 | 18 | protobuf: 19 | protoc --proto_path=. --go_out=paths=source_relative:. api/egginc.proto 20 | protoc --proto_path=. --go_out=paths=source_relative:. solo/pb/solo.proto 21 | gofumpt -w api/egginc.pb.go solo/pb/solo.pb.go 22 | 23 | webpack: 24 | yarn webpack --config webpack.prod.js 25 | 26 | webpack-dev: 27 | yarn webpack --config webpack.dev.js 28 | 29 | postcss: 30 | yarn postcss --env=production css/app.css -o static/app.css 31 | 32 | postcss-dev: 33 | yarn postcss --env=development css/app.css -o public/app.css 34 | 35 | fmt: 36 | gofumpt -w . 37 | clang-format -i api/egginc.proto solo/pb/solo.proto 38 | yarn prettier -w $$(git ls-files | grep -E '(\.html|\.js|\.css|\.vue)$$' | grep -Ev '(templates|demo)/') 39 | 40 | fmt-changed: 41 | yarn prettier -w $$(git diff --diff-filter=AM --name-only HEAD | grep -E '(\.html|\.js|\.css|\.vue)$$' | grep -Ev '(templates|demo)/') 42 | 43 | # Hot-reloading server based on entr(1). 44 | serve: 45 | while true; do { echo EggContractor; find templates; find static; } | entr -dr ./EggContractor serve --dev; [ $$? = 2 ] || break; done 46 | 47 | # Same as serve, except serving the production version. 48 | serve-prod: 49 | while true; do { echo EggContractor; find templates; find static; } | entr -dr ./EggContractor serve; [ $$? = 2 ] || break; done 50 | 51 | docker: 52 | docker build -t fanaticscripter/eggcontractor --build-arg BUILD=$(BUILD) --build-arg GIT_COMMIT=$(GITCOMMIT) . 53 | 54 | clean: 55 | @$(RM) EggContractor static/*.*.js static/*.*.css static/manifest.*.json 56 | @$(RM) -r node_modules/.cache/webpack 57 | -------------------------------------------------------------------------------- /artifacts/effects.go: -------------------------------------------------------------------------------- 1 | package artifacts 2 | 3 | import ( 4 | "github.com/pkg/errors" 5 | log "github.com/sirupsen/logrus" 6 | 7 | "github.com/fanaticscripter/EggContractor/api" 8 | ) 9 | 10 | // effect_numbers.go is generated. 11 | //go:generate python3 effect_numbers.py 12 | 13 | // Assumes non-enlightenment farm, for now. 14 | func MultiplicativeEffect(artifacts []*api.CompleteArtifact, afxIds []api.ArtifactSpec_Name) float64 { 15 | effect := 1.0 16 | 17 | examineItem := func(spec *api.ArtifactSpec) { 18 | for _, id := range afxIds { 19 | if spec.Name == id { 20 | delta, err := effectDelta(spec) 21 | if err != nil { 22 | log.Warn(err) 23 | return 24 | } 25 | effect *= (1 + delta) 26 | return 27 | } 28 | } 29 | } 30 | 31 | for _, a := range artifacts { 32 | if a == nil { 33 | continue 34 | } 35 | examineItem(a.Spec) 36 | for _, stone := range a.Stones { 37 | if stone == nil { 38 | continue 39 | } 40 | examineItem(stone) 41 | } 42 | } 43 | 44 | return effect 45 | } 46 | 47 | func LayingRateEffect(artifacts []*api.CompleteArtifact) float64 { 48 | return MultiplicativeEffect(artifacts, []api.ArtifactSpec_Name{ 49 | api.ArtifactSpec_QUANTUM_METRONOME, 50 | api.ArtifactSpec_TACHYON_STONE, 51 | }) 52 | } 53 | 54 | func ShippingCapacityEffect(artifacts []*api.CompleteArtifact) float64 { 55 | return MultiplicativeEffect(artifacts, []api.ArtifactSpec_Name{ 56 | api.ArtifactSpec_INTERSTELLAR_COMPASS, 57 | api.ArtifactSpec_QUANTUM_STONE, 58 | }) 59 | } 60 | 61 | // A stripped down ArtifactSpec that is comparable. 62 | type item struct { 63 | Name api.ArtifactSpec_Name 64 | Level api.ArtifactSpec_Level 65 | Rarity api.ArtifactSpec_Rarity 66 | } 67 | 68 | func newItem(a *api.ArtifactSpec) item { 69 | return item{ 70 | Name: a.Name, 71 | Level: a.Level, 72 | Rarity: a.Rarity, 73 | } 74 | } 75 | 76 | func effectDelta(a *api.ArtifactSpec) (float64, error) { 77 | item := newItem(a) 78 | delta, ok := _effectDeltas[item] 79 | if !ok { 80 | return 0, errors.Errorf("cannot find effect delta for %+v", item) 81 | } 82 | return delta, nil 83 | } 84 | -------------------------------------------------------------------------------- /cmd/backup.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "fmt" 5 | "time" 6 | 7 | "github.com/fanaticscripter/EggContractor/db" 8 | "github.com/pkg/errors" 9 | "github.com/spf13/cobra" 10 | "golang.org/x/net/context" 11 | ) 12 | 13 | var _backupCommand = &cobra.Command{ 14 | Use: "backup", 15 | Short: "Backup database", 16 | Args: cobra.NoArgs, 17 | PreRunE: func(cmd *cobra.Command, args []string) error { 18 | if err := initConfig(); err != nil { 19 | return err 20 | } 21 | return nil 22 | }, 23 | RunE: func(cmd *cobra.Command, args []string) error { 24 | start := time.Now() 25 | dbPath := _config.Database.Path 26 | backupPath := dbPath + fmt.Sprintf(".%d.bak", start.Unix()) 27 | ctx, _ := context.WithTimeout(context.Background(), 10*time.Minute) 28 | err := db.BackupDatabaseWithContext(ctx, dbPath, backupPath) 29 | elapsed := time.Since(start).Seconds() 30 | if err != nil { 31 | return errors.Wrapf(err, "failed to back up %#v to %#v (%.1fs elapsed)", dbPath, backupPath, elapsed) 32 | } 33 | fmt.Printf("Backed up %#v to %#v in %.1fs.\n", dbPath, backupPath, elapsed) 34 | err = db.GzipFileRemoveOriginal(backupPath) 35 | if err != nil { 36 | return errors.Wrapf(err, "failed to gzip backup") 37 | } 38 | fmt.Println("Gzipped backup.") 39 | return nil 40 | }, 41 | } 42 | 43 | func init() { 44 | _rootCmd.AddCommand(_backupCommand) 45 | } 46 | -------------------------------------------------------------------------------- /cmd/contracts.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "fmt" 5 | 6 | log "github.com/sirupsen/logrus" 7 | "github.com/spf13/cobra" 8 | 9 | "github.com/fanaticscripter/EggContractor/db" 10 | "github.com/fanaticscripter/EggContractor/util" 11 | ) 12 | 13 | var _contractsCommand = &cobra.Command{ 14 | Use: "contracts", 15 | Short: "Print a list of current and past contracts", 16 | Args: cobra.NoArgs, 17 | PreRunE: subcommandPreRunE, 18 | RunE: func(cmd *cobra.Command, args []string) error { 19 | contracts, err := db.GetContracts() 20 | if err != nil { 21 | return err 22 | } 23 | 24 | if len(contracts) == 0 { 25 | log.Warn("no contracts found in database, try using the refresh subcommand to populate the contract table") 26 | return nil 27 | } 28 | 29 | table := [][]string{ 30 | {"ID", "Name", "Egg", "E. Goal", "Time", "Size", "Token", "Expiry"}, 31 | {"--", "----", "---", "-------", "----", "----", "-----", "------"}, 32 | } 33 | 34 | for _, c := range contracts { 35 | if c.Id == "first-contract" { 36 | continue 37 | } 38 | table = append(table, []string{ 39 | c.Id, c.Name, c.EggType.Display(), 40 | util.NumfmtWhole(c.UltimateGoal(true)), 41 | util.FormatDurationWhole(c.Duration()), 42 | fmt.Sprintf("%d", c.MaxCoopSize), 43 | fmt.Sprintf("%.0fm", c.TokenIntervalMinutes), 44 | util.FormatDate(c.ExpiryTime()), 45 | }) 46 | } 47 | util.PrintTable(table) 48 | 49 | return nil 50 | }, 51 | } 52 | 53 | func init() { 54 | _rootCmd.AddCommand(_contractsCommand) 55 | } 56 | -------------------------------------------------------------------------------- /cmd/ei_config.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "encoding/json" 5 | "fmt" 6 | "io/ioutil" 7 | 8 | "github.com/pkg/errors" 9 | "github.com/spf13/cobra" 10 | "google.golang.org/protobuf/encoding/protojson" 11 | 12 | "github.com/fanaticscripter/EggContractor/api" 13 | ) 14 | 15 | var _eiConfigOutputFile string 16 | 17 | var _eiConfigCommand = &cobra.Command{ 18 | Use: "ei-config", 19 | Short: "Dump /ei/get_config response in JSON", 20 | Args: cobra.NoArgs, 21 | PreRunE: subcommandPreRunE, 22 | RunE: func(cmd *cobra.Command, args []string) error { 23 | req := &api.ConfigRequest{ 24 | Rinfo: api.NewBasicRequestInfo(_config.Players[0].Id), 25 | ArtifactsEnabled: true, 26 | FuelTankUnlocked: true, 27 | } 28 | config := &api.ConfigResponse{} 29 | err := api.RequestAuthenticated("/ei/get_config", req, config) 30 | if err != nil { 31 | return err 32 | } 33 | 34 | encoded, err := protojson.MarshalOptions{ 35 | Multiline: true, 36 | Indent: " ", 37 | EmitUnpopulated: true, 38 | }.Marshal(config) 39 | if err != nil { 40 | return errors.Wrap(err, "error marshalling response") 41 | } 42 | 43 | var rm json.RawMessage = encoded 44 | encoded, err = json.MarshalIndent(rm, "", " ") 45 | if err != nil { 46 | return errors.Wrap(err, "error re-marshalling response") 47 | } 48 | encoded = append(encoded, '\n') 49 | 50 | if _eiConfigOutputFile == "" { 51 | fmt.Print(string(encoded)) 52 | } else { 53 | err = ioutil.WriteFile(_eiConfigOutputFile, encoded, 0o644) 54 | if err != nil { 55 | return errors.Wrapf(err, "error writing to %s", _eiConfigOutputFile) 56 | } 57 | } 58 | 59 | return nil 60 | }, 61 | } 62 | 63 | func init() { 64 | _rootCmd.AddCommand(_eiConfigCommand) 65 | _eiConfigCommand.Flags().StringVarP(&_eiConfigOutputFile, "output", "o", "", "output file path") 66 | } 67 | -------------------------------------------------------------------------------- /cmd/peek.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "strings" 5 | "time" 6 | 7 | "github.com/spf13/cobra" 8 | 9 | log "github.com/sirupsen/logrus" 10 | 11 | "github.com/fanaticscripter/EggContractor/api" 12 | "github.com/fanaticscripter/EggContractor/db" 13 | ) 14 | 15 | var _peekCommand = &cobra.Command{ 16 | Use: "peek ", 17 | Short: "Peek at a coop", 18 | Args: cobra.ExactArgs(2), 19 | PreRunE: subcommandPreRunE, 20 | RunE: func(cmd *cobra.Command, args []string) error { 21 | contractId := strings.ToLower(args[0]) 22 | code := strings.ToLower(args[1]) 23 | 24 | now := time.Now() 25 | status, err := api.RequestCoopStatus(&api.CoopStatusRequestPayload{ 26 | ContractId: contractId, 27 | Code: code, 28 | }) 29 | if err != nil { 30 | return err 31 | } 32 | wrapped, err := db.WrapCoopStatusWithDB(status) 33 | if err != nil { 34 | log.Error(err) 35 | } else if wrapped.Contract == nil { 36 | log.Warnf("contract %s not found in database, try using the refresh subcommand to populate the contract table", 37 | contractId) 38 | } 39 | wrapped.Display(_sortBy.by, nil) 40 | 41 | err = db.InsertPeeked(db.NewPeeked(wrapped, now)) 42 | if err != nil { 43 | return err 44 | } 45 | 46 | return nil 47 | }, 48 | } 49 | 50 | func init() { 51 | _rootCmd.AddCommand(_peekCommand) 52 | } 53 | -------------------------------------------------------------------------------- /cmd/serve.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "github.com/spf13/cobra" 5 | 6 | "github.com/fanaticscripter/EggContractor/web" 7 | ) 8 | 9 | var ( 10 | _serveDevMode bool 11 | _serveBindAddr string 12 | ) 13 | 14 | var _serveCommand = &cobra.Command{ 15 | Use: "serve", 16 | Short: "Run web server", 17 | Args: cobra.NoArgs, 18 | PreRunE: subcommandPreRunE, 19 | Run: func(cmd *cobra.Command, args []string) { 20 | web.Serve(web.ServerOptions{ 21 | BindAddr: _serveBindAddr, 22 | Dev: _serveDevMode || _debug, 23 | ConfigDeprecations: _config.Deprecations(), 24 | }) 25 | }, 26 | } 27 | 28 | func init() { 29 | _serveCommand.Flags().StringVarP(&_serveBindAddr, "bind", "b", ":8080", 30 | "bind address in the form of :, where host is optional and defaults to all interfaces") 31 | _serveCommand.Flags().BoolVarP(&_serveDevMode, "dev", "d", false, "enable dev mode; also implied by --debug") 32 | _rootCmd.AddCommand(_serveCommand) 33 | } 34 | -------------------------------------------------------------------------------- /cmd/status.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "fmt" 5 | "time" 6 | 7 | "github.com/dustin/go-humanize" 8 | log "github.com/sirupsen/logrus" 9 | "github.com/spf13/cobra" 10 | 11 | "github.com/fanaticscripter/EggContractor/db" 12 | "github.com/fanaticscripter/EggContractor/util" 13 | ) 14 | 15 | var _statusCommand = &cobra.Command{ 16 | Use: "status", 17 | Short: "Print statuses of active solo contracts & coops from last refresh", 18 | Long: `Print statuses of active solo contracts & coops from last refresh 19 | 20 | This command does not touch the network, only the database.`, 21 | Args: cobra.NoArgs, 22 | PreRunE: subcommandPreRunE, 23 | RunE: func(cmd *cobra.Command, args []string) error { 24 | timestamp, solos, coops, err := db.GetSoloAndCoopStatusesFromRefresh(time.Now(), true) 25 | if err != nil { 26 | return err 27 | } 28 | if timestamp.IsZero() { 29 | log.Warn("no refresh found in the database, try using the refresh subcommand") 30 | return nil 31 | } 32 | fmt.Printf("Last refreshed at %s (%s)\n\n", 33 | util.FormatDatetime(timestamp), humanize.Time(timestamp)) 34 | if len(solos) == 0 && len(coops) == 0 { 35 | fmt.Println(util.MsgNoActiveContracts) 36 | } 37 | for _, solo := range solos { 38 | solo.Display(timestamp, _config.MultiAccountMode()) 39 | } 40 | for _, coop := range coops { 41 | // Apparently GetCoopMemberActivityStats is not in the same 42 | // transaction as GetSoloAndCoopStatusesFromRefresh, or as each 43 | // other, so not technically correct. But in reality it's good 44 | // enough, and is easier for this programmer to code without more 45 | // refactoring. 46 | activities, err := db.GetCoopMemberActivityStats(coop, timestamp) 47 | if err != nil { 48 | log.Error(err) 49 | coop.Display(_sortBy.by, nil) 50 | } else { 51 | coop.Display(_sortBy.by, activities) 52 | } 53 | } 54 | return nil 55 | }, 56 | } 57 | 58 | func init() { 59 | _rootCmd.AddCommand(_statusCommand) 60 | } 61 | -------------------------------------------------------------------------------- /cmd/units.go: -------------------------------------------------------------------------------- 1 | package cmd 2 | 3 | import ( 4 | "strconv" 5 | 6 | "github.com/spf13/cobra" 7 | 8 | "github.com/fanaticscripter/EggContractor/util" 9 | ) 10 | 11 | var _unitsCommand = &cobra.Command{ 12 | Use: "units", 13 | Short: "Print a table of units (order of magnitudes)", 14 | Args: cobra.NoArgs, 15 | Run: func(cmd *cobra.Command, args []string) { 16 | table := [][]string{ 17 | {"Symb", "OoM", "Symb", "OoM", "Symb", "OoM"}, 18 | {"----", "---", "----", "---", "----", "---"}, 19 | } 20 | row := make([]string, 0, 6) 21 | for _, u := range util.Units { 22 | row = append(row, u.Symbol, strconv.Itoa(u.OoM)) 23 | if len(row) == 6 { 24 | table = append(table, row) 25 | row = make([]string, 0, 6) 26 | } 27 | } 28 | util.PrintTable(table) 29 | }, 30 | } 31 | 32 | func init() { 33 | _rootCmd.AddCommand(_unitsCommand) 34 | } 35 | -------------------------------------------------------------------------------- /contract/progress.go: -------------------------------------------------------------------------------- 1 | package contract 2 | 3 | import "github.com/fanaticscripter/EggContractor/api" 4 | 5 | type ProgressInfo struct { 6 | EggsLaid float64 7 | ProjectedEggsLaid float64 8 | Rewards []*Reward 9 | UltimateGoal float64 10 | } 11 | 12 | type Reward struct { 13 | *api.Reward 14 | PercentageOfUltimateGoal float64 15 | PercentageCompleted float64 16 | } 17 | 18 | func NewProgressInfo( 19 | rewards []*api.Reward, 20 | eggsLaid float64, 21 | projectedEggsLaid float64, 22 | ) *ProgressInfo { 23 | if len(rewards) == 0 { 24 | return nil 25 | } 26 | ultimateGoal := rewards[len(rewards)-1].Goal 27 | if ultimateGoal == 0 { 28 | panic("NewProgressInfo: ultimate goal is zero") 29 | } 30 | wrappedRewards := make([]*Reward, 0) 31 | for _, r := range rewards { 32 | if r.Goal == 0 { 33 | panic("NewProgressInfo: reward goal is zero") 34 | } 35 | wrappedRewards = append(wrappedRewards, &Reward{ 36 | Reward: r, 37 | PercentageOfUltimateGoal: r.Goal / ultimateGoal * 100, 38 | PercentageCompleted: eggsLaid / r.Goal * 100, 39 | }) 40 | } 41 | return &ProgressInfo{ 42 | EggsLaid: eggsLaid, 43 | ProjectedEggsLaid: projectedEggsLaid, 44 | Rewards: wrappedRewards, 45 | UltimateGoal: ultimateGoal, 46 | } 47 | } 48 | 49 | func (p *ProgressInfo) PercentageCompleted() float64 { 50 | return p.EggsLaid / p.UltimateGoal * 100 51 | } 52 | 53 | func (p *ProgressInfo) ProjectedPercentageCompleted() float64 { 54 | return p.ProjectedEggsLaid / p.UltimateGoal * 100 55 | } 56 | -------------------------------------------------------------------------------- /coop/activity.go: -------------------------------------------------------------------------------- 1 | package coop 2 | 3 | import "time" 4 | 5 | type CoopMemberActivity struct { 6 | PlayerId string 7 | PlayerName string 8 | LastUpdateTime time.Time 9 | OfflineTime time.Duration 10 | EggsPerHourSince float64 11 | // NoActivityRecorded indicates whether any activity has been recorded for a 12 | // player at all; the player could have stayed at the exact same eggs laid 13 | // since we start recording a coop, in which case NoActivityRecorded would 14 | // be true. 15 | NoActivityRecorded bool 16 | } 17 | -------------------------------------------------------------------------------- /coop/sort.go: -------------------------------------------------------------------------------- 1 | package coop 2 | 3 | import ( 4 | "sort" 5 | 6 | "github.com/fanaticscripter/EggContractor/api" 7 | ) 8 | 9 | type By func(m1, m2 *api.CoopStatus_Member) bool 10 | 11 | var ByEggsLaid = By(func(m1, m2 *api.CoopStatus_Member) bool { 12 | return m1.EggsLaid > m2.EggsLaid 13 | }) 14 | 15 | var ByLayingRate = By(func(m1, m2 *api.CoopStatus_Member) bool { 16 | return m1.EggsPerSecond > m2.EggsPerSecond 17 | }) 18 | 19 | var ByEarningBonus = By(func(m1, m2 *api.CoopStatus_Member) bool { 20 | return m1.EarningBonusOom > m2.EarningBonusOom 21 | }) 22 | 23 | func (by By) Sort(members []*api.CoopStatus_Member) { 24 | sort.Stable(&memberSorter{ 25 | members: members, 26 | by: by, 27 | }) 28 | } 29 | 30 | type memberSorter struct { 31 | members []*api.CoopStatus_Member 32 | by By 33 | } 34 | 35 | // Len is the number of elements in the collection. 36 | func (s *memberSorter) Len() int { 37 | return len(s.members) 38 | } 39 | 40 | // Less reports whether the element with 41 | // index i should sort before the element with index j. 42 | func (s *memberSorter) Less(i int, j int) bool { 43 | return s.by(s.members[i], s.members[j]) 44 | } 45 | 46 | // Swap swaps the elements with indexes i and j. 47 | func (s *memberSorter) Swap(i int, j int) { 48 | s.members[i], s.members[j] = s.members[j], s.members[i] 49 | } 50 | -------------------------------------------------------------------------------- /css/app.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss/base"; 2 | @import "tailwindcss/components"; 3 | @import "tailwindcss/utilities"; 4 | 5 | @import "components/AutoRefreshToggle.css"; 6 | @import "components/CoopTable.css"; 7 | @import "components/EventTable.css"; 8 | 9 | html { 10 | height: 100vh; 11 | height: -webkit-fill-available; 12 | } 13 | 14 | .tippy-content { 15 | @apply text-xs px-2 py-1 !important; 16 | } 17 | -------------------------------------------------------------------------------- /css/components/AutoRefreshToggle.css: -------------------------------------------------------------------------------- 1 | #AutoRefreshToggle > .AutoRefreshToggle__bar { 2 | @apply bg-gray-200; 3 | } 4 | 5 | #AutoRefreshToggle.AutoRefreshToggle--on > .AutoRefreshToggle__bar { 6 | @apply bg-green-400; 7 | } 8 | 9 | #AutoRefreshToggle > .AutoRefreshToggle__slider { 10 | @apply translate-x-0; 11 | } 12 | 13 | #AutoRefreshToggle.AutoRefreshToggle--on > .AutoRefreshToggle__slider { 14 | @apply translate-x-5; 15 | } 16 | -------------------------------------------------------------------------------- /css/components/CoopTable.css: -------------------------------------------------------------------------------- 1 | .CoopTable__member--snoozing:after { 2 | content: "zZ"; 3 | margin-left: 1px; 4 | vertical-align: super; 5 | font-size: 0.75em; 6 | @apply text-yellow-600; 7 | } 8 | -------------------------------------------------------------------------------- /css/components/EventTable.css: -------------------------------------------------------------------------------- 1 | .EventTable__event--active { 2 | @apply text-green-500; 3 | } 4 | 5 | .EventTable__event--expired { 6 | @apply text-gray-500; 7 | } 8 | -------------------------------------------------------------------------------- /db/coop.go: -------------------------------------------------------------------------------- 1 | package db 2 | 3 | import ( 4 | "github.com/fanaticscripter/EggContractor/api" 5 | "github.com/fanaticscripter/EggContractor/coop" 6 | ) 7 | 8 | // Contract is set to nil if no matching contract is found or if there is a 9 | // database error. 10 | func WrapCoopStatusWithDB(c *api.CoopStatus) (*coop.CoopStatus, error) { 11 | contract, err := GetContract(c.ContractId, 0, 0) 12 | return &coop.CoopStatus{ 13 | CoopStatus: c, 14 | Contract: contract, 15 | }, err 16 | } 17 | -------------------------------------------------------------------------------- /db/init.go: -------------------------------------------------------------------------------- 1 | package db 2 | 3 | import ( 4 | "database/sql" 5 | "os" 6 | "path/filepath" 7 | "sync" 8 | 9 | _ "github.com/mattn/go-sqlite3" 10 | "github.com/pkg/errors" 11 | log "github.com/sirupsen/logrus" 12 | 13 | "github.com/fanaticscripter/EggContractor/config" 14 | ) 15 | 16 | var ( 17 | _db *sql.DB 18 | _initDBOnce sync.Once 19 | ) 20 | 21 | func InitDB(conf config.DatabaseConfig) error { 22 | var err error 23 | _initDBOnce.Do(func() { 24 | dbPath := conf.Path 25 | log.Debugf("database path: %s", dbPath) 26 | 27 | parentDir := filepath.Dir(dbPath) 28 | err = os.MkdirAll(parentDir, 0o755) 29 | if err != nil { 30 | err = errors.Wrapf(err, "failed to create parent directory %#v for database", parentDir) 31 | return 32 | } 33 | 34 | err = runMigrations(dbPath) 35 | if err != nil { 36 | err = errors.Wrapf(err, "error occurred during schema migrations") 37 | return 38 | } 39 | 40 | _db, err = sql.Open("sqlite3", dbPath+"?_foreign_keys=on&_journal_mode=WAL&_busy_timeout=10") 41 | if err != nil { 42 | err = errors.Wrapf(err, "failed to open SQLite3 database %#v", dbPath) 43 | return 44 | } 45 | err = nil 46 | }) 47 | return err 48 | } 49 | -------------------------------------------------------------------------------- /demo/_redirects: -------------------------------------------------------------------------------- 1 | / by=:by /index-by-:by 200! 2 | -------------------------------------------------------------------------------- /demo/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/demo/favicon.ico -------------------------------------------------------------------------------- /demo/static/favicon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/demo/static/favicon-180.png -------------------------------------------------------------------------------- /demo/static/peeker.3d7c0e74.js: -------------------------------------------------------------------------------- 1 | (()=>{const e=document.querySelector("form#peeker"),t=document.querySelector("input#contract-id"),o=document.querySelector("input#coop-code"),n=document.querySelector("button#clear-contract-id");e?.addEventListener("submit",(e=>{e.preventDefault();let n=t?.value.trim().toLowerCase(),r=o?.value.trim().toLowerCase();if(n=n?.replace(/\(.*\)/g,"").trim(),!n||!r)return;const c=`/peek/${encodeURIComponent(n)}/${encodeURIComponent(r)}/`;window.open(c,"_blank","noopener")})),n?.addEventListener("click",(e=>{e.preventDefault(),t&&(t.value="")}))})(); -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | app: 4 | image: fanaticscripter/eggcontractor:latest 5 | container_name: EggContractor 6 | restart: always 7 | environment: 8 | # TZ should be set to the local timezone in .env; e.g. TZ=America/New_York 9 | - TZ=${TZ} 10 | ports: 11 | # Use 0.0.0.0 only if you want to access the web app on the local network 12 | # directly, without a reverse proxy layer. You may change the host port 13 | # (the first port number) to another value. 14 | - "0.0.0.0:8080:8080" 15 | volumes: 16 | # config.toml should set database.path to /data/data.db 17 | - ./config.toml:/config.toml 18 | - ./data:/data 19 | labels: 20 | ofelia.enabled: "true" 21 | # Scheduling refreshes. 22 | # 23 | # Schedule syntax is documented at 24 | # - https://github.com/mcuadros/ofelia 25 | # - https://pkg.go.dev/github.com/robfig/cron@v1.2.0 26 | # Note that if you use cron syntax, the syntax has been extended to add 27 | # a second field at the beginning, so every minute would be "0 * * * * *" 28 | # instead of "* * * * *", and so on. 29 | ofelia.job-exec.refresh.schedule: "@every 2m" 30 | ofelia.job-exec.refresh.user: 0 31 | ofelia.job-exec.refresh.command: "/EggContractor refresh --no-display" 32 | ofelia.job-exec.refresh.save-folder: /logs 33 | ofelia.job-exec.refresh.save-only-on-error: "true" 34 | # Scheduling daily database backups. 35 | ofelia.job-exec.db-backup.schedule: "0 0 0 * * *" 36 | ofelia.job-exec.db-backup.user: 0 37 | ofelia.job-exec.db-backup.command: "/EggContractor backup" 38 | ofelia.job-exec.db-backup.save-folder: /logs 39 | ofelia.job-exec.db-backup.save-only-on-error: "true" 40 | build: . 41 | 42 | ofelia: 43 | image: mcuadros/ofelia:latest 44 | container_name: EggContractor_sched 45 | restart: always 46 | depends_on: 47 | - app 48 | command: daemon --docker 49 | volumes: 50 | - /var/run/docker.sock:/var/run/docker.sock:ro 51 | - ./logs:/logs 52 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/fanaticscripter/EggContractor 2 | 3 | go 1.16 4 | 5 | require ( 6 | github.com/dustin/go-humanize v1.0.0 7 | github.com/gofrs/flock v0.8.1 8 | github.com/golang-migrate/migrate/v4 v4.15.0 9 | github.com/hashicorp/errwrap v1.1.0 // indirect 10 | github.com/hashicorp/go-multierror v1.1.1 // indirect 11 | github.com/labstack/echo/v4 v4.6.0 12 | github.com/mattn/go-colorable v0.1.9 // indirect 13 | github.com/mattn/go-sqlite3 v1.14.8 14 | github.com/pkg/errors v0.9.1 15 | github.com/sirupsen/logrus v1.8.1 16 | github.com/spf13/cobra v1.2.1 17 | github.com/spf13/viper v1.9.0 18 | go.uber.org/atomic v1.9.0 // indirect 19 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect 20 | golang.org/x/net v0.0.0-20210917221730-978cfadd31cf 21 | golang.org/x/sys v0.0.0-20210921065528-437939a70204 // indirect 22 | golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect 23 | google.golang.org/protobuf v1.27.1 24 | ) 25 | -------------------------------------------------------------------------------- /js/coop.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import CoopTable from "./CoopTable.vue"; 3 | 4 | for (const table of document.querySelectorAll(".CoopTable")) { 5 | createApp(CoopTable, { 6 | contractId: table.dataset.contract, 7 | code: table.dataset.code, 8 | members: JSON.parse(table.dataset.members), 9 | }).mount(table); 10 | } 11 | -------------------------------------------------------------------------------- /js/events.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | function formatCountdown(seconds) { 3 | if (seconds <= 0) { 4 | return "0:00:00"; 5 | } 6 | const hh = Math.floor(seconds / 3600); 7 | seconds -= hh * 3600; 8 | const mm = Math.floor(seconds / 60); 9 | seconds -= mm * 60; 10 | const ss = Math.floor(seconds); 11 | return `${hh}:${mm.toString().padStart(2, "0")}:${ss.toString().padStart(2, "0")}`; 12 | } 13 | 14 | function updateCountdowns() { 15 | for (const row of document.querySelectorAll("tr.EventTable__event--active")) { 16 | const countdownCell = row.querySelector("td:last-child"); 17 | const secondsLeft = parseFloat(row.dataset.expires) - new Date().getTime() / 1000; 18 | if (secondsLeft <= 0) { 19 | row.classList.add("EventTable__event--expired"); 20 | row.classList.remove("EventTable__event--active"); 21 | countdownCell.textContent = "-"; 22 | } else { 23 | countdownCell.textContent = formatCountdown(secondsLeft); 24 | } 25 | } 26 | } 27 | 28 | updateCountdowns(); 29 | setInterval(updateCountdowns, 1000); 30 | })(); 31 | -------------------------------------------------------------------------------- /js/peeker.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | const peekerForm = document.querySelector("form#peeker"); 3 | const contractIdInput = document.querySelector("input#contract-id"); 4 | const coopCodeInput = document.querySelector("input#coop-code"); 5 | const clearContractIdButton = document.querySelector("button#clear-contract-id"); 6 | 7 | peekerForm?.addEventListener("submit", e => { 8 | e.preventDefault(); 9 | let contractId = contractIdInput?.value.trim().toLowerCase(); 10 | let coopCode = coopCodeInput?.value.trim().toLowerCase(); 11 | contractId = contractId?.replace(/\(.*\)/g, "").trim(); 12 | if (!contractId || !coopCode) { 13 | return; 14 | } 15 | const peekURL = `/peek/${encodeURIComponent(contractId)}/${encodeURIComponent(coopCode)}/`; 16 | window.open(peekURL, "_blank", "noopener"); 17 | }); 18 | 19 | clearContractIdButton?.addEventListener("click", e => { 20 | e.preventDefault(); 21 | if (contractIdInput) { 22 | contractIdInput.value = ""; 23 | } 24 | }); 25 | })(); 26 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | log "github.com/sirupsen/logrus" 5 | 6 | "github.com/fanaticscripter/EggContractor/cmd" 7 | ) 8 | 9 | func init() { 10 | log.SetLevel(log.WarnLevel) 11 | } 12 | 13 | func main() { 14 | cmd.Execute() 15 | } 16 | -------------------------------------------------------------------------------- /migrations/2_add_contract_first_seen_timestamp.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE contract ADD first_seen_timestamp REAL; 2 | -------------------------------------------------------------------------------- /migrations/3_add_contract_expiry_timestamp.up.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE contract ADD expiry_timestamp REAL NOT NULL DEFAULT 0; 2 | UPDATE contract SET expiry_timestamp = contract_expiry_timestamp(text_id, props); 3 | -------------------------------------------------------------------------------- /migrations/4_add_index_coop_status_timestamp.up.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX IF NOT EXISTS coop_status_timestamp ON coop_status(timestamp); 2 | -------------------------------------------------------------------------------- /migrations/5_add_contract_expiry_month.up.sql: -------------------------------------------------------------------------------- 1 | -- At the current rate of leggacy contracts it is a good chance we will 2 | -- eventually get two runs of the same contract in the same calendar year. 3 | -- Adding expiry_month to future-proof such conflicts. 4 | -- 5 | -- We have to rebuild the contract table since the UNIQUE CONTRAINT has to be 6 | -- modified. 7 | 8 | PRAGMA foreign_keys = off; 9 | 10 | CREATE TABLE IF NOT EXISTS contract_new ( 11 | id INTEGER PRIMARY KEY, 12 | -- 'text_id' is the contract ID used by the API, e.g. 'deep-foods-2020'. 13 | text_id TEXT NOT NULL, 14 | -- 'expiry_year' is the year of the expiry timestamp. 15 | expiry_year INTEGER NOT NULL, 16 | -- 'expiry_month' is the month of the expiry timestamp. 17 | expiry_month INTEGER NOT NULL, 18 | coop_allowed BOOLEAN NOT NULL, 19 | expiry_timestamp REAL NOT NULL, 20 | first_seen_timestamp REAL, 21 | -- 'props' is the protobuf-serialized version of contract properties as 22 | -- received from API. 23 | props BLOB NOT NULL, 24 | UNIQUE(text_id, expiry_year, expiry_month) 25 | ); 26 | CREATE UNIQUE INDEX IF NOT EXISTS contract_text_id_expiry_year_month ON contract_new(text_id, expiry_year, expiry_month); 27 | 28 | INSERT INTO contract_new( 29 | id, 30 | text_id, 31 | expiry_year, 32 | expiry_month, 33 | coop_allowed, 34 | expiry_timestamp, 35 | first_seen_timestamp, 36 | props 37 | ) 38 | SELECT 39 | id, 40 | text_id, 41 | contract_expiry_year(text_id, props), 42 | contract_expiry_month(text_id, props), 43 | coop_allowed, 44 | expiry_timestamp, 45 | first_seen_timestamp, 46 | props 47 | FROM "contract" 48 | ORDER BY id; 49 | 50 | DROP TABLE "contract"; 51 | 52 | ALTER TABLE contract_new RENAME TO "contract"; 53 | 54 | PRAGMA foreign_keys = on; 55 | -------------------------------------------------------------------------------- /migrations/6_rebuild_event.up.sql: -------------------------------------------------------------------------------- 1 | -- Event id is not unique, so we need to change the primary key. 2 | 3 | PRAGMA foreign_keys = off; 4 | 5 | CREATE TABLE IF NOT EXISTS event_new ( 6 | rowid INTEGER PRIMARY KEY, 7 | id TEXT NOT NULL, 8 | event_type TEXT NOT NULL, 9 | multiplier REAL NOT NULL, 10 | message TEXT NOT NULL, 11 | first_seen_timestamp REAL NOT NULL, 12 | last_seen_timestamp REAL NOT NULL, 13 | expiry_timestamp REAL NOT NULL 14 | ); 15 | 16 | INSERT INTO event_new( 17 | id, 18 | event_type, 19 | multiplier, 20 | message, 21 | first_seen_timestamp, 22 | last_seen_timestamp, 23 | expiry_timestamp 24 | ) 25 | SELECT 26 | id, 27 | event_type, 28 | multiplier, 29 | message, 30 | first_seen_timestamp, 31 | last_seen_timestamp, 32 | expiry_timestamp 33 | FROM "event" 34 | ORDER BY first_seen_timestamp; 35 | 36 | DROP TABLE "event"; 37 | 38 | ALTER TABLE event_new RENAME TO "event"; 39 | 40 | PRAGMA foreign_keys = on; 41 | -------------------------------------------------------------------------------- /misc/ContractAggregator/.gitignore: -------------------------------------------------------------------------------- 1 | /ContractAggregator 2 | /config.toml 3 | /data/* 4 | !/data/contracts.csv 5 | -------------------------------------------------------------------------------- /misc/ContractAggregator/Makefile: -------------------------------------------------------------------------------- 1 | MAKEFLAGS += -j4 2 | 3 | .PHONY: all go 4 | 5 | all: go 6 | 7 | go: 8 | go build 9 | -------------------------------------------------------------------------------- /misc/ContractAggregator/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/fanaticscripter/EggContractor/misc/ContractAggregator 2 | 3 | go 1.16 4 | 5 | replace github.com/fanaticscripter/EggContractor => ../.. 6 | 7 | require ( 8 | github.com/fanaticscripter/EggContractor v0.0.0-20210922143229-808c77d03657 9 | github.com/pkg/errors v0.9.1 10 | github.com/sirupsen/logrus v1.8.1 11 | github.com/spf13/pflag v1.0.5 12 | github.com/spf13/viper v1.9.0 13 | google.golang.org/protobuf v1.27.1 14 | ) 15 | -------------------------------------------------------------------------------- /misc/ContractAggregator/migrations: -------------------------------------------------------------------------------- 1 | ../../migrations -------------------------------------------------------------------------------- /misc/ContractAggregator/utils.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | log "github.com/sirupsen/logrus" 5 | ) 6 | 7 | var _errored bool 8 | 9 | func logError(args ...interface{}) { 10 | log.Error(args...) 11 | _errored = true 12 | } 13 | 14 | func logErrorf(format string, args ...interface{}) { 15 | log.Errorf(format, args...) 16 | _errored = true 17 | } 18 | -------------------------------------------------------------------------------- /misc/protobuf/README.md: -------------------------------------------------------------------------------- 1 | This directory contains protobuf definitions extracted from v1.23 apk by [pbtk](https://github.com/marin-m/pbtk). 2 | -------------------------------------------------------------------------------- /notify/notify.go: -------------------------------------------------------------------------------- 1 | package notify 2 | 3 | import ( 4 | "sync" 5 | "time" 6 | 7 | log "github.com/sirupsen/logrus" 8 | 9 | "github.com/fanaticscripter/EggContractor/config" 10 | ) 11 | 12 | type Notifier interface { 13 | Notify(m Notification) error 14 | } 15 | 16 | type Notification interface { 17 | Title() string 18 | Message() string 19 | URL() string 20 | Timestamp() time.Time 21 | // Returns notifier-specific parameters. 22 | NotifierParams(notifierId string) map[string]interface{} 23 | } 24 | 25 | func NotificationWorker(conf config.NotificationConfig, notifications <-chan Notification) { 26 | notifiers := make([]Notifier, 0) 27 | if conf.Pushover.On { 28 | notifiers = append(notifiers, NewPushoverNotifier(conf)) 29 | } 30 | var wg sync.WaitGroup 31 | for m := range notifications { 32 | log.Debugf("queued up notification '%s'", m.Title()) 33 | for _, n := range notifiers { 34 | wg.Add(1) 35 | go func(notifier Notifier, notification Notification) { 36 | if err := notifier.Notify(notification); err != nil { 37 | log.Error(err) 38 | } 39 | wg.Done() 40 | }(n, m) 41 | } 42 | time.Sleep(250 * time.Millisecond) 43 | } 44 | wg.Wait() 45 | } 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "license": "MIT", 3 | "devDependencies": { 4 | "@tailwindcss/jit": "^0.1.1", 5 | "@vue/compiler-sfc": "^3.0.4", 6 | "autoprefixer": "^10.1.0", 7 | "css-loader": "^5.2.4", 8 | "cssnano": "^4.1.10", 9 | "postcss": "^8.2.13", 10 | "postcss-cli": "^8.3.1", 11 | "postcss-hash": "^2.0.0", 12 | "postcss-import": "^14.0.0", 13 | "prettier": "^2.2.1", 14 | "protobufjs": "^6.10.2", 15 | "style-loader": "^2.0.0", 16 | "vue-loader": "^16.1.2", 17 | "webpack": "^5.11.0", 18 | "webpack-cli": "^4.3.0", 19 | "webpack-manifest-plugin": "^3.0.0", 20 | "webpack-merge": "^5.7.3" 21 | }, 22 | "dependencies": { 23 | "@tailwindcss/forms": "^0.2.1", 24 | "copy-text-to-clipboard": "^2.2.0", 25 | "dayjs": "^1.10.4", 26 | "echarts": "^5.0.2", 27 | "google-protobuf": "^3.15.0-rc.1", 28 | "html2canvas": "^1.0.0-rc.7", 29 | "lunr": "^2.3.9", 30 | "scroll-into-view-if-needed": "^2.2.28", 31 | "tailwindcss": "^2.0.3", 32 | "tippy.js": "^6.2.7", 33 | "vue": "^3.0.4", 34 | "vue-echarts": "^6.0.0-rc.3", 35 | "vue-router": "^4.0.3", 36 | "vue-tippy": "^6.0.0-alpha.24" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /port/wasm/README.md: -------------------------------------------------------------------------------- 1 | Code migrated to . 2 | -------------------------------------------------------------------------------- /port/wasm/_common/eiafx/.gitignore: -------------------------------------------------------------------------------- 1 | /monitor 2 | -------------------------------------------------------------------------------- /port/wasm/_common/eiafx/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all go alert update 2 | 3 | all: alert 4 | 5 | alert: go 6 | ./monitor --error-on-diff 7 | 8 | update: go 9 | ./monitor 10 | 11 | go: 12 | cd cmd/monitor && go build -o ../../monitor 13 | -------------------------------------------------------------------------------- /port/wasm/_common/eiafx/cmd/monitor/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/fanaticscripter/EggContractor/port/wasm/_common/eiafx/cmd/monitor 2 | 3 | go 1.16 4 | 5 | replace github.com/fanaticscripter/EggContractor => ../../../../../.. 6 | 7 | require ( 8 | github.com/fanaticscripter/EggContractor v0.0.0-20210922143229-808c77d03657 9 | github.com/google/go-cmp v0.5.6 10 | github.com/sirupsen/logrus v1.8.1 11 | github.com/spf13/pflag v1.0.5 12 | google.golang.org/protobuf v1.27.1 13 | ) 14 | -------------------------------------------------------------------------------- /port/wasm/_common/eiafx/config.go: -------------------------------------------------------------------------------- 1 | package eiafx 2 | 3 | import ( 4 | _ "embed" 5 | 6 | "github.com/fanaticscripter/EggContractor/api" 7 | "github.com/pkg/errors" 8 | "google.golang.org/protobuf/encoding/protojson" 9 | ) 10 | 11 | //go:embed eiafx-config.json 12 | var _eiafxConfigJSON []byte 13 | 14 | var Config *api.ArtifactsConfigurationResponse 15 | 16 | func LoadConfig() error { 17 | Config = &api.ArtifactsConfigurationResponse{} 18 | err := protojson.Unmarshal(_eiafxConfigJSON, Config) 19 | if err != nil { 20 | return errors.Wrap(err, "error unmarshalling eiafx-config.json") 21 | } 22 | return nil 23 | } 24 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = api => ({ 2 | plugins: [ 3 | require("postcss-import"), 4 | require("tailwindcss"), 5 | require("autoprefixer"), 6 | ...(api.env === "production" 7 | ? [ 8 | require("cssnano")({ 9 | preset: "default", 10 | }), 11 | require("postcss-hash")({ 12 | algorithm: "sha256", 13 | trim: 8, 14 | manifest: "./static/manifest.postcss.json", 15 | }), 16 | ] 17 | : []), 18 | ], 19 | }); 20 | -------------------------------------------------------------------------------- /solo/display.go: -------------------------------------------------------------------------------- 1 | package solo 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | "text/tabwriter" 7 | "time" 8 | 9 | "github.com/dustin/go-humanize" 10 | "github.com/fanaticscripter/EggContractor/util" 11 | ) 12 | 13 | func (c *SoloContract) Display(now time.Time, multiAccountMode bool) { 14 | fmt.Printf("%s (%s)\n", c.GetName(), c.GetId()) 15 | w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) 16 | if multiAccountMode { 17 | playerName := c.GetPlayerNickname() 18 | if playerName == "" { 19 | playerName = "Unknown player" 20 | } 21 | fmt.Fprintf(w, "Player:\t%s\n", playerName) 22 | } 23 | contractType := "Standard" 24 | if c.GetIsElite() { 25 | contractType = "Elite" 26 | } 27 | fmt.Fprintf(w, "Type:\t%s\n", contractType) 28 | fmt.Fprintf(w, "Eggs laid:\t%s / %s\n", 29 | util.Numfmt(c.GetEggsLaid()), util.Numfmt(c.GetUltimateGoal())) 30 | fmt.Fprintf(w, "Eggs laid, offline-adjusted:\t%s\n", 31 | util.Numfmt(c.GetOfflineAdjustedEggsLaid(now))) 32 | fmt.Fprintf(w, "Hourly laying rate:\t%s current / %s required\n", 33 | util.Numfmt(c.GetEggsPerHour()), util.Numfmt(c.RequiredEggsPerHour())) 34 | fmt.Fprintf(w, "Time to complete:\t%s expected / %s remaining\n", 35 | util.FormatDuration(c.ExpectedDurationUntilFinish()), 36 | util.FormatDurationNonNegative(c.GetDurationUntilProductionDeadline())) 37 | fmt.Fprintf(w, "Time to complete, offline-adjusted:\t%s\n", 38 | util.FormatDuration(c.GetOfflineAdjustedExpectedDurationUntilFinish(now))) 39 | fmt.Fprintf(w, "Reported to server:\t%s (%s)\n", 40 | util.FormatDatetime(c.GetServerRefreshTime()), 41 | humanize.Time(c.GetServerRefreshTime())) 42 | w.Flush() 43 | fmt.Println() 44 | } 45 | -------------------------------------------------------------------------------- /solo/pb/computed.go: -------------------------------------------------------------------------------- 1 | package pb 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/fanaticscripter/EggContractor/util" 7 | ) 8 | 9 | func (c *SoloContract) GetDurationUntilProductionDeadline() time.Duration { 10 | return util.DoubleToDuration(c.SecondsUntilProductionDeadline) 11 | } 12 | 13 | func (c *SoloContract) GetDurationUntilCollectionDeadline() time.Duration { 14 | return util.DoubleToDuration(c.SecondsUntilCollectionDeadline) 15 | } 16 | 17 | func (c *SoloContract) GetServerRefreshTime() time.Time { 18 | return util.DoubleToTime(c.ServerRefreshTimestamp) 19 | } 20 | -------------------------------------------------------------------------------- /solo/pb/solo.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | option go_package = "github.com/fanaticscripter/EggContractor/solo/pb"; 4 | 5 | import "api/egginc.proto"; 6 | 7 | message SoloContract { 8 | string player_id = 13; 9 | string player_nickname = 14; 10 | string id = 1; 11 | string name = 2; 12 | bool is_elite = 3; 13 | EggType egg_type = 12; 14 | double ultimate_goal = 4; 15 | repeated Reward rewards = 11; 16 | double eggs_laid = 5; 17 | double eggs_per_second = 6; 18 | double seconds_until_production_deadline = 8; 19 | double seconds_until_collection_deadline = 9; 20 | double server_refresh_timestamp = 10; 21 | } 22 | -------------------------------------------------------------------------------- /solo/player.go: -------------------------------------------------------------------------------- 1 | package solo 2 | 3 | import ( 4 | "math" 5 | 6 | "github.com/fanaticscripter/EggContractor/api" 7 | ) 8 | 9 | type Player struct { 10 | Id string 11 | Nickname string 12 | Progress *api.FirstContact_Payload_Progress 13 | } 14 | 15 | func GetPlayer(backup *api.FirstContact_Payload) *Player { 16 | return &Player{ 17 | Id: backup.EiUserId, 18 | Nickname: backup.UserName, 19 | Progress: backup.Progress, 20 | } 21 | } 22 | 23 | func (p *Player) EarningBonusPercentage() float64 { 24 | soulEggBonusPercentage := 10.0 25 | for _, r := range p.Progress.EpicResearches { 26 | if r.Id == "soul_eggs" { 27 | soulEggBonusPercentage += float64(r.Level) 28 | break 29 | } 30 | } 31 | prophecyEggBonusPercentage := 5.0 32 | for _, r := range p.Progress.EpicResearches { 33 | if r.Id == "prophecy_bonus" { 34 | prophecyEggBonusPercentage += float64(r.Level) 35 | } 36 | } 37 | soulEggBonusPercentage *= math.Pow(1+prophecyEggBonusPercentage/100, float64(p.Progress.ProphecyEggs)) 38 | return soulEggBonusPercentage * p.Progress.SoulEggs 39 | } 40 | 41 | func (p *Player) EarningBonus() float64 { 42 | return p.EarningBonusPercentage() / 100 43 | } 44 | -------------------------------------------------------------------------------- /solo/rate.go: -------------------------------------------------------------------------------- 1 | package solo 2 | 3 | import "github.com/fanaticscripter/EggContractor/api" 4 | 5 | type layingRateResearch struct { 6 | Id string 7 | PerLevel float64 8 | MaxLevels int 9 | } 10 | 11 | const _baseLayingRate float64 = 1.0 / 30 // 1 egg per 30 seconds 12 | 13 | var _layingRateCommonResearches = []layingRateResearch{ 14 | {"comfy_nests", 0.10, 50}, 15 | {"hen_house_ac", 0.05, 50}, 16 | {"improved_genetics", 0.15, 30}, 17 | {"time_compress", 0.10, 20}, 18 | {"timeline_diversion", 0.02, 50}, 19 | {"relativity_optimization", 0.10, 10}, 20 | } 21 | 22 | var _layingRateEpicResearches = []layingRateResearch{ 23 | {"epic_egg_laying", 0.05, 20}, 24 | } 25 | 26 | func eggsPerChickenPerSecond(commonResearches []*api.Research, epicResearches []*api.EpicResearch) float64 { 27 | rate := _baseLayingRate 28 | for _, r := range _layingRateCommonResearches { 29 | for _, rr := range commonResearches { 30 | if r.Id == rr.Id { 31 | rate *= 1 + float64(rr.Level)*r.PerLevel 32 | break 33 | } 34 | } 35 | } 36 | for _, r := range _layingRateEpicResearches { 37 | for _, rr := range epicResearches { 38 | if r.Id == rr.Id { 39 | rate *= 1 + float64(rr.Level)*r.PerLevel 40 | break 41 | } 42 | } 43 | } 44 | return rate 45 | } 46 | -------------------------------------------------------------------------------- /solo/serialized.go: -------------------------------------------------------------------------------- 1 | package solo 2 | 3 | import ( 4 | "google.golang.org/protobuf/proto" 5 | 6 | "github.com/fanaticscripter/EggContractor/solo/pb" 7 | ) 8 | 9 | func (c *SoloContract) Marshal() ([]byte, error) { 10 | return proto.Marshal(c.ToPBSoloContract()) 11 | } 12 | 13 | func UnmarshalSoloContract(b []byte) (*SoloContract, error) { 14 | c := &pb.SoloContract{} 15 | err := proto.Unmarshal(b, c) 16 | if err != nil { 17 | return nil, err 18 | } 19 | return &SoloContract{c}, nil 20 | } 21 | -------------------------------------------------------------------------------- /static/.gitignore: -------------------------------------------------------------------------------- 1 | /*.css 2 | /*.js 3 | /*.json 4 | -------------------------------------------------------------------------------- /static/egginc-extras/README.md: -------------------------------------------------------------------------------- 1 | For some reason, a few key icons can't be found (as least not in PNG form) in the Egg, Inc. v1.12.13 Android apk I downloaded from online. I ended up stealing these from egginc.mioi.io and putting them in this extras directory. 2 | -------------------------------------------------------------------------------- /static/egginc-extras/icon_golden_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc-extras/icon_golden_egg.png -------------------------------------------------------------------------------- /static/egginc-extras/icon_piggy_golden_egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc-extras/icon_piggy_golden_egg.png -------------------------------------------------------------------------------- /static/egginc-extras/icon_piggy_level_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc-extras/icon_piggy_level_up.png -------------------------------------------------------------------------------- /static/egginc-extras/icon_piggy_multiply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc-extras/icon_piggy_multiply.png -------------------------------------------------------------------------------- /static/egginc/README.md: -------------------------------------------------------------------------------- 1 | These images were extracted from an Egg, Inc. v1.12.13 Android apk I downloaded from online. Specifically, they are all found in the assets/textures-etc1png-med subdirectory. 2 | -------------------------------------------------------------------------------- /static/egginc/afx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx.png -------------------------------------------------------------------------------- /static/egginc/afx_alien_wood_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_alien_wood_1.png -------------------------------------------------------------------------------- /static/egginc/afx_alien_wood_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_alien_wood_2.png -------------------------------------------------------------------------------- /static/egginc/afx_alien_wood_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_alien_wood_3.png -------------------------------------------------------------------------------- /static/egginc/afx_ancient_tungsten_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ancient_tungsten_1.png -------------------------------------------------------------------------------- /static/egginc/afx_ancient_tungsten_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ancient_tungsten_2.png -------------------------------------------------------------------------------- /static/egginc/afx_ancient_tungsten_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ancient_tungsten_3.png -------------------------------------------------------------------------------- /static/egginc/afx_aurelian_brooch_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_aurelian_brooch_1.png -------------------------------------------------------------------------------- /static/egginc/afx_aurelian_brooch_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_aurelian_brooch_2.png -------------------------------------------------------------------------------- /static/egginc/afx_aurelian_brooch_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_aurelian_brooch_3.png -------------------------------------------------------------------------------- /static/egginc/afx_aurelian_brooch_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_aurelian_brooch_4.png -------------------------------------------------------------------------------- /static/egginc/afx_beak_of_midas_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_beak_of_midas_1.png -------------------------------------------------------------------------------- /static/egginc/afx_beak_of_midas_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_beak_of_midas_2.png -------------------------------------------------------------------------------- /static/egginc/afx_beak_of_midas_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_beak_of_midas_3.png -------------------------------------------------------------------------------- /static/egginc/afx_beak_of_midas_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_beak_of_midas_4.png -------------------------------------------------------------------------------- /static/egginc/afx_book_of_basan_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_book_of_basan_1.png -------------------------------------------------------------------------------- /static/egginc/afx_book_of_basan_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_book_of_basan_2.png -------------------------------------------------------------------------------- /static/egginc/afx_book_of_basan_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_book_of_basan_3.png -------------------------------------------------------------------------------- /static/egginc/afx_book_of_basan_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_book_of_basan_4.png -------------------------------------------------------------------------------- /static/egginc/afx_carved_rainstick_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_carved_rainstick_1.png -------------------------------------------------------------------------------- /static/egginc/afx_carved_rainstick_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_carved_rainstick_2.png -------------------------------------------------------------------------------- /static/egginc/afx_carved_rainstick_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_carved_rainstick_3.png -------------------------------------------------------------------------------- /static/egginc/afx_carved_rainstick_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_carved_rainstick_4.png -------------------------------------------------------------------------------- /static/egginc/afx_celestial_bronze_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_celestial_bronze_1.png -------------------------------------------------------------------------------- /static/egginc/afx_celestial_bronze_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_celestial_bronze_2.png -------------------------------------------------------------------------------- /static/egginc/afx_celestial_bronze_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_celestial_bronze_3.png -------------------------------------------------------------------------------- /static/egginc/afx_centaurian_steel_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_centaurian_steel_1.png -------------------------------------------------------------------------------- /static/egginc/afx_centaurian_steel_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_centaurian_steel_2.png -------------------------------------------------------------------------------- /static/egginc/afx_centaurian_steel_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_centaurian_steel_3.png -------------------------------------------------------------------------------- /static/egginc/afx_clarity_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_clarity_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_clarity_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_clarity_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_clarity_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_clarity_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_clarity_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_clarity_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_demeters_necklace_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_demeters_necklace_1.png -------------------------------------------------------------------------------- /static/egginc/afx_demeters_necklace_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_demeters_necklace_2.png -------------------------------------------------------------------------------- /static/egginc/afx_demeters_necklace_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_demeters_necklace_3.png -------------------------------------------------------------------------------- /static/egginc/afx_demeters_necklace_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_demeters_necklace_4.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_monocle_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_monocle_1.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_monocle_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_monocle_2.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_monocle_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_monocle_3.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_monocle_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_monocle_4.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_dilithium_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_dilithium_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_eridani_feather_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_eridani_feather_1.png -------------------------------------------------------------------------------- /static/egginc/afx_eridani_feather_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_eridani_feather_2.png -------------------------------------------------------------------------------- /static/egginc/afx_eridani_feather_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_eridani_feather_3.png -------------------------------------------------------------------------------- /static/egginc/afx_et_aluminum_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_et_aluminum_1.png -------------------------------------------------------------------------------- /static/egginc/afx_et_aluminum_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_et_aluminum_2.png -------------------------------------------------------------------------------- /static/egginc/afx_et_aluminum_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_et_aluminum_3.png -------------------------------------------------------------------------------- /static/egginc/afx_gold_meteorite_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_gold_meteorite_1.png -------------------------------------------------------------------------------- /static/egginc/afx_gold_meteorite_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_gold_meteorite_2.png -------------------------------------------------------------------------------- /static/egginc/afx_gold_meteorite_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_gold_meteorite_3.png -------------------------------------------------------------------------------- /static/egginc/afx_interstellar_compass_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_interstellar_compass_1.png -------------------------------------------------------------------------------- /static/egginc/afx_interstellar_compass_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_interstellar_compass_2.png -------------------------------------------------------------------------------- /static/egginc/afx_interstellar_compass_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_interstellar_compass_3.png -------------------------------------------------------------------------------- /static/egginc/afx_interstellar_compass_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_interstellar_compass_4.png -------------------------------------------------------------------------------- /static/egginc/afx_lalande_hide_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lalande_hide_1.png -------------------------------------------------------------------------------- /static/egginc/afx_lalande_hide_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lalande_hide_2.png -------------------------------------------------------------------------------- /static/egginc/afx_lalande_hide_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lalande_hide_3.png -------------------------------------------------------------------------------- /static/egginc/afx_life_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_life_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_life_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_life_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_life_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_life_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_life_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_life_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_light_eggendil_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_light_eggendil_1.png -------------------------------------------------------------------------------- /static/egginc/afx_light_eggendil_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_light_eggendil_2.png -------------------------------------------------------------------------------- /static/egginc/afx_light_eggendil_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_light_eggendil_3.png -------------------------------------------------------------------------------- /static/egginc/afx_light_eggendil_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_light_eggendil_4.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_totem_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_totem_1.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_totem_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_totem_2.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_totem_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_totem_3.png -------------------------------------------------------------------------------- /static/egginc/afx_lunar_totem_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_lunar_totem_4.png -------------------------------------------------------------------------------- /static/egginc/afx_mercurys_lens_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_mercurys_lens_1.png -------------------------------------------------------------------------------- /static/egginc/afx_mercurys_lens_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_mercurys_lens_2.png -------------------------------------------------------------------------------- /static/egginc/afx_mercurys_lens_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_mercurys_lens_3.png -------------------------------------------------------------------------------- /static/egginc/afx_mercurys_lens_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_mercurys_lens_4.png -------------------------------------------------------------------------------- /static/egginc/afx_neo_medallion_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_neo_medallion_1.png -------------------------------------------------------------------------------- /static/egginc/afx_neo_medallion_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_neo_medallion_2.png -------------------------------------------------------------------------------- /static/egginc/afx_neo_medallion_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_neo_medallion_3.png -------------------------------------------------------------------------------- /static/egginc/afx_neo_medallion_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_neo_medallion_4.png -------------------------------------------------------------------------------- /static/egginc/afx_ornate_gusset_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ornate_gusset_1.png -------------------------------------------------------------------------------- /static/egginc/afx_ornate_gusset_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ornate_gusset_2.png -------------------------------------------------------------------------------- /static/egginc/afx_ornate_gusset_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ornate_gusset_3.png -------------------------------------------------------------------------------- /static/egginc/afx_ornate_gusset_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ornate_gusset_4.png -------------------------------------------------------------------------------- /static/egginc/afx_phoenix_feather_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_phoenix_feather_1.png -------------------------------------------------------------------------------- /static/egginc/afx_phoenix_feather_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_phoenix_feather_2.png -------------------------------------------------------------------------------- /static/egginc/afx_phoenix_feather_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_phoenix_feather_3.png -------------------------------------------------------------------------------- /static/egginc/afx_phoenix_feather_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_phoenix_feather_4.png -------------------------------------------------------------------------------- /static/egginc/afx_prophecy_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_prophecy_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_prophecy_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_prophecy_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_prophecy_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_prophecy_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_prophecy_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_prophecy_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_puzzle_cube_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_puzzle_cube_1.png -------------------------------------------------------------------------------- /static/egginc/afx_puzzle_cube_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_puzzle_cube_2.png -------------------------------------------------------------------------------- /static/egginc/afx_puzzle_cube_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_puzzle_cube_3.png -------------------------------------------------------------------------------- /static/egginc/afx_puzzle_cube_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_puzzle_cube_4.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_metronome_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_metronome_1.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_metronome_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_metronome_2.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_metronome_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_metronome_3.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_metronome_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_metronome_4.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_quantum_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_quantum_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_shell_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_shell_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_shell_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_shell_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_shell_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_shell_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_shell_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_shell_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_bcr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_bcr.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_chicken_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_chicken_1.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_chicken_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_chicken_9.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_chicken_heavy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_chicken_heavy.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_corellihen_corvette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_corellihen_corvette.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_defihent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_defihent.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_galeggtica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_galeggtica.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_henerprise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_henerprise.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_in_a_bottle_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_in_a_bottle_1.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_in_a_bottle_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_in_a_bottle_2.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_in_a_bottle_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_in_a_bottle_3.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_in_a_bottle_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_in_a_bottle_4.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_millenium_chicken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_millenium_chicken.png -------------------------------------------------------------------------------- /static/egginc/afx_ship_voyegger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_ship_voyegger.png -------------------------------------------------------------------------------- /static/egginc/afx_solar_titanium_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_solar_titanium_1.png -------------------------------------------------------------------------------- /static/egginc/afx_solar_titanium_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_solar_titanium_2.png -------------------------------------------------------------------------------- /static/egginc/afx_solar_titanium_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_solar_titanium_3.png -------------------------------------------------------------------------------- /static/egginc/afx_soul_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_soul_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_soul_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_soul_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_soul_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_soul_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_soul_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_soul_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_space_rocks_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_space_rocks_1.png -------------------------------------------------------------------------------- /static/egginc/afx_space_rocks_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_space_rocks_2.png -------------------------------------------------------------------------------- /static/egginc/afx_space_rocks_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_space_rocks_3.png -------------------------------------------------------------------------------- /static/egginc/afx_spaceship_placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_spaceship_placeholder.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_deflector_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_deflector_1.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_deflector_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_deflector_2.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_deflector_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_deflector_3.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_deflector_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_deflector_4.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_tachyon_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tachyon_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_tau_ceti_geode_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tau_ceti_geode_1.png -------------------------------------------------------------------------------- /static/egginc/afx_tau_ceti_geode_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tau_ceti_geode_2.png -------------------------------------------------------------------------------- /static/egginc/afx_tau_ceti_geode_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tau_ceti_geode_3.png -------------------------------------------------------------------------------- /static/egginc/afx_terra_stone_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_terra_stone_1.png -------------------------------------------------------------------------------- /static/egginc/afx_terra_stone_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_terra_stone_2.png -------------------------------------------------------------------------------- /static/egginc/afx_terra_stone_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_terra_stone_3.png -------------------------------------------------------------------------------- /static/egginc/afx_terra_stone_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_terra_stone_4.png -------------------------------------------------------------------------------- /static/egginc/afx_the_chalice_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_the_chalice_1.png -------------------------------------------------------------------------------- /static/egginc/afx_the_chalice_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_the_chalice_2.png -------------------------------------------------------------------------------- /static/egginc/afx_the_chalice_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_the_chalice_3.png -------------------------------------------------------------------------------- /static/egginc/afx_the_chalice_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_the_chalice_4.png -------------------------------------------------------------------------------- /static/egginc/afx_titanium_actuator_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_titanium_actuator_1.png -------------------------------------------------------------------------------- /static/egginc/afx_titanium_actuator_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_titanium_actuator_2.png -------------------------------------------------------------------------------- /static/egginc/afx_titanium_actuator_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_titanium_actuator_3.png -------------------------------------------------------------------------------- /static/egginc/afx_titanium_actuator_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_titanium_actuator_4.png -------------------------------------------------------------------------------- /static/egginc/afx_tungsten_ankh_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tungsten_ankh_1.png -------------------------------------------------------------------------------- /static/egginc/afx_tungsten_ankh_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tungsten_ankh_2.png -------------------------------------------------------------------------------- /static/egginc/afx_tungsten_ankh_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tungsten_ankh_3.png -------------------------------------------------------------------------------- /static/egginc/afx_tungsten_ankh_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_tungsten_ankh_4.png -------------------------------------------------------------------------------- /static/egginc/afx_vial_martian_dust_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_vial_martian_dust_1.png -------------------------------------------------------------------------------- /static/egginc/afx_vial_martian_dust_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_vial_martian_dust_2.png -------------------------------------------------------------------------------- /static/egginc/afx_vial_martian_dust_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_vial_martian_dust_3.png -------------------------------------------------------------------------------- /static/egginc/afx_vial_martian_dust_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/afx_vial_martian_dust_4.png -------------------------------------------------------------------------------- /static/egginc/b_icon_blank_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_blank_check.png -------------------------------------------------------------------------------- /static/egginc/b_icon_boost_beacon_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_boost_beacon_blue.png -------------------------------------------------------------------------------- /static/egginc/b_icon_boost_beacon_blue_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_boost_beacon_blue_big.png -------------------------------------------------------------------------------- /static/egginc/b_icon_boost_beacon_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_boost_beacon_orange.png -------------------------------------------------------------------------------- /static/egginc/b_icon_boost_beacon_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_boost_beacon_purple.png -------------------------------------------------------------------------------- /static/egginc/b_icon_jimbos_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_jimbos_blue.png -------------------------------------------------------------------------------- /static/egginc/b_icon_jimbos_blue_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_jimbos_blue_big.png -------------------------------------------------------------------------------- /static/egginc/b_icon_jimbos_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_jimbos_orange.png -------------------------------------------------------------------------------- /static/egginc/b_icon_jimbos_orange_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_jimbos_orange_big.png -------------------------------------------------------------------------------- /static/egginc/b_icon_jimbos_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_jimbos_purple.png -------------------------------------------------------------------------------- /static/egginc/b_icon_jimbos_purple_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_jimbos_purple_big.png -------------------------------------------------------------------------------- /static/egginc/b_icon_money_printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_money_printer.png -------------------------------------------------------------------------------- /static/egginc/b_icon_quantum_bulb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_quantum_bulb.png -------------------------------------------------------------------------------- /static/egginc/b_icon_soul_beacon_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_soul_beacon_blue.png -------------------------------------------------------------------------------- /static/egginc/b_icon_soul_beacon_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_soul_beacon_orange.png -------------------------------------------------------------------------------- /static/egginc/b_icon_soul_beacon_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_soul_beacon_purple.png -------------------------------------------------------------------------------- /static/egginc/b_icon_soul_mirror_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_soul_mirror_blue.png -------------------------------------------------------------------------------- /static/egginc/b_icon_soul_mirror_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_soul_mirror_orange.png -------------------------------------------------------------------------------- /static/egginc/b_icon_soul_mirror_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_soul_mirror_purple.png -------------------------------------------------------------------------------- /static/egginc/b_icon_subsidy_application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_subsidy_application.png -------------------------------------------------------------------------------- /static/egginc/b_icon_tachyon_prism_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_tachyon_prism_blue.png -------------------------------------------------------------------------------- /static/egginc/b_icon_tachyon_prism_blue_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_tachyon_prism_blue_big.png -------------------------------------------------------------------------------- /static/egginc/b_icon_tachyon_prism_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_tachyon_prism_orange.png -------------------------------------------------------------------------------- /static/egginc/b_icon_tachyon_prism_orange_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_tachyon_prism_orange_big.png -------------------------------------------------------------------------------- /static/egginc/b_icon_tachyon_prism_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_tachyon_prism_purple.png -------------------------------------------------------------------------------- /static/egginc/b_icon_tachyon_prism_purple_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_tachyon_prism_purple_big.png -------------------------------------------------------------------------------- /static/egginc/b_icon_token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_token.png -------------------------------------------------------------------------------- /static/egginc/b_icon_token_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_token_package.png -------------------------------------------------------------------------------- /static/egginc/b_icon_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/b_icon_video.png -------------------------------------------------------------------------------- /static/egginc/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/black.png -------------------------------------------------------------------------------- /static/egginc/chicken_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/chicken_box.png -------------------------------------------------------------------------------- /static/egginc/chicken_box_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/chicken_box_large.png -------------------------------------------------------------------------------- /static/egginc/contract_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/contract_bg.png -------------------------------------------------------------------------------- /static/egginc/coop_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/coop_diagram.png -------------------------------------------------------------------------------- /static/egginc/egg_ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_ai.png -------------------------------------------------------------------------------- /static/egginc/egg_antimatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_antimatter.png -------------------------------------------------------------------------------- /static/egginc/egg_chocolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_chocolate.png -------------------------------------------------------------------------------- /static/egginc/egg_darkmatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_darkmatter.png -------------------------------------------------------------------------------- /static/egginc/egg_dilithium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_dilithium.png -------------------------------------------------------------------------------- /static/egginc/egg_easter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_easter.png -------------------------------------------------------------------------------- /static/egginc/egg_edible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_edible.png -------------------------------------------------------------------------------- /static/egginc/egg_enlightenment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_enlightenment.png -------------------------------------------------------------------------------- /static/egginc/egg_firework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_firework.png -------------------------------------------------------------------------------- /static/egginc/egg_fusion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_fusion.png -------------------------------------------------------------------------------- /static/egginc/egg_graviton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_graviton.png -------------------------------------------------------------------------------- /static/egginc/egg_immortality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_immortality.png -------------------------------------------------------------------------------- /static/egginc/egg_medical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_medical.png -------------------------------------------------------------------------------- /static/egginc/egg_medical2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_medical2.png -------------------------------------------------------------------------------- /static/egginc/egg_of_prophecy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_of_prophecy.png -------------------------------------------------------------------------------- /static/egginc/egg_prodigy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_prodigy.png -------------------------------------------------------------------------------- /static/egginc/egg_pumpkin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_pumpkin.png -------------------------------------------------------------------------------- /static/egginc/egg_quantum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_quantum.png -------------------------------------------------------------------------------- /static/egginc/egg_rocketfuel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_rocketfuel.png -------------------------------------------------------------------------------- /static/egginc/egg_soul.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_soul.png -------------------------------------------------------------------------------- /static/egginc/egg_superfood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_superfood.png -------------------------------------------------------------------------------- /static/egginc/egg_supermaterial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_supermaterial.png -------------------------------------------------------------------------------- /static/egginc/egg_tachyon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_tachyon.png -------------------------------------------------------------------------------- /static/egginc/egg_terraform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_terraform.png -------------------------------------------------------------------------------- /static/egginc/egg_universe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_universe.png -------------------------------------------------------------------------------- /static/egginc/egg_unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_unknown.png -------------------------------------------------------------------------------- /static/egginc/egg_vision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_vision.png -------------------------------------------------------------------------------- /static/egginc/egg_waterballoon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/egg_waterballoon.png -------------------------------------------------------------------------------- /static/egginc/ei_app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_app_icon.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_bunker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_bunker.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_center.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_chicken_universe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_chicken_universe.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_coop.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_double_decker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_double_decker.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_eggkea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_eggkea.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_eggtopia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_eggtopia.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_hab10k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_hab10k.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_hab1k.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_hab1k.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_hanger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_hanger.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_long_house.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_long_house.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_monolith.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_monolith.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_portal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_portal.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_shack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_shack.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_short_house.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_short_house.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_super_shack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_super_shack.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_the_standard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_the_standard.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_tower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_tower.png -------------------------------------------------------------------------------- /static/egginc/ei_hab_icon_warehouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_hab_icon_warehouse.png -------------------------------------------------------------------------------- /static/egginc/ei_particles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_particles.png -------------------------------------------------------------------------------- /static/egginc/ei_simple_gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_simple_gradient.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_10ft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_10ft.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_24ft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_24ft.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_double_semi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_double_semi.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_future_semi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_future_semi.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_hover_semi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_hover_semi.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_hyperloop_car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_hyperloop_car.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_hyperloop_car_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_hyperloop_car_blank.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_hyperloop_engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_hyperloop_engine.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_mega_semi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_mega_semi.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_pickup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_pickup.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_quantum_transporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_quantum_transporter.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_semi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_semi.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_transit_van.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_transit_van.png -------------------------------------------------------------------------------- /static/egginc/ei_vehicle_icon_trike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/ei_vehicle_icon_trike.png -------------------------------------------------------------------------------- /static/egginc/finger_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/finger_point.png -------------------------------------------------------------------------------- /static/egginc/finger_point2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/finger_point2.png -------------------------------------------------------------------------------- /static/egginc/free_permit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/free_permit.png -------------------------------------------------------------------------------- /static/egginc/golden_egg_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/golden_egg_box.png -------------------------------------------------------------------------------- /static/egginc/golden_egg_crate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/golden_egg_crate.png -------------------------------------------------------------------------------- /static/egginc/golden_egg_pallet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/golden_egg_pallet.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_chest_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_chest_1.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_chest_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_chest_2.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_chest_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_chest_3.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_consume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_consume.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_craft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_craft.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_mission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_mission.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_set.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_stone_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_stone_add.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_stone_add_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_stone_add_large.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_stone_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_stone_check.png -------------------------------------------------------------------------------- /static/egginc/icon_afx_stone_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_afx_stone_remove.png -------------------------------------------------------------------------------- /static/egginc/icon_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_arrow.png -------------------------------------------------------------------------------- /static/egginc/icon_bock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_bock.png -------------------------------------------------------------------------------- /static/egginc/icon_bock_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_bock_v.png -------------------------------------------------------------------------------- /static/egginc/icon_boost_shop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_boost_shop.png -------------------------------------------------------------------------------- /static/egginc/icon_boost_token_flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_boost_token_flat.png -------------------------------------------------------------------------------- /static/egginc/icon_calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_calendar.png -------------------------------------------------------------------------------- /static/egginc/icon_camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_camera.png -------------------------------------------------------------------------------- /static/egginc/icon_cash_pile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_cash_pile.png -------------------------------------------------------------------------------- /static/egginc/icon_cash_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_cash_stack.png -------------------------------------------------------------------------------- /static/egginc/icon_cash_ton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_cash_ton.png -------------------------------------------------------------------------------- /static/egginc/icon_check_mark_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_check_mark_overlay.png -------------------------------------------------------------------------------- /static/egginc/icon_checkbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_checkbox.png -------------------------------------------------------------------------------- /static/egginc/icon_checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_checkbox_checked.png -------------------------------------------------------------------------------- /static/egginc/icon_chick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_chick.png -------------------------------------------------------------------------------- /static/egginc/icon_coop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_coop.png -------------------------------------------------------------------------------- /static/egginc/icon_credits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_credits.png -------------------------------------------------------------------------------- /static/egginc/icon_disclosure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_disclosure.png -------------------------------------------------------------------------------- /static/egginc/icon_egg_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_egg_flow.png -------------------------------------------------------------------------------- /static/egginc/icon_eggs_4_dozen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_eggs_4_dozen.png -------------------------------------------------------------------------------- /static/egginc/icon_eggs_dozen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_eggs_dozen.png -------------------------------------------------------------------------------- /static/egginc/icon_eggs_half_dozen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_eggs_half_dozen.png -------------------------------------------------------------------------------- /static/egginc/icon_eggs_truckload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_eggs_truckload.png -------------------------------------------------------------------------------- /static/egginc/icon_elite_contracts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_elite_contracts.png -------------------------------------------------------------------------------- /static/egginc/icon_farm_to_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_farm_to_table.png -------------------------------------------------------------------------------- /static/egginc/icon_gc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_gc.png -------------------------------------------------------------------------------- /static/egginc/icon_gift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_gift.png -------------------------------------------------------------------------------- /static/egginc/icon_golden_egg1000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_golden_egg1000.png -------------------------------------------------------------------------------- /static/egginc/icon_gpgs_achievements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_gpgs_achievements.png -------------------------------------------------------------------------------- /static/egginc/icon_gpgs_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_gpgs_icon.png -------------------------------------------------------------------------------- /static/egginc/icon_gpgs_leaderboards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_gpgs_leaderboards.png -------------------------------------------------------------------------------- /static/egginc/icon_gpgs_quests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_gpgs_quests.png -------------------------------------------------------------------------------- /static/egginc/icon_hatchery_refill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_hatchery_refill.png -------------------------------------------------------------------------------- /static/egginc/icon_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_help.png -------------------------------------------------------------------------------- /static/egginc/icon_home_farm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_home_farm.png -------------------------------------------------------------------------------- /static/egginc/icon_inf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_inf.png -------------------------------------------------------------------------------- /static/egginc/icon_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_info.png -------------------------------------------------------------------------------- /static/egginc/icon_info_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_info_black.png -------------------------------------------------------------------------------- /static/egginc/icon_larrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_larrow.png -------------------------------------------------------------------------------- /static/egginc/icon_lightbulb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_lightbulb.png -------------------------------------------------------------------------------- /static/egginc/icon_logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_logout.png -------------------------------------------------------------------------------- /static/egginc/icon_mini_farm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_mini_farm.png -------------------------------------------------------------------------------- /static/egginc/icon_mission_complete_big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_mission_complete_big.png -------------------------------------------------------------------------------- /static/egginc/icon_more_games.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_more_games.png -------------------------------------------------------------------------------- /static/egginc/icon_newspaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_newspaper.png -------------------------------------------------------------------------------- /static/egginc/icon_official_mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_official_mail.png -------------------------------------------------------------------------------- /static/egginc/icon_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_package.png -------------------------------------------------------------------------------- /static/egginc/icon_piggy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_piggy.png -------------------------------------------------------------------------------- /static/egginc/icon_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_play.png -------------------------------------------------------------------------------- /static/egginc/icon_play_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_play_2x.png -------------------------------------------------------------------------------- /static/egginc/icon_player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_player.png -------------------------------------------------------------------------------- /static/egginc/icon_rarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_rarrow.png -------------------------------------------------------------------------------- /static/egginc/icon_return_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_return_arrow.png -------------------------------------------------------------------------------- /static/egginc/icon_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_settings.png -------------------------------------------------------------------------------- /static/egginc/icon_share_droid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_share_droid.png -------------------------------------------------------------------------------- /static/egginc/icon_share_ios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_share_ios.png -------------------------------------------------------------------------------- /static/egginc/icon_small_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_small_arrow.png -------------------------------------------------------------------------------- /static/egginc/icon_sort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_sort.png -------------------------------------------------------------------------------- /static/egginc/icon_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_star.png -------------------------------------------------------------------------------- /static/egginc/icon_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_stats.png -------------------------------------------------------------------------------- /static/egginc/icon_trophy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_trophy.png -------------------------------------------------------------------------------- /static/egginc/icon_trophy_bronze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_trophy_bronze.png -------------------------------------------------------------------------------- /static/egginc/icon_trophy_diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_trophy_diamond.png -------------------------------------------------------------------------------- /static/egginc/icon_trophy_gold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_trophy_gold.png -------------------------------------------------------------------------------- /static/egginc/icon_trophy_plat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_trophy_plat.png -------------------------------------------------------------------------------- /static/egginc/icon_trophy_silver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_trophy_silver.png -------------------------------------------------------------------------------- /static/egginc/icon_unlimited_chickens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_unlimited_chickens.png -------------------------------------------------------------------------------- /static/egginc/icon_warp_long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_warp_long.png -------------------------------------------------------------------------------- /static/egginc/icon_warp_short.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_warp_short.png -------------------------------------------------------------------------------- /static/egginc/icon_wb_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_wb_package.png -------------------------------------------------------------------------------- /static/egginc/icon_zzz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/icon_zzz.png -------------------------------------------------------------------------------- /static/egginc/national_eggquirer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/national_eggquirer.png -------------------------------------------------------------------------------- /static/egginc/new_yolk_times.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/new_yolk_times.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank1.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank2.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank3.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank4.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank5.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank6.png -------------------------------------------------------------------------------- /static/egginc/piggy_bank7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/piggy_bank7.png -------------------------------------------------------------------------------- /static/egginc/pro_permit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/pro_permit.png -------------------------------------------------------------------------------- /static/egginc/r_icon_accounting_tricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_accounting_tricks.png -------------------------------------------------------------------------------- /static/egginc/r_icon_atomic_purification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_atomic_purification.png -------------------------------------------------------------------------------- /static/egginc/r_icon_autonomous_vehicles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_autonomous_vehicles.png -------------------------------------------------------------------------------- /static/egginc/r_icon_better_incubators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_better_incubators.png -------------------------------------------------------------------------------- /static/egginc/r_icon_better_incubators2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_better_incubators2.png -------------------------------------------------------------------------------- /static/egginc/r_icon_bust_unions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_bust_unions.png -------------------------------------------------------------------------------- /static/egginc/r_icon_cheaper_contractors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_cheaper_contractors.png -------------------------------------------------------------------------------- /static/egginc/r_icon_comfortable_nests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_comfortable_nests.png -------------------------------------------------------------------------------- /static/egginc/r_icon_compact_incubators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_compact_incubators.png -------------------------------------------------------------------------------- /static/egginc/r_icon_coordinated_clucking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_coordinated_clucking.png -------------------------------------------------------------------------------- /static/egginc/r_icon_crystalline_shelling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_crystalline_shelling.png -------------------------------------------------------------------------------- /static/egginc/r_icon_dark_containment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_dark_containment.png -------------------------------------------------------------------------------- /static/egginc/r_icon_double_egg_size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_double_egg_size.png -------------------------------------------------------------------------------- /static/egginc/r_icon_driver_training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_driver_training.png -------------------------------------------------------------------------------- /static/egginc/r_icon_drone_rewards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_drone_rewards.png -------------------------------------------------------------------------------- /static/egginc/r_icon_egg_bots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_egg_bots.png -------------------------------------------------------------------------------- /static/egginc/r_icon_egg_quality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_egg_quality.png -------------------------------------------------------------------------------- /static/egginc/r_icon_egg_quality2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_egg_quality2.png -------------------------------------------------------------------------------- /static/egginc/r_icon_eggsistor_miniturization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_eggsistor_miniturization.png -------------------------------------------------------------------------------- /static/egginc/r_icon_enlightened_chickens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_enlightened_chickens.png -------------------------------------------------------------------------------- /static/egginc/r_icon_epic_clucking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_epic_clucking.png -------------------------------------------------------------------------------- /static/egginc/r_icon_epic_egg_laying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_epic_egg_laying.png -------------------------------------------------------------------------------- /static/egginc/r_icon_epic_hatchery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_epic_hatchery.png -------------------------------------------------------------------------------- /static/egginc/r_icon_epic_internal_hatchery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_epic_internal_hatchery.png -------------------------------------------------------------------------------- /static/egginc/r_icon_epic_multiplier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_epic_multiplier.png -------------------------------------------------------------------------------- /static/egginc/r_icon_even_bigger_eggs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_even_bigger_eggs.png -------------------------------------------------------------------------------- /static/egginc/r_icon_excitable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_excitable.png -------------------------------------------------------------------------------- /static/egginc/r_icon_exoskeletons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_exoskeletons.png -------------------------------------------------------------------------------- /static/egginc/r_icon_free_tuneups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_free_tuneups.png -------------------------------------------------------------------------------- /static/egginc/r_icon_genetic_purification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_genetic_purification.png -------------------------------------------------------------------------------- /static/egginc/r_icon_grav_plating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_grav_plating.png -------------------------------------------------------------------------------- /static/egginc/r_icon_gravitational_coupling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_gravitational_coupling.png -------------------------------------------------------------------------------- /static/egginc/r_icon_graviton_coating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_graviton_coating.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hab_capacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hab_capacity.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hatchery_capacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hatchery_capacity.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hatchery_rebuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hatchery_rebuild.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hen_house_ac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hen_house_ac.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hold_to_hatch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hold_to_hatch.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hold_to_research.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hold_to_research.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hover_upgrades.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hover_upgrades.png -------------------------------------------------------------------------------- /static/egginc/r_icon_hyper_portalling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_hyper_portalling.png -------------------------------------------------------------------------------- /static/egginc/r_icon_improved_genetics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_improved_genetics.png -------------------------------------------------------------------------------- /static/egginc/r_icon_improved_leafsprings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_improved_leafsprings.png -------------------------------------------------------------------------------- /static/egginc/r_icon_internal_hatchery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_internal_hatchery.png -------------------------------------------------------------------------------- /static/egginc/r_icon_internal_hatchery2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_internal_hatchery2.png -------------------------------------------------------------------------------- /static/egginc/r_icon_internal_hatchery_calm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_internal_hatchery_calm.png -------------------------------------------------------------------------------- /static/egginc/r_icon_internal_hatchery_expansion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_internal_hatchery_expansion.png -------------------------------------------------------------------------------- /static/egginc/r_icon_internal_hatchery_expansion2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_internal_hatchery_expansion2.png -------------------------------------------------------------------------------- /static/egginc/r_icon_internal_hatchery_sharing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_internal_hatchery_sharing.png -------------------------------------------------------------------------------- /static/egginc/r_icon_lab_upgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_lab_upgrade.png -------------------------------------------------------------------------------- /static/egginc/r_icon_lightweight_boxes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_lightweight_boxes.png -------------------------------------------------------------------------------- /static/egginc/r_icon_machine_learning_incubators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_machine_learning_incubators.png -------------------------------------------------------------------------------- /static/egginc/r_icon_matter_reconfiguration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_matter_reconfiguration.png -------------------------------------------------------------------------------- /static/egginc/r_icon_microlux_suites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_microlux_suites.png -------------------------------------------------------------------------------- /static/egginc/r_icon_motivational_clucking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_motivational_clucking.png -------------------------------------------------------------------------------- /static/egginc/r_icon_multiversal_layering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_multiversal_layering.png -------------------------------------------------------------------------------- /static/egginc/r_icon_neural_linking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_neural_linking.png -------------------------------------------------------------------------------- /static/egginc/r_icon_neural_net_refinement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_neural_net_refinement.png -------------------------------------------------------------------------------- /static/egginc/r_icon_os_mult.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_os_mult.png -------------------------------------------------------------------------------- /static/egginc/r_icon_os_mult2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_os_mult2.png -------------------------------------------------------------------------------- /static/egginc/r_icon_padded_packaging.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_padded_packaging.png -------------------------------------------------------------------------------- /static/egginc/r_icon_prestige_bonus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_prestige_bonus.png -------------------------------------------------------------------------------- /static/egginc/r_icon_prime_certification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_prime_certification.png -------------------------------------------------------------------------------- /static/egginc/r_icon_prophecy_bonus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_prophecy_bonus.png -------------------------------------------------------------------------------- /static/egginc/r_icon_quantum_egg_storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_quantum_egg_storage.png -------------------------------------------------------------------------------- /static/egginc/r_icon_relativity_optimization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_relativity_optimization.png -------------------------------------------------------------------------------- /static/egginc/r_icon_shell_fortification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_shell_fortification.png -------------------------------------------------------------------------------- /static/egginc/r_icon_silo_capacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_silo_capacity.png -------------------------------------------------------------------------------- /static/egginc/r_icon_silo_quality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_silo_quality.png -------------------------------------------------------------------------------- /static/egginc/r_icon_soul_food.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_soul_food.png -------------------------------------------------------------------------------- /static/egginc/r_icon_super_alloy_frames.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_super_alloy_frames.png -------------------------------------------------------------------------------- /static/egginc/r_icon_superfeed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_superfeed.png -------------------------------------------------------------------------------- /static/egginc/r_icon_supplements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_supplements.png -------------------------------------------------------------------------------- /static/egginc/r_icon_telepathic_will.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_telepathic_will.png -------------------------------------------------------------------------------- /static/egginc/r_icon_time_compression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_time_compression.png -------------------------------------------------------------------------------- /static/egginc/r_icon_timeline_diversion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_timeline_diversion.png -------------------------------------------------------------------------------- /static/egginc/r_icon_timeline_splicing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_timeline_splicing.png -------------------------------------------------------------------------------- /static/egginc/r_icon_traffic_management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_traffic_management.png -------------------------------------------------------------------------------- /static/egginc/r_icon_transportation_lobbyist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_transportation_lobbyist.png -------------------------------------------------------------------------------- /static/egginc/r_icon_vehicle_capacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_vehicle_capacity.png -------------------------------------------------------------------------------- /static/egginc/r_icon_vehicle_speed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_vehicle_speed.png -------------------------------------------------------------------------------- /static/egginc/r_icon_video_doubler_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_video_doubler_time.png -------------------------------------------------------------------------------- /static/egginc/r_icon_warp_boost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_warp_boost.png -------------------------------------------------------------------------------- /static/egginc/r_icon_wormhole_dampening.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/r_icon_wormhole_dampening.png -------------------------------------------------------------------------------- /static/egginc/sale_sticker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/sale_sticker.png -------------------------------------------------------------------------------- /static/egginc/sprites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/sprites.png -------------------------------------------------------------------------------- /static/egginc/washington_peck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/washington_peck.png -------------------------------------------------------------------------------- /static/egginc/workshop_background_temp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/workshop_background_temp.png -------------------------------------------------------------------------------- /static/egginc/zh2_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/egginc/zh2_icon.png -------------------------------------------------------------------------------- /static/favicon-180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/favicon-180.png -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fanaticscripter/EggContractor/3445bf9dd81a9b1497134f669a928c71fd369a32/static/favicon.ico -------------------------------------------------------------------------------- /static/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | purge: ["templates/**/*.html", "js/**/*.vue"], 3 | darkMode: false, 4 | theme: { 5 | extend: { 6 | cursor: { 7 | help: "help", 8 | }, 9 | minHeight: { 10 | // min-h-stretch fixes 100vh != actual viewport height issue in iOS Safari. 11 | // autoprefixer should expand stretch to -webkit-fill-available for Chrome/Safari. 12 | // https://allthingssmitty.com/2020/05/11/css-fix-for-100vh-in-mobile-webkit/ 13 | stretch: "stretch", 14 | }, 15 | }, 16 | }, 17 | plugins: [require("@tailwindcss/forms")], 18 | }; 19 | -------------------------------------------------------------------------------- /templates/components/auto_refresh_toggle.html: -------------------------------------------------------------------------------- 1 | {{define "auto_refresh_toggle"}} 2 |
3 | Auto refresh 4 | 9 |
10 | {{end}} 11 | -------------------------------------------------------------------------------- /templates/components/contract_filter.html: -------------------------------------------------------------------------------- 1 | {{- /* The contract_filter template takes a []*web.ContractFilterConfig. */ -}} 2 | {{define "contract_filter"}} 3 | {{$filter := .Filter}} 4 |
5 | 11 |
12 | {{end}} 13 | -------------------------------------------------------------------------------- /templates/components/hide_full_toggle.html: -------------------------------------------------------------------------------- 1 | {{- /* The hide_full_toggle template takes a bool for the checked state. */ -}} 2 | {{define "hide_full_toggle"}} 3 |
4 | Hide full coops 5 | 6 |
7 | {{end}} 8 | -------------------------------------------------------------------------------- /templates/components/hide_solos_toggle.html: -------------------------------------------------------------------------------- 1 | {{- /* The hide_solos_toggle template takes a bool for the checked state. */ -}} 2 | {{define "hide_solos_toggle"}} 3 |
4 | Hide solos 5 | 6 |
7 | {{end}} 8 | -------------------------------------------------------------------------------- /templates/components/progress_bar.html: -------------------------------------------------------------------------------- 1 | {{- /* The coop template renders a contract.ProgressInfo */ -}} 2 | {{define "progress_bar"}} 3 |
4 |
5 |
6 |
7 |
8 |
9 | {{range .Rewards}} 10 | 11 | {{end}} 12 |
13 | {{end}} 14 | -------------------------------------------------------------------------------- /templates/components/solo_coop.html: -------------------------------------------------------------------------------- 1 | {{define "solo_coop"}} 2 | {{if .IsSolo}} 3 | {{template "solo" .Solo}} 4 | {{else}} 5 | {{template "coop" .Coop}} 6 | {{end}} 7 | {{end}} 8 | -------------------------------------------------------------------------------- /templates/components/status_label.html: -------------------------------------------------------------------------------- 1 | {{- /* The status_label template implements a status label for solo/coop contracts. 2 | Requires implementing .HasCompleted, .HasNoTimeLeft, and .IsOnTrackToFinish. */ -}} 3 | {{define "status_label"}} 4 | {{if .HasCompleted}} 5 |
6 | 7 | 8 | 9 | 10 | Completed 11 | 12 |
13 | {{else if .HasNoTimeLeft}} 14 |
15 | 16 | 17 | 18 | 19 | Out of time 20 | 21 |
22 | {{else if .IsOnTrackToFinish}} 23 |
24 | 25 | 26 | 27 | 28 | On track 29 | 30 |
31 | {{else}} 32 |
33 | 34 | 35 | 36 | 37 | Not on track 38 | 39 |
40 | {{end}} 41 | {{end}} 42 | -------------------------------------------------------------------------------- /templates/fragments/banners.html: -------------------------------------------------------------------------------- 1 | {{define "banners"}} 2 | {{range .Errors}} 3 |
4 |
5 |
6 | 7 | 10 |
11 |
12 |

{{.Error}}

13 |
14 |
15 |
16 | {{end}} 17 | 18 | {{range .Warnings}} 19 |
20 |
21 |
22 | 23 | 26 |
27 |
28 |

{{.}}

29 |
30 |
31 |
32 | {{end}} 33 | {{end}} 34 | -------------------------------------------------------------------------------- /templates/fragments/footer.html: -------------------------------------------------------------------------------- 1 | {{define "footer"}} 2 | 7 | 8 | {{end}} 9 | -------------------------------------------------------------------------------- /templates/fragments/head.html: -------------------------------------------------------------------------------- 1 | {{define "head"}} 2 | 3 | 4 | 5 | 6 | 7 | EggContractor 8 | 9 | 10 | {{end}} 11 | -------------------------------------------------------------------------------- /templates/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{template "head"}} 4 | 5 | {{template "nav"}} 6 |
7 | {{template "banners" .}} 8 |
9 | {{if not .RefreshTime.IsZero}} 10 |
11 | Data last refreshed: 12 | 13 |
14 | {{end}} 15 | {{template "auto_refresh_toggle"}} 16 | {{template "hide_solos_toggle" .HideSolos}} 17 | {{template "hide_full_toggle" .HideFull}} 18 | {{template "contract_filter" .ContractFilterConfig}} 19 |
20 | {{range .Statuses}}{{template "solo_coop" .}}{{end}} 21 | {{template "peeker" .Peeker}} 22 |
23 | {{template "footer"}} 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /templates/views/peek.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{template "head"}} 4 | 5 | {{template "nav"}} 6 |
7 | {{template "banners" .}} 8 | {{if not .RetrievalTime.IsZero}} 9 |
10 | Data retrieved: 11 |
12 | {{end}} 13 | {{template "coop" .Coop}} 14 | {{template "peeker" .Peeker}} 15 |
16 | {{template "footer"}} 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /util/messages.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import "html/template" 4 | 5 | const MsgNoActiveContracts = "No active contracts. Focus on growing the home farm!" 6 | 7 | var HTMLMsgNoActiveContracts = HTMLMsg(MsgNoActiveContracts) 8 | 9 | func HTMLMsg(m string) template.HTML { 10 | return template.HTML(template.HTMLEscapeString(m)) 11 | } 12 | -------------------------------------------------------------------------------- /util/table.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | "strings" 7 | "text/tabwriter" 8 | ) 9 | 10 | func PrintTable(t [][]string) { 11 | w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', tabwriter.AlignRight|tabwriter.Debug) 12 | for _, row := range t { 13 | // Append an empty column so that the last real column is right-aligned too. 14 | r := make([]string, len(row), len(row)+1) 15 | copy(r, row) 16 | r = append(r, "") 17 | fmt.Fprintln(w, strings.Join(r, "\t")) 18 | } 19 | w.Flush() 20 | } 21 | -------------------------------------------------------------------------------- /web/api.go: -------------------------------------------------------------------------------- 1 | package web 2 | 3 | import ( 4 | "math" 5 | "net/http" 6 | 7 | "github.com/labstack/echo/v4" 8 | 9 | "github.com/fanaticscripter/EggContractor/db" 10 | "github.com/fanaticscripter/EggContractor/util" 11 | ) 12 | 13 | type event struct { 14 | Id string `json:"id"` 15 | Type string `json:"type"` 16 | Multiplier float64 `json:"multiplier"` 17 | Message string `json:"message"` 18 | StartTimestamp float64 `json:"startTimestamp"` 19 | EndTimestamp float64 `json:"endTimestamp"` 20 | } 21 | 22 | // GET /api/events/ 23 | func apiEventsHandler(c echo.Context) error { 24 | dbEvents, err := db.GetEvents() 25 | if err != nil { 26 | return c.String(http.StatusInternalServerError, err.Error()) 27 | } 28 | events := []event{} 29 | for i := len(dbEvents) - 1; i >= 0; i-- { 30 | events = append(events, newEvent(dbEvents[i])) 31 | } 32 | return c.JSON(http.StatusOK, events) 33 | } 34 | 35 | func newEvent(e *db.Event) event { 36 | startTimestamp := util.TimeToDouble(e.FirstSeenTime) 37 | endTimestamp := util.TimeToDouble(e.ExpiryTime) 38 | // Adjust start timestamp: if the recorded duration is less that 2 minutes 39 | // from a whole number of hours, assume the actual duration is that whole 40 | // number of hours. (Events are typically 25hrs, recorded as 24:58 or 24:59 41 | // since I poll every two minutes.) 42 | durationSeconds := endTimestamp - startTimestamp 43 | hours, fraction := math.Modf(durationSeconds / 3600) 44 | if fraction*3600 > 3480 { 45 | durationSeconds = (hours + 1) * 3600 46 | startTimestamp = endTimestamp - durationSeconds 47 | } 48 | return event{ 49 | Id: e.Id, 50 | Type: e.EventType, 51 | Multiplier: e.Multiplier, 52 | Message: e.Message, 53 | StartTimestamp: startTimestamp, 54 | EndTimestamp: endTimestamp, 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /web/events.go: -------------------------------------------------------------------------------- 1 | package web 2 | 3 | import ( 4 | "net/http" 5 | 6 | "github.com/labstack/echo/v4" 7 | 8 | "github.com/fanaticscripter/EggContractor/db" 9 | ) 10 | 11 | type eventsPayload struct { 12 | Errors []error 13 | Warnings []string 14 | 15 | Events []*db.Event 16 | } 17 | 18 | // GET /events/ 19 | func eventsHandler(c echo.Context) error { 20 | payload := getEventsPayload() 21 | return c.Render(http.StatusOK, "events.html", payload) 22 | } 23 | 24 | func getEventsPayload() *eventsPayload { 25 | errs := make([]error, 0) 26 | warnings := make([]string, 0) 27 | 28 | events, err := db.GetEvents() 29 | if err != nil { 30 | errs = append(errs, err) 31 | return &eventsPayload{ 32 | Errors: errs, 33 | } 34 | } 35 | if len(events) == 0 { 36 | warnings = append(warnings, 37 | "no event found in the database, try using the refresh subcommand of EggContractor") 38 | } 39 | return &eventsPayload{ 40 | Errors: errs, 41 | Warnings: warnings, 42 | Events: events, 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /web/peeked.go: -------------------------------------------------------------------------------- 1 | package web 2 | 3 | import ( 4 | "net/http" 5 | "time" 6 | 7 | "github.com/labstack/echo/v4" 8 | 9 | "github.com/fanaticscripter/EggContractor/db" 10 | ) 11 | 12 | const _peekedThreshold = 7 * 24 * time.Hour 13 | 14 | type peekedPayload struct { 15 | Errors []error 16 | Warnings []string 17 | 18 | PeekedContracts []*peekedContract 19 | 20 | Peeker *peekerPayload 21 | } 22 | 23 | type peekedContract struct { 24 | ContractId string 25 | Coops []*db.Peeked 26 | } 27 | 28 | // GET /peeked/ 29 | func peekedHandler(c echo.Context) error { 30 | payload := getPeekedPayload() 31 | return c.Render(http.StatusOK, "peeked.html", payload) 32 | } 33 | 34 | func getPeekedPayload() *peekedPayload { 35 | errs := make([]error, 0) 36 | warnings := make([]string, 0) 37 | 38 | contractIds, groups, err := db.GetPeekedGroupedByContract(time.Now().Add(-_peekedThreshold)) 39 | if err != nil { 40 | errs = append(errs, err) 41 | return &peekedPayload{ 42 | Errors: errs, 43 | Peeker: &peekerPayload{}, 44 | } 45 | } 46 | peekedContracts := make([]*peekedContract, 0) 47 | for _, contractId := range contractIds { 48 | peekedContracts = append(peekedContracts, &peekedContract{ 49 | ContractId: contractId, 50 | Coops: groups[contractId], 51 | }) 52 | } 53 | 54 | contractId := "" 55 | if len(contractIds) > 0 { 56 | contractId = contractIds[0] 57 | } 58 | peeker, err := newPeekerPayload(contractId, "") 59 | if err != nil { 60 | errs = append(errs, err) 61 | } 62 | 63 | return &peekedPayload{ 64 | Errors: errs, 65 | Warnings: warnings, 66 | PeekedContracts: peekedContracts, 67 | Peeker: peeker, 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /webpack.common.js: -------------------------------------------------------------------------------- 1 | const webpack = require("webpack"); 2 | const { VueLoaderPlugin } = require("vue-loader"); 3 | 4 | module.exports = { 5 | entry: { 6 | app: "./js/app.js", 7 | coop: "./js/coop.js", 8 | events: "./js/events.js", 9 | index: "./js/index.js", 10 | peeker: "./js/peeker.js", 11 | }, 12 | module: { 13 | rules: [ 14 | { 15 | test: /\.vue$/, 16 | loader: "vue-loader", 17 | }, 18 | { 19 | test: /\.css$/, 20 | use: ["style-loader", "css-loader"], 21 | }, 22 | ], 23 | }, 24 | plugins: [ 25 | new VueLoaderPlugin(), 26 | new webpack.DefinePlugin({ 27 | __VUE_OPTIONS_API__: true, 28 | }), 29 | ], 30 | cache: { 31 | type: "filesystem", 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /webpack.dev.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | const { merge } = require("webpack-merge"); 4 | const common = require("./webpack.common.js"); 5 | 6 | module.exports = merge(common, { 7 | mode: "development", 8 | output: { 9 | path: path.resolve(__dirname, "public"), 10 | filename: "[name].js", 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /webpack.prod.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | const TerserPlugin = require("terser-webpack-plugin"); 4 | const { WebpackManifestPlugin } = require("webpack-manifest-plugin"); 5 | 6 | const { merge } = require("webpack-merge"); 7 | const common = require("./webpack.common.js"); 8 | 9 | module.exports = merge(common, { 10 | mode: "production", 11 | output: { 12 | path: path.resolve(__dirname, "static"), 13 | filename: "[name].[contenthash:8].js", 14 | }, 15 | plugins: [ 16 | new WebpackManifestPlugin({ 17 | fileName: "manifest.webpack.json", 18 | publicPath: "", 19 | }), 20 | ], 21 | optimization: { 22 | minimize: true, 23 | minimizer: [ 24 | new TerserPlugin({ 25 | extractComments: false, 26 | terserOptions: { 27 | format: { 28 | comments: false, 29 | }, 30 | }, 31 | }), 32 | ], 33 | }, 34 | }); 35 | --------------------------------------------------------------------------------