diff --git a/.nojekyll b/.nojekyll index feb72c1..79ec337 100644 --- a/.nojekyll +++ b/.nojekyll @@ -1 +1 @@ -e17bc7c6 \ No newline at end of file +c391cbcf \ No newline at end of file diff --git a/docs/communities/cc1.html b/docs/communities/cc1.html index 3b75889..9c873a7 100644 --- a/docs/communities/cc1.html +++ b/docs/communities/cc1.html @@ -99,7 +99,7 @@ - + @@ -359,8 +359,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/communities/cc2.html b/docs/communities/cc2.html index 19ece9e..a9dc921 100644 --- a/docs/communities/cc2.html +++ b/docs/communities/cc2.html @@ -99,7 +99,7 @@ - + @@ -337,8 +337,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/communities/li1.html b/docs/communities/li1.html index e52f97f..472abc5 100644 --- a/docs/communities/li1.html +++ b/docs/communities/li1.html @@ -98,7 +98,7 @@ - + @@ -333,8 +333,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/communities/pa1.html b/docs/communities/pa1.html index bf5a9d3..6b01587 100644 --- a/docs/communities/pa1.html +++ b/docs/communities/pa1.html @@ -99,7 +99,7 @@ - + @@ -371,8 +371,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/communities/pe1.html b/docs/communities/pe1.html index 6257c56..eaf74db 100644 --- a/docs/communities/pe1.html +++ b/docs/communities/pe1.html @@ -98,7 +98,7 @@ - + @@ -350,8 +350,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/communities/pe2.html b/docs/communities/pe2.html index d12bb12..dc61145 100644 --- a/docs/communities/pe2.html +++ b/docs/communities/pe2.html @@ -99,7 +99,7 @@ - + @@ -375,8 +375,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/misc/allactions.html b/docs/misc/allactions.html index 45339e0..19cd25e 100644 --- a/docs/misc/allactions.html +++ b/docs/misc/allactions.html @@ -173,7 +173,7 @@
-

Action Plan

Action

Description

Clean Water and Sediments

Water Quality

WQ-1

Implement the Tampa Bay nutrient management strategy

WQ-3

Reduce frequency and duration of harmful algal blooms

Stormwater Runoff

SW-1

Reduce nitrogen runoff from urban landscapes

SW-8

Expand adoption and implementation of Best Management Practices for commercial and urban agriculture

SW-10

Expand use of Green Infrastructure practices

Atmospheric Deposition

AD-1

Continue to reduce nitrogen loading from atmospheric deposition

Wastewater Discharge

WW-1

Expand the beneficial use of reclaimed water

WW-2

Extend central sewer service to priority areas now served by septic systems

WW-3

Require standardized monitoring and reporting of wastewater discharges

WW-5

Reduce the occurrence of sanitary sewer overflows to the bay

Contaminants of Concern

COC-1

Address hot spots of sediment contamination in the bay

COC-4

Identify and understand emerging contaminants

Pathogens

PH-2

Continue source and risk assessments of human and ecosystem health indicators suitable for Tampa Bay beaches and other recreational waters

PH-4

Reduce fecal contamination from humans and pets in Tampa Bay Area waters

PH-5

Reduce pollution from recreational boaters

Thriving Habitats and Abundant Wildlife

Bay Habitats

BH-1

Implement the Tampa Bay Habitat Master Plan

BH-2

Establish and implement mitigation criteria

BH-3

Reduce propeller scarring of seagrass and pursue seagrass transplanting opportunities

BH-4

Identify hard bottom communities and avoid impacts

BH-6

Encourage habitat enhancement along altered waterfront properties

BH-8

Continue and enhance habitat mapping and monitoring programs

BH-9

Enhance ecosystem values of tidal tributaries

Freshwater Inflow

FI-1

Maintain seasonal freshwater flows in rivers

Fish & Wildlife

FW-1

Increase on-water enforcement of environmental regulations

FW-3

Achieve a sustainable bay scallop population

FW-5

Continue and expand the Critical Fisheries Monitoring Program

FW-6

Preserve the diversity and abundance of bay wildlife

Dredging & Material Mgmt

DR-1

Develop a plan for beneficial uses of dredged material in Tampa Bay

DR-2

Continue to minimize impacts to bay wildlife and their habitats from dredging activities

Spill Prevention

SP-1

Continue implementation of advanced technology to improve coordination of ship movements in Tampa Bay

SP-2

Evaluate and update spill response plans for priority areas

Invasive Species

IS-2

Support prevention, eradication or management of invasive species in Tampa Bay and its watershed

Informed, Engaged, and Responsible Community

Public Education & Involvement

PE-1

Promote public involvement in bay restoration and protection

PE-2

Promote public education about key issues affecting Tampa Bay

Public Access

PA-1

Provide for and manage recreational uses of the bay

Climate Change

CC-1

Improve ability of bay habitats to adapt to a changing climate

CC-2

Understand and address the effects of ocean acidification

Local Implementation

LI-1

Incorporate CCMP goals and actions in local government comprehensive plans, land development regulations or ordinances

+

Action Plan

Action

Description

Clean Water and Sediments

Water Quality

WQ-1

Implement the Tampa Bay nutrient management strategy

WQ-3

Reduce frequency and duration of harmful algal blooms

Stormwater Runoff

SW-1

Reduce nitrogen runoff from urban landscapes

SW-8

Expand adoption and implementation of Best Management Practices for commercial and urban agriculture

SW-10

Expand use of Green Infrastructure practices

Atmospheric Deposition

AD-1

Continue to reduce nitrogen loading from atmospheric deposition

Wastewater Discharge

WW-1

Expand the beneficial use of reclaimed water

WW-2

Extend central sewer service to priority areas now served by septic systems

WW-3

Require standardized monitoring and reporting of wastewater discharges

WW-5

Reduce the occurrence of sanitary sewer overflows to the bay

Contaminants of Concern

COC-1

Address hot spots of sediment contamination in the bay

COC-4

Identify and understand emerging contaminants

Pathogens

PH-2

Continue source and risk assessments of human and ecosystem health indicators suitable for Tampa Bay beaches and other recreational waters

PH-4

Reduce fecal contamination from humans and pets in Tampa Bay Area waters

PH-5

Reduce pollution from recreational boaters

Thriving Habitats and Abundant Wildlife

Bay Habitats

BH-1

Implement the Tampa Bay Habitat Master Plan

BH-2

Establish and implement mitigation criteria

BH-3

Reduce propeller scarring of seagrass and pursue seagrass transplanting opportunities

BH-4

Identify hard bottom communities and avoid impacts

BH-6

Encourage habitat enhancement along altered waterfront properties

BH-8

Continue and enhance habitat mapping and monitoring programs

BH-9

Enhance ecosystem values of tidal tributaries

Freshwater Inflow

FI-1

Maintain seasonal freshwater flows in rivers

Fish & Wildlife

FW-1

Increase on-water enforcement of environmental regulations

FW-3

Achieve a sustainable bay scallop population

FW-5

Continue and expand the Critical Fisheries Monitoring Program

FW-6

Preserve the diversity and abundance of bay wildlife

Dredging & Material Mgmt

DR-1

Develop a plan for beneficial uses of dredged material in Tampa Bay

DR-2

Continue to minimize impacts to bay wildlife and their habitats from dredging activities

Spill Prevention

SP-1

Continue implementation of advanced technology to improve coordination of ship movements in Tampa Bay

SP-2

Evaluate and update spill response plans for priority areas

Invasive Species

IS-2

Support prevention, eradication or management of invasive species in Tampa Bay and its watershed

Informed, Engaged, and Responsible Community

Public Education & Involvement

PE-1

Promote public involvement in bay restoration and protection

PE-2

Promote public education about key issues affecting Tampa Bay

Public Access

PA-1

Provide for and manage recreational uses of the bay

Climate Change

CC-1

Improve ability of bay habitats to adapt to a changing climate

CC-2

Understand and address the effects of ocean acidification

Local Implementation

LI-1

Incorporate CCMP goals and actions in local government comprehensive plans, land development regulations or ordinances

( )

diff --git a/docs/misc/priorities.html b/docs/misc/priorities.html index f1f6671..1e09b2e 100644 --- a/docs/misc/priorities.html +++ b/docs/misc/priorities.html @@ -173,7 +173,7 @@
-

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.

+

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.

( )

diff --git a/docs/water/ad1.html b/docs/water/ad1.html index c78e36f..ca2e177 100644 --- a/docs/water/ad1.html +++ b/docs/water/ad1.html @@ -99,7 +99,7 @@ - + @@ -460,8 +460,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/coc1.html b/docs/water/coc1.html index 5d588fc..b67b5d0 100644 --- a/docs/water/coc1.html +++ b/docs/water/coc1.html @@ -101,7 +101,7 @@ - + @@ -398,8 +398,8 @@

BACKGROUND:

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:

@@ -436,8 +436,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/coc4.html b/docs/water/coc4.html index f4a1e57..23b7d85 100644 --- a/docs/water/coc4.html +++ b/docs/water/coc4.html @@ -99,7 +99,7 @@ - + @@ -431,8 +431,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/ph2.html b/docs/water/ph2.html index 41a7eb4..83c3b62 100644 --- a/docs/water/ph2.html +++ b/docs/water/ph2.html @@ -99,7 +99,7 @@ - + @@ -431,8 +431,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/ph4.html b/docs/water/ph4.html index 2d3b800..fbd704d 100644 --- a/docs/water/ph4.html +++ b/docs/water/ph4.html @@ -99,7 +99,7 @@ - + @@ -441,8 +441,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/ph5.html b/docs/water/ph5.html index b0171e6..12eb804 100644 --- a/docs/water/ph5.html +++ b/docs/water/ph5.html @@ -100,7 +100,7 @@ - + @@ -387,8 +387,8 @@

BACKGROUND:

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.

@@ -442,8 +442,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/sw1.html b/docs/water/sw1.html index c67e578..03b8fcc 100644 --- a/docs/water/sw1.html +++ b/docs/water/sw1.html @@ -99,7 +99,7 @@ - + @@ -429,8 +429,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/sw10.html b/docs/water/sw10.html index a0792ed..a7888a9 100644 --- a/docs/water/sw10.html +++ b/docs/water/sw10.html @@ -99,7 +99,7 @@ - + @@ -435,8 +435,8 @@

EXAMPLES OF GRE

ACTIVITIES

-
- +
+
diff --git a/docs/water/sw8.html b/docs/water/sw8.html index 7896e55..90c5457 100644 --- a/docs/water/sw8.html +++ b/docs/water/sw8.html @@ -101,7 +101,7 @@ - + @@ -385,7 +385,7 @@

BACKGROUND:

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.

@@ -405,8 +405,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/wq1.html b/docs/water/wq1.html index 076b279..676d1d0 100644 --- a/docs/water/wq1.html +++ b/docs/water/wq1.html @@ -98,7 +98,7 @@ - + @@ -454,8 +454,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/wq3.html b/docs/water/wq3.html index ed201c5..ea2287a 100644 --- a/docs/water/wq3.html +++ b/docs/water/wq3.html @@ -99,7 +99,7 @@ - + @@ -434,8 +434,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/ww1.html b/docs/water/ww1.html index 15b5f27..5216cc3 100644 --- a/docs/water/ww1.html +++ b/docs/water/ww1.html @@ -101,7 +101,7 @@ - + @@ -397,8 +397,8 @@

BACKGROUND:

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.

@@ -438,8 +438,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/ww2.html b/docs/water/ww2.html index 5e32f6f..61d2a60 100644 --- a/docs/water/ww2.html +++ b/docs/water/ww2.html @@ -99,7 +99,7 @@ - + @@ -418,8 +418,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/ww3.html b/docs/water/ww3.html index 8f443dc..8de0c9d 100644 --- a/docs/water/ww3.html +++ b/docs/water/ww3.html @@ -99,7 +99,7 @@ - + @@ -412,8 +412,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/water/ww5.html b/docs/water/ww5.html index cb683e7..af41f39 100644 --- a/docs/water/ww5.html +++ b/docs/water/ww5.html @@ -99,7 +99,7 @@ - + @@ -435,8 +435,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/bh1.html b/docs/wildlife/bh1.html index a8aa5fb..141ca1d 100644 --- a/docs/wildlife/bh1.html +++ b/docs/wildlife/bh1.html @@ -98,7 +98,7 @@ - + @@ -541,8 +541,8 @@

Land Acquisition and Protec

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/bh2.html b/docs/wildlife/bh2.html index f8f8c38..656f096 100644 --- a/docs/wildlife/bh2.html +++ b/docs/wildlife/bh2.html @@ -99,7 +99,7 @@ - + @@ -446,8 +446,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/bh3.html b/docs/wildlife/bh3.html index 09ffb8f..42dd0d6 100644 --- a/docs/wildlife/bh3.html +++ b/docs/wildlife/bh3.html @@ -99,7 +99,7 @@ - + @@ -437,8 +437,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/bh4.html b/docs/wildlife/bh4.html index 64f456f..7d27629 100644 --- a/docs/wildlife/bh4.html +++ b/docs/wildlife/bh4.html @@ -101,7 +101,7 @@ - + @@ -404,7 +404,7 @@

BACKGROUND:

O’Keefe, K., W. Arnold, and D. Reed. 2006. Tampa Bay Oyster Mapping and Assessment.” 03-06. St. Petersburg, Florida: Tampa Bay Estuary Program. https://drive.google.com/file/d/1RuyxG6OnXXnNH0FynEtc8EXD249qGn8G/view?usp=drivesdk.
-

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.

@@ -460,8 +460,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/bh6.html b/docs/wildlife/bh6.html index ed38447..0d5b1ad 100644 --- a/docs/wildlife/bh6.html +++ b/docs/wildlife/bh6.html @@ -99,7 +99,7 @@ - + @@ -432,8 +432,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/bh8.html b/docs/wildlife/bh8.html index 5c5ae4f..129f3c7 100644 --- a/docs/wildlife/bh8.html +++ b/docs/wildlife/bh8.html @@ -99,7 +99,7 @@ - + @@ -426,8 +426,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/bh8_files/figure-html/unnamed-chunk-2-1.png b/docs/wildlife/bh8_files/figure-html/unnamed-chunk-2-1.png index 6e26371..951e2eb 100644 Binary files a/docs/wildlife/bh8_files/figure-html/unnamed-chunk-2-1.png and b/docs/wildlife/bh8_files/figure-html/unnamed-chunk-2-1.png differ diff --git a/docs/wildlife/bh9.html b/docs/wildlife/bh9.html index 4a733cc..3ac2764 100644 --- a/docs/wildlife/bh9.html +++ b/docs/wildlife/bh9.html @@ -99,7 +99,7 @@ - + @@ -454,8 +454,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/dr1.html b/docs/wildlife/dr1.html index 61df513..deaea73 100644 --- a/docs/wildlife/dr1.html +++ b/docs/wildlife/dr1.html @@ -99,7 +99,7 @@ - + @@ -452,8 +452,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/dr2.html b/docs/wildlife/dr2.html index 63f78a1..bb53631 100644 --- a/docs/wildlife/dr2.html +++ b/docs/wildlife/dr2.html @@ -99,7 +99,7 @@ - + @@ -445,8 +445,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/fi1.html b/docs/wildlife/fi1.html index 59fca55..d35f9ff 100644 --- a/docs/wildlife/fi1.html +++ b/docs/wildlife/fi1.html @@ -99,7 +99,7 @@ - + @@ -428,8 +428,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/fw1.html b/docs/wildlife/fw1.html index ab3db6f..e3a198e 100644 --- a/docs/wildlife/fw1.html +++ b/docs/wildlife/fw1.html @@ -101,7 +101,7 @@ - + @@ -401,8 +401,8 @@

BACKGROUND:

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.

@@ -434,8 +434,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/fw3.html b/docs/wildlife/fw3.html index cb70e1d..b541415 100644 --- a/docs/wildlife/fw3.html +++ b/docs/wildlife/fw3.html @@ -99,7 +99,7 @@ - + @@ -426,8 +426,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/fw5.html b/docs/wildlife/fw5.html index 8a36557..9ae2ad5 100644 --- a/docs/wildlife/fw5.html +++ b/docs/wildlife/fw5.html @@ -99,7 +99,7 @@ - + @@ -431,8 +431,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/fw6.html b/docs/wildlife/fw6.html index 5342fd2..e82c2d5 100644 --- a/docs/wildlife/fw6.html +++ b/docs/wildlife/fw6.html @@ -101,7 +101,7 @@ - + @@ -400,8 +400,8 @@

BACKGROUND:

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.

@@ -464,8 +464,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/is2.html b/docs/wildlife/is2.html index 35a6483..7c94c2f 100644 --- a/docs/wildlife/is2.html +++ b/docs/wildlife/is2.html @@ -98,7 +98,7 @@ - + @@ -455,8 +455,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/sp1.html b/docs/wildlife/sp1.html index 367bd9c..98ad550 100644 --- a/docs/wildlife/sp1.html +++ b/docs/wildlife/sp1.html @@ -99,7 +99,7 @@ - + @@ -430,8 +430,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
diff --git a/docs/wildlife/sp2.html b/docs/wildlife/sp2.html index c0d4028..bac2c01 100644 --- a/docs/wildlife/sp2.html +++ b/docs/wildlife/sp2.html @@ -99,7 +99,7 @@ - + @@ -428,8 +428,8 @@

BACKGROUND:

ACTIVITIES

-
- +
+
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;e https://tbep-tech.github.io/ccmp/docs/wildlife/sp2.html - 2024-06-20T18:52:50.296Z + 2024-07-09T20:40:34.124Z https://tbep-tech.github.io/ccmp/docs/wildlife/is2.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.124Z https://tbep-tech.github.io/ccmp/docs/wildlife/fw5.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/fw1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/dr2.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/bh9.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/bh6.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/bh3.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/bh1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ww3.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ww1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/wq1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/sw10.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ph5.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ph2.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/coc1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/misc/priorities.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/misc/allactions.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/footer.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/communities/pe1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/communities/li1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/communities/cc1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/communities/cc2.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/communities/pa1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/communities/pe2.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/misc/acronyms.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/misc/implement.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ad1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/coc4.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ph4.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/sw1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/sw8.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/wq3.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ww2.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/water/ww5.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/bh2.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/bh4.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/bh8.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/dr1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/fi1.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/fw3.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/fw6.html - 2024-06-20T18:52:50.280Z + 2024-07-09T20:40:34.108Z https://tbep-tech.github.io/ccmp/docs/wildlife/sp1.html - 2024-06-20T18:52:50.296Z + 2024-07-09T20:40:34.124Z