Identify trends in sanitary sewer overflows and other unanticipated releases that occur throughout the watershed. Evaluate the effects of policies to prevent and mitigate sanitary sewer overflows.
Evaluate the effectiveness of local ordinances and social marketing campaigns to reduce fertilizer use and associated nitrogen loadings within the watershed. Evaluate novel tracers to further differentiate sources of nitrogen in the watershed.
Determine the assimilative capacity for nutrients in the Tampa Bay estuary.
Evaluate the impacts of septic systems in the Tampa Bay watershed. Identify any nutrient load reduction benefits of septic-sewer conversions and/or new on-site disposal system technologies.
Determine the sources, pathways, and projected trends of nutrient loading from reuse water of varied quality and their effects on the bay's ecology. Reevaluate at least every 5 years to account for wastewater regulatory and management changes.
Facilitate the development of Nitrogen Total Maximum Daily Loads (TMDLs) and Basin Management Action Plans (BMAPs) for nutrient-impaired waterbodies within the watershed.
Quantify real-time pollutant loading from surface and groundwater flow. Determine optimal locations to deploy continuous water quality and flow monitors in the watershed, considering new sensor technologies.
Determine the sources and pathways of emerging contaminants of concern that could negatively affect living resources.
Assess the effectiveness of agricultural and urban farming Best Management Practices (BMPs) in reducing nutrient loadings throughout the Tampa Bay watershed.
Develop and improve coupled watershed, hydrodynamic, water quality, and ecological models that can evaluate management alternatives to improve the bay's ecology.
Bay Habitats
Identify biotic, abiotic, and compounding stressors contributing to seagrass loss. Evaluate seasonal and annual seagrass and macroalgal diversity and density trends in persistent and ephemeral beds. Define significance thresholds for changes in seagrass coverage by bay segment and seagrass management area.
Evaluate and monitor living shoreline techniques that potentially improve habitat and ecosystem value of altered Tampa Bay shorelines.
Continue to assess water quality, sediment quality and habitat of tidal tributaries in Tampa Bay. Identify critical thresholds or protective guidelines to support the development of numeric nutrient criteria or additional protective standards.
Identify and assess the effectiveness of new technologies to track coastal habitat quantity and quality.
Assess the effectiveness, functionality, and cumulative effects of mitigation and restoration projects within the watershed.
Determine existing and predicted impacts of watershed development on estuarine habitat function and quality.
Quantify the social and ecological benefits of critical coastal habitats across Tampa Bay.
Fish and Wildlife
Determine trajectories and underlying mechanisms for the spread of existing high priority and emergent invasive species. Evaluate potential effects of invasive species on environmental or economic resources and develop best management practices to reduce spread and/or address impacts.
Determine the relative importance of estuarine spawning and nursery habitats to commercially- and recreationally important fish populations. Assess fisheries connectivity within the seascape from estuarine to coastal and offshore habitats of the Gulf of Mexico
Evaluate the effects of freshwater inflow on estuarine function, habitat quality, and biological resources.
Identify, develop, and evaluate new key fish and wildlife indicators that improve understanding and communication of Tampa Bay's ecological health.
Identify monitoring needs, barriers to, and environmental conditions supportive of sustainable, annual bay scallop populations in Tampa Bay.
Evaluate the potential for mariculture and aquaculture to provide economic and environmental co-benefits for bay restoration.
Climate Change
Identify potential changes in ecosystem primary production in response to climate change drivers. Research trophic links with other species, including drift algae, zooplankton, fish, and wildlife.
Identify the environmental drivers affecting the geographic ranges, migration patterns, and behaviors of fish and wildlife in association with climate change.
Incorporate and evaluate habitat restoration tactics that enhance the ability of fish and wildlife to tolerate climate change stressors.
Develop scenarios of human responses to climate change in the watershed and identify important social and ecological interactions and feedback loops.
Evaluate genetic strains of habitat-forming species that are resilient to climate change stressors that can be used as restoration stock.
Identify the effects of compound flooding on water quality.
Public Access, Education, and Involvement
Evaluate community awareness, understanding, and perceptions of the state of the bay and the services it provides.
Determine barriers to bay users' engagement with conservation messaging and adoption of pro-environmental behaviors.
Characterize the diversity of bay users, their behaviors, and the dynamics of the broader social-ecological network in Tampa Bay.
+
RESEARCH PRIORITIES
Water Quality and Sediments
Identify trends in sanitary sewer overflows and other unanticipated releases that occur throughout the watershed. Evaluate the effects of policies to prevent and mitigate sanitary sewer overflows.
Evaluate the effectiveness of local ordinances and social marketing campaigns to reduce fertilizer use and associated nitrogen loadings within the watershed. Evaluate novel tracers to further differentiate sources of nitrogen in the watershed.
Determine the assimilative capacity for nutrients in the Tampa Bay estuary.
Evaluate the impacts of septic systems in the Tampa Bay watershed. Identify any nutrient load reduction benefits of septic-sewer conversions and/or new on-site disposal system technologies.
Determine the sources, pathways, and projected trends of nutrient loading from reuse water of varied quality and their effects on the bay's ecology. Reevaluate at least every 5 years to account for wastewater regulatory and management changes.
Facilitate the development of Nitrogen Total Maximum Daily Loads (TMDLs) and Basin Management Action Plans (BMAPs) for nutrient-impaired waterbodies within the watershed.
Quantify real-time pollutant loading from surface and groundwater flow. Determine optimal locations to deploy continuous water quality and flow monitors in the watershed, considering new sensor technologies.
Determine the sources and pathways of emerging contaminants of concern that could negatively affect living resources.
Assess the effectiveness of agricultural and urban farming Best Management Practices (BMPs) in reducing nutrient loadings throughout the Tampa Bay watershed.
Develop and improve coupled watershed, hydrodynamic, water quality, and ecological models that can evaluate management alternatives to improve the bay's ecology.
Bay Habitats
Identify biotic, abiotic, and compounding stressors contributing to seagrass loss. Evaluate seasonal and annual seagrass and macroalgal diversity and density trends in persistent and ephemeral beds. Define significance thresholds for changes in seagrass coverage by bay segment and seagrass management area.
Evaluate and monitor living shoreline techniques that potentially improve habitat and ecosystem value of altered Tampa Bay shorelines.
Continue to assess water quality, sediment quality and habitat of tidal tributaries in Tampa Bay. Identify critical thresholds or protective guidelines to support the development of numeric nutrient criteria or additional protective standards.
Identify and assess the effectiveness of new technologies to track coastal habitat quantity and quality.
Assess the effectiveness, functionality, and cumulative effects of mitigation and restoration projects within the watershed.
Determine existing and predicted impacts of watershed development on estuarine habitat function and quality.
Quantify the social and ecological benefits of critical coastal habitats across Tampa Bay.
Fish and Wildlife
Determine trajectories and underlying mechanisms for the spread of existing high priority and emergent invasive species. Evaluate potential effects of invasive species on environmental or economic resources and develop best management practices to reduce spread and/or address impacts.
Determine the relative importance of estuarine spawning and nursery habitats to commercially- and recreationally important fish populations. Assess fisheries connectivity within the seascape from estuarine to coastal and offshore habitats of the Gulf of Mexico
Evaluate the effects of freshwater inflow on estuarine function, habitat quality, and biological resources.
Identify, develop, and evaluate new key fish and wildlife indicators that improve understanding and communication of Tampa Bay's ecological health.
Identify monitoring needs, barriers to, and environmental conditions supportive of sustainable, annual bay scallop populations in Tampa Bay.
Evaluate the potential for mariculture and aquaculture to provide economic and environmental co-benefits for bay restoration.
Climate Change
Identify potential changes in ecosystem primary production in response to climate change drivers. Research trophic links with other species, including drift algae, zooplankton, fish, and wildlife.
Identify the environmental drivers affecting the geographic ranges, migration patterns, and behaviors of fish and wildlife in association with climate change.
Incorporate and evaluate habitat restoration tactics that enhance the ability of fish and wildlife to tolerate climate change stressors.
Develop scenarios of human responses to climate change in the watershed and identify important social and ecological interactions and feedback loops.
Evaluate genetic strains of habitat-forming species that are resilient to climate change stressors that can be used as restoration stock.
Identify the effects of compound flooding on water quality.
Public Access, Education, and Involvement
Evaluate community awareness, understanding, and perceptions of the state of the bay and the services it provides.
Determine barriers to bay users' engagement with conservation messaging and adoption of pro-environmental behaviors.
Characterize the diversity of bay users, their behaviors, and the dynamics of the broader social-ecological network in Tampa Bay.
Benthic monitoring is important for identifying hot spots of sediment contamination. Using monitoring data, the Tampa Bay Benthic Index (TBBI) provides a tool for assessing the health of benthic habitats. This index assesses the severity of contamination based on lack of diversity or abundance of benthic organisms, low dissolved oxygen or high levels of contaminants of concern (COCs). COCs include toxic chemicals like heavy metals, polycyclic aromatic hydrocarbons (PAHs), polychlorinated biphenols (PCBs) and organic pesticides. Because COCs can persist for decades in aquatic sediments and some can bioaccumulate in the food web, these hot spots pose health risks to fish, wildlife and humans.
-
Sediment Contaminants of Concern for Priority Areas of Tampa Bay.
-SOURCE: TBEP
Pesticides
PCBs
HPAHs
Metals
Upper Hillsborough Bay
x
x
x
x
Lower Hillsborough Bay
x
x
McKay Bay
x
x
x
Boca Ciega Bay
x
x
Bayboro Harbor
x
x
x
Adjacent to Bayboro
x
x
Western Old Tampa Bay
x
x
x
+
Sediment Contaminants of Concern for Priority Areas of Tampa Bay.
+SOURCE: TBEP
Pesticides
PCBs
HPAHs
Metals
Upper Hillsborough Bay
x
x
x
x
Lower Hillsborough Bay
x
x
McKay Bay
x
x
x
Boca Ciega Bay
x
x
Bayboro Harbor
x
x
x
Adjacent to Bayboro
x
x
Western Old Tampa Bay
x
x
x
In 2007, the Sediment Quality Assessment Group identified eight priority “hot spot” areas in Tampa Bay with low TBBI scores, indicating elevated contamination and reduced benthic diversity. These are:
More than 150,000 boats are registered in Hillsborough, Manatee, Pasco and Pinellas Counties, according to the Florida Department of Highway Safety and Motor Vehicles. The number of registered vessels in the Tampa Bay area grew by fifteen percent between 2016 and 2022 with Manatee County registrations increasing by forty-three percent. Pinellas County ranked second and Hillsborough County fifth in number of registered boats statewide in 2022. The vast majority of these boats are 16 to 26 feet long. The popularity of recreational boating highlights the need for baywide adoption of responsible boating practices to protect water quality, human health and aquatic habitats.
-
Florida Boat Registrations by County for 2016 and 2022. SOURCE:
-Florida Department of Highway Safety and Motor Vehicles
Pleasure
Commercial
Total
2016
2022
2016
2022
2016
2022
Hillsborough
39910
41671
744
659
40782
42330
Manatee
17662
25713
714
751
18527
26464
Pasco
23643
29629
406
484
24136
30113
Pinellas
48029
53657
1211
1094
49754
54751
Totals
129244
150670
3075
2988
133199
153658
+
Florida Boat Registrations by County for 2016 and 2022. SOURCE:
+Florida Department of Highway Safety and Motor Vehicles
Pleasure
Commercial
Total
2016
2022
2016
2022
2016
2022
Hillsborough
39910
41671
744
659
40782
42330
Manatee
17662
25713
714
751
18527
26464
Pasco
23643
29629
406
484
24136
30113
Pinellas
48029
53657
1211
1094
49754
54751
Totals
129244
150670
3075
2988
133199
153658
The Florida Department of Environmental Protection (FDEP) promotes clean boating practices through a variety of programs, including the Clean Marina Program, Clean Boatyard Program, Clean Marine Retailer Program and Clean Boater Program. These voluntary recognition and designation programs provide no-cost assistance to marinas and boatyards in implementing Best Management Practices to protect sensitive habitats, manage waste and stormwater, prevent spills and prepare for emergencies. There are 45 designated Clean Marinas or Clean Boatyards in the Tampa Bay region.
BMPs that have been verified and deemed effective at reducing pollutants by the Florida Department of Environmental Protection (FDEP) have been adopted by rule by FDACS for all major agricultural commodities produced in the Tampa Bay region. BMP manuals are reviewed at least every five years. FDACS recognizes that many smaller farms are ineligible for enrollment in the current FDACS BMP Program, and there are various livestock, such as goats, sheep, pigs, and emus, that are not covered by current manuals.
-
FDACS Adopted BMP Manuals
Manual
Adoption
Rule Reference
Silviculture
2008
5I-6
Sod
2008
5M-9
Cow/Calf
2009
5M-11
Specialty Fruit & Nut
2011
5M-13
Equine
2012
5M-14
Citrus
2013
5M-16
Nursery
2014
5M-6
Vegetable & Agronomic Crops
2015
5M-8
Aquaculture
2015
5L-3
Dairies
2016
5M-17
Poultry
2016
5M-19
+
FDACS Adopted BMP Manuals
Manual
Adoption
Rule Reference
Silviculture
2008
5I-6
Sod
2008
5M-9
Cow/Calf
2009
5M-11
Specialty Fruit & Nut
2011
5M-13
Equine
2012
5M-14
Citrus
2013
5M-16
Nursery
2014
5M-6
Vegetable & Agronomic Crops
2015
5M-8
Aquaculture
2015
5L-3
Dairies
2016
5M-17
Poultry
2016
5M-19
Currently, if there is no applicable BMP manual for their livestock, farmers with diversified farm operations alternatively may adopt an approved conservation plan tailored to their operation (Rule 5M-12 Conservation Plans for Specified Agricultural Operations). Notably, facilities with large numbers of livestock in a confined area, known as animal feeding operations (AFOs) and concentrated animal feeding operations (CAFOs), are not regulated by FDACS. Instead, FDEP regulates AFOs under its industrial wastewater rules and CAFOs under its NPDES program. Hobby farmers are not currently enrolled in the FDACS BMP Program; however, FDACS plans to develop and adopt manuals for these operations.
In 2015, 38% of the flow from 49 permitted wastewater treatment plants (WWTPs) in the four-county Tampa Bay region was beneficially reused. Still, in 2015 more than 173 mgd of treated wastewater were released. In 2020, there were 22 reclaimed water projects under development across the 4-county area, including transmission pipelines, pump stations, storage tanks and ponds, aquifer recharge, storage and recovery systems and feasibility studies. These projects could supply an additional 49 mgd of reclaimed water to the region. In its 2020 Regional Water Supply Plan, the Southwest Florida Water Management District (SWFWMD) projected that by 2040 almost 75% of wastewater could be utilized across Pinellas, Pasco, Hillsborough and Manatee Counties.
-
Regional reclaimed water reuse in 2015 and projected reuse by 2040
-(SOURCE: SWFWMD)
County
Actual 2015
Projected 2040
WWTP Flow
Reuse
% Reuse
WWTP Flow
Reuse
% Reuse
Pasco
29.8
17.9
60%
40.1
30.1
75%
Pinellas
109.1
44.8
41%
113.2
84.9
75%
Hillsborough
109.5
26.6
24%
141.8
106.3
75%
Manatee
29.9
15.9
53%
38.3
28.7
75%
Total
278.3
105.2
38%
333.3
250
75%
+
Regional reclaimed water reuse in 2015 and projected reuse by 2040
+(SOURCE: SWFWMD)
County
Actual 2015
Projected 2040
WWTP Flow
Reuse
% Reuse
WWTP Flow
Reuse
% Reuse
Pasco
29.8
17.9
60%
40.1
30.1
75%
Pinellas
109.1
44.8
41%
113.2
84.9
75%
Hillsborough
109.5
26.6
24%
141.8
106.3
75%
Manatee
29.9
15.9
53%
38.3
28.7
75%
Total
278.3
105.2
38%
333.3
250
75%
Aquifer Storage and Recovery (ASR) systems have enormous potential for diverting highly treated wastewater flows from disposal into the bay and balancing wet and dry season supply-and-demand inefficiencies. Reclaimed ASR systems inject treated wastewater deep into various underground aquifers, where it is stored in porous rock. From there, it can be pumped back to the surface and distributed for residential, commercial and industrial use. Exploratory wells are drilled to ensure the reclaimed water can be safely stored in the local geologic formations; additional wells drilled around the reclaimed water injection well are monitored for any possible groundwater contamination.
Seagrass and Oyster Reef Extent by Bay Segment. SOURCE: SWFWMD
Bay segment
Oyster (acres)
Patchy seagrass (acres)
Continuous seagrass (acres)
Old Tampa Bay
84.6
2,037.1
2,145.9
Hillsborough Bay
13.0
277.4
131.3
Middle Tampa Bay
15.1
2,969.3
4,757.2
Lower Tampa Bay
17.0
2,214.7
5,411.2
Boca Ciega Bay
59.3
1,409.3
7,329.9
Manatee River
8.6
233.1
228.0
Terra Ceia Bay
10.7
222.0
770.4
+
Seagrass and Oyster Reef Extent by Bay Segment. SOURCE: SWFWMD
Bay segment
Oyster (acres)
Patchy seagrass (acres)
Continuous seagrass (acres)
Old Tampa Bay
84.6
2,037.1
2,145.9
Hillsborough Bay
13.0
277.4
131.3
Middle Tampa Bay
15.1
2,969.3
4,757.2
Lower Tampa Bay
17.0
2,214.7
5,411.2
Boca Ciega Bay
59.3
1,409.3
7,329.9
Manatee River
8.6
233.1
228.0
Terra Ceia Bay
10.7
222.0
770.4
SWFWMD has completed two other projects to locate, characterize and create finer-scale thematic maps of hard bottom and oyster reef habitats in Tampa Bay. The first project, funded by the Tampa Bay Environmental Restoration Fund (TBERF), focused on the southeast region of Tampa Bay from the mouth of the Little Manatee River to the mouth of Terra Ceia bay. The second project, funded by SWFWMD, focused on Old Tampa Bay, areas adjacent to MacDill Air Force Base, Terra Ceia Bay and the mouth of the Manatee River. Additionally, TBEP was awarded a grant from Pinellas County’s settlement funds from the Deepwater Horizon accident to map hard bottom habitat in bay waters offshore southeastern Pinellas County, using similar techniques as were employed by SWFWMD. Results of this work (completed in 2019) added to the mapped extent of these habitats within the bay (CSA Ocean Sciences, Inc. 2019). These mapping projects included field surveys utilizing a combination of side scan sonar, underwater video and ground truthing. Ground truthing will categorize biological communities associated with various hard bottom habitats, bathymetric relief, natural or artificial hard bottom and contiguous reef or hard rubble.
FWC’s merger of fresh and saltwater law enforcement agencies has expanded the pool of officers trained to enforce both salt and freshwater regulations, with added flexibility to shift officers to “hot spots” or priority problems, such as illegal gill-netting. Additionally, all law enforcement rangers with Florida’s state parks were reassigned to FWC in 2011.
-
2016 versus 2022 Florida Boat Registrations for Tampa Bay Counties
-SOURCE: Florida Department of Highway Safety and Motor Vehicles
2016
2022
% Increase
Hillsborough
40,782
42,330
3.8
Manatee
18,527
26,464
42.8
Pinellas
49,754
54,751
10.0
Totals
109,063
123,545
13.3
+
2016 versus 2022 Florida Boat Registrations for Tampa Bay Counties
+SOURCE: Florida Department of Highway Safety and Motor Vehicles
2016
2022
% Increase
Hillsborough
40,782
42,330
3.8
Manatee
18,527
26,464
42.8
Pinellas
49,754
54,751
10.0
Totals
109,063
123,545
13.3
Despite these changes, fewer than 40 FWC officers (including lieutenants and captains who spend limited time in the field) are available to provide continuous on-water coverage in Tampa Bay. That equates to one officer for every 2,636 boats. There are frequent staffing shortfalls as officers typically only remain with FWC for about five years before taking more lucrative positions with federal or local law enforcement agencies. Citizens who report potential violations are often frustrated when officers are unable to respond in a timely fashion, or at all.
Many of the bay’s most visible and beloved species are well-documented. For example, Audubon first began protecting and monitoring colonial waterbird populations in 1934; Audubon staff currently manage and assess 30 nesting colonies on islands in and around Tampa Bay. Sea turtle nests on bay area beaches and barrier islands are surveyed and safeguarded annually. In 2016, 1595 loggerhead turtle nests were confirmed. Green and leatherback turtle nests are very rare on Tampa Bay area beaches. Research has shown that the bay itself is an important nursery area for juvenile Kemp’s ridley sea turtles, one of the world’s most endangered species.
-
Loggerhead Turtle Nesting 2018-2022 on beaches of Tampa Bay. SOURCE:
-FWC
County
2018
2019
2020
2021
2022
Manatee
1,003
1,158
930
1,089
1,165
Hillsborough
151
152
96
137
120
Pinellas
549
807
528
497
686
Totals
1,703
2,117
1,554
1,723
1,971
+
Loggerhead Turtle Nesting 2018-2022 on beaches of Tampa Bay. SOURCE:
+FWC
County
2018
2019
2020
2021
2022
Manatee
1,003
1,158
930
1,089
1,165
Hillsborough
151
152
96
137
120
Pinellas
549
807
528
497
686
Totals
1,703
2,117
1,554
1,723
1,971
The status of many other species is unclear, and basic population assessments are lacking. For example, little is known about diamondback terrapin populations in Tampa Bay because the animals are shy, reclusive and difficult to study.
@@ -449,8 +449,8 @@
BACKGROUND:
In 2016, FWC adopted new rules for imperiled species detailed in a comprehensive Imperiled Species Management Plan (ISMP) which became effective January 2017. The ISMP addresses individual species in Action Plans containing specific conservation goals, objectives and actions. In addition, the ISMP describes integrated conservation strategies to benefit multiple species and their shared habitats. It focuses on 57 imperiled species in Florida.
-
Endangered, threatened or at risk species in the Tampa Bay watershed.
-SOURCE: USFWS, FWC
Common Name
Scientific Name
Status
Birds
Audubon's Crested Caracara
Polyborus plancus audubonii
FT
Everglade Snail Kite
Rostrhamus sociabilis plumbeus
FE
Florida Grasshopper Sparrow
Ammodramus savannarum floridanus
FE
Florida Scrub-jay
Aphelocoma coerulescens
FT
Ivory-billed Woodpecker
Campephilus principalis
FE
Piping Plover
Charadrius melodus
FT
Red Knot
Calidris canutus rufa
FT
Red-cockaded Woodpecker
Picoides borealis
FE
Whooping Crane
Grus americana
Fexp
Wood Stork
Mycteria americana
FT
Little Blue Heron
Egretta caerulea
ST
Tricolored Heron
Egretta tricolor
ST
Reddish Egret
Egretta rufescens
ST
Roseate Spoonbill
Platalea ajaja
ST
Florida Sandhill Crane
Grus canadensis pratensis
ST
American Oystercatcher
Haematopus palliatus
ST
Snowy Plover
Charadrius nivosus
ST
Least Tern
Sternula antillarum
ST
Black Skimmer
Rynchops niger
ST
Florida Burrowing Owl
Athene cunicularia floridana
ST
Southeastern American Kestral
Falco sparverius paulus
ST
American Kestrel
Falco sparverius paulus
FBCC
American Oystercatcher
Haematopus palliatus
FBCC
American Bittern
Botaurus lentiginosus
FBCC
Bachman's Sparrow
Aimophila aestivalis
FBCC
Bald Eagle
Haliaeetus leucocephalus
FBCC
Black Skimmer
Rynchops niger
FBCC
Black Rail
Laterallus jamaicensis
FBCC
Black-whiskered Vireo
Vireo altiloquus
FBCC
Brown Booby
Sula leucogaster
FBCC
Brown-headed Nuthatch
Sitta pusilla
FBCC
Chuck-will's-widow
Caprimulgus carolinensis
FBCC
Common Ground-dove
Columbina passerina exigua
FBCC
Gull-billed Tern
Gelochelidon nilotica
FBCC
Henslow's Sparrow
Ammodramus henslowii
FBCC
Le Conte's Sparrow
Ammodramus leconteii
FBCC
Least Bittern
Ixobrychus exilis
FBCC
Least Tern
Sterna antillarum
FBCC
Lesser Yellowlegs
Tringa flavipes
FBCC
Limpkin
Aramus guarauna
FBCC
Loggerhead Shrike
Lanius ludovicianus
FBCC
Long-billed Curlew
Numenius americanus
FBCC
Magnificent Frigatebird
Fregata magnificens
FBCC
Mangrove Cuckoo
Coccyzus minor
FBCC
Marbled Godwit
Limosa fedoa
FBCC
Nelson's Sparrow
Ammodramus nelsoni
FBCC
Peregrine Falcon
Falco peregrinus
FBCC
Prairie Warbler
Dendroica discolor
FBCC
Prothonotary Warbler
Protonotaria citrea
FBCC
Red Knot
Calidris canutus rufa
FBCC
Red-headed Woodpecker
Melanerpes erythrocephalus
FBCC
Reddish Egret
Egretta rufescens
FBCC
Roseate Spoonbill
Platalea ajaja
FBCC
Rusty Blackbird
Euphagus carolinus
FBCC
Seaside Sparrow
Ammodramus maritimus
FBCC
Short-billed Dowitcher
Limnodromus griseus
FBCC
Smooth-billed Ani
Crotophaga ani
FBCC
Snowy Plover
Charadrius alexandrinus
FBCC
Swainson's Warbler
Limnothlypis swainsonii
FBCC
Swallow-tailed Kite
Elanoides forficatus
FBCC
Whimbrel
Numenius phaeopus
FBCC
Wilson's Plover
Charadrius wilsonia
FBCC
Worm Eating Warbler
Helmitheros vermivorum
FBCC
Yellow Rail
Coturnicops noveboracensis
FBCC
Short-tailed Hawk
Buteo brachyurus
FBCC
Limpkin
Aramus guarauna
SDL
Brown pelican
Pelecanus occidentalis
SDL
Snowy egret
Egretta thula
SDL
White ibis
Eudocimus albus
SDL
Fishes and Elasmobranchs
Atlantic Sturgeon (gulf Subspecies)
Acipenser oxyrinchus (=oxyrhynchus) desotoi
FE*
Smalltooth Sawfish
Pristis pectinata
FE
Mangrove rivulus
Kryptolebias marmoratus
SDL
Giant Manta Ray
Mobula birostris
FT*
Insects
Highlands Tiger Beetle
Cicindelidia highlandensis
F cand
Miami Blue Butterfly
Cyclargus (=Hemiargus) thomasi bethunebakeri
FE
Mammals
Florida Bonneted Bat
Eumops floridanus
FE
Florida Panther
Puma (=Felis) concolor coryi
FE
Puma (=mountain Lion)
Puma (=Felis) concolor (all subsp. except coryi)
FT SoA
West Indian Manatee
Trichechus manatus
FT*
Homosassa Shrew
Sorex longirostris eionis
SDL*
Sherman's Fox Squirrel
Sciurus niger shermani
SDL*
Florida mouse
Podomys floridanus
SDL
Reptiles
American Alligator
Alligator mississippiensis
FT SoA
American Crocodile
Crocodylus acutus
FT
Bluetail Mole Skink
Eumeces egregius lividus
FT
Eastern Indigo Snake
Drymarchon corais couperi
FT
Green Sea Turtle
Chelonia mydas
FE
Hawksbill Sea Turtle
Eretmochelys imbricata
FE
Leatherback Sea Turtle
Dermochelys coriacea
FE
Sand Skink
Neoseps reynoldsi
FT
Florida Pine Snake
Pituophis melanoleucus mugitus
FT
Short-tailed Snake
Lampropeltis extenuata
FT
Suwannee cooter
Pseudemys concinna suwanniensis
SDL
* Change in designation since 2018
FT = Federally Listed Threatened
FE = Federally Listed Endangered
F exp = Federally listed Experimental Population
FBCC = Federally Listed Birds of Conservation Concern
FT SoA = Federally listed Threatened (Similarity of Appearance)
ST = State Listed Threatened
SSSC = State Listed Species of Special Concern
SDL = State Delisted Species
+
Endangered, threatened or at risk species in the Tampa Bay watershed.
+SOURCE: USFWS, FWC
Common Name
Scientific Name
Status
Birds
Audubon's Crested Caracara
Polyborus plancus audubonii
FT
Everglade Snail Kite
Rostrhamus sociabilis plumbeus
FE
Florida Grasshopper Sparrow
Ammodramus savannarum floridanus
FE
Florida Scrub-jay
Aphelocoma coerulescens
FT
Ivory-billed Woodpecker
Campephilus principalis
FE
Piping Plover
Charadrius melodus
FT
Red Knot
Calidris canutus rufa
FT
Red-cockaded Woodpecker
Picoides borealis
FE
Whooping Crane
Grus americana
Fexp
Wood Stork
Mycteria americana
FT
Little Blue Heron
Egretta caerulea
ST
Tricolored Heron
Egretta tricolor
ST
Reddish Egret
Egretta rufescens
ST
Roseate Spoonbill
Platalea ajaja
ST
Florida Sandhill Crane
Grus canadensis pratensis
ST
American Oystercatcher
Haematopus palliatus
ST
Snowy Plover
Charadrius nivosus
ST
Least Tern
Sternula antillarum
ST
Black Skimmer
Rynchops niger
ST
Florida Burrowing Owl
Athene cunicularia floridana
ST
Southeastern American Kestral
Falco sparverius paulus
ST
American Kestrel
Falco sparverius paulus
FBCC
American Oystercatcher
Haematopus palliatus
FBCC
American Bittern
Botaurus lentiginosus
FBCC
Bachman's Sparrow
Aimophila aestivalis
FBCC
Bald Eagle
Haliaeetus leucocephalus
FBCC
Black Skimmer
Rynchops niger
FBCC
Black Rail
Laterallus jamaicensis
FBCC
Black-whiskered Vireo
Vireo altiloquus
FBCC
Brown Booby
Sula leucogaster
FBCC
Brown-headed Nuthatch
Sitta pusilla
FBCC
Chuck-will's-widow
Caprimulgus carolinensis
FBCC
Common Ground-dove
Columbina passerina exigua
FBCC
Gull-billed Tern
Gelochelidon nilotica
FBCC
Henslow's Sparrow
Ammodramus henslowii
FBCC
Le Conte's Sparrow
Ammodramus leconteii
FBCC
Least Bittern
Ixobrychus exilis
FBCC
Least Tern
Sterna antillarum
FBCC
Lesser Yellowlegs
Tringa flavipes
FBCC
Limpkin
Aramus guarauna
FBCC
Loggerhead Shrike
Lanius ludovicianus
FBCC
Long-billed Curlew
Numenius americanus
FBCC
Magnificent Frigatebird
Fregata magnificens
FBCC
Mangrove Cuckoo
Coccyzus minor
FBCC
Marbled Godwit
Limosa fedoa
FBCC
Nelson's Sparrow
Ammodramus nelsoni
FBCC
Peregrine Falcon
Falco peregrinus
FBCC
Prairie Warbler
Dendroica discolor
FBCC
Prothonotary Warbler
Protonotaria citrea
FBCC
Red Knot
Calidris canutus rufa
FBCC
Red-headed Woodpecker
Melanerpes erythrocephalus
FBCC
Reddish Egret
Egretta rufescens
FBCC
Roseate Spoonbill
Platalea ajaja
FBCC
Rusty Blackbird
Euphagus carolinus
FBCC
Seaside Sparrow
Ammodramus maritimus
FBCC
Short-billed Dowitcher
Limnodromus griseus
FBCC
Smooth-billed Ani
Crotophaga ani
FBCC
Snowy Plover
Charadrius alexandrinus
FBCC
Swainson's Warbler
Limnothlypis swainsonii
FBCC
Swallow-tailed Kite
Elanoides forficatus
FBCC
Whimbrel
Numenius phaeopus
FBCC
Wilson's Plover
Charadrius wilsonia
FBCC
Worm Eating Warbler
Helmitheros vermivorum
FBCC
Yellow Rail
Coturnicops noveboracensis
FBCC
Short-tailed Hawk
Buteo brachyurus
FBCC
Limpkin
Aramus guarauna
SDL
Brown pelican
Pelecanus occidentalis
SDL
Snowy egret
Egretta thula
SDL
White ibis
Eudocimus albus
SDL
Fishes and Elasmobranchs
Atlantic Sturgeon (gulf Subspecies)
Acipenser oxyrinchus (=oxyrhynchus) desotoi
FE*
Smalltooth Sawfish
Pristis pectinata
FE
Mangrove rivulus
Kryptolebias marmoratus
SDL
Giant Manta Ray
Mobula birostris
FT*
Insects
Highlands Tiger Beetle
Cicindelidia highlandensis
F cand
Miami Blue Butterfly
Cyclargus (=Hemiargus) thomasi bethunebakeri
FE
Mammals
Florida Bonneted Bat
Eumops floridanus
FE
Florida Panther
Puma (=Felis) concolor coryi
FE
Puma (=mountain Lion)
Puma (=Felis) concolor (all subsp. except coryi)
FT SoA
West Indian Manatee
Trichechus manatus
FT*
Homosassa Shrew
Sorex longirostris eionis
SDL*
Sherman's Fox Squirrel
Sciurus niger shermani
SDL*
Florida mouse
Podomys floridanus
SDL
Reptiles
American Alligator
Alligator mississippiensis
FT SoA
American Crocodile
Crocodylus acutus
FT
Bluetail Mole Skink
Eumeces egregius lividus
FT
Eastern Indigo Snake
Drymarchon corais couperi
FT
Green Sea Turtle
Chelonia mydas
FE
Hawksbill Sea Turtle
Eretmochelys imbricata
FE
Leatherback Sea Turtle
Dermochelys coriacea
FE
Sand Skink
Neoseps reynoldsi
FT
Florida Pine Snake
Pituophis melanoleucus mugitus
FT
Short-tailed Snake
Lampropeltis extenuata
FT
Suwannee cooter
Pseudemys concinna suwanniensis
SDL
* Change in designation since 2018
FT = Federally Listed Threatened
FE = Federally Listed Endangered
F exp = Federally listed Experimental Population
FBCC = Federally Listed Birds of Conservation Concern
FT SoA = Federally listed Threatened (Similarity of Appearance)
ST = State Listed Threatened
SSSC = State Listed Species of Special Concern
SDL = State Delisted Species
TBEP participates in collaborative partnerships within the Tampa Bay and Southwest Florida region to review and coordinate habitat restoration and protection initiatives (see Actions BH-1, BH-2, BH-3, and BH-9). These initiatives include identification of priority sites for acquisition and mitigation.
diff --git a/site_libs/reactwidget-1.0.0/react-tools.js b/site_libs/reactwidget-1.0.0/react-tools.js
deleted file mode 100644
index 5cb6a5d..0000000
--- a/site_libs/reactwidget-1.0.0/react-tools.js
+++ /dev/null
@@ -1,547 +0,0 @@
-/******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ }
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // create a fake namespace object
-/******/ // mode & 1: value is a module id, require it
-/******/ // mode & 2: merge all properties of value into the ns
-/******/ // mode & 4: return value when already ns object
-/******/ // mode & 8|1: behave like require
-/******/ __webpack_require__.t = function(value, mode) {
-/******/ if(mode & 1) value = __webpack_require__(value);
-/******/ if(mode & 8) return value;
-/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ var ns = Object.create(null);
-/******/ __webpack_require__.r(ns);
-/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ return ns;
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = "./srcjs/react-tools.js");
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ "./srcjs/input.js":
-/*!************************!*\
- !*** ./srcjs/input.js ***!
- \************************/
-/*! exports provided: reactShinyInput */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reactShinyInput", function() { return reactShinyInput; });
-/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
-/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "react-dom");
-/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var shiny__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! shiny */ "shiny");
-/* harmony import */ var shiny__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(shiny__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jquery */ "jquery");
-/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_3__);
-function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
-
-function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
-
-function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
-
-function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
-
-function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
-
-function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
-
-function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
-
-function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
-
-
-
-
-
-/*
- * This default receiveMessage implementation expects data to contain whole
- * configuration and value properties. If either is present, it will be set and
- * the component will be re-rendered. Because receiveMessage is typically used
- * by input authors to perform incremental updates, this default implementation
- * can be overriden by the user with the receiveMessage arguments to
- * reactShinyInput.
- */
-
-function defaultReceiveMessage(el, _ref) {
- var configuration = _ref.configuration,
- value = _ref.value;
- var dirty = false;
-
- if (configuration !== undefined) {
- this.setInputConfiguration(el, configuration);
- dirty = true;
- }
-
- if (value !== undefined) {
- this.setInputValue(el, value);
- dirty = true;
- }
-
- if (dirty) {
- this.getCallback(el)();
- this.render(el);
- }
-}
-
-var defaultOptions = {
- receiveMessage: defaultReceiveMessage,
- type: false,
- ratePolicy: null
-};
-/**
- * Installs a new Shiny input binding based on a React component.
- *
- * @param {string} selector - jQuery selector that should identify the set of
- * container elements within the scope argument of Shiny.InputBinding.find.
- * @param {string} name - A name such as 'acme.FooInput' that should uniquely
- * identify the component.
- * @param {Object} component - React Component, either class or function.
- * @param {Object} options - Additional configuration options. Supported
- * options are:
- * - receiveMessage: Implementation of Shiny.InputBinding to use in place of
- * the default. Typically overridden as an optimization to perform
- * incremental value updates.
- * - type: `false`, a string, or a function.
- * - `false` (the default): denotes that the value produced by this input
- * should not be intercepted by any handlers registered in R on the
- * server using shiny::registerInputHandler().
- * - string: denotes the input's *type* and should correspond to the
- * type parameter of shiny::registerInputHandler().
- * - function: A function called with `this` bound to the InputBinding
- * instance and passed a single argument, the input's containing DOM
- * element. The function should return either `false` or a string
- * corresponding to the type parameter of shiny::registerInputHandler().
- * - ratePolicy: A rate policy object as defined in the documentation for
- * getRatePolicy(): https://shiny.rstudio.com/articles/building-inputs.html
- * A rate policy object has two members:
- * - `policy`: Valid values are the strings "direct", "debounce", and
- * "throttle". "direct" means that all events are sent immediately.
- * - `delay`: Number indicating the number of milliseconds that should be
- * used when debouncing or throttling. Has no effect if the policy is
- * direct.
- * The specified rate policy is only applied when `true` is passed as the
- * second argument to the `setValue` function passed as a prop to the
- * input component.
- *
- */
-
-function reactShinyInput(selector, name, component, options) {
- options = Object.assign({}, defaultOptions, options);
- shiny__WEBPACK_IMPORTED_MODULE_2___default.a.inputBindings.register(new ( /*#__PURE__*/function (_Shiny$InputBinding) {
- _inherits(_class, _Shiny$InputBinding);
-
- var _super = _createSuper(_class);
-
- function _class() {
- _classCallCheck(this, _class);
-
- return _super.apply(this, arguments);
- }
-
- _createClass(_class, [{
- key: "find",
-
- /*
- * Methods override those in Shiny.InputBinding
- */
- value: function find(scope) {
- return jquery__WEBPACK_IMPORTED_MODULE_3___default()(scope).find(selector);
- }
- }, {
- key: "getValue",
- value: function getValue(el) {
- return this.getInputValue(el);
- }
- }, {
- key: "setValue",
- value: function setValue(el, value) {
- var rateLimited = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-
- /*
- * We have to check whether $(el).data('callback') is undefined here
- * in case shiny::renderUI() is involved. If an input is contained in a
- * shiny::uiOutput(), the following strange thing happens occasionally:
- *
- * 1. setValue() is bound to an el in this.render(), below
- * 2. An event that will call setValue() is enqueued
- * 3. While the event is still enqueued, el is unbound and removed
- * from the DOM by the JS code associated with shiny::uiOutput()
- * - That code uses jQuery .html() in output_binding_html.js
- * - .html() removes el from the DOM and clears ist data and events
- * 4. By the time the setValue() bound to the original el is invoked,
- * el has been unbound and its data cleared.
- *
- * Since the original input is gone along with its callback, it
- * seems to make the most sense to do nothing.
- */
- if (jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('callback') !== undefined) {
- this.setInputValue(el, value);
- this.getCallback(el)(rateLimited);
- this.render(el);
- }
- }
- }, {
- key: "initialize",
- value: function initialize(el) {
- jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('value', JSON.parse(jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).next().text()));
- jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('configuration', JSON.parse(jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).next().next().text()));
- }
- }, {
- key: "subscribe",
- value: function subscribe(el, callback) {
- jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('callback', callback);
- this.render(el);
- }
- }, {
- key: "unsubscribe",
- value: function unsubscribe(el) {
- react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.render(null, el);
- }
- }, {
- key: "receiveMessage",
- value: function receiveMessage(el, data) {
- options.receiveMessage.call(this, el, data);
- }
- }, {
- key: "getType",
- value: function getType(el) {
- if (typeof options.type === 'function') {
- return options.type.call(this, el);
- } else if (options.type === false || typeof options.type === 'string') {
- return options.type;
- } else {
- throw new Error('options.type must be false, a string, or a function');
- }
- }
- }, {
- key: "getRatePolicy",
- value: function getRatePolicy() {
- return options.ratePolicy;
- }
- /*
- * Methods not present in Shiny.InputBinding but accessible to users
- * through `this` in receiveMessage
- */
-
- }, {
- key: "getInputValue",
- value: function getInputValue(el) {
- return jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('value');
- }
- }, {
- key: "setInputValue",
- value: function setInputValue(el, value) {
- jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('value', value);
- }
- }, {
- key: "getInputConfiguration",
- value: function getInputConfiguration(el) {
- return jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('configuration');
- }
- }, {
- key: "setInputConfiguration",
- value: function setInputConfiguration(el, configuration) {
- jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('configuration', configuration);
- }
- }, {
- key: "getCallback",
- value: function getCallback(el) {
- return jquery__WEBPACK_IMPORTED_MODULE_3___default()(el).data('callback');
- }
- }, {
- key: "render",
- value: function render(el) {
- var element = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(component, {
- configuration: this.getInputConfiguration(el),
- value: this.getValue(el),
- setValue: this.setValue.bind(this, el),
- el: el
- });
- react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.render(element, el);
- }
- }]);
-
- return _class;
- }(shiny__WEBPACK_IMPORTED_MODULE_2___default.a.InputBinding))(), name);
-}
-
-/***/ }),
-
-/***/ "./srcjs/react-tools.js":
-/*!******************************!*\
- !*** ./srcjs/react-tools.js ***!
- \******************************/
-/*! no exports provided */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./widget */ "./srcjs/widget.js");
-/* harmony import */ var _input__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./input */ "./srcjs/input.js");
-
-
-window.reactR = {
- reactShinyInput: _input__WEBPACK_IMPORTED_MODULE_1__["reactShinyInput"],
- reactWidget: _widget__WEBPACK_IMPORTED_MODULE_0__["reactWidget"],
- hydrate: _widget__WEBPACK_IMPORTED_MODULE_0__["hydrate"]
-};
-
-/***/ }),
-
-/***/ "./srcjs/widget.js":
-/*!*************************!*\
- !*** ./srcjs/widget.js ***!
- \*************************/
-/*! exports provided: hydrate, defaultOptions, mergeOptions, formatDimension, isTag, reactWidget */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hydrate", function() { return hydrate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultOptions", function() { return defaultOptions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeOptions", function() { return mergeOptions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatDimension", function() { return formatDimension; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isTag", function() { return isTag; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reactWidget", function() { return reactWidget; });
-function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
-/**
- * Recursively transforms tag, a JSON representation of an instance of a
- * React component and its children, into a React element suitable for
- * passing to ReactDOM.render.
- * @param {Object} components
- * @param {Object} tag
- */
-function hydrate(components, tag) {
- if (typeof tag === 'string') return tag;
-
- if (tag.name[0] === tag.name[0].toUpperCase() && !components.hasOwnProperty(tag.name)) {
- throw new Error("Unknown component: " + tag.name);
- }
-
- var elem = components.hasOwnProperty(tag.name) ? components[tag.name] : tag.name,
- args = [elem, tag.attribs];
-
- for (var i = 0; i < tag.children.length; i++) {
- args.push(hydrate(components, tag.children[i]));
- }
-
- return React.createElement.apply(React, args);
-}
-var defaultOptions = {
- // The name of the property on the root tag to use for the width, if
- // it's updated.
- widthProperty: "width",
- // The name of the property on the root tag to use for the height, if
- // it's updated.
- heightProperty: "height",
- // Whether or not to append the string 'px' to the width and height
- // properties when they change.
- appendPx: false,
- // Whether or not to dynamically update the width and height properties
- // of the last known tag when the computed width and height change in
- // the browser.
- renderOnResize: false
-};
-function mergeOptions(options) {
- var merged = {};
-
- for (var k in defaultOptions) {
- merged[k] = defaultOptions[k];
- }
-
- for (var k in options) {
- if (!defaultOptions.hasOwnProperty(k)) {
- throw new Error("Unrecognized option: " + k);
- }
-
- merged[k] = options[k];
- }
-
- return merged;
-}
-function formatDimension(dim, options) {
- if (options.appendPx) {
- return dim + 'px';
- } else {
- return dim;
- }
-}
-function isTag(value) {
- return _typeof(value) === 'object' && value.hasOwnProperty('name') && value.hasOwnProperty('attribs') && value.hasOwnProperty('children');
-}
-/**
- * Creates an HTMLWidget that is updated by rendering a React component.
- * React component constructors are made available by specifying them by
- * name in the components object.
- * @param {string} name
- * @param {string} type
- * @param {Object} components
- * @param {Object} options
- */
-
-function reactWidget(name, type, components, options) {
- var actualOptions = mergeOptions(options);
- window.HTMLWidgets.widget({
- name: name,
- type: type,
- factory: function factory(el, width, height) {
- var lastValue,
- instance = {},
- renderValue = function renderValue(value) {
- if (actualOptions.renderOnResize) {
- // value.tag might be a primitive string, in which
- // case there is no attribs property.
- if (_typeof(value.tag) === 'object') {
- value.tag.attribs[actualOptions["widthProperty"]] = formatDimension(width);
- value.tag.attribs[actualOptions["heightProperty"]] = formatDimension(height);
- }
-
- lastValue = value;
- } // with functional stateless components this will be null
- // see https://reactjs.org/docs/react-dom.html#render for more details
-
-
- this.instance.component = ReactDOM.render(hydrate(components, value.tag), el);
- };
-
- return {
- instance: instance,
- renderValue: renderValue,
- resize: function resize(newWidth, newHeight) {
- if (actualOptions.renderOnResize) {
- width = newWidth;
- height = newHeight;
- renderValue(lastValue);
- }
- }
- };
- }
- });
-}
-
-/***/ }),
-
-/***/ "jquery":
-/*!********************************!*\
- !*** external "window.jQuery" ***!
- \********************************/
-/*! no static exports found */
-/***/ (function(module, exports) {
-
-module.exports = window.jQuery;
-
-/***/ }),
-
-/***/ "react":
-/*!*******************************!*\
- !*** external "window.React" ***!
- \*******************************/
-/*! no static exports found */
-/***/ (function(module, exports) {
-
-module.exports = window.React;
-
-/***/ }),
-
-/***/ "react-dom":
-/*!**********************************!*\
- !*** external "window.ReactDOM" ***!
- \**********************************/
-/*! no static exports found */
-/***/ (function(module, exports) {
-
-module.exports = window.ReactDOM;
-
-/***/ }),
-
-/***/ "shiny":
-/*!*******************************!*\
- !*** external "window.Shiny" ***!
- \*******************************/
-/*! no static exports found */
-/***/ (function(module, exports) {
-
-module.exports = window.Shiny;
-
-/***/ })
-
-/******/ });
-//# sourceMappingURL=react-tools.js.map
\ No newline at end of file
diff --git a/site_libs/reactwidget-1.0.0/react-tools.js.map b/site_libs/reactwidget-1.0.0/react-tools.js.map
deleted file mode 100644
index 088dfa0..0000000
--- a/site_libs/reactwidget-1.0.0/react-tools.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./srcjs/input.js","webpack:///./srcjs/react-tools.js","webpack:///./srcjs/widget.js","webpack:///external \"window.jQuery\"","webpack:///external \"window.React\"","webpack:///external \"window.ReactDOM\"","webpack:///external \"window.Shiny\""],"names":["defaultReceiveMessage","el","configuration","value","dirty","undefined","setInputConfiguration","setInputValue","getCallback","render","defaultOptions","receiveMessage","type","ratePolicy","reactShinyInput","selector","name","component","options","Object","assign","Shiny","inputBindings","register","scope","$","find","getInputValue","rateLimited","data","JSON","parse","next","text","callback","ReactDOM","call","Error","element","React","createElement","getInputConfiguration","getValue","setValue","bind","InputBinding","window","reactR","reactWidget","hydrate","components","tag","toUpperCase","hasOwnProperty","elem","args","attribs","i","children","length","push","apply","widthProperty","heightProperty","appendPx","renderOnResize","mergeOptions","merged","k","formatDimension","dim","isTag","actualOptions","HTMLWidgets","widget","factory","width","height","lastValue","instance","renderValue","resize","newWidth","newHeight"],"mappings":"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","file":"react-tools.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./srcjs/react-tools.js\");\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Shiny from 'shiny';\r\nimport $ from 'jquery';\r\n\r\n/*\r\n * This default receiveMessage implementation expects data to contain whole\r\n * configuration and value properties. If either is present, it will be set and\r\n * the component will be re-rendered. Because receiveMessage is typically used\r\n * by input authors to perform incremental updates, this default implementation\r\n * can be overriden by the user with the receiveMessage arguments to\r\n * reactShinyInput.\r\n */\r\nfunction defaultReceiveMessage(el, { configuration, value }) {\r\n let dirty = false;\r\n if (configuration !== undefined) {\r\n this.setInputConfiguration(el, configuration);\r\n dirty = true;\r\n }\r\n if (value !== undefined) {\r\n this.setInputValue(el, value);\r\n dirty = true;\r\n }\r\n if (dirty) {\r\n this.getCallback(el)();\r\n this.render(el);\r\n }\r\n}\r\n\r\nconst defaultOptions = {\r\n receiveMessage: defaultReceiveMessage,\r\n type: false,\r\n ratePolicy: null\r\n};\r\n\r\n/**\r\n * Installs a new Shiny input binding based on a React component.\r\n *\r\n * @param {string} selector - jQuery selector that should identify the set of\r\n * container elements within the scope argument of Shiny.InputBinding.find.\r\n * @param {string} name - A name such as 'acme.FooInput' that should uniquely\r\n * identify the component.\r\n * @param {Object} component - React Component, either class or function.\r\n * @param {Object} options - Additional configuration options. Supported\r\n * options are:\r\n * - receiveMessage: Implementation of Shiny.InputBinding to use in place of\r\n * the default. Typically overridden as an optimization to perform\r\n * incremental value updates.\r\n * - type: `false`, a string, or a function.\r\n * - `false` (the default): denotes that the value produced by this input\r\n * should not be intercepted by any handlers registered in R on the\r\n * server using shiny::registerInputHandler().\r\n * - string: denotes the input's *type* and should correspond to the\r\n * type parameter of shiny::registerInputHandler().\r\n * - function: A function called with `this` bound to the InputBinding\r\n * instance and passed a single argument, the input's containing DOM\r\n * element. The function should return either `false` or a string\r\n * corresponding to the type parameter of shiny::registerInputHandler().\r\n * - ratePolicy: A rate policy object as defined in the documentation for\r\n * getRatePolicy(): https://shiny.rstudio.com/articles/building-inputs.html\r\n * A rate policy object has two members:\r\n * - `policy`: Valid values are the strings \"direct\", \"debounce\", and\r\n * \"throttle\". \"direct\" means that all events are sent immediately.\r\n * - `delay`: Number indicating the number of milliseconds that should be\r\n * used when debouncing or throttling. Has no effect if the policy is\r\n * direct.\r\n * The specified rate policy is only applied when `true` is passed as the\r\n * second argument to the `setValue` function passed as a prop to the\r\n * input component.\r\n *\r\n */\r\nexport function reactShinyInput(selector,\r\n name,\r\n component,\r\n options) {\r\n options = Object.assign({}, defaultOptions, options);\r\n Shiny.inputBindings.register(new class extends Shiny.InputBinding {\r\n\r\n /*\r\n * Methods override those in Shiny.InputBinding\r\n */\r\n\r\n find(scope) {\r\n return $(scope).find(selector);\r\n }\r\n getValue(el) {\r\n return this.getInputValue(el);\r\n }\r\n setValue(el, value, rateLimited = false) {\r\n /*\r\n * We have to check whether $(el).data('callback') is undefined here\r\n * in case shiny::renderUI() is involved. If an input is contained in a\r\n * shiny::uiOutput(), the following strange thing happens occasionally:\r\n *\r\n * 1. setValue() is bound to an el in this.render(), below\r\n * 2. An event that will call setValue() is enqueued\r\n * 3. While the event is still enqueued, el is unbound and removed\r\n * from the DOM by the JS code associated with shiny::uiOutput()\r\n * - That code uses jQuery .html() in output_binding_html.js\r\n * - .html() removes el from the DOM and clears ist data and events\r\n * 4. By the time the setValue() bound to the original el is invoked,\r\n * el has been unbound and its data cleared.\r\n *\r\n * Since the original input is gone along with its callback, it\r\n * seems to make the most sense to do nothing.\r\n */\r\n if ($(el).data('callback') !== undefined) {\r\n this.setInputValue(el, value);\r\n this.getCallback(el)(rateLimited);\r\n this.render(el);\r\n }\r\n }\r\n initialize(el) {\r\n $(el).data('value', JSON.parse($(el).next().text()));\r\n $(el).data('configuration', JSON.parse($(el).next().next().text()));\r\n }\r\n subscribe(el, callback) {\r\n $(el).data('callback', callback);\r\n this.render(el);\r\n }\r\n unsubscribe(el) {\r\n ReactDOM.render(null, el);\r\n }\r\n receiveMessage(el, data) {\r\n options.receiveMessage.call(this, el, data);\r\n }\r\n getType(el) {\r\n if (typeof options.type === 'function') {\r\n return options.type.call(this, el);\r\n } else if (options.type === false || typeof options.type === 'string') {\r\n return options.type;\r\n } else {\r\n throw new Error('options.type must be false, a string, or a function');\r\n }\r\n }\r\n getRatePolicy() {\r\n return options.ratePolicy;\r\n }\r\n\r\n /*\r\n * Methods not present in Shiny.InputBinding but accessible to users\r\n * through `this` in receiveMessage\r\n */\r\n\r\n getInputValue(el) {\r\n return $(el).data('value');\r\n }\r\n setInputValue(el, value) {\r\n $(el).data('value', value);\r\n }\r\n getInputConfiguration(el) {\r\n return $(el).data('configuration');\r\n }\r\n setInputConfiguration(el, configuration) {\r\n $(el).data('configuration', configuration);\r\n }\r\n getCallback(el) {\r\n return $(el).data('callback');\r\n }\r\n render(el) {\r\n const element = React.createElement(component, {\r\n configuration: this.getInputConfiguration(el),\r\n value: this.getValue(el),\r\n setValue: this.setValue.bind(this, el),\r\n el: el\r\n });\r\n ReactDOM.render(element, el);\r\n }\r\n }, name);\r\n}\r\n\r\n","import { reactWidget, hydrate } from './widget';\r\nimport { reactShinyInput } from './input';\r\n\r\nwindow.reactR = {\r\n reactShinyInput: reactShinyInput,\r\n reactWidget: reactWidget,\r\n hydrate: hydrate\r\n};\r\n","/**\r\n * Recursively transforms tag, a JSON representation of an instance of a\r\n * React component and its children, into a React element suitable for\r\n * passing to ReactDOM.render.\r\n * @param {Object} components\r\n * @param {Object} tag\r\n */\r\nexport function hydrate(components, tag) {\r\n if (typeof tag === 'string') return tag;\r\n if (tag.name[0] === tag.name[0].toUpperCase()\r\n && !components.hasOwnProperty(tag.name)) {\r\n throw new Error(\"Unknown component: \" + tag.name);\r\n }\r\n var elem = components.hasOwnProperty(tag.name) ? components[tag.name] : tag.name,\r\n args = [elem, tag.attribs];\r\n for (var i = 0; i < tag.children.length; i++) {\r\n args.push(hydrate(components, tag.children[i]));\r\n }\r\n return React.createElement.apply(React, args);\r\n}\r\n\r\nexport const defaultOptions = {\r\n // The name of the property on the root tag to use for the width, if\r\n // it's updated.\r\n widthProperty: \"width\",\r\n // The name of the property on the root tag to use for the height, if\r\n // it's updated.\r\n heightProperty: \"height\",\r\n // Whether or not to append the string 'px' to the width and height\r\n // properties when they change.\r\n appendPx: false,\r\n // Whether or not to dynamically update the width and height properties\r\n // of the last known tag when the computed width and height change in\r\n // the browser.\r\n renderOnResize: false\r\n};\r\n\r\nexport function mergeOptions(options) {\r\n var merged = {};\r\n for (var k in defaultOptions) {\r\n merged[k] = defaultOptions[k];\r\n }\r\n for (var k in options) {\r\n if (!defaultOptions.hasOwnProperty(k)) {\r\n throw new Error(\"Unrecognized option: \" + k);\r\n }\r\n merged[k] = options[k];\r\n }\r\n return merged;\r\n}\r\n\r\nexport function formatDimension(dim, options) {\r\n if (options.appendPx) {\r\n return dim + 'px';\r\n } else {\r\n return dim;\r\n }\r\n}\r\n\r\nexport function isTag(value) {\r\n return (typeof value === 'object')\r\n && value.hasOwnProperty('name')\r\n && value.hasOwnProperty('attribs')\r\n && value.hasOwnProperty('children');\r\n}\r\n\r\n/**\r\n * Creates an HTMLWidget that is updated by rendering a React component.\r\n * React component constructors are made available by specifying them by\r\n * name in the components object.\r\n * @param {string} name\r\n * @param {string} type\r\n * @param {Object} components\r\n * @param {Object} options\r\n */\r\nexport function reactWidget(name, type, components, options) {\r\n var actualOptions = mergeOptions(options);\r\n window.HTMLWidgets.widget({\r\n name: name,\r\n type: type,\r\n factory: function (el, width, height) {\r\n var lastValue,\r\n instance = {},\r\n renderValue = (function (value) {\r\n if (actualOptions.renderOnResize) {\r\n // value.tag might be a primitive string, in which\r\n // case there is no attribs property.\r\n if (typeof value.tag === 'object') {\r\n value.tag.attribs[actualOptions[\"widthProperty\"]] = formatDimension(width);\r\n value.tag.attribs[actualOptions[\"heightProperty\"]] = formatDimension(height);\r\n }\r\n lastValue = value;\r\n }\r\n // with functional stateless components this will be null\r\n // see https://reactjs.org/docs/react-dom.html#render for more details\r\n this.instance.component = ReactDOM.render(hydrate(components, value.tag), el);\r\n });\r\n return {\r\n instance: instance,\r\n renderValue: renderValue,\r\n resize: function (newWidth, newHeight) {\r\n if (actualOptions.renderOnResize) {\r\n width = newWidth;\r\n height = newHeight;\r\n renderValue(lastValue);\r\n }\r\n }\r\n };\r\n }\r\n })\r\n}\r\n\r\n","module.exports = window.jQuery;","module.exports = window.React;","module.exports = window.ReactDOM;","module.exports = window.Shiny;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/site_libs/reactwidget-2.0.0/react-tools.umd.cjs b/site_libs/reactwidget-2.0.0/react-tools.umd.cjs
new file mode 100644
index 0000000..92b8d86
--- /dev/null
+++ b/site_libs/reactwidget-2.0.0/react-tools.umd.cjs
@@ -0,0 +1 @@
+(function(s,u){typeof exports=="object"&&typeof module<"u"?u(exports):typeof define=="function"&&define.amd?define(["exports"],u):(s=typeof globalThis<"u"?globalThis:s||self,u(s.reactR={}))})(this,function(s){"use strict";function u(n,t){if(typeof t=="string")return t;if(t.name[0]===t.name[0].toUpperCase()&&!n.hasOwnProperty(t.name))throw new Error("Unknown component: "+t.name);for(let i in t.attribs)g(t.attribs[i])&&(t.attribs[i]=u(n,t.attribs[i]));for(var a=n.hasOwnProperty(t.name)?n[t.name]:t.name,r=[a,t.attribs],e=0;ehttps://tbep-tech.github.io/ccmp/docs/wildlife/sp2.html
- 2024-06-20T18:52:50.296Z
+ 2024-07-09T20:40:34.124Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/is2.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.124Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/fw5.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/fw1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/dr2.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/bh9.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/bh6.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/bh3.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/bh1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ww3.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ww1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/wq1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/sw10.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ph5.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ph2.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/coc1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/misc/priorities.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/misc/allactions.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/footer.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/communities/pe1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/communities/li1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/communities/cc1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/communities/cc2.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/communities/pa1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/communities/pe2.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/misc/acronyms.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/misc/implement.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ad1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/coc4.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ph4.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/sw1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/sw8.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/wq3.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ww2.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/water/ww5.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/bh2.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/bh4.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/bh8.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/dr1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/fi1.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/fw3.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/fw6.html
- 2024-06-20T18:52:50.280Z
+ 2024-07-09T20:40:34.108Zhttps://tbep-tech.github.io/ccmp/docs/wildlife/sp1.html
- 2024-06-20T18:52:50.296Z
+ 2024-07-09T20:40:34.124Z