├── .build ├── createGithubRelease.ts ├── tsconfig.json └── updateVersion.ts ├── .cz-config.js ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ └── feature_request.yml ├── actions │ └── setup │ │ └── action.yml └── workflows │ ├── docs.yml │ ├── issues.yml │ └── main.yml ├── .gitignore ├── .husky └── prepare-commit-msg ├── .releaserc.json ├── .tool-versions ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── _docs ├── assets │ ├── target_timeframes_data_source.png │ └── target_timeframes_sub_menu.png ├── blueprints.md ├── blueprints │ ├── target_timeframes_carbon_intensity.yaml │ ├── target_timeframes_octopus_energy.yaml │ ├── target_timeframes_octopus_energy_carbon_intensity.yaml │ ├── target_timeframes_octopus_energy_with_free_electricity.yaml │ └── target_timeframes_weather.yaml ├── events.md ├── faq.md ├── index.md ├── repairs │ └── invalid_target_timeframe.md ├── services.md ├── setup │ ├── data_source.md │ ├── getting_started.md │ ├── rolling_target_timeframe.md │ └── target_timeframe.md └── sponsorship.md ├── custom_components ├── __init__.py └── target_timeframes │ ├── __init__.py │ ├── binary_sensor.py │ ├── config │ ├── __init__.py │ ├── data_source.py │ ├── rolling_target_timeframe.py │ └── target_timeframe.py │ ├── config_flow.py │ ├── const.py │ ├── entities │ ├── __init__.py │ ├── data_source.py │ ├── repairs.py │ ├── rolling_target_timeframe.py │ └── target_timeframe.py │ ├── icons.json │ ├── manifest.json │ ├── sensor.py │ ├── services.yaml │ ├── storage │ └── data_source_data.py │ ├── translations │ └── en.json │ └── utils │ ├── __init__.py │ ├── attributes.py │ └── data_source_data.py ├── hacs.json ├── logo.png ├── mkdocs.yml ├── package.json ├── requirements.test.txt ├── requirements.txt └── tests └── unit ├── __init__.py ├── config ├── __init__.py ├── test_validate_rolling_target_timeframe_config.py └── test_validate_target_timeframe_config.py ├── target_rates ├── __init__.py ├── test_calculate_continuous_times.py ├── test_calculate_intermittent_times.py ├── test_compare_config_to_attributes.py ├── test_create_weighting.py ├── test_get_fixed_applicable_time_periods.py ├── test_get_rolling_applicable_time_periods.py ├── test_get_start_and_end_times.py ├── test_get_target_rate_info.py ├── test_is_target_timeframe_complete_in_period.py ├── test_is_target_timeframes_started.py └── test_should_evaluate_target_rates.py └── utils ├── __init__.py ├── test_dict_to_typed_dict.py └── test_merge_data_source_data.py /.build/createGithubRelease.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.build/createGithubRelease.ts -------------------------------------------------------------------------------- /.build/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.build/tsconfig.json -------------------------------------------------------------------------------- /.build/updateVersion.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.build/updateVersion.ts -------------------------------------------------------------------------------- /.cz-config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.cz-config.js -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/FUNDING.yml -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/ISSUE_TEMPLATE/bug_report.yml -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/ISSUE_TEMPLATE/config.yml -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/ISSUE_TEMPLATE/feature_request.yml -------------------------------------------------------------------------------- /.github/actions/setup/action.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/actions/setup/action.yml -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/workflows/docs.yml -------------------------------------------------------------------------------- /.github/workflows/issues.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/workflows/issues.yml -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.github/workflows/main.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.gitignore -------------------------------------------------------------------------------- /.husky/prepare-commit-msg: -------------------------------------------------------------------------------- 1 | exec < /dev/tty && npx cz --hook || true -------------------------------------------------------------------------------- /.releaserc.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/.releaserc.json -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | nodejs 22.4.0 2 | python 3.12.4 -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/README.md -------------------------------------------------------------------------------- /_docs/assets/target_timeframes_data_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/assets/target_timeframes_data_source.png -------------------------------------------------------------------------------- /_docs/assets/target_timeframes_sub_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/assets/target_timeframes_sub_menu.png -------------------------------------------------------------------------------- /_docs/blueprints.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/blueprints.md -------------------------------------------------------------------------------- /_docs/blueprints/target_timeframes_carbon_intensity.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/blueprints/target_timeframes_carbon_intensity.yaml -------------------------------------------------------------------------------- /_docs/blueprints/target_timeframes_octopus_energy.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/blueprints/target_timeframes_octopus_energy.yaml -------------------------------------------------------------------------------- /_docs/blueprints/target_timeframes_octopus_energy_carbon_intensity.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/blueprints/target_timeframes_octopus_energy_carbon_intensity.yaml -------------------------------------------------------------------------------- /_docs/blueprints/target_timeframes_octopus_energy_with_free_electricity.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/blueprints/target_timeframes_octopus_energy_with_free_electricity.yaml -------------------------------------------------------------------------------- /_docs/blueprints/target_timeframes_weather.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/blueprints/target_timeframes_weather.yaml -------------------------------------------------------------------------------- /_docs/events.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/events.md -------------------------------------------------------------------------------- /_docs/faq.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/faq.md -------------------------------------------------------------------------------- /_docs/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/index.md -------------------------------------------------------------------------------- /_docs/repairs/invalid_target_timeframe.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/repairs/invalid_target_timeframe.md -------------------------------------------------------------------------------- /_docs/services.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/services.md -------------------------------------------------------------------------------- /_docs/setup/data_source.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/setup/data_source.md -------------------------------------------------------------------------------- /_docs/setup/getting_started.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/setup/getting_started.md -------------------------------------------------------------------------------- /_docs/setup/rolling_target_timeframe.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/setup/rolling_target_timeframe.md -------------------------------------------------------------------------------- /_docs/setup/target_timeframe.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/setup/target_timeframe.md -------------------------------------------------------------------------------- /_docs/sponsorship.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/_docs/sponsorship.md -------------------------------------------------------------------------------- /custom_components/__init__.py: -------------------------------------------------------------------------------- 1 | """Custom components module.""" -------------------------------------------------------------------------------- /custom_components/target_timeframes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/__init__.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/binary_sensor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/binary_sensor.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/config/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /custom_components/target_timeframes/config/data_source.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/config/data_source.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/config/rolling_target_timeframe.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/config/rolling_target_timeframe.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/config/target_timeframe.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/config/target_timeframe.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/config_flow.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/config_flow.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/const.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/const.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/entities/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/entities/__init__.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/entities/data_source.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/entities/data_source.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/entities/repairs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/entities/repairs.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/entities/rolling_target_timeframe.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/entities/rolling_target_timeframe.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/entities/target_timeframe.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/entities/target_timeframe.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/icons.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/icons.json -------------------------------------------------------------------------------- /custom_components/target_timeframes/manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/manifest.json -------------------------------------------------------------------------------- /custom_components/target_timeframes/sensor.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/sensor.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/services.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/services.yaml -------------------------------------------------------------------------------- /custom_components/target_timeframes/storage/data_source_data.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/storage/data_source_data.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/translations/en.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/translations/en.json -------------------------------------------------------------------------------- /custom_components/target_timeframes/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /custom_components/target_timeframes/utils/attributes.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/utils/attributes.py -------------------------------------------------------------------------------- /custom_components/target_timeframes/utils/data_source_data.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/custom_components/target_timeframes/utils/data_source_data.py -------------------------------------------------------------------------------- /hacs.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/hacs.json -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/logo.png -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/mkdocs.yml -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/package.json -------------------------------------------------------------------------------- /requirements.test.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/requirements.test.txt -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/requirements.txt -------------------------------------------------------------------------------- /tests/unit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/__init__.py -------------------------------------------------------------------------------- /tests/unit/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/config/__init__.py -------------------------------------------------------------------------------- /tests/unit/config/test_validate_rolling_target_timeframe_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/config/test_validate_rolling_target_timeframe_config.py -------------------------------------------------------------------------------- /tests/unit/config/test_validate_target_timeframe_config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/config/test_validate_target_timeframe_config.py -------------------------------------------------------------------------------- /tests/unit/target_rates/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/target_rates/test_calculate_continuous_times.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_calculate_continuous_times.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_calculate_intermittent_times.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_calculate_intermittent_times.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_compare_config_to_attributes.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_compare_config_to_attributes.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_create_weighting.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_create_weighting.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_get_fixed_applicable_time_periods.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_get_fixed_applicable_time_periods.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_get_rolling_applicable_time_periods.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_get_rolling_applicable_time_periods.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_get_start_and_end_times.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_get_start_and_end_times.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_get_target_rate_info.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_get_target_rate_info.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_is_target_timeframe_complete_in_period.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_is_target_timeframe_complete_in_period.py -------------------------------------------------------------------------------- /tests/unit/target_rates/test_is_target_timeframes_started.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/target_rates/test_should_evaluate_target_rates.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/target_rates/test_should_evaluate_target_rates.py -------------------------------------------------------------------------------- /tests/unit/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/utils/test_dict_to_typed_dict.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/utils/test_dict_to_typed_dict.py -------------------------------------------------------------------------------- /tests/unit/utils/test_merge_data_source_data.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BottlecapDave/HomeAssistant-TargetTimeframes/HEAD/tests/unit/utils/test_merge_data_source_data.py --------------------------------------------------------------------------------