From cc2e50549d99bc591293299b03f603edf284a232 Mon Sep 17 00:00:00 2001 From: euzu <33094714+euzu@users.noreply.github.com> Date: Tue, 20 Jan 2026 18:51:46 +0100 Subject: [PATCH] Feature/panel api update (#524) Panel Api update --- .gitignore | 7 +- CHANGELOG.md | 5 +- Cargo.lock | 4 +- README.md | 153 +- backend/src/api/api_utils.rs | 110 +- backend/src/api/config_watch.rs | 80 +- .../src/api/endpoints/api_playlist_utils.rs | 10 +- backend/src/api/endpoints/download_api.rs | 7 +- backend/src/api/endpoints/hdhomerun_api.rs | 7 +- backend/src/api/endpoints/hls_api.rs | 16 +- backend/src/api/endpoints/m3u_api.rs | 2 +- backend/src/api/endpoints/user_api.rs | 7 +- backend/src/api/endpoints/v1_api.rs | 15 +- backend/src/api/endpoints/v1_api_config.rs | 13 +- backend/src/api/endpoints/v1_api_user.rs | 125 +- backend/src/api/endpoints/xmltv_api.rs | 29 +- backend/src/api/endpoints/xtream_api.rs | 36 +- backend/src/api/main_api.rs | 8 +- backend/src/api/model/app_state.rs | 4 +- backend/src/api/model/playlist_mem_cache.rs | 3 +- backend/src/api/model/stream.rs | 4 +- .../api/model/streams/active_client_stream.rs | 581 ++- .../api/model/streams/custom_video_stream.rs | 8 +- backend/src/api/model/streams/mod.rs | 2 + .../src/api/model/streams/provider_stream.rs | 54 +- .../model/streams/provider_stream_factory.rs | 26 +- .../api/model/streams/provisioning_stream.rs | 35 + .../model/streams/shared_stream_manager.rs | 22 +- .../model/streams/transport_stream_buffer.rs | 16 +- backend/src/api/panel_api.rs | 4105 +++++++++++++++-- backend/src/api/scheduler.rs | 14 +- backend/src/model/config/api_proxy.rs | 2 +- backend/src/model/config/app.rs | 4 +- backend/src/model/config/base.rs | 4 +- backend/src/model/config/input.rs | 5 +- backend/src/model/config/mod.rs | 2 +- backend/src/model/config/panel_api.rs | 107 +- backend/src/model/config/stream.rs | 1 + backend/src/model/xmltv.rs | 2 + backend/src/processing/input_cache.rs | 2 +- backend/src/processing/processor/playlist.rs | 5 +- backend/src/processing/processor/sort.rs | 36 +- backend/src/processing/processor/xtream.rs | 12 +- .../src/processing/processor/xtream_series.rs | 17 +- .../src/processing/processor/xtream_vod.rs | 17 +- backend/src/repository/alias_repository.rs | 609 +++ backend/src/repository/epg_repository.rs | 4 +- .../src/repository/m3u_playlist_iterator.rs | 8 +- backend/src/repository/mod.rs | 41 +- backend/src/repository/playlist_repository.rs | 18 +- backend/src/repository/playlist_source.rs | 4 +- backend/src/repository/user_repository.rs | 4 +- .../repository/xtream_playlist_iterator.rs | 8 +- backend/src/utils/db_viewer.rs | 2 +- backend/src/utils/epg_parser.rs | 9 +- backend/src/utils/file/config_reader.rs | 317 +- backend/src/utils/file/csv_input_reader.rs | 306 -- backend/src/utils/file/mod.rs | 4 +- backend/src/utils/geoip.rs | 2 +- backend/src/utils/network/epg.rs | 5 +- backend/src/utils/network/ip_checker.rs | 68 +- backend/src/utils/network/m3u.rs | 28 +- backend/src/utils/network/mod.rs | 8 +- backend/src/utils/network/request.rs | 655 ++- backend/src/utils/network/xtream.rs | 28 +- config/config.yml | 3 + docker/Dockerfile | 12 +- docker/Dockerfile-cross | 10 +- frontend/public/assets/i18n/en.json | 16 +- frontend/scss/app/_component.scss | 6 +- frontend/scss/app/components/_table.scss | 6 +- .../config/_local_library_config.scss | 25 + .../app/components/config/_log_config.scss | 9 + .../components/config/_messaging_config.scss | 6 + ...onfig_view.scss => _panel_api_config.scss} | 16 +- .../components/config/_schedules_config.scss | 72 + .../app/components/config/main_config_view.rs | 4 + .../components/config/panel_config_view.rs | 932 +++- .../src/app/components/userlist/user_table.rs | 3 +- resources/panel_api_provisioning.ppm | 273 ++ shared/src/model/config/base.rs | 17 +- shared/src/model/config/input.rs | 8 +- shared/src/model/config/panel_api.rs | 272 +- shared/src/model/short_epg.rs | 6 +- shared/src/model/stream_properties.rs | 12 +- shared/src/utils/default_utils.rs | 240 +- shared/src/utils/serde_utils.rs | 13 +- shared/src/utils/time_utils.rs | 41 +- 88 files changed, 8249 insertions(+), 1605 deletions(-) create mode 100644 backend/src/api/model/streams/provisioning_stream.rs create mode 100644 backend/src/repository/alias_repository.rs delete mode 100644 backend/src/utils/file/csv_input_reader.rs create mode 100644 frontend/scss/app/components/config/_local_library_config.scss create mode 100644 frontend/scss/app/components/config/_log_config.scss create mode 100644 frontend/scss/app/components/config/_messaging_config.scss rename frontend/scss/app/components/config/{_panel_config_view.scss => _panel_api_config.scss} (91%) create mode 100644 frontend/scss/app/components/config/_schedules_config.scss create mode 100644 resources/panel_api_provisioning.ppm diff --git a/.gitignore b/.gitignore index 1953e7413..511b35326 100644 --- a/.gitignore +++ b/.gitignore @@ -11,13 +11,18 @@ dist # Datasource local storage ignored files /dataSources/ /dataSources.local.xml +/dev/ docker/binaries .DS_Store +# Ignore documentation files +AGENTS.md + *.m3u -.idea +.idea/ +*.idea *.iml node_modules diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fa17fa58..3dee6bdde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,10 +43,11 @@ - **Local Library Module**: Comprehensive local video file scanning and metadata management. - Recursive scanning, automatic classification, and NFO/TMDB metadata resolution. - Incremental scanning and virtual ID management. -- **Panel API Integration**: Optional integration to renew expired accounts or provision new aliases when connections are exhausted. +- **Panel API Integration**: Optional integration to renew expired input accounts or provision new accounts to ensure a minimum valid input accounts. - **Playlist Caching**: Added `cache_duration` to inputs, allowing configurable provider playlist cache times during subsequent updates (e.g., `60s`, `5m` `12h`, `1d`). - **Database Viewer**: New CLI flags `--dbx` and `--dbm` to inspect internal database content. -- **Added `disk_based_processing`** (boolean, default `false`) to `config.yml`. When enabled, input playlists are processed from disk instead of memory. +- **Added `disk_based_processing`**: (boolean, default `false`) to `config.yml`. When enabled, input playlists are processed from disk instead of memory. +- **User-Agent `default_user_agent`**: Ensures that outgoing requests always pass a default user agent. ## ⚙️ Engine & Storage Optimizations - **Slotted Page Architecture**: Improved space utilization and support for variable-length keys. diff --git a/Cargo.lock b/Cargo.lock index bcd1fda6f..3cdfd919a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1168,7 +1168,7 @@ dependencies = [ "futures-signals", "gloo-render 0.2.0", "gloo-storage 0.3.0", - "gloo-timers 0.2.6", + "gloo-timers 0.3.0", "gloo-utils 0.2.0", "implicit-clone", "indexmap", @@ -1692,8 +1692,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" dependencies = [ - "futures-channel", - "futures-core", "js-sys", "wasm-bindgen", ] diff --git a/README.md b/README.md index a4f141c13..b05709836 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ This means, even disabled inputs and targets are processed when the given target Top level entries in the config files are: * `api` * `working_dir` +* `default_user_agent` _optional_, used as fallback for upstream requests when no `User-Agent` is provided by input headers or the client request (client request overrides it). * `process_parallel` _optional_ * `messaging` _optional_ * `video` _optional_ @@ -548,9 +549,10 @@ Following attributes are available: - `channel_unavailable`: _optional_ - `user_connections_exhausted`: _optional_ -- ` provider_connections_exhausted`: _optional_ +- `provider_connections_exhausted`: _optional_ +- `panel_api_provisioning`: _optional_ -Video files with name `channel_unavailable.ts`, `user_connections_exhausted`, `provider_connections_exhausted` +Video files with name `channel_unavailable.ts`, `user_connections_exhausted`, `provider_connections_exhausted`, `panel_api_provisioning` are already available in the docker image. You can convert an image with `ffmpeg`. @@ -564,6 +566,7 @@ and add it to the `config.yml`. - `provider_connections_exhausted.ts` - `user_connections_exhausted.ts` - `channel_unavailable.ts` +- `panel_api_provisioning.ts` ```yaml custom_stream_response_path: /home/tuliprox/resources @@ -1024,58 +1027,121 @@ The `exp_date` field is a date as: - "YYYY-MM-DD HH:MM:SS" format like `2028-11-30 12:34:12` - or Unix timestamp (seconds since epoch) - #### `panel_api` -If provider connections are exhausted, tuliprox can optionally call a provider panel API to: +Tuliprox can optionally call a provider panel API to: +- fetch your current credit balance +- sync `exp_date` with your provider - renew expired accounts first (based on `exp_date`) -- otherwise create a new alias account and persist it +- create a new account and persist it **Important!** Panel api accounts are not considering unlimited provider access! -The API is configured generically via predefined query parameters; only `type: m3u` is supported. +Optional alias pool controls: +- `alias_pool.size.min`: `number` or `auto`. + - `number`: keep at least this many valid (not expired) accounts beyond the defined offset on boot/update. Must be greater `0` and <= `max` (when `max` is a number). Default `1`. + - `auto`: uses the number of enabled tuliprox users (Active/Trial and not expired) for targets in the same source. If below, tuliprox tries to renew expired accounts first and then creates new accounts until the amount of enabled users is met during boot/update + offset. User add/update triggers only when `max` is also `auto`. +- `alias_pool.size.max`: `number` or `auto`. + - `number`: upper bound for valid accounts when provisioning is triggered by provider exhaustion. When the maximum is reached, provisioning (renew/create) is skipped. Must be greater than `0` and >= `min`. Default `1`. + - `auto`: no upper bound; if `min` is also `auto`, alias-pool min checks are triggered when tuliprox users are added/updated. +- `alias_pool.remove_expired`: `boolean` + - `true`: remove expired accounts from `source.yml` or batch CSVs during boot/update. This cleanup runs last in the panel_api routines and only removes aliases/rows (the root input is not removed). +Provisioning settings: +- `panel_api.provisioning.timeout_sec`: `number` + - Maximum wait time (seconds) to probe a newly created/renewed account before forcing a client reconnect or continuing boot/update process. + - Default `65` +- `panel_api.provisioning.method`: `HEAD` | `GET` | `POST` + - HTTP method used for probes. + - Default `HEAD` +- `panel_api.provisioning.probe_interval_sec`: `number` + - Probe interval in seconds. + - Default `10` +- `panel_api.provisioning.cooldown_sec`: `number` + - Extra wait time (seconds) after a successful probe before continuing boot/update provisioning. If you continue to see a 5XX message during the boot/update process despite a successful probe, gradually increase the cooldown time to give the provider enough time to provision the new root account. + - Default `0` +- `panel_api.provisioning.offset`: e.g.: `15m` | `5h` | `1d` + - Optional pre-expiry window for boot/update renewal of input accounts with `exp_date`; if `now + offset > exp_date`, tuliprox tries `client_renew`, and falls back to `client_new` if renew fails. Supports suffixes `s` (seconds), `m` (minutes), `h` (hours), `d` (days), e.g. `30m`, `12h`, `2d` + - Default `None` + + +The API is configured generically via predefined query parameters. +Optional fields can be deactivated by leaving them blank. Use the literal value `auto` to fill sensitive values at runtime: -- `enabled`, optional, default true -- `api_key: auto` is replaced by `panel_api.api_key` -- in `client_renew`, `username: auto` / `password: auto` are replaced by the account being renewed -- in `client_info`, `username: auto` / `password: auto` are replaced by the account being queried +- in `account_info`: (_optional_) + - `api_key: auto` is replaced by `panel_api.api_key` +- in `client_info`: (_mandatory_) + - `api_key: auto` is replaced by `panel_api.api_key` + - `username: auto`: are replaced by the account being queried + - `password: auto` are replaced by the account being queried +- in `client_renew`: (_optional_) + - `api_key: auto` is replaced by `panel_api.api_key` + - `username: auto` are replaced by the account being renewed + - `password: auto` are replaced by the account being renewed + - `type: m3u` is the only supported type +- in `client_new`: (_optional_) + - `api_key: auto` is replaced by `panel_api.api_key` + - `username: auto` are replaced by the account being renewed + - `password: auto` are replaced by the account being renewed + - `type: m3u` is the only supported type +- in `client_adult_content`: (_optional_) + - `api_key: auto` is replaced by `panel_api.api_key` + - `username: auto` are replaced by the account being queried + - `password: auto` are replaced by the account being queried -`client_info` is used to fetch the exact `exp_date` (via the `expire` field) and is also executed on boot to sync `exp_date` for existing inputs/aliases. +`account_info` + +Is executed on boot/update to fetch account credits via the `credits` field. If credentials are required, (username/password=auto), Tuliprox uses the first available ones: the root input if present, otherwise the first alias in config order. If no credentials are required, none are used or if not auto the configured one is used.” -For `client_new`, the Panel API call would look like this in the example shown: +`client_info` + +Is used to fetch the exact `exp_date` (via the `expire` field) and is also executed on boot/update to sync `exp_date` for existing inputs/aliases. + +`client_adult_content` + +Optionally executed after `client_new` or `client_renew` to unlock adult content. -```text -https://panel.example.tld/api.php?action=new&type=m3u&sub=1&api_key=1234567890 -``` Response evaluation logic Tuliprox evaluates Panel API responses as JSON with the following logic, depending on the operation: `Common rule (all operations)` -- The response must contain `status: true`. If status is missing or not true, the operation is treated as failed. -`client_new (create alias)` + - Require `status: true`. + - If status is missing or not true, the operation is treated as failed. -- Require `status: true`. -- Attempt to extract credentials directly from the JSON response: - - username - - password -- If one or both fields are missing, tuliprox attempts a fallback extraction from a URL contained in the JSON: - - If the JSON contains a url field, tuliprox parses it and tries to extract username/password from it (e.g., query string or embedded credentials depending on the provider’s URL format). -- If credentials cannot be derived from either the direct fields or the url fallback, the operation is treated as failed and no alias is persisted. +`account_info (credits)` -`client_renew (renew existing account)` - -- Only `status: true` is evaluated. No credentials are extracted or updated as part of renew. + - Require `status: true`. + - Extract `credits` and persist it to `panel_api.credits`. `client_info (sync expiration)` -- Require `status: true`. -- Extract the expiration timestamp/date from the JSON field: - - `expire` → used to populate/update exp_date for the corresponding input/alias. + - Require `status: true`. + - Extract the expiration timestamp/date from the JSON field and normalize it to UTC: + - `expire` → used to populate/update exp_date for the corresponding input/alias. + +`client_new (create new account)` + + - Require `status: true`. + - Attempt to extract credentials directly from the JSON response: + - username + - password + - If one or both fields are missing, tuliprox attempts a fallback extraction from a URL contained in the JSON: + - If the JSON contains a url field, tuliprox parses it and tries to extract username/password from it (e.g., query string or embedded credentials depending on the provider’s URL format). + - If credentials cannot be derived from either the direct fields or the url fallback, the operation is treated as failed and no alias is persisted. + +`client_renew (renew existing account)` + + - Require `status: true`. + - No credentials are extracted or updated as part of renew. + +`client_adult_content (toggle adult content)` + + - Require `status: true`. ```yaml -inputs: +- sources: +- inputs: - type: xtream name: my_provider url: 'http://provider.net' @@ -1084,7 +1150,21 @@ inputs: panel_api: url: 'https://panel.example.tld/api.php' api_key: '1234567890' + provisioning: + timeout_sec: 65 + method: GET + probe_interval_sec: 10 + cooldown_sec: 120 + offset: 12h + alias_pool: + size: + min: auto + max: auto + remove_expired: true query_parameter: + account_info: + - { key: action, value: account_info } + - { key: api_key, value: auto } client_info: - { key: action, value: client_info } - { key: username, value: auto } @@ -1102,6 +1182,17 @@ inputs: - { key: password, value: auto } - { key: sub, value: '1' } - { key: api_key, value: auto } + client_adult_content: + - { key: action, value: adult_content } + - { key: username, value: auto } + - { key: password, value: auto } + - { key: api_key, value: auto } + credits: "0.0" +``` +For `client_new`, the Panel API call would look like this in the example shown: + +```text +https://panel.example.tld/api.php?action=new&type=m3u&sub=1&api_key=1234567890 ``` ### 2.3. `sources` diff --git a/backend/src/api/api_utils.rs b/backend/src/api/api_utils.rs index d30553c86..961a27dca 100644 --- a/backend/src/api/api_utils.rs +++ b/backend/src/api/api_utils.rs @@ -1,12 +1,11 @@ use crate::api::endpoints::xtream_api::{get_xtream_player_api_stream_url, ApiStreamContext}; use crate::api::model::{create_channel_unavailable_stream, create_custom_video_stream_response, create_provider_connections_exhausted_stream, create_provider_stream, - get_stream_response_with_headers, ActiveClientStream, AppState, + get_stream_response_with_headers, create_active_client_stream, AppState, CustomVideoStreamType, ProviderStreamFactoryOptions, SharedStreamManager, StreamError, ThrottledStream, UserApiRequest}; use crate::api::model::{tee_stream, UserSession}; use crate::api::model::{ProviderAllocation, ProviderConfig, ProviderStreamState, StreamDetails, StreamingStrategy}; -use crate::api::panel_api::try_provision_account_on_exhausted; use crate::auth::Fingerprint; use crate::model::{ConfigInput, ResourceRetryConfig}; use crate::model::{ConfigTarget, ProxyUserCredentials}; @@ -29,13 +28,13 @@ use log::{debug, error, info, log_enabled, trace, warn}; use reqwest::header::RETRY_AFTER; use serde::Serialize; use shared::concat_string; -use shared::model::{Claims, InputFetchMethod, PlaylistEntry, PlaylistItemType, ProxyType, StreamChannel, TargetType, UserConnectionPermission, XtreamCluster}; +use shared::model::{Claims, InputFetchMethod, PlaylistEntry, PlaylistItemType, ProxyType, StreamChannel, TargetType, UserConnectionPermission, VirtualId, XtreamCluster}; use shared::utils::{bin_serialize, default_grace_period_millis, human_readable_kbps, trim_slash, Internable}; use shared::utils::{ extract_extension_from_url, replace_url_extension, sanitize_sensitive_info, DASH_EXT, HLS_EXT, }; use std::borrow::Cow; -use std::collections::{BTreeMap, HashMap}; +use std::collections::{HashMap}; use std::convert::Infallible; use std::io::SeekFrom; use std::path::{Path, PathBuf}; @@ -137,6 +136,7 @@ pub use try_result_bad_request; pub use try_result_not_found; pub use try_unwrap_body; pub use internal_server_error; +use crate::api::panel_api::{can_provision_on_exhausted, create_panel_api_provisioning_stream_details}; pub fn get_server_time() -> String { chrono::offset::Local::now() @@ -275,15 +275,6 @@ fn get_stream_options(app_state: &Arc) -> StreamOptions { } } -// fn get_stream_content_length(provider_response: Option<&(Vec<(String, String)>, StatusCode)>) -> u64 { -// let content_length = provider_response -// .as_ref() -// .and_then(|(headers, _)| headers.iter().find(|(h, _)| h.eq(axum::http::header::CONTENT_LENGTH.as_str()))) -// .and_then(|(_, val)| val.parse::().ok()) -// .unwrap_or(0); -// content_length -// } - pub fn get_stream_alternative_url( stream_url: &str, input: &ConfigInput, @@ -356,14 +347,12 @@ async fn resolve_streaming_strategy( force_provider: Option<&Arc>, ) -> StreamingStrategy { // allocate a provider connection - let mut provider_connection_handle = match force_provider { + let provider_connection_handle = match force_provider { Some(provider) => app_state.active_provider.force_exact_acquire_connection(provider, &fingerprint.addr).await, None => app_state.active_provider.acquire_connection(&input.name, &fingerprint.addr).await, }; - if provider_connection_handle.is_none() && force_provider.is_none() && input.panel_api.as_ref().is_some_and(|panel_api| panel_api.enabled) { - provider_connection_handle = try_provision_and_reacquire_on_provider_pool_exhausted(app_state, fingerprint, input).await; - } + // panel_api provisioning/loading is handled later in the stream creation flow let stream_response_params = if let Some(allocation) = provider_connection_handle.as_ref().map(|ph| &ph.allocation) { @@ -416,40 +405,6 @@ async fn resolve_streaming_strategy( } } -async fn try_provision_and_reacquire_on_provider_pool_exhausted( - app_state: &Arc, - fingerprint: &Fingerprint, - input: &ConfigInput, -) -> Option { - let active_provider_connections = app_state - .active_provider - .active_connections() - .await - .map(|c| c.into_iter().collect::>()); - debug_if_enabled!( - "panel_api: provider pool exhausted for input {} (active_provider_connections={:?})", - sanitize_sensitive_info(&input.name), - active_provider_connections - ); - - if try_provision_account_on_exhausted(app_state, input).await { - debug_if_enabled!( - "panel_api: provider pool exhausted for input {}, provision succeeded; re-acquiring connection", - sanitize_sensitive_info(&input.name) - ); - app_state - .active_provider - .acquire_connection(&input.name, &fingerprint.addr) - .await - } else { - debug_if_enabled!( - "panel_api: provider pool exhausted for input {}, provision skipped/failed", - sanitize_sensitive_info(&input.name) - ); - None - } -} - fn get_grace_period_millis( connection_permission: UserConnectionPermission, stream_response_params: &ProviderStreamState, @@ -480,6 +435,7 @@ async fn create_stream_response_details( share_stream: bool, connection_permission: UserConnectionPermission, force_provider: Option<&Arc>, + virtual_id: VirtualId, ) -> StreamDetails { let mut streaming_strategy = resolve_streaming_strategy(app_state, stream_url, fingerprint, input, force_provider).await; let config_grace_period_millis = app_state.app_config.config @@ -499,6 +455,29 @@ async fn create_stream_response_details( .as_ref() .and_then(|guard| guard.allocation.get_provider_name()); + if matches!(streaming_strategy.provider_stream_state, ProviderStreamState::Custom(_)) + && can_provision_on_exhausted(app_state, input) + { + if let Some(handle) = streaming_strategy.provider_handle.take() { + app_state + .connection_manager + .release_provider_handle(Some(handle)) + .await; + } + debug_if_enabled!( + "panel_api: provider connections exhausted; sending provisioning stream for input {}", + sanitize_sensitive_info(&input.name) + ); + return create_panel_api_provisioning_stream_details( + app_state, + input, + guard_provider_name.clone(), + grace_period_millis, + fingerprint.addr, + virtual_id, + ); + } + match streaming_strategy.provider_stream_state { // custom stream means we display our own stream like connection exhausted, channel-unavailable... ProviderStreamState::Custom(provider_stream) => { @@ -508,6 +487,7 @@ async fn create_stream_response_details( stream_info, provider_name: guard_provider_name.clone(), grace_period_millis, + disable_provider_grace: false, reconnect_flag: None, provider_handle: streaming_strategy.provider_handle.clone(), } @@ -516,6 +496,7 @@ async fn create_stream_response_details( | ProviderStreamState::GracePeriod(_provider_name, request_url) => { let parsed_url = Url::parse(&request_url); let ((stream, stream_info), reconnect_flag) = if let Ok(url) = parsed_url { + let default_user_agent = app_state.app_config.config.load().default_user_agent.clone(); let disabled_headers = app_state.get_disabled_headers(); let provider_stream_factory_options = ProviderStreamFactoryOptions::new( fingerprint.addr, @@ -526,6 +507,7 @@ async fn create_stream_response_details( req_headers, streaming_strategy.input_headers.as_ref(), disabled_headers.as_ref(), + default_user_agent.as_deref(), ); let reconnect_flag = provider_stream_factory_options.get_reconnect_flag_clone(); let provider_stream = match create_provider_stream( @@ -571,6 +553,7 @@ async fn create_stream_response_details( stream_info, provider_name: guard_provider_name.clone(), grace_period_millis, + disable_provider_grace: false, reconnect_flag, provider_handle, } @@ -787,6 +770,7 @@ pub async fn force_provider_stream_response( share_stream, connection_permission, Some(&user_session.provider), + stream_channel.virtual_id, ) .await; @@ -801,7 +785,7 @@ pub async fn force_provider_stream_response( .await; stream_channel.shared = share_stream; let stream = - ActiveClientStream::new(stream_details, app_state, user, connection_permission, fingerprint, stream_channel, Some(&user_session.token), req_headers) + create_active_client_stream(stream_details, app_state, user, connection_permission, fingerprint, stream_channel, Some(&user_session.token), req_headers) .await; let (status_code, header_map) = @@ -811,7 +795,7 @@ pub async fn force_provider_stream_response( response = response.header(key, value); } - let body_stream = prepare_body_stream::(app_state, item_type, stream); + let body_stream = prepare_body_stream(app_state, item_type, stream); debug_if_enabled!( "Streaming provider forced stream request from {}", sanitize_sensitive_info(&user_session.stream_url) @@ -891,6 +875,7 @@ pub async fn stream_response( share_stream, connection_permission, None, + stream_channel.virtual_id, ).await; if stream_details.has_stream() { @@ -901,6 +886,16 @@ pub async fn stream_response( .map(|(h, sc, response_url, cvt)| (h.clone(), *sc, response_url.clone(), *cvt)); let provider_name = stream_details.provider_name.clone(); + if let Some((headers, status, _response_url, Some(CustomVideoStreamType::Provisioning))) = + stream_details.stream_info.as_ref() + { + debug_if_enabled!( + "panel_api provisioning response to client: status={} headers={:?}", + status, + headers + ); + } + let provider_handle = if share_stream { stream_details.provider_handle.take() } else { @@ -916,7 +911,7 @@ pub async fn stream_response( stream_channel.shared = is_stream_shared; let stream = - ActiveClientStream::new(stream_details, app_state, user, connection_permission, fingerprint, stream_channel, Some(session_token), req_headers) + create_active_client_stream(stream_details, app_state, user, connection_permission, fingerprint, stream_channel, Some(session_token), req_headers) .await; let stream_resp = if is_stream_shared { debug_if_enabled!("Streaming shared stream request from {}",sanitize_sensitive_info(stream_url)); @@ -1014,7 +1009,7 @@ pub async fn stream_response( } } - let body_stream = prepare_body_stream::(app_state, item_type, stream); + let body_stream = prepare_body_stream(app_state, item_type, stream); try_unwrap_body!(response.body(body_stream)) }; @@ -1066,7 +1061,7 @@ async fn try_shared_stream_response_if_any( stream_details.provider_name = provider; stream_channel.shared = true; let stream = - ActiveClientStream::new(stream_details, app_state, user, connect_permission, fingerprint, stream_channel, Some(session_token), req_headers) + create_active_client_stream(stream_details, app_state, user, connect_permission, fingerprint, stream_channel, Some(session_token), req_headers) .await .boxed(); let mut response = axum::response::Response::builder().status(status_code); @@ -1346,10 +1341,12 @@ async fn fetch_resource_with_retry( input: Option<&ConfigInput>, ) -> Option { let config = app_state.app_config.config.load(); + let default_user_agent = config.default_user_agent.clone(); let (max_attempts, backoff_ms, backoff_multiplier) = config .reverse_proxy .as_ref() .map_or_else(ResourceRetryConfig::get_default_retry_values, |rp| rp.resource_retry.get_retry_values()); + drop(config); let disabled_headers = app_state.get_disabled_headers(); for attempt in 0..max_attempts { let client = request::get_client_request( @@ -1359,6 +1356,7 @@ async fn fetch_resource_with_retry( url, Some(req_headers), disabled_headers.as_ref(), + default_user_agent.as_deref(), ); match client.send().await { Ok(response) => { diff --git a/backend/src/api/config_watch.rs b/backend/src/api/config_watch.rs index 2de1419c0..e8b5b6a63 100644 --- a/backend/src/api/config_watch.rs +++ b/backend/src/api/config_watch.rs @@ -15,19 +15,32 @@ use std::path::{Path, PathBuf}; use std::sync::Arc; use tokio_util::sync::CancellationToken; -fn start_config_watch(app_state: &Arc, cancel_token: &CancellationToken) -> Result<(), TuliproxError> { +#[allow(clippy::too_many_lines)] +fn start_config_watch( + app_state: &Arc, + cancel_token: &CancellationToken, +) -> Result<(), TuliproxError> { // let (tx, mut rx) = mpsc::channel::>(100); let (std_tx, std_rx) = std::sync::mpsc::channel(); let (tx, mut rx) = tokio::sync::mpsc::channel(100); - let paths = > as Access>::load(&app_state.app_config.paths); - let mapping_file_path = paths.mapping_file_path.as_ref().map_or_else(String::new, ToString::to_string); + let paths = + > as Access>::load(&app_state.app_config.paths); + let mapping_file_path = paths + .mapping_file_path + .as_ref() + .map_or_else(String::new, ToString::to_string); let files = get_watch_files(app_state, &paths, mapping_file_path.as_str()); // // // Add a path to be watched. All files and directories at that path and // // below will be monitored for changes. let path = Path::new(paths.config_path.as_str()); - let recursive_mode = if !mapping_file_path.is_empty() && utils::is_directory(&mapping_file_path) { RecursiveMode::Recursive } else { RecursiveMode::NonRecursive }; + let recursive_mode = if !mapping_file_path.is_empty() && utils::is_directory(&mapping_file_path) + { + RecursiveMode::Recursive + } else { + RecursiveMode::NonRecursive + }; std::thread::spawn({ let tx = tx.clone(); @@ -39,8 +52,18 @@ fn start_config_watch(app_state: &Arc, cancel_token: &CancellationToke } }); - let mut watcher = recommended_watcher(std_tx).map_err(|err| TuliproxError::new(TuliproxErrorKind::Info, format!("Failed to init config file watcher {err}")))?; - watcher.watch(path, recursive_mode).map_err(|err| TuliproxError::new(TuliproxErrorKind::Info, format!("Failed to start config file watcher {err}")))?; + let mut watcher = recommended_watcher(std_tx).map_err(|err| { + TuliproxError::new( + TuliproxErrorKind::Info, + format!("Failed to init config file watcher {err}"), + ) + })?; + watcher.watch(path, recursive_mode).map_err(|err| { + TuliproxError::new( + TuliproxErrorKind::Info, + format!("Failed to start config file watcher {err}"), + ) + })?; info!("Watching config file changes {}", path.display()); let event_manager = Arc::clone(&app_state.event_manager); @@ -58,7 +81,8 @@ fn start_config_watch(app_state: &Arc, cancel_token: &CancellationToke let _keep_watcher_alive = watcher; - let mut debounce_timer = Box::pin(tokio::time::sleep(tokio::time::Duration::from_millis(0))); + let mut debounce_timer = + Box::pin(tokio::time::sleep(tokio::time::Duration::from_millis(0))); let mut timer_active = false; let mut pending_configs: HashMap = HashMap::new(); @@ -74,7 +98,17 @@ fn start_config_watch(app_state: &Arc, cancel_token: &CancellationToke Some(res) = rx.recv() => { match res { Ok(event) => { - if let EventKind::Access(AccessKind::Close(AccessMode::Write)) = event.kind { + // Config updates may be written atomically (temp file + rename), which + // doesn't always emit a Close(Write) event for the destination file. + // Treat rename/modify/create/remove events as reload triggers as well. + let is_write_event = matches!( + event.kind, + EventKind::Access(AccessKind::Close(AccessMode::Write)) + | EventKind::Modify(_) + | EventKind::Create(_) + | EventKind::Remove(_) + ); + if is_write_event { let mut trigger = false; for path in event.paths { let mut resolved = None; @@ -127,23 +161,33 @@ fn start_config_watch(app_state: &Arc, cancel_token: &CancellationToke Ok(()) } -fn get_watch_files(app_state: &Arc, paths: &ConfigPaths, mapping_file_path: &str) -> HashMap { - let sources = > as Access>::load(&app_state.app_config.sources); +fn get_watch_files( + app_state: &Arc, + paths: &ConfigPaths, + mapping_file_path: &str, +) -> HashMap { + let sources = + > as Access>::load(&app_state.app_config.sources); let input_files_paths = sources.get_input_files(); let mut files = HashMap::new(); - [(paths.config_file_path.as_str(), ConfigFile::Config), + [ + (paths.config_file_path.as_str(), ConfigFile::Config), (paths.api_proxy_file_path.as_str(), ConfigFile::ApiProxy), (mapping_file_path, ConfigFile::Mapping), - (paths.sources_file_path.as_str(), ConfigFile::Sources) - ].into_iter() - .filter(|(path, _)| !path.is_empty()) - .for_each(|(path, config_file)| { files.insert(PathBuf::from(path), (config_file, is_directory(path))); }); - for path in input_files_paths { files.insert(path, (ConfigFile::SourceFile, false)); } + (paths.sources_file_path.as_str(), ConfigFile::Sources), + ] + .into_iter() + .filter(|(path, _)| !path.is_empty()) + .for_each(|(path, config_file)| { + files.insert(PathBuf::from(path), (config_file, is_directory(path))); + }); + for path in input_files_paths { + files.insert(path, (ConfigFile::SourceFile, false)); + } files } -pub fn exec_config_watch(app_state: &Arc, - cancel: &CancellationToken) { +pub fn exec_config_watch(app_state: &Arc, cancel: &CancellationToken) { let hot_reload = { let config = > as Access>::load(&app_state.app_config.config); config.config_hot_reload diff --git a/backend/src/api/endpoints/api_playlist_utils.rs b/backend/src/api/endpoints/api_playlist_utils.rs index ebf1cb70d..037cbc9fe 100644 --- a/backend/src/api/endpoints/api_playlist_utils.rs +++ b/backend/src/api/endpoints/api_playlist_utils.rs @@ -1,5 +1,4 @@ use crate::model::{AppConfig, ConfigInput, ConfigTarget}; -use crate::repository::{m3u_repository, xtream_repository}; use crate::utils::{m3u, xtream}; use axum::response::IntoResponse; use serde_json::{json}; @@ -7,11 +6,12 @@ use shared::model::{CommonPlaylistItem, InputType, M3uPlaylistItem, PlaylistItem use std::sync::Arc; use crate::api::api_utils::{empty_json_list_response, json_or_bin_response, stream_json_or_bin_response}; use shared::utils::interner_gc; +use crate::repository::{iter_raw_m3u_input_playlist, iter_raw_m3u_target_playlist, iter_raw_xtream_input_playlist, iter_raw_xtream_target_playlist}; pub(in crate::api::endpoints) async fn get_playlist_for_target(cfg_target: Option<&ConfigTarget>, cfg: &AppConfig, cluster: XtreamCluster, accept: Option<&str>) -> impl IntoResponse + Send { if let Some(target) = cfg_target { if target.has_output(TargetType::Xtream) { - let Some((_guard, channel_iterator)) = xtream_repository::iter_raw_xtream_target_playlist(cfg, target, cluster).await else { + let Some((_guard, channel_iterator)) = iter_raw_xtream_target_playlist(cfg, target, cluster).await else { return empty_json_list_response(); }; let item_filter = if cluster == XtreamCluster::Series { @@ -22,7 +22,7 @@ pub(in crate::api::endpoints) async fn get_playlist_for_target(cfg_target: Optio let converted_iterator: Box + Send> = Box::new(channel_iterator.filter(item_filter).map(CommonPlaylistItem::from)); return stream_json_or_bin_response(accept, converted_iterator).into_response(); } else if target.has_output(TargetType::M3u) { - let Some((_guard, channel_iterator)) = m3u_repository::iter_raw_m3u_target_playlist(cfg, target, Some(cluster)).await else { + let Some((_guard, channel_iterator)) = iter_raw_m3u_target_playlist(cfg, target, Some(cluster)).await else { return empty_json_list_response(); }; let item_filter = if cluster == XtreamCluster::Series { @@ -43,13 +43,13 @@ pub(in crate::api::endpoints) async fn get_playlist_for_target(cfg_target: Optio pub(in crate::api::endpoints) async fn get_playlist_for_input(cfg_input: Option<&Arc>, cfg: &AppConfig, cluster: XtreamCluster, accept: Option<&str>) -> impl IntoResponse + Send { if let Some(input) = cfg_input { if matches!(input.input_type, InputType::Xtream | InputType::XtreamBatch) { - let Some((_guard, channel_iterator)) = xtream_repository::iter_raw_xtream_input_playlist(cfg, input, cluster).await else { + let Some((_guard, channel_iterator)) = iter_raw_xtream_input_playlist(cfg, input, cluster).await else { return empty_json_list_response(); }; let converted_iterator: Box + Send> = Box::new(channel_iterator.map(CommonPlaylistItem::from)); return stream_json_or_bin_response(accept, converted_iterator).into_response(); } else if matches!(input.input_type, InputType::M3u | InputType::M3uBatch) { - let Some((_guard, channels)) = m3u_repository::iter_raw_m3u_input_playlist(cfg, input, Some(cluster)).await else { + let Some((_guard, channels)) = iter_raw_m3u_input_playlist(cfg, input, Some(cluster)).await else { return empty_json_list_response(); }; let converted_iterator: Box + Send> = Box::new(channels.map(CommonPlaylistItem::from)); diff --git a/backend/src/api/endpoints/download_api.rs b/backend/src/api/endpoints/download_api.rs index 918d30812..638efa4d2 100644 --- a/backend/src/api/endpoints/download_api.rs +++ b/backend/src/api/endpoints/download_api.rs @@ -89,7 +89,12 @@ async fn run_download_queue(cfg: &AppConfig, download_cfg: &VideoDownloadConfig, .reverse_proxy .as_ref() .and_then(|r| r.disabled_header.clone()); - let headers = request::get_request_headers(Some(&download_cfg.headers), None, disabled_headers.as_ref()); + let headers = request::get_request_headers( + Some(&download_cfg.headers), + None, + disabled_headers.as_ref(), + config.default_user_agent.as_deref(), + ); let dq = Arc::clone(download_queue); match create_client(cfg).default_headers(headers).build() { diff --git a/backend/src/api/endpoints/hdhomerun_api.rs b/backend/src/api/endpoints/hdhomerun_api.rs index c1fe49433..cb9024b27 100644 --- a/backend/src/api/endpoints/hdhomerun_api.rs +++ b/backend/src/api/endpoints/hdhomerun_api.rs @@ -4,9 +4,8 @@ use crate::auth::AuthBasic; use crate::model::{AppConfig, ConfigTarget, ProxyUserCredentials}; use crate::utils::arc_str_serde; use crate::processing::parser::xtream::get_xtream_url; -use crate::repository::m3u_playlist_iterator::M3uPlaylistIterator; -use crate::repository::m3u_repository; -use crate::repository::xtream_playlist_iterator::XtreamPlaylistIterator; +use crate::repository::{iter_raw_m3u_target_playlist, M3uPlaylistIterator}; +use crate::repository::XtreamPlaylistIterator; use axum::response::IntoResponse; use bytes::Bytes; use futures::{stream, Stream, StreamExt}; @@ -277,7 +276,7 @@ async fn lineup_status( cfg.get_target_for_username(&app_state.device.t_username) { if target.has_output(TargetType::M3u) { - if let Some((_guard, iter)) = m3u_repository::iter_raw_m3u_target_playlist(&cfg, &target, None).await + if let Some((_guard, iter)) = iter_raw_m3u_target_playlist(&cfg, &target, None).await { iter.count() } else { diff --git a/backend/src/api/endpoints/hls_api.rs b/backend/src/api/endpoints/hls_api.rs index d39c66d9c..1303b6259 100644 --- a/backend/src/api/endpoints/hls_api.rs +++ b/backend/src/api/endpoints/hls_api.rs @@ -12,8 +12,7 @@ use crate::model::{ConfigTarget, ProxyUserCredentials}; use crate::processing::parser::hls::{ get_hls_session_token_and_url_from_token, rewrite_hls, RewriteHlsProps, }; -use crate::repository::m3u_repository::m3u_get_item_for_stream_id; -use crate::repository::xtream_repository; +use crate::repository::{m3u_get_item_for_stream_id, xtream_get_item_for_stream_id}; use crate::utils::request; use crate::utils::debug_if_enabled; use axum::http::HeaderMap; @@ -125,7 +124,13 @@ pub(in crate::api) async fn handle_hls_stream_request( let filter_header: HeaderFilter = Some(Box::new(|name: &str| !name.eq_ignore_ascii_case("range"))); let forwarded = get_headers_from_request(req_headers, &filter_header); let disabled_headers = app_state.get_disabled_headers(); - let headers = request::get_request_headers(None, Some(&forwarded), disabled_headers.as_ref()); + let default_user_agent = app_state.app_config.config.load().default_user_agent.clone(); + let headers = request::get_request_headers( + None, + Some(&forwarded), + disabled_headers.as_ref(), + default_user_agent.as_deref(), + ); let input_source = InputSource::from(input).with_url(request_url); match request::download_text_content( &app_state.http_client.load(), @@ -133,7 +138,8 @@ pub(in crate::api) async fn handle_hls_stream_request( &input_source, Some(&headers), None, - false + false, + default_user_agent.as_deref(), ) .await { @@ -176,7 +182,7 @@ pub(in crate::api) async fn handle_hls_stream_request( async fn get_stream_channel(app_state: &Arc, target: &Arc, virtual_id: u32) -> Option { if target.has_output(TargetType::Xtream) { - if let Ok(pli) = xtream_repository::xtream_get_item_for_stream_id(virtual_id, app_state, target, None).await { + if let Ok(pli) = xtream_get_item_for_stream_id(virtual_id, app_state, target, None).await { return Some(pli.to_stream_channel(target.id)); } } diff --git a/backend/src/api/endpoints/m3u_api.rs b/backend/src/api/endpoints/m3u_api.rs index 6045d5b69..68eb8830e 100644 --- a/backend/src/api/endpoints/m3u_api.rs +++ b/backend/src/api/endpoints/m3u_api.rs @@ -10,7 +10,7 @@ use crate::api::model::AppState; use crate::api::model::UserApiRequest; use crate::api::model::{create_custom_video_stream_response, CustomVideoStreamType}; use crate::auth::Fingerprint; -use crate::repository::m3u_repository::{m3u_get_item_for_stream_id, m3u_load_rewrite_playlist}; +use crate::repository::{m3u_get_item_for_stream_id, m3u_load_rewrite_playlist}; use crate::repository::storage_const; use crate::utils::debug_if_enabled; use axum::response::IntoResponse; diff --git a/backend/src/api/endpoints/user_api.rs b/backend/src/api/endpoints/user_api.rs index c2263c469..fe1f5543e 100644 --- a/backend/src/api/endpoints/user_api.rs +++ b/backend/src/api/endpoints/user_api.rs @@ -5,9 +5,8 @@ use crate::auth::validator_user; use crate::auth::AuthBearer; use crate::model::PlaylistXtreamCategory; use crate::model::{AppConfig, ConfigTarget}; -use crate::repository::m3u_repository; -use crate::repository::user_repository::{load_user_bouquet_as_json, save_user_bouquet}; -use crate::repository::xtream_repository::xtream_get_playlist_categories; +use crate::repository::{iter_raw_m3u_target_playlist, load_user_bouquet_as_json, save_user_bouquet}; +use crate::repository::xtream_get_playlist_categories; use axum::response::IntoResponse; use bytes::Bytes; use futures::{stream, StreamExt}; @@ -29,7 +28,7 @@ fn get_categories_from_xtream(categories: Option>) - async fn get_categories_from_m3u_playlist(target: &ConfigTarget, config: &AppConfig) -> Vec> { let mut groups = Vec::new(); - if let Some((_guard, iter)) = m3u_repository::iter_raw_m3u_target_playlist(config, target, None).await { + if let Some((_guard, iter)) = iter_raw_m3u_target_playlist(config, target, None).await { let mut unique_groups = HashSet::new(); for item in iter { if !unique_groups.contains(&item.group) { diff --git a/backend/src/api/endpoints/v1_api.rs b/backend/src/api/endpoints/v1_api.rs index 269a07ba9..df6c11d16 100644 --- a/backend/src/api/endpoints/v1_api.rs +++ b/backend/src/api/endpoints/v1_api.rs @@ -18,7 +18,7 @@ use crate::api::endpoints::extract_accept_header::ExtractAcceptHeader; use crate::api::endpoints::v1_api_config::v1_api_config_register; use crate::api::endpoints::library_api::library_api_register; use crate::model::InputSource; -use crate::repository::storage::get_geoip_path; +use crate::repository::get_geoip_path; use crate::utils::GeoIp; use crate::utils::request::download_text_content; @@ -91,7 +91,18 @@ async fn geoip_update(axum::extract::State(app_state): axum::extract::State { let reader = Cursor::new(content); let mut geoip = GeoIp::new(); diff --git a/backend/src/api/endpoints/v1_api_config.rs b/backend/src/api/endpoints/v1_api_config.rs index 2ea7e3faa..b5f63e9b7 100644 --- a/backend/src/api/endpoints/v1_api_config.rs +++ b/backend/src/api/endpoints/v1_api_config.rs @@ -148,7 +148,18 @@ async fn config_batch_content( if let Some(batch_url) = config_input.t_batch_url.as_ref() { let input_source = InputSource::from(&*config_input).with_url(batch_url.to_owned()); let disabled_headers = app_state.get_disabled_headers(); - return match download_text_content(&app_state.http_client.load(), disabled_headers.as_ref(), &input_source, None, None, false).await { + let default_user_agent = app_state.app_config.config.load().default_user_agent.clone(); + return match download_text_content( + &app_state.http_client.load(), + disabled_headers.as_ref(), + &input_source, + None, + None, + false, + default_user_agent.as_deref(), + ) + .await + { Ok((content, _path)) => { // Return CSV with explicit content-type try_unwrap_body!(axum::response::Response::builder() diff --git a/backend/src/api/endpoints/v1_api_user.rs b/backend/src/api/endpoints/v1_api_user.rs index 42f4e00ce..362c09e5a 100644 --- a/backend/src/api/endpoints/v1_api_user.rs +++ b/backend/src/api/endpoints/v1_api_user.rs @@ -1,14 +1,16 @@ -use std::path::PathBuf; use crate::api::model::AppState; +use crate::api::panel_api::{sync_panel_api_alias_pool_for_target, target_has_alias_pool_min}; use crate::model::{ApiProxyConfig, ProxyUserCredentials, TargetUser}; -use crate::repository::user_repository::store_api_user; +use crate::repository::store_api_user; use axum::response::IntoResponse; use axum::Router; use serde_json::json; use shared::model::{ApiProxyConfigDto, ProxyUserCredentialsDto}; -use std::sync::Arc; use shared::utils::mask_credentials; +use std::path::PathBuf; +use std::sync::Arc; +#[allow(clippy::too_many_lines)] async fn save_config_api_proxy_user( method: axum::http::Method, axum::extract::State(app_state): axum::extract::State>, @@ -16,14 +18,19 @@ async fn save_config_api_proxy_user( axum::extract::Json(mut credential): axum::extract::Json, ) -> impl axum::response::IntoResponse + Send { let virtual_file = PathBuf::from("api_proxy"); - let _lock = app_state.app_config.file_locks.write_lock(&virtual_file).await; + let _lock = app_state + .app_config + .file_locks + .write_lock(&virtual_file) + .await; credential.prepare(); if let Err(err) = credential.validate() { return ( axum::http::StatusCode::BAD_REQUEST, - axum::Json(json!({"error": err.to_string()})) - ).into_response(); + axum::Json(json!({"error": err.to_string()})), + ) + .into_response(); } let is_update = method == axum::http::Method::PUT; @@ -46,7 +53,13 @@ async fn save_config_api_proxy_user( for (u_idx, user) in target_user.credentials.iter().enumerate() { if let (Some(u), Some(c)) = (&user.token, &credential.token) { if u == c && user.username != credential.username { - return ( axum::http::StatusCode::BAD_REQUEST, axum::Json(json!({"error": format!("Duplicate token {}", mask_credentials(c))})) ).into_response(); + return ( + axum::http::StatusCode::BAD_REQUEST, + axum::Json( + json!({"error": format!("Duplicate token {}", mask_credentials(c))}), + ), + ) + .into_response(); } } if user.username == credential.username { @@ -69,11 +82,11 @@ async fn save_config_api_proxy_user( if is_update && existing_user_index.is_none() { return ( axum::http::StatusCode::BAD_REQUEST, - axum::Json(json!({"error": format!("User {} not found", credential.username)})) - ).into_response(); + axum::Json(json!({"error": format!("User {} not found", credential.username)})), + ) + .into_response(); } - // ---------- create target if new target does not exist ---------- let target_idx = if let Some(idx) = existing_target_index { idx @@ -93,21 +106,25 @@ async fn save_config_api_proxy_user( if user_target_idx == target_idx { // Update - api_proxy.user[user_target_idx].credentials[user_idx] = ProxyUserCredentials::from(&credential); + api_proxy.user[user_target_idx].credentials[user_idx] = + ProxyUserCredentials::from(&credential); } else { // Move: remove from old target and insert into new target api_proxy.user[user_target_idx].credentials.remove(user_idx); - api_proxy.user[target_idx].credentials.push(ProxyUserCredentials::from(&credential)); + api_proxy.user[target_idx] + .credentials + .push(ProxyUserCredentials::from(&credential)); remove_empty_target = api_proxy.user[user_target_idx].credentials.is_empty(); } if remove_empty_target { api_proxy.user.retain(|t| !t.credentials.is_empty()); } - } else { // new user - api_proxy.user[target_idx].credentials.push(ProxyUserCredentials::from(&credential)); + api_proxy.user[target_idx] + .credentials + .push(ProxyUserCredentials::from(&credential)); } let new_api_proxy = Arc::new(api_proxy); @@ -116,8 +133,9 @@ async fn save_config_api_proxy_user( if let Err(err) = store_api_user(&app_state.app_config, &new_api_proxy.user).await { return ( axum::http::StatusCode::INTERNAL_SERVER_ERROR, - axum::Json(json!({"error": err.to_string()})) - ).into_response(); + axum::Json(json!({"error": err.to_string()})), + ) + .into_response(); } } else { let config = app_state.app_config.config.load(); @@ -127,16 +145,30 @@ async fn save_config_api_proxy_user( backup_dir.as_ref(), &ApiProxyConfigDto::from(&*new_api_proxy), paths.api_proxy_file_path.as_str(), - ).await { + ) + .await + { return ( axum::http::StatusCode::INTERNAL_SERVER_ERROR, - axum::Json(json!({"error": err.to_string()})) - ).into_response(); + axum::Json(json!({"error": err.to_string()})), + ) + .into_response(); } } // Update state after successful save - app_state.app_config.api_proxy.store(Some(Arc::clone(&new_api_proxy))); + app_state + .app_config + .api_proxy + .store(Some(Arc::clone(&new_api_proxy))); + + if target_has_alias_pool_min(&app_state, &target_name) { + let app_state_clone = Arc::clone(&app_state); + let target_name_clone = target_name.clone(); + tokio::spawn(async move { + sync_panel_api_alias_pool_for_target(&app_state_clone, &target_name_clone).await; + }); + } axum::http::StatusCode::OK.into_response() } @@ -152,7 +184,9 @@ async fn delete_config_api_proxy_user( for target_user in &mut api_proxy.user { if target_user.target == target_name { let count = target_user.credentials.len(); - target_user.credentials.retain(|user| user.username != username); + target_user + .credentials + .retain(|user| user.username != username); modified = count != target_user.credentials.len(); break; } @@ -161,19 +195,43 @@ async fn delete_config_api_proxy_user( let new_api_proxy = Arc::new(api_proxy); if new_api_proxy.use_user_db { if let Err(err) = store_api_user(&app_state.app_config, &new_api_proxy.user).await { - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(json!({"error": err.to_string()}))).into_response(); + return ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(json!({"error": err.to_string()})), + ) + .into_response(); } } else { let config = app_state.app_config.config.load(); let backup_dir = config.get_backup_dir(); let paths = app_state.app_config.paths.load(); - if let Some(err) = crate::api::endpoints::v1_api_config::intern_save_config_api_proxy(backup_dir.as_ref(), &ApiProxyConfigDto::from(&*new_api_proxy), paths.api_proxy_file_path.as_str()).await { - return (axum::http::StatusCode::INTERNAL_SERVER_ERROR, axum::Json(json!({"error": err.to_string()}))).into_response(); + if let Some(err) = + crate::api::endpoints::v1_api_config::intern_save_config_api_proxy( + backup_dir.as_ref(), + &ApiProxyConfigDto::from(&*new_api_proxy), + paths.api_proxy_file_path.as_str(), + ) + .await + { + return ( + axum::http::StatusCode::INTERNAL_SERVER_ERROR, + axum::Json(json!({"error": err.to_string()})), + ) + .into_response(); } } - app_state.app_config.api_proxy.store(Some(Arc::clone(&new_api_proxy))); + app_state + .app_config + .api_proxy + .store(Some(Arc::clone(&new_api_proxy))); } else { - return (axum::http::StatusCode::BAD_REQUEST, axum::Json(json!({"error": format!("User not found {username} in target {target_name}")}))).into_response(); + return ( + axum::http::StatusCode::BAD_REQUEST, + axum::Json( + json!({"error": format!("User not found {username} in target {target_name}")}), + ), + ) + .into_response(); } } axum::http::StatusCode::OK.into_response() @@ -181,7 +239,16 @@ async fn delete_config_api_proxy_user( pub fn v1_api_user_register(router: Router>) -> axum::Router> { router - .route("/user/{target}", axum::routing::post(save_config_api_proxy_user)) - .route("/user/{target}", axum::routing::put(save_config_api_proxy_user)) - .route("/user/{target}/{username}", axum::routing::delete(delete_config_api_proxy_user)) + .route( + "/user/{target}", + axum::routing::post(save_config_api_proxy_user), + ) + .route( + "/user/{target}", + axum::routing::put(save_config_api_proxy_user), + ) + .route( + "/user/{target}/{username}", + axum::routing::delete(delete_config_api_proxy_user), + ) } diff --git a/backend/src/api/endpoints/xmltv_api.rs b/backend/src/api/endpoints/xmltv_api.rs index daf6c85f8..89957bd02 100644 --- a/backend/src/api/endpoints/xmltv_api.rs +++ b/backend/src/api/endpoints/xmltv_api.rs @@ -1,27 +1,27 @@ -use crate::api::api_utils::{get_user_target, serve_file, get_user_target_by_credentials, resource_response, try_unwrap_body, internal_server_error}; +use crate::api::api_utils::{get_user_target, get_user_target_by_credentials, internal_server_error, resource_response, serve_file, try_unwrap_body}; use crate::api::model::AppState; use crate::api::model::UserApiRequest; use crate::model::Config; use crate::model::{ConfigTarget, ProxyUserCredentials, TargetOutput}; -use crate::repository::storage::get_target_storage_path; +use crate::repository::get_target_storage_path; +use crate::repository::m3u_get_epg_file_path; use crate::repository::storage_const; -use crate::repository::xtream_repository::{xtream_get_epg_file_path, xtream_get_storage_path}; -use crate::{utils}; +use crate::repository::XML_PREAMBLE; +use crate::repository::{xtream_get_epg_file_path, xtream_get_storage_path}; use crate::utils::{async_file_reader, deobscure_text}; -use crate::utils::{EpgConsumer, EpgProcessor, format_xtream_time}; +use crate::utils::{format_xtream_time, EpgConsumer, EpgProcessor}; +use crate::utils; use axum::response::IntoResponse; use chrono::{Offset, TimeZone, Utc}; use chrono_tz::Tz; use log::{error, trace}; use quick_xml::events::Event; -use shared::error::{TuliproxError, info_err}; -use shared::model::{PlaylistItemType, ShortEpgDto, parse_xmltv_time, ShortEpgResultDto}; +use shared::error::{info_err, TuliproxError}; +use shared::model::{parse_xmltv_time, PlaylistItemType, ShortEpgDto, ShortEpgResultDto}; use std::path::{Path, PathBuf}; use std::sync::Arc; use tokio::io::AsyncWriteExt; use tokio_util::io::ReaderStream; -use crate::repository::epg_repository::XML_PREAMBLE; -use crate::repository::m3u_repository::m3u_get_epg_file_path; pub fn get_empty_epg_response() -> axum::response::Response { try_unwrap_body!(axum::response::Response::builder() @@ -330,9 +330,14 @@ impl EpgConsumer for DtoEpgConsumer { } } } - Event::End(e) if e.name().as_ref() == b"programme" => { - if let Some(item) = self.current_item.take() { - self.items.push(item); + Event::End(e) => { + if e.name().as_ref() == b"programme" { + if let Some(item) = self.current_item.take() { + self.items.push(item); + } + } + if matches!(e.name().as_ref(), b"programme" | b"title" | b"desc") { + self.current_tag.clear(); } } _ => {} diff --git a/backend/src/api/endpoints/xtream_api.rs b/backend/src/api/endpoints/xtream_api.rs index 0ce26e6a4..47c46328a 100644 --- a/backend/src/api/endpoints/xtream_api.rs +++ b/backend/src/api/endpoints/xtream_api.rs @@ -12,10 +12,10 @@ use crate::auth::Fingerprint; use crate::model::{xtream_mapping_option_from_target_options, ConfigTarget}; use crate::model::{Config, ConfigInput}; use crate::model::{InputSource, ProxyUserCredentials}; -use crate::repository::playlist_repository::get_target_id_mapping; -use crate::repository::storage::get_target_storage_path; -use crate::repository::target_id_mapping::VirtualIdRecord; -use crate::repository::{storage_const, user_repository, xtream_repository}; +use crate::repository::{get_target_id_mapping, user_get_bouquet_filter, xtream_get_collection_path, xtream_get_item_for_stream_id, xtream_load_rewrite_playlist}; +use crate::repository::get_target_storage_path; +use crate::repository::VirtualIdRecord; +use crate::repository::{storage_const}; use crate::utils::xtream::create_vod_info_from_item; use crate::utils::{debug_if_enabled, trace_if_enabled}; use crate::utils::{request, xtream}; @@ -236,7 +236,7 @@ async fn xtream_player_api_stream( let (action_stream_id, stream_ext) = separate_number_and_remainder(stream_req.stream_id); let req_virtual_id: u32 = try_result_bad_request!(action_stream_id.trim().parse()); let pli = try_result_not_found!( - xtream_repository::xtream_get_item_for_stream_id(req_virtual_id, app_state, &target, None).await, + xtream_get_item_for_stream_id(req_virtual_id, app_state, &target, None).await, true, format!("Failed to read xtream item for stream id {req_virtual_id}") ); @@ -447,7 +447,7 @@ async fn xtream_player_api_stream_with_token( let (action_stream_id, stream_ext) = separate_number_and_remainder(stream_req.stream_id); let req_virtual_id: u32 = try_result_bad_request!(action_stream_id.trim().parse()); let pli = try_result_bad_request!( - xtream_repository::xtream_get_item_for_stream_id( + xtream_get_item_for_stream_id( req_virtual_id, app_state, &target, @@ -575,7 +575,7 @@ async fn xtream_player_api_resource( let req_virtual_id: u32 = try_result_bad_request!(resource_req.stream_id.trim().parse()); let resource = resource_req.action_path.trim(); let pli = try_result_bad_request!( - xtream_repository::xtream_get_item_for_stream_id( + xtream_get_item_for_stream_id( req_virtual_id, app_state, &target, @@ -816,7 +816,7 @@ pub async fn xtream_get_stream_info_response( Err(_) => return try_unwrap_body!(empty_json_response_as_array()), }; - if let Ok(pli) = xtream_repository::xtream_get_item_for_stream_id( + if let Ok(pli) = xtream_get_item_for_stream_id( virtual_id, app_state, target, @@ -896,7 +896,7 @@ async fn xtream_get_short_epg( Err(_) => return get_empty_epg_response().into_response(), }; - if let Ok(pli) = xtream_repository::xtream_get_item_for_stream_id( + if let Ok(pli) = xtream_get_item_for_stream_id( virtual_id, app_state, target, @@ -934,6 +934,7 @@ async fn xtream_get_short_epg( // TODO serve epg from own db let input_source = InputSource::from(&*input).with_url(info_url); + let default_user_agent = config.default_user_agent.clone(); return match request::download_text_content( &app_state.http_client.load(), None, @@ -941,6 +942,7 @@ async fn xtream_get_short_epg( None, None, false, + default_user_agent.as_deref(), ) .await { @@ -984,10 +986,10 @@ async fn xtream_player_api_handle_content_action( // we dont handle this action _ => return None, }; - if let Ok(file_path) = xtream_repository::xtream_get_collection_path(config, target_name, collection) { + if let Ok(file_path) = xtream_get_collection_path(config, target_name, collection) { match tokio::fs::read_to_string(&file_path).await { Ok(content) => { - let filter = user_repository::user_get_bouquet_filter( + let filter = user_get_bouquet_filter( config, &user.username, category_id, @@ -1020,7 +1022,7 @@ async fn xtream_get_catchup_response( end: &str, ) -> impl IntoResponse + Send { let req_virtual_id: u32 = try_result_bad_request!(FromStr::from_str(stream_id)); - let pli = try_result_bad_request!(xtream_repository::xtream_get_item_for_stream_id( + let pli = try_result_bad_request!(xtream_get_item_for_stream_id( req_virtual_id, app_state, target, @@ -1039,11 +1041,13 @@ async fn xtream_get_catchup_response( pli.provider_id ))); let input_source = InputSource::from(&*input).with_url(info_url); + let default_user_agent = app_state.app_config.config.load().default_user_agent.clone(); let content = try_result_bad_request!( xtream::get_xtream_stream_info_content( &app_state.http_client.load(), &input_source, - false + false, + default_user_agent.as_deref(), ) .await ); @@ -1248,7 +1252,7 @@ async fn xtream_player_api( let result = match action { crate::model::XC_ACTION_GET_LIVE_STREAMS => skip_flag_optional!( skip_live, - xtream_repository::xtream_load_rewrite_playlist( + xtream_load_rewrite_playlist( XtreamCluster::Live, &app_state.app_config, &target, @@ -1259,7 +1263,7 @@ async fn xtream_player_api( ), crate::model::XC_ACTION_GET_VOD_STREAMS => skip_flag_optional!( skip_vod, - xtream_repository::xtream_load_rewrite_playlist( + xtream_load_rewrite_playlist( XtreamCluster::Video, &app_state.app_config, &target, @@ -1270,7 +1274,7 @@ async fn xtream_player_api( ), crate::model::XC_ACTION_GET_SERIES => skip_flag_optional!( skip_series, - xtream_repository::xtream_load_rewrite_playlist( + xtream_load_rewrite_playlist( XtreamCluster::Series, &app_state.app_config, &target, diff --git a/backend/src/api/main_api.rs b/backend/src/api/main_api.rs index 573b9547a..27c05222d 100644 --- a/backend/src/api/main_api.rs +++ b/backend/src/api/main_api.rs @@ -16,7 +16,7 @@ use crate::api::scheduler::{exec_interner_prune, exec_scheduler}; use crate::api::serve::serve; use crate::model::{AppConfig, Config, Healthcheck, ProcessTargets, RateLimitConfig}; use crate::processing::processor::playlist; -use crate::repository::playlist_repository::load_playlists_into_memory_cache; +use crate::repository::load_playlists_into_memory_cache; use crate::VERSION; use arc_swap::{ArcSwap, ArcSwapOption}; use axum::Router; @@ -34,7 +34,7 @@ use tower_governor::key_extractor::SmartIpKeyExtractor; use tower_http::services::ServeDir; use crate::api::panel_api::sync_panel_api_exp_dates_on_boot; use crate::api::sys_usage::exec_system_usage; -use crate::repository::storage::get_geoip_path; +use crate::repository::get_geoip_path; use crate::utils::{exec_file_lock_prune, GeoIp}; fn get_web_dir_path(web_ui_enabled: bool, web_root: &str) -> Result { @@ -279,6 +279,8 @@ pub async fn start_server( let client = shared_data.http_client.load(); + sync_panel_api_exp_dates_on_boot(&app_state).await; + exec_scheduler( client.as_ref(), &app_state, @@ -292,8 +294,6 @@ pub async fn start_server( &targets, ); - sync_panel_api_exp_dates_on_boot(&app_state).await; - exec_file_lock_prune(&app_state); exec_interner_prune(&app_state); diff --git a/backend/src/api/model/app_state.rs b/backend/src/api/model/app_state.rs index b4f48100a..53caa6ac7 100644 --- a/backend/src/api/model/app_state.rs +++ b/backend/src/api/model/app_state.rs @@ -3,7 +3,7 @@ use crate::api::model::{ActiveProviderManager, ConnectionManager, EventManager, use crate::api::model::{ActiveUserManager, DownloadQueue}; use crate::api::scheduler::exec_scheduler; use crate::model::{AppConfig, Config, ConfigTarget, HdHomeRunConfig, HdHomeRunDeviceConfig, ProcessTargets, ReverseProxyDisabledHeaderConfig, ScheduleConfig, SourcesConfig}; -use crate::repository::playlist_repository::load_target_into_memory_cache; +use crate::repository::load_target_into_memory_cache; use crate::tools::lru_cache::LRUResourceCache; use crate::utils::request::create_client; use arc_swap::{ArcSwap, ArcSwapOption}; @@ -20,7 +20,7 @@ use tokio::sync::{Mutex}; use tokio::task; use tokio_util::sync::CancellationToken; use crate::api::model::UpdateGuard; -use crate::repository::storage::get_geoip_path; +use crate::repository::get_geoip_path; use crate::utils::GeoIp; macro_rules! cancel_service { diff --git a/backend/src/api/model/playlist_mem_cache.rs b/backend/src/api/model/playlist_mem_cache.rs index eff694b8f..dd7741497 100644 --- a/backend/src/api/model/playlist_mem_cache.rs +++ b/backend/src/api/model/playlist_mem_cache.rs @@ -2,8 +2,7 @@ use std::collections::HashMap; use tokio::sync::RwLock; use shared::model::{M3uPlaylistItem, PlaylistItem, XtreamCluster, XtreamPlaylistItem}; use crate::model::ConfigTarget; -use crate::repository::bplustree::BPlusTree; -use crate::repository::target_id_mapping::{VirtualIdRecord}; +use crate::repository::{BPlusTree, VirtualIdRecord}; pub struct PlaylistXtreamStorage { pub id_mapping: BPlusTree, diff --git a/backend/src/api/model/stream.rs b/backend/src/api/model/stream.rs index e452b2f89..1c825761b 100644 --- a/backend/src/api/model/stream.rs +++ b/backend/src/api/model/stream.rs @@ -30,6 +30,7 @@ pub struct StreamDetails { pub(crate) stream_info: ProviderStreamInfo, pub provider_name: Option>, pub grace_period_millis: u64, + pub disable_provider_grace: bool, pub reconnect_flag: Option>, pub provider_handle: Option, } @@ -41,6 +42,7 @@ impl StreamDetails { stream_info: None, provider_name: None, grace_period_millis: default_grace_period_millis(), + disable_provider_grace: false, reconnect_flag: None, provider_handle: None, } @@ -60,4 +62,4 @@ pub struct StreamingStrategy { pub provider_handle: Option, pub provider_stream_state: ProviderStreamState, pub input_headers: Option>, -} \ No newline at end of file +} diff --git a/backend/src/api/model/streams/active_client_stream.rs b/backend/src/api/model/streams/active_client_stream.rs index d8079b415..33b31e102 100644 --- a/backend/src/api/model/streams/active_client_stream.rs +++ b/backend/src/api/model/streams/active_client_stream.rs @@ -3,8 +3,10 @@ use crate::api::model::StreamError; use crate::api::model::TimedClientStream; use crate::api::model::TransportStreamBuffer; use crate::api::model::{AppState, ConnectionManager, CustomVideoStreamType, ProviderHandle, StreamDetails}; +use crate::api::panel_api::{can_provision_on_exhausted, find_input_by_provider_name, run_panel_api_provisioning_probe}; use crate::auth::Fingerprint; -use crate::model::ProxyUserCredentials; +use crate::model::{ConfigInput, ProxyUserCredentials}; +use crate::tools::atomic_once_flag::AtomicOnceFlag; use crate::utils::debug_if_enabled; use axum::http::header::USER_AGENT; use axum::http::HeaderMap; @@ -13,185 +15,41 @@ use futures::task::AtomicWaker; use futures::Stream; use futures::StreamExt; use log::{error, info}; -use shared::model::{StreamChannel, UserConnectionPermission}; +use shared::model::{StreamChannel, UserConnectionPermission, VirtualId}; use shared::utils::sanitize_sensitive_info; use std::pin::Pin; -use std::sync::atomic::AtomicU8; +use std::sync::atomic::{AtomicU8, Ordering}; use std::sync::Arc; -use std::task::Poll; +use std::task::{Context, Poll}; const INNER_STREAM: u8 = 0_u8; const USER_EXHAUSTED_STREAM: u8 = 1_u8; const PROVIDER_EXHAUSTED_STREAM: u8 = 2_u8; const CHANNEL_UNAVAILABLE_STREAM: u8 = 3_u8; +const PROVISIONING_STREAM: u8 = 4_u8; -pub(in crate::api) struct ActiveClientStream { +struct GraceProvisioningInfo { + input: Arc, + stop_signal: Arc, +} + +struct ActiveClientStreamState { inner: BoxedProviderStream, send_custom_stream_flag: Option>, - #[allow(dead_code)] provider_handle: Option, - custom_video: (Option, Option, Option), + custom_video: ( + Option, + Option, + Option, + Option, + ), waker: Option>, connection_manager: Arc, fingerprint: Arc, provider_stopped: bool, } -impl ActiveClientStream { - #[allow(clippy::too_many_arguments)] - pub(crate) async fn new(mut stream_details: StreamDetails, - app_state: &Arc, - user: &ProxyUserCredentials, - connection_permission: UserConnectionPermission, - fingerprint: &Fingerprint, - stream_channel: StreamChannel, - session_token: Option<&str>, - req_headers: &HeaderMap) -> Self { - if connection_permission == UserConnectionPermission::Exhausted { - error!("Something is wrong this should not happen"); - } - let grant_user_grace_period = connection_permission == UserConnectionPermission::GracePeriod; - let username = user.username.as_str(); - let provider_name = stream_details.provider_name.as_ref().map_or_else(String::new, ToString::to_string); - - let user_agent = req_headers.get(USER_AGENT).map(|h| String::from_utf8_lossy(h.as_bytes())).unwrap_or_default(); - - let virtual_id = stream_channel.virtual_id; - app_state.connection_manager.update_connection(username, user.max_connections, fingerprint, &provider_name, stream_channel, user_agent, session_token).await; - if let Some((_, _, _m_, Some(cvt))) = stream_details.stream_info.as_ref() { - app_state.connection_manager.update_stream_detail(&fingerprint.addr, *cvt).await; - } - let cfg = &app_state.app_config; - let (grace_stop_flag, waker) = if grant_user_grace_period || (stream_details.has_grace_period() && stream_details.provider_name.is_some()) { - let waker = Arc::new(AtomicWaker::new()); - let flag = Self::stream_grace_period(app_state, &stream_details, grant_user_grace_period, user, fingerprint, Some(Arc::clone(&waker))); - let maybe_waker = flag.as_ref().map(|_| waker); - (flag, maybe_waker) - } else { - (Self::stream_grace_period(app_state, &stream_details, grant_user_grace_period, user, fingerprint, None), None) - }; - - let custom_response = cfg.custom_stream_response.load(); - let custom_video = custom_response.as_ref() - .map_or((None, None, None), |c| - ( - c.user_connections_exhausted.clone(), - c.provider_connections_exhausted.clone(), - c.channel_unavailable.clone(), - )); - - let stream = match stream_details.stream.take() { - None => { - let provider_handle = stream_details.provider_handle.take(); - app_state.connection_manager.release_provider_handle(provider_handle).await; - futures::stream::empty::>().boxed() - } - Some(stream) => { - let config = app_state.app_config.config.load(); - match config.sleep_timer_mins { - None => stream, - Some(mins) => { - let secs = u32::try_from((u64::from(mins) * 60).min(u64::from(u32::MAX))).unwrap_or(0); - if secs > 0 { - TimedClientStream::new(app_state, stream, secs, fingerprint.addr, virtual_id).boxed() - } else { - stream - } - } - } - } - }; - - Self { - inner: stream, - provider_handle: stream_details.provider_handle, - send_custom_stream_flag: grace_stop_flag, - custom_video, - waker, - connection_manager: Arc::clone(&app_state.connection_manager), - fingerprint: Arc::new(fingerprint.clone()), - provider_stopped: false, - } - } - - fn stream_grace_period(app_state: &AppState, - stream_details: &StreamDetails, - user_grace_period: bool, - user: &ProxyUserCredentials, - fingerprint: &Fingerprint, - waker: Option>) -> Option> { - let active_users = Arc::clone(&app_state.active_users); - let active_provider = Arc::clone(&app_state.active_provider); - let connection_manager = Arc::clone(&app_state.connection_manager); - - let provider_grace_check = if stream_details.has_grace_period() && stream_details.provider_name.is_some() { - stream_details.provider_name.clone() - } else { - None - }; - - let user_max_connections = user.max_connections; - let user_grace_check = if user_grace_period && user_max_connections > 0 { - let user_name = user.username.clone(); - Some((user_name, user_max_connections)) - } else { - None - }; - - if provider_grace_check.is_some() || user_grace_check.is_some() { - let stream_strategy_flag = Arc::new(AtomicU8::new(INNER_STREAM)); - let stream_strategy_flag_copy = Arc::clone(&stream_strategy_flag); - let grace_period_millis = stream_details.grace_period_millis; - - let user_manager = Arc::clone(&active_users); - let provider_manager = Arc::clone(&active_provider); - let connection_manager = Arc::clone(&connection_manager); - let reconnect_flag = stream_details.reconnect_flag.clone(); - let fingerprint = fingerprint.clone(); - tokio::spawn(async move { - tokio::time::sleep(tokio::time::Duration::from_millis(grace_period_millis)).await; - - let mut updated = false; - if let Some((username, max_connections)) = user_grace_check { - let active_connections = user_manager.user_connections(&username).await; - if active_connections > max_connections { - stream_strategy_flag_copy.store(USER_EXHAUSTED_STREAM, std::sync::atomic::Ordering::Release); - connection_manager.update_stream_detail(&fingerprint.addr, CustomVideoStreamType::UserConnectionsExhausted).await; - info!("User connections exhausted for active clients: {username}"); - updated = true; - } - } - - if !updated { - if let Some(provider_name) = provider_grace_check { - if provider_manager.is_over_limit(&provider_name).await { - stream_strategy_flag_copy.store(PROVIDER_EXHAUSTED_STREAM, std::sync::atomic::Ordering::Release); - connection_manager.update_stream_detail(&fingerprint.addr, CustomVideoStreamType::ProviderConnectionsExhausted).await; - info!("Provider connections exhausted for active clients: {provider_name}"); - updated = true; - } - } - } - - if !updated { - stream_strategy_flag_copy.store(INNER_STREAM, std::sync::atomic::Ordering::Release); - } - - if updated { - if let Some(flag) = reconnect_flag { - flag.notify(); - } - } - - if let Some(w) = waker.as_ref() { - w.wake(); - } - }); - return Some(stream_strategy_flag); - } - None - } - +impl ActiveClientStreamState { fn stop_provider_stream(&mut self, unavailable: bool) { self.provider_stopped = true; @@ -201,11 +59,10 @@ impl ActiveClientStream { if unavailable { if let Some(flag) = &self.send_custom_stream_flag { - flag.store(CHANNEL_UNAVAILABLE_STREAM, std::sync::atomic::Ordering::Release); + flag.store(CHANNEL_UNAVAILABLE_STREAM, Ordering::Release); } } - // Ensure the stream is re-polled after state change if let Some(waker) = &self.waker { waker.wake(); } @@ -221,26 +78,22 @@ impl ActiveClientStream { CustomVideoStreamType::UserConnectionsExhausted }; con_man.update_stream_detail(&addr, stream_type).await; - debug_if_enabled!( "Provider stream stopped due to grace period or unavailable provider channel for {}", sanitize_sensitive_info(&addr.to_string()) - ); - + debug_if_enabled!( + "Provider stream stopped due to grace period or unavailable provider channel for {}", + sanitize_sensitive_info(&addr.to_string()) + ); mgr.release_provider_handle(handle).await; }); } } -} -impl Stream for ActiveClientStream { - type Item = Result; - fn poll_next(mut self: Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> Poll> { + fn poll_next_base(&mut self, cx: &mut Context<'_>) -> Poll>> { if let Some(waker) = &self.waker { waker.register(cx.waker()); } - let flag = { - match &self.send_custom_stream_flag { - Some(flag) => flag.load(std::sync::atomic::Ordering::Acquire), - None => INNER_STREAM, - } + let flag = match &self.send_custom_stream_flag { + Some(flag) => flag.load(Ordering::Acquire), + None => INNER_STREAM, }; if flag == INNER_STREAM { @@ -260,35 +113,383 @@ impl Stream for ActiveClientStream { if !self.provider_stopped { self.stop_provider_stream(false); } + Poll::Ready(None) // Fallback for subclasses to handle other flags + } +} + +pub(in crate::api) struct ActiveClientStream { + state: ActiveClientStreamState, +} + +impl Stream for ActiveClientStream { + type Item = Result; + + fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let flag = match &self.state.send_custom_stream_flag { + Some(flag) => flag.load(Ordering::Acquire), + None => INNER_STREAM, + }; + + let res = self.state.poll_next_base(cx); + if !matches!(res, Poll::Ready(None)) || flag == INNER_STREAM { + return res; + } let buffer_opt = match flag { - USER_EXHAUSTED_STREAM => { - self.custom_video.0.as_mut() - } - PROVIDER_EXHAUSTED_STREAM => { - self.custom_video.1.as_mut() - } - CHANNEL_UNAVAILABLE_STREAM => { - self.custom_video.2.as_mut() - } + USER_EXHAUSTED_STREAM => self.state.custom_video.0.as_mut(), + PROVIDER_EXHAUSTED_STREAM => self.state.custom_video.1.as_mut(), + CHANNEL_UNAVAILABLE_STREAM => self.state.custom_video.2.as_mut(), _ => None, }; if let Some(buffer) = buffer_opt { - Poll::Ready(Some(Ok(buffer.next_chunk()))) + buffer.register_waker(cx.waker()); + match buffer.next_chunk() { + Some(chunk) => Poll::Ready(Some(Ok(chunk))), + None => Poll::Pending, + } } else { - // At this point it should be the empty stream - Pin::new(&mut self.inner).poll_next(cx) + Pin::new(&mut self.state.inner).poll_next(cx) } } } impl Drop for ActiveClientStream { fn drop(&mut self) { - let mgr = Arc::clone(&self.connection_manager); - let hndl = self.provider_handle.take(); + let mgr = Arc::clone(&self.state.connection_manager); + let hndl = self.state.provider_handle.take(); + if let Ok(handle) = tokio::runtime::Handle::try_current() { + handle.spawn(async move { + mgr.release_provider_handle(hndl).await; + }); + } + } +} + +pub(in crate::api) struct ProvisionableActiveClientStream { + state: ActiveClientStreamState, +} + +impl Stream for ProvisionableActiveClientStream { + type Item = Result; + + fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + let flag = match &self.state.send_custom_stream_flag { + Some(flag) => flag.load(Ordering::Acquire), + None => INNER_STREAM, + }; + + let res = self.state.poll_next_base(cx); + if !matches!(res, Poll::Ready(None)) || flag == INNER_STREAM { + return res; + } + + let buffer_opt = match flag { + USER_EXHAUSTED_STREAM => self.state.custom_video.0.as_mut(), + PROVIDER_EXHAUSTED_STREAM => self.state.custom_video.1.as_mut(), + CHANNEL_UNAVAILABLE_STREAM => self.state.custom_video.2.as_mut(), + PROVISIONING_STREAM => self.state.custom_video.3.as_mut(), + _ => None, + }; + + if let Some(buffer) = buffer_opt { + buffer.register_waker(cx.waker()); + match buffer.next_chunk() { + Some(chunk) => Poll::Ready(Some(Ok(chunk))), + None => Poll::Pending, + } + } else { + Pin::new(&mut self.state.inner).poll_next(cx) + } + } +} + +impl Drop for ProvisionableActiveClientStream { + fn drop(&mut self) { + let mgr = Arc::clone(&self.state.connection_manager); + let hndl = self.state.provider_handle.take(); tokio::spawn(async move { mgr.release_provider_handle(hndl).await; }); } } + +#[allow(clippy::too_many_arguments, clippy::too_many_lines)] +pub(crate) async fn create_active_client_stream( + mut stream_details: StreamDetails, + app_state: &Arc, + user: &ProxyUserCredentials, + connection_permission: UserConnectionPermission, + fingerprint: &Fingerprint, + stream_channel: StreamChannel, + session_token: Option<&str>, + req_headers: &HeaderMap, +) -> BoxedProviderStream { + if connection_permission == UserConnectionPermission::Exhausted { + error!("Something is wrong this should not happen"); + } + let grant_user_grace_period = connection_permission == UserConnectionPermission::GracePeriod; + let username = user.username.as_str(); + let provider_name = stream_details + .provider_name + .as_ref() + .map_or_else(String::new, ToString::to_string); + + let user_agent = req_headers + .get(USER_AGENT) + .map(|h| String::from_utf8_lossy(h.as_bytes())) + .unwrap_or_default(); + + let virtual_id = stream_channel.virtual_id; + app_state + .connection_manager + .update_connection( + username, + user.max_connections, + fingerprint, + &provider_name, + stream_channel, + user_agent, + session_token, + ) + .await; + if let Some((_, _, _m_, Some(cvt))) = stream_details.stream_info.as_ref() { + app_state + .connection_manager + .update_stream_detail(&fingerprint.addr, *cvt) + .await; + } + + let provisioning_info = resolve_grace_period_provisioning(app_state, &stream_details); + let has_provisioning = provisioning_info.is_some(); + + let (grace_stop_flag, waker) = if grant_user_grace_period + || (stream_details.has_grace_period() && stream_details.provider_name.is_some()) + { + let waker = Arc::new(AtomicWaker::new()); + let flag = stream_grace_period( + app_state, + &stream_details, + grant_user_grace_period, + user, + fingerprint, + virtual_id, + provisioning_info, + Some(Arc::clone(&waker)), + ); + let maybe_waker = flag.as_ref().map(|_| waker); + (flag, maybe_waker) + } else { + ( + stream_grace_period( + app_state, + &stream_details, + grant_user_grace_period, + user, + fingerprint, + virtual_id, + provisioning_info, + None, + ), + None, + ) + }; + + let cfg = &app_state.app_config; + let custom_response = cfg.custom_stream_response.load(); + let custom_video = custom_response.as_ref().map_or((None, None, None, None), |c| { + ( + c.user_connections_exhausted.clone(), + c.provider_connections_exhausted.clone(), + c.channel_unavailable.clone(), + c.panel_api_provisioning.clone(), + ) + }); + + let stream = match stream_details.stream.take() { + None => { + let provider_handle = stream_details.provider_handle.take(); + app_state + .connection_manager + .release_provider_handle(provider_handle) + .await; + futures::stream::empty::>().boxed() + } + Some(stream) => { + let config = app_state.app_config.config.load(); + match config.sleep_timer_mins { + None => stream, + Some(mins) => { + let secs = + u32::try_from((u64::from(mins) * 60).min(u64::from(u32::MAX))).unwrap_or(0); + if secs > 0 { + TimedClientStream::new(app_state, stream, secs, fingerprint.addr, virtual_id) + .boxed() + } else { + stream + } + } + } + } + }; + + let state = ActiveClientStreamState { + inner: stream, + provider_handle: stream_details.provider_handle, + send_custom_stream_flag: grace_stop_flag, + custom_video, + waker, + connection_manager: Arc::clone(&app_state.connection_manager), + fingerprint: Arc::new(fingerprint.clone()), + provider_stopped: false, + }; + + if has_provisioning { + ProvisionableActiveClientStream { state }.boxed() + } else { + ActiveClientStream { state }.boxed() + } +} + +fn resolve_grace_period_provisioning( + app_state: &Arc, + stream_details: &StreamDetails, +) -> Option { + if stream_details.disable_provider_grace { + return None; + } + let provider_name = stream_details.provider_name.as_deref(); + let input = + provider_name.and_then(|name| find_input_by_provider_name(app_state.as_ref(), name))?; + if !can_provision_on_exhausted(app_state, &input) { + return None; + } + + let stop_signal = Arc::new(AtomicOnceFlag::new()); + Some(GraceProvisioningInfo { input, stop_signal }) +} + +#[allow(clippy::too_many_arguments, clippy::too_many_lines)] +fn stream_grace_period( + app_state: &Arc, + stream_details: &StreamDetails, + user_grace_period: bool, + user: &ProxyUserCredentials, + fingerprint: &Fingerprint, + virtual_id: VirtualId, + provisioning_info: Option, + waker: Option>, +) -> Option> { + let active_users = Arc::clone(&app_state.active_users); + let active_provider = Arc::clone(&app_state.active_provider); + let connection_manager = Arc::clone(&app_state.connection_manager); + + let provider_grace_check = if stream_details.has_grace_period() + && stream_details.provider_name.is_some() + && !stream_details.disable_provider_grace + { + stream_details.provider_name.clone() + } else { + None + }; + + let user_max_connections = user.max_connections; + let user_grace_check = if user_grace_period && user_max_connections > 0 { + let user_name = user.username.clone(); + Some((user_name, user_max_connections)) + } else { + None + }; + + if provider_grace_check.is_some() || user_grace_check.is_some() { + let stream_strategy_flag = Arc::new(AtomicU8::new(INNER_STREAM)); + let stream_strategy_flag_copy = Arc::clone(&stream_strategy_flag); + let grace_period_millis = stream_details.grace_period_millis; + + let user_manager = Arc::clone(&active_users); + let provider_manager = Arc::clone(&active_provider); + let connection_manager = Arc::clone(&connection_manager); + let reconnect_flag = stream_details.reconnect_flag.clone(); + let fingerprint = fingerprint.clone(); + let app_state = Arc::clone(app_state); + tokio::spawn(async move { + tokio::time::sleep(tokio::time::Duration::from_millis(grace_period_millis)).await; + + let mut updated = false; + if let Some((username, max_connections)) = user_grace_check { + let active_connections = user_manager.user_connections(&username).await; + if active_connections > max_connections { + stream_strategy_flag_copy.store(USER_EXHAUSTED_STREAM, Ordering::Release); + connection_manager + .update_stream_detail( + &fingerprint.addr, + CustomVideoStreamType::UserConnectionsExhausted, + ) + .await; + info!("User connections exhausted for active clients: {username}"); + updated = true; + } + } + + if !updated { + if let Some(provider_name) = provider_grace_check { + if provider_manager.is_over_limit(&provider_name).await { + if let Some(provisioning_info) = provisioning_info { + stream_strategy_flag_copy.store(PROVISIONING_STREAM, Ordering::Release); + connection_manager + .update_stream_detail( + &fingerprint.addr, + CustomVideoStreamType::Provisioning, + ) + .await; + debug_if_enabled!( + "Provider grace period exhausted; provisioning for active clients: {provider_name}" + ); + let app_state = Arc::clone(&app_state); + let input = (*provisioning_info.input).clone(); + let stop_signal = provisioning_info.stop_signal; + let addr = fingerprint.addr; + tokio::spawn(async move { + run_panel_api_provisioning_probe( + app_state, + input, + stop_signal, + addr, + virtual_id, + ) + .await; + }); + } else { + stream_strategy_flag_copy + .store(PROVIDER_EXHAUSTED_STREAM, Ordering::Release); + connection_manager + .update_stream_detail( + &fingerprint.addr, + CustomVideoStreamType::ProviderConnectionsExhausted, + ) + .await; + info!("Provider connections exhausted for active clients: {provider_name}"); + } + updated = true; + } + } + } + + if !updated { + stream_strategy_flag_copy.store(INNER_STREAM, Ordering::Release); + } + + if updated { + if let Some(flag) = reconnect_flag { + flag.notify(); + } + } + + if let Some(w) = waker.as_ref() { + w.wake(); + } + }); + return Some(stream_strategy_flag); + } + None +} diff --git a/backend/src/api/model/streams/custom_video_stream.rs b/backend/src/api/model/streams/custom_video_stream.rs index c8b84dc7b..609d272f5 100644 --- a/backend/src/api/model/streams/custom_video_stream.rs +++ b/backend/src/api/model/streams/custom_video_stream.rs @@ -21,7 +21,11 @@ impl CustomVideoStream { impl Stream for CustomVideoStream { type Item = Result; - fn poll_next(mut self: Pin<&mut Self>, _cx: &mut Context<'_>,) -> Poll> { - Poll::Ready(Some(Ok(self.buffer.next_chunk()))) + fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + self.buffer.register_waker(cx.waker()); + match self.buffer.next_chunk() { + Some(chunk) => Poll::Ready(Some(Ok(chunk))), + None => Poll::Pending, + } } } diff --git a/backend/src/api/model/streams/mod.rs b/backend/src/api/model/streams/mod.rs index 42aad1a9c..1c6d23fb3 100644 --- a/backend/src/api/model/streams/mod.rs +++ b/backend/src/api/model/streams/mod.rs @@ -2,6 +2,7 @@ mod timed_client_stream; mod buffered_stream; mod client_stream; mod custom_video_stream; +mod provisioning_stream; mod transport_stream_buffer; // mod chunked_buffer; mod provider_stream; @@ -19,4 +20,5 @@ pub(in crate::api) use self::active_client_stream::*; pub(in crate::api) use self::throttled_stream::*; pub(in crate::api) use self::timed_client_stream::*; pub(in crate::api) use self::custom_video_stream::*; +pub(in crate::api) use self::provisioning_stream::*; pub use self::persist_pipe_stream::*; diff --git a/backend/src/api/model/streams/provider_stream.rs b/backend/src/api/model/streams/provider_stream.rs index 386be8e55..1304fabb4 100644 --- a/backend/src/api/model/streams/provider_stream.rs +++ b/backend/src/api/model/streams/provider_stream.rs @@ -1,5 +1,5 @@ use crate::api::api_utils::{HeaderFilter}; -use crate::api::model::{AppState, CustomVideoStream, ThrottledStream}; +use crate::api::model::{AppState, CustomVideoStream, ProvisioningStream, ThrottledStream}; use crate::model::{AppConfig}; use shared::model::PlaylistItemType; use log::{trace}; @@ -8,6 +8,7 @@ use axum::response::IntoResponse; use crate::api::model::stream::ProviderStreamResponse; use crate::api::model::TransportStreamBuffer; use crate::api::api_utils::try_unwrap_body; +use crate::tools::atomic_once_flag::AtomicOnceFlag; use std::str::FromStr; use std::fmt; use std::net::SocketAddr; @@ -19,7 +20,8 @@ pub enum CustomVideoStreamType { ChannelUnavailable, UserConnectionsExhausted, ProviderConnectionsExhausted, - UserAccountExpired + UserAccountExpired, + Provisioning, } impl fmt::Display for CustomVideoStreamType { @@ -29,6 +31,7 @@ impl fmt::Display for CustomVideoStreamType { CustomVideoStreamType::UserConnectionsExhausted => "user_connections_exhausted", CustomVideoStreamType::ProviderConnectionsExhausted => "provider_connections_exhausted", CustomVideoStreamType::UserAccountExpired => "user_account_expired", + CustomVideoStreamType::Provisioning => "provisioning", }; write!(f, "{s}") } @@ -43,6 +46,7 @@ impl FromStr for CustomVideoStreamType { "user_connections_exhausted" => Ok(Self::UserConnectionsExhausted), "provider_connections_exhausted" => Ok(Self::ProviderConnectionsExhausted), "user_account_expired" => Ok(Self::UserAccountExpired), + "provisioning" => Ok(Self::Provisioning), _ => Err(format!("Unknown stream type: {s}")), } } @@ -103,6 +107,51 @@ pub fn create_user_account_expired_stream(cfg: &AppConfig, headers: &[(String, S create_video_stream(CustomVideoStreamType::UserAccountExpired, video, headers, "Streaming response user account expired") } +pub fn create_panel_api_provisioning_stream(cfg: &AppConfig, headers: &[(String, String)]) -> ProviderStreamResponse { + let custom_stream_response = cfg.custom_stream_response.load(); + let video = custom_stream_response + .as_ref() + .and_then(|c| c.panel_api_provisioning.as_ref()); + create_video_stream( + CustomVideoStreamType::Provisioning, + video, + headers, + "Streaming response panel api provisioning", + ) +} + +pub fn create_panel_api_provisioning_stream_with_stop( + cfg: &AppConfig, + headers: &[(String, String)], + stop_signal: Arc, +) -> ProviderStreamResponse { + let custom_stream_response = cfg.custom_stream_response.load(); + let video = custom_stream_response + .as_ref() + .and_then(|c| c.panel_api_provisioning.as_ref()); + if let Some(video) = video { + trace!("Streaming response panel api provisioning"); + let mut response_headers: Vec<(String, String)> = headers + .iter() + .filter(|(key, _)| !(key.eq("content-type") || key.eq("content-length") || key.contains("range"))) + .map(|(key, value)| (key.clone(), value.clone())) + .collect(); + response_headers.push(("content-type".to_string(), "video/mp2t".to_string())); + let stream = ProvisioningStream::new(video.clone(), stop_signal); + ( + Some(Box::pin(ThrottledStream::new(stream, 8000))), + Some(( + response_headers, + StatusCode::OK, + None, + Some(CustomVideoStreamType::Provisioning), + )), + ) + } else { + (None, None) + } +} + pub async fn create_custom_video_stream_response(app_state: &Arc, addr: &SocketAddr, video_response: CustomVideoStreamType) -> impl axum::response::IntoResponse + Send { let config = &app_state.app_config; if let (Some(stream), Some((headers, status_code, _, _))) = match video_response { @@ -110,6 +159,7 @@ pub async fn create_custom_video_stream_response(app_state: &Arc, addr CustomVideoStreamType::UserConnectionsExhausted => create_user_connections_exhausted_stream(config, &[]), CustomVideoStreamType::ProviderConnectionsExhausted => create_provider_connections_exhausted_stream(config, &[]), CustomVideoStreamType::UserAccountExpired => create_user_account_expired_stream(config, &[]), + CustomVideoStreamType::Provisioning => create_panel_api_provisioning_stream(config, &[]), } { app_state.connection_manager.update_stream_detail(addr, video_response).await; app_state.connection_manager.release_provider_connection(addr).await; diff --git a/backend/src/api/model/streams/provider_stream_factory.rs b/backend/src/api/model/streams/provider_stream_factory.rs index 7d47c10ba..936aecb03 100644 --- a/backend/src/api/model/streams/provider_stream_factory.rs +++ b/backend/src/api/model/streams/provider_stream_factory.rs @@ -38,6 +38,7 @@ pub struct ProviderStreamFactoryOptions { pipe_stream: bool, url: Url, headers: HeaderMap, + default_user_agent: Option, range_bytes: Arc>, range_requested: bool, reconnect_flag: Arc, @@ -54,6 +55,7 @@ impl ProviderStreamFactoryOptions { req_headers: &HeaderMap, input_headers: Option<&HashMap>, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + default_user_agent: Option<&str>, ) -> Self { let buffer_size = if stream_options.buffer_enabled { stream_options.buffer_size @@ -66,7 +68,19 @@ impl ProviderStreamFactoryOptions { req_headers.remove("range"); // We merge configured input headers with the headers from the request. - let headers = get_request_headers(input_headers, Some(&req_headers), disabled_headers); + let headers = get_request_headers( + input_headers, + Some(&req_headers), + disabled_headers, + default_user_agent, + ); + + let default_user_agent = default_user_agent + .and_then(|ua| { + let trimmed = ua.trim(); + (!trimmed.is_empty()).then_some(trimmed) + }) + .and_then(|ua| axum::http::header::HeaderValue::from_str(ua).ok()); let url = stream_url.clone(); let range_bytes = if matches!(item_type, PlaylistItemType::Live | PlaylistItemType::LiveUnknown) { @@ -86,6 +100,7 @@ impl ProviderStreamFactoryOptions { reconnect_flag: Arc::new(AtomicOnceFlag::new()), url, headers, + default_user_agent, range_bytes, range_requested: requested_range.is_some(), } @@ -226,7 +241,10 @@ fn prepare_client( if !headers.contains_key(axum::http::header::USER_AGENT) { headers.insert( axum::http::header::USER_AGENT, - axum::http::header::HeaderValue::from_static(DEFAULT_USER_AGENT), + stream_options + .default_user_agent + .clone() + .unwrap_or_else(|| axum::http::header::HeaderValue::from_static(DEFAULT_USER_AGENT)), ); } @@ -563,6 +581,7 @@ mod tests { &req_headers, None, disabled_headers, + None, ); assert!(!options.was_range_requested()); assert_eq!(options.get_total_bytes_send(), Some(0)); // Should track even if not requested @@ -578,6 +597,7 @@ mod tests { &req_headers, None, disabled_headers, + None, ); assert!(options.was_range_requested()); assert_eq!(options.get_total_bytes_send(), Some(100)); @@ -593,6 +613,7 @@ mod tests { &req_headers, None, disabled_headers, + None, ); assert!(!options.was_range_requested()); assert_eq!(options.get_total_bytes_send(), None); // Should NOT track @@ -609,6 +630,7 @@ mod tests { &req_headers, None, disabled_headers, + None, ); assert!(!options.was_range_requested()); // Stripped by filter assert_eq!(options.get_total_bytes_send(), None); diff --git a/backend/src/api/model/streams/provisioning_stream.rs b/backend/src/api/model/streams/provisioning_stream.rs new file mode 100644 index 000000000..521d66471 --- /dev/null +++ b/backend/src/api/model/streams/provisioning_stream.rs @@ -0,0 +1,35 @@ +use crate::api::model::StreamError; +use crate::api::model::TransportStreamBuffer; +use crate::tools::atomic_once_flag::AtomicOnceFlag; +use bytes::Bytes; +use futures::Stream; +use std::pin::Pin; +use std::sync::Arc; +use std::task::{Context, Poll}; + +pub struct ProvisioningStream { + buffer: TransportStreamBuffer, + stop_signal: Arc, +} + +impl ProvisioningStream { + pub fn new(buffer: TransportStreamBuffer, stop_signal: Arc) -> Self { + Self { buffer, stop_signal } + } +} + +impl Stream for ProvisioningStream { + type Item = Result; + + fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { + if !self.stop_signal.is_active() { + return Poll::Ready(None); + } + + self.buffer.register_waker(cx.waker()); + match self.buffer.next_chunk() { + Some(chunk) => Poll::Ready(Some(Ok(chunk))), + None => Poll::Pending, + } + } +} diff --git a/backend/src/api/model/streams/shared_stream_manager.rs b/backend/src/api/model/streams/shared_stream_manager.rs index 595dd6484..9c3213366 100644 --- a/backend/src/api/model/streams/shared_stream_manager.rs +++ b/backend/src/api/model/streams/shared_stream_manager.rs @@ -26,7 +26,7 @@ use tokio_util::sync::CancellationToken; const DEFAULT_SHARED_BUFFER_SIZE_BYTES: usize = 1024 * 1024 * 12; // 12 MB -const YIELD_COUNTER: usize = 200; +const YIELD_COUNTER: usize = 64; /// /// Wraps a `ReceiverStream` as Stream> @@ -162,6 +162,11 @@ impl SharedStreamState { let mut broadcast_rx = self.broadcaster.subscribe(); let cancel_token = CancellationToken::new(); + { + let mut handles = self.task_handles.write().await; + handles.retain(|h| !h.is_finished()); + } + { let mut subs = self.subscribers.write().await; subs.insert(*addr, cancel_token.clone()); @@ -177,6 +182,7 @@ impl SharedStreamState { // If a client stops streaming (for example presses let timeout_duration = Duration::from_secs(300); // 5 minutes let mut last_active = Instant::now(); + let mut last_lag_log = Instant::now().checked_sub(Duration::from_secs(10)).unwrap_or_else(Instant::now); let address = *addr; let handle = tokio::spawn(async move { @@ -229,11 +235,15 @@ impl SharedStreamState { } } Err(tokio::sync::broadcast::error::RecvError::Lagged(skipped)) => { - let buffered_bytes = { - let buffer = burst_buffer_for_log.read().await; - buffer.current_bytes - }; - warn!("Shared stream client lagged behind {address}. Skipped {skipped} messages (buffered {buffered_bytes} bytes, yield counter {yield_counter})"); + if last_lag_log.elapsed() > Duration::from_secs(5) { + let buffered_bytes = { + let buffer = burst_buffer_for_log.read().await; + buffer.current_bytes + }; + warn!("Shared stream client lagged behind {address}. Skipped {skipped} messages (buffered {buffered_bytes} bytes, yield counter {yield_counter})"); + last_lag_log = Instant::now(); + } + tokio::task::yield_now().await; } Err(_) => break, } diff --git a/backend/src/api/model/streams/transport_stream_buffer.rs b/backend/src/api/model/streams/transport_stream_buffer.rs index 14164159d..40b268d03 100644 --- a/backend/src/api/model/streams/transport_stream_buffer.rs +++ b/backend/src/api/model/streams/transport_stream_buffer.rs @@ -1,6 +1,8 @@ use std::collections::HashMap; use bytes::{Bytes, BytesMut}; use std::sync::Arc; +use futures::task::AtomicWaker; +use std::task::Waker; const MAX_PCR: u64 = 1 << 42; // 42 bit PCR cycle const MAX_PTS_DTS: u64 = 1 << 33; // 33 bit PTS/DTS cycle @@ -240,6 +242,7 @@ pub struct TransportStreamBuffer { stream_duration_90khz: u64, // Duration in 90kHz units initial_continuity_counters: Arc>, continuity_counters: Vec<(u16,u8)>, + waker: Arc, } impl Clone for TransportStreamBuffer { @@ -254,6 +257,7 @@ impl Clone for TransportStreamBuffer { stream_duration_90khz: self.stream_duration_90khz, initial_continuity_counters: Arc::clone(&self.initial_continuity_counters), continuity_counters: self.initial_continuity_counters.as_ref().clone(), + waker: Arc::clone(&self.waker), } } } @@ -286,11 +290,19 @@ impl TransportStreamBuffer { stream_duration_90khz, continuity_counters: continuity_counters.clone(), initial_continuity_counters: Arc::new(continuity_counters), + waker: Arc::new(AtomicWaker::new()), } } + pub fn register_waker(&self, waker: &Waker) { + self.waker.register(waker); + } + /// Returns next chunks with adjusted PTS/DTS and PCR - pub fn next_chunk(&mut self) -> Bytes { + pub fn next_chunk(&mut self) -> Option { + if self.length == 0 { + return None; + } let mut bytes = BytesMut::with_capacity(CHUNK_SIZE); // we send this amount of packets in one chunk let mut packets_remaining = PACKET_COUNT; @@ -368,6 +380,6 @@ impl TransportStreamBuffer { packets_remaining -= 1; } - bytes.freeze() + Some(bytes.freeze()) } } diff --git a/backend/src/api/panel_api.rs b/backend/src/api/panel_api.rs index 88401697c..f38c4b236 100644 --- a/backend/src/api/panel_api.rs +++ b/backend/src/api/panel_api.rs @@ -1,16 +1,40 @@ -use std::collections::HashSet; use crate::api::config_file::ConfigFile; -use crate::api::model::AppState; -use crate::model::{is_input_expired, ConfigInput, PanelApiConfig, PanelApiQueryParam}; -use crate::utils::{debug_if_enabled, persist_source_config, read_sources_file_from_path}; -use crate::utils::get_csv_file_path; -use log::{debug, error, warn}; +use crate::api::model::{ + create_panel_api_provisioning_stream_with_stop, create_provider_connections_exhausted_stream, + AppState, StreamDetails, +}; +use crate::model::{ + is_input_expired, ConfigInput, ConfigInputAlias, PanelApiConfig, PanelApiQueryParam, + ProxyUserCredentials, +}; +use crate::repository::{ + csv_patch_batch_append, csv_patch_batch_remove_expired, csv_patch_batch_sort_by_exp_date, + csv_patch_batch_update_credentials, csv_patch_batch_update_exp_date, get_csv_file_path, +}; +use crate::tools::atomic_once_flag::AtomicOnceFlag; +use crate::utils::{ + debug_if_enabled, format_http_status, persist_source_config, read_sources_file_from_path, +}; +use axum::http::{Method, StatusCode}; +use chrono::{NaiveDateTime, TimeZone}; +use chrono_tz::Tz; +use jsonwebtoken::get_current_timestamp; +use log::{error, warn}; +use serde::{Deserialize, Serialize}; use serde_json::Value; -use shared::error::{info_err_res, info_err, TuliproxError}; -use shared::model::{ConfigInputAliasDto, InputType}; -use shared::utils::{get_credentials_from_url, parse_timestamp, sanitize_sensitive_info, trim_last_slash, Internable}; +use shared::concat_string; +use shared::error::{info_err, info_err_res, TuliproxError}; +use shared::model::{ + ConfigInputAliasDto, InputType, PanelApiAliasPoolSizeValue, + PanelApiProvisioningMethod, ProxyUserStatus, SourcesConfigDto, VirtualId, +}; +use shared::utils::{get_base_url_from_str, get_credentials_from_url, get_credentials_from_url_str, get_i64_from_serde_value, get_string_from_serde_value, parse_timestamp, sanitize_sensitive_info, Internable}; +use std::cmp::Ordering; +use std::collections::{HashMap, HashSet}; +use std::net::SocketAddr; use std::path::{Path, PathBuf}; use std::sync::Arc; +use std::time::{Duration, Instant}; use url::Url; #[derive(Debug, Clone)] @@ -21,15 +45,66 @@ struct AccountCredentials { exp_date: Option, } +#[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +enum PanelApiExpireMode { + UtcString, + ServerTzString, +} + +#[derive(Debug, Clone)] +struct PanelApiTimeContext { + expire_mode: PanelApiExpireMode, + server_tz: Option, +} + +#[derive(Debug, Clone)] +struct UserApiAccountInfo { + exp_date: Option, + server_now_ts: Option, + server_tz: Option, +} + +#[derive(Debug, Clone, Default, Serialize, Deserialize)] +struct PanelApiTimeCache { + inputs: HashMap, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct PanelApiTimeCacheEntry { + expire_mode: PanelApiExpireMode, + server_tz: Option, + skew_secs: Option, +} + fn parse_boolish(value: &Value) -> bool { match value { Value::Bool(b) => *b, Value::Number(n) => n.as_i64().unwrap_or(0) != 0, - Value::String(s) => matches!(s.trim().to_lowercase().as_str(), "true" | "1" | "yes" | "y" | "ok"), + Value::String(s) => matches!( + s.trim().to_lowercase().as_str(), + "true" | "1" | "yes" | "y" | "ok" + ), _ => false, } } +fn extract_stringish(value: &Value) -> Option { + match value { + Value::String(s) => { + let trimmed = s.trim(); + if trimmed.is_empty() { + None + } else { + Some(trimmed.to_string()) + } + } + Value::Number(n) => Some(n.to_string()), + Value::Bool(b) => Some(b.to_string()), + _ => None, + } +} + fn is_date_only_yyyy_mm_dd(value: &str) -> bool { let value = value.trim(); if value.len() != 10 { @@ -43,6 +118,81 @@ fn is_date_only_yyyy_mm_dd(value: &str) -> bool { && bytes[8..10].iter().all(u8::is_ascii_digit) } +fn parse_panel_expire_utc(value: &str) -> Option { + let value = value.trim(); + if value.is_empty() { + return None; + } + let parsed = parse_timestamp(value).ok().flatten(); + if parsed.is_some() { + return parsed; + } + if is_date_only_yyyy_mm_dd(value) { + let normalized = format!("{value} 00:00:00"); + return parse_timestamp(&normalized).ok().flatten(); + } + None +} + +fn parse_panel_expire_with_tz(value: &str, tz: Tz) -> Option { + let value = value.trim(); + if value.is_empty() { + return None; + } + if let Ok(ts) = value.parse::() { + return Some(ts); + } + let value = if is_date_only_yyyy_mm_dd(value) { + format!("{value} 00:00:00") + } else { + value.to_string() + }; + let dt = NaiveDateTime::parse_from_str(&value, "%Y-%m-%d %H:%M:%S").ok()?; + match tz.from_local_datetime(&dt) { + chrono::LocalResult::Single(local_dt) => Some(local_dt.timestamp()), + chrono::LocalResult::Ambiguous(first, _) => Some(first.timestamp()), + chrono::LocalResult::None => None, + } +} + +fn normalize_panel_expire(value: &str, ctx: Option<&PanelApiTimeContext>) -> Option { + let Some(ctx) = ctx else { + return parse_panel_expire_utc(value); + }; + if let Ok(ts) = value.trim().parse::() { + return Some(ts); + } + match ctx.expire_mode { + PanelApiExpireMode::UtcString => parse_panel_expire_utc(value), + PanelApiExpireMode::ServerTzString => ctx + .server_tz + .and_then(|tz| parse_panel_expire_with_tz(value, tz)) + .or_else(|| parse_panel_expire_utc(value)), + } +} + +fn is_input_expired_at(exp_date: Option, now: u64) -> bool { + let Some(exp_date) = exp_date else { + return false; + }; + u64::try_from(exp_date) + .map(|exp_ts| exp_ts <= now) + .unwrap_or(true) +} + +fn is_expiring_with_offset_at(exp_date: Option, offset_secs: u64, now: u64) -> bool { + let Some(exp_date) = exp_date else { + return false; + }; + let Ok(exp_ts) = u64::try_from(exp_date) else { + return true; + }; + if exp_ts <= now { + return false; + } + now.saturating_add(offset_secs) >= exp_ts +} + fn first_json_object(value: &Value) -> Option<&serde_json::Map> { match value { Value::Array(arr) => arr.first().and_then(|v| v.as_object()), @@ -51,27 +201,271 @@ fn first_json_object(value: &Value) -> Option<&serde_json::Map> { } } -fn extract_username_password_from_json(obj: &serde_json::Map) -> Option<(String, String)> { - let username = obj.get("username").and_then(|v| v.as_str()).map(str::trim).filter(|s| !s.is_empty()); - let password = obj.get("password").and_then(|v| v.as_str()).map(str::trim).filter(|s| !s.is_empty()); +fn extract_username_password_from_json( + obj: &serde_json::Map, +) -> Option<(String, String)> { + let username = obj + .get("username") + .and_then(|v| v.as_str()) + .map(str::trim) + .filter(|s| !s.is_empty()); + let password = obj + .get("password") + .and_then(|v| v.as_str()) + .map(str::trim) + .filter(|s| !s.is_empty()); match (username, password) { (Some(u), Some(p)) => Some((u.to_string(), p.to_string())), _ => None, } } -fn extract_username_password_from_url(url_str: &str) -> Option<(String, String)> { - Url::parse(url_str).ok().and_then(|url| { - let (u, p) = get_credentials_from_url(&url); - match (u, p) { - (Some(u), Some(p)) if !u.trim().is_empty() && !p.trim().is_empty() => Some((u, p)), - _ => None, - } - }) +fn validate_type_is_m3u(params: &[PanelApiQueryParam]) -> Result<(), TuliproxError> { + let typ = params + .iter() + .find(|p| p.key.trim().eq_ignore_ascii_case("type")) + .map(|p| p.value.trim().to_string()); + let typ_str = typ.as_deref().unwrap_or_default(); + if typ_str.trim().eq_ignore_ascii_case("m3u") { + Ok(()) + } else if typ_str.is_empty() { + info_err_res!("panel_api: missing required query param 'type=m3u'") + } else { + info_err_res!("panel_api: unsupported type={typ_str}, only m3u is supported") + } } -fn extract_base_url(url_str: &str) -> Option { - Url::parse(url_str).ok().map(|u| u.origin().ascii_serialization()) +fn require_api_key_param(params: &[PanelApiQueryParam], section: &str) -> Result<(), TuliproxError> { + let api_key = params + .iter() + .find(|p| p.key.trim().eq_ignore_ascii_case("api_key")); + let Some(api_key) = api_key else { + return info_err_res!( + "panel_api: {section} must contain query param 'api_key' (use value 'auto')" + ); + }; + if api_key.value.trim().is_empty() { + return info_err_res!( + "panel_api: {section} query param 'api_key' must not be empty (use value 'auto')" + ); + } + Ok(()) +} + +fn require_username_password_params_auto( + params: &[PanelApiQueryParam], + section: &str, +) -> Result<(), TuliproxError> { + let username = params + .iter() + .find(|p| p.key.trim().eq_ignore_ascii_case("username")); + let password = params + .iter() + .find(|p| p.key.trim().eq_ignore_ascii_case("password")); + if username.is_none() || password.is_none() { + return info_err_res!( + "panel_api: {section} must contain query params 'username' and 'password' (use value 'auto')" + ); + } + if !username.is_some_and(|p| p.value.trim().eq_ignore_ascii_case("auto")) + || !password.is_some_and(|p| p.value.trim().eq_ignore_ascii_case("auto")) + { + return info_err_res!( + "panel_api: {section} requires 'username: auto' and 'password: auto' (credentials must not be hardcoded)" + ); + } + Ok(()) +} + +fn validate_client_new_params(params: &[PanelApiQueryParam]) -> Result<(), TuliproxError> { + require_api_key_param(params, "query_parameter.client_new")?; + validate_type_is_m3u(params)?; + if params + .iter() + .any(|p| p.key.trim().eq_ignore_ascii_case("user")) + { + return info_err_res!("panel_api: client_new must not contain query param 'user'"); + } + Ok(()) +} + +fn validate_client_renew_params(params: &[PanelApiQueryParam]) -> Result<(), TuliproxError> { + require_api_key_param(params, "query_parameter.client_renew")?; + validate_type_is_m3u(params)?; + require_username_password_params_auto(params, "query_parameter.client_renew")?; + Ok(()) +} + +fn validate_client_info_params(params: &[PanelApiQueryParam]) -> Result<(), TuliproxError> { + require_api_key_param(params, "query_parameter.client_info")?; + require_username_password_params_auto(params, "query_parameter.client_info")?; + Ok(()) +} + +fn validate_account_info_params(params: &[PanelApiQueryParam]) -> Result<(), TuliproxError> { + require_api_key_param(params, "query_parameter.account_info")?; + let has_user = params + .iter() + .any(|p| p.key.trim().eq_ignore_ascii_case("username")); + let has_pass = params + .iter() + .any(|p| p.key.trim().eq_ignore_ascii_case("password")); + if has_user || has_pass { + require_username_password_params_auto(params, "query_parameter.account_info")?; + } + Ok(()) +} + +fn validate_client_adult_content_params( + params: &[PanelApiQueryParam], +) -> Result<(), TuliproxError> { + require_api_key_param(params, "query_parameter.client_adult_content")?; + let has_user = params + .iter() + .any(|p| p.key.trim().eq_ignore_ascii_case("username")); + let has_pass = params + .iter() + .any(|p| p.key.trim().eq_ignore_ascii_case("password")); + if has_user || has_pass { + require_username_password_params_auto(params, "query_parameter.client_adult_content")?; + } + Ok(()) +} + +#[allow(clippy::struct_excessive_bools)] +#[derive(Debug, Clone, Copy)] +struct PanelApiOptionalFlags { + account_info: bool, + client_new: bool, + client_renew: bool, + adult_content: bool, +} + +fn resolve_panel_api_optional_flags( + cfg: &PanelApiConfig, + input_name: &str, +) -> PanelApiOptionalFlags { + let flags = PanelApiOptionalFlags { + account_info: !cfg.query_parameter.account_info.is_empty(), + client_new: !cfg.query_parameter.client_new.is_empty(), + client_renew: !cfg.query_parameter.client_renew.is_empty(), + adult_content: !cfg.query_parameter.client_adult_content.is_empty(), + }; + let name = sanitize_sensitive_info(input_name); + if !flags.client_renew { + debug_if_enabled!( + "panel_api request for client_renew disabled due to missing arguments for {}", + name + ); + } + if !flags.client_new { + debug_if_enabled!( + "panel_api request for client_new disabled due to missing arguments for {}", + name + ); + } + if !flags.adult_content { + debug_if_enabled!( + "panel_api request for client_adult_content disabled due to missing arguments for {}", + name + ); + } + if !flags.account_info { + debug_if_enabled!( + "panel_api request for account_info disabled due to missing arguments for {}", + name + ); + } + flags +} + +fn parse_panel_api_provisioning_offset_secs(offset: &str) -> Result { + let raw = offset.trim(); + if raw.is_empty() { + return Ok(0); + } + let lower = raw.to_ascii_lowercase(); + let bytes = lower.as_bytes(); + let last = *bytes.last().unwrap_or(&b'\0'); + let (num_part, multiplier) = match last { + b's' => (&lower[..lower.len().saturating_sub(1)], 1_u64), + b'm' => (&lower[..lower.len().saturating_sub(1)], 60_u64), + b'h' => (&lower[..lower.len().saturating_sub(1)], 60_u64 * 60), + b'd' => (&lower[..lower.len().saturating_sub(1)], 60_u64 * 60 * 24), + b'0'..=b'9' => (lower.as_str(), 1_u64), + _ => { + return info_err_res!( + "panel_api.provisioning.offset must be a number with optional suffix s/m/h/d (e.g. 30m, 12h), got '{raw}'" + ); + } + }; + let num_part = num_part.trim(); + if num_part.is_empty() { + return info_err_res!( + "panel_api.provisioning.offset must be a number with optional suffix s/m/h/d (e.g. 30m, 12h), got '{raw}'" + ); + } + let value: u64 = num_part + .parse() + .map_err(|_| info_err!("panel_api.provisioning.offset is not a valid number: '{raw}'"))?; + value + .checked_mul(multiplier) + .ok_or_else(|| info_err!("panel_api.provisioning.offset is too large: '{raw}'")) +} + +fn validate_panel_api_config(cfg: &PanelApiConfig) -> Result<(), TuliproxError> { + if !cfg.enabled { + return Ok(()); + } + if cfg.url.trim().is_empty() { + return info_err_res!("panel_api: url is missing"); + } + if cfg.api_key.as_ref().is_none_or(|k| k.trim().is_empty()) { + return info_err_res!("panel_api: api_key is missing"); + } + if cfg.query_parameter.client_info.is_empty() { + return info_err_res!("panel_api: query_parameter.client_info must be configured"); + } + validate_client_info_params(&cfg.query_parameter.client_info)?; + if !cfg.query_parameter.client_new.is_empty() { + validate_client_new_params(&cfg.query_parameter.client_new)?; + } + if !cfg.query_parameter.client_renew.is_empty() { + validate_client_renew_params(&cfg.query_parameter.client_renew)?; + } + if !cfg.query_parameter.account_info.is_empty() { + validate_account_info_params(&cfg.query_parameter.account_info)?; + } + if !cfg.query_parameter.client_adult_content.is_empty() { + validate_client_adult_content_params(&cfg.query_parameter.client_adult_content)?; + } + let (min_val, max_val) = alias_pool_limit_values(cfg); + if let Some(PanelApiAliasPoolSizeValue::Number(value)) = min_val { + if *value == 0 { + return info_err_res!("panel_api.alias_pool.size.min must be greater than 0"); + } + } + if let Some(PanelApiAliasPoolSizeValue::Number(value)) = max_val { + if *value == 0 { + return info_err_res!("panel_api.alias_pool.size.max must be greater than 0"); + } + } + let min = min_val.and_then(PanelApiAliasPoolSizeValue::as_number); + let max = max_val.and_then(PanelApiAliasPoolSizeValue::as_number); + if let (Some(min), Some(max)) = (min, max) { + if min > max { + return info_err_res!( + "panel_api.alias_pool.size.min must be <= panel_api.alias_pool.size.max" + ); + } + } + if cfg.provisioning.probe_interval_sec == 0 { + return info_err_res!("panel_api.provisioning.probe_interval_sec must be greater than 0"); + } + if let Some(offset) = cfg.provisioning.offset.as_deref() { + let _secs = parse_panel_api_provisioning_offset_secs(offset)?; + } + Ok(()) } fn resolve_query_params( @@ -89,17 +483,23 @@ fn resolve_query_params( if value.eq_ignore_ascii_case("auto") { if key.eq_ignore_ascii_case("api_key") { let Some(k) = api_key.filter(|s| !s.trim().is_empty()) else { - return info_err_res!("panel_api: query param {key} uses 'auto' but panel_api.api_key is missing"); + return info_err_res!( + "panel_api: query param {key} uses 'auto' but panel_api.api_key is missing" + ); }; value = k.to_string(); } else if key.eq_ignore_ascii_case("username") { let Some((u, _)) = creds else { - return info_err_res!("panel_api: query param {key} uses 'auto' but no account username is available"); + return info_err_res!( + "panel_api: query param {key} uses 'auto' but no account username is available" + ); }; value = u.to_string(); } else if key.eq_ignore_ascii_case("password") { let Some((_, pw)) = creds else { - return info_err_res!("panel_api: query param {key} uses 'auto' but no account password is available"); + return info_err_res!( + "panel_api: query param {key} uses 'auto' but no account password is available" + ); }; value = pw.to_string(); } @@ -109,8 +509,12 @@ fn resolve_query_params( Ok(out) } -fn build_panel_url(base_url: &str, query_params: &[(String, String)]) -> Result { - let mut url = Url::parse(base_url).map_err(|e| info_err!("panel_api: invalid url {base_url}: {e}"))?; +fn build_panel_url( + base_url: &str, + query_params: &[(String, String)], +) -> Result { + let mut url = + Url::parse(base_url).map_err(|e| info_err!("panel_api: invalid url {base_url}: {e}"))?; { let mut pairs = url.query_pairs_mut(); for (k, v) in query_params { @@ -120,27 +524,42 @@ fn build_panel_url(base_url: &str, query_params: &[(String, String)]) -> Result< Ok(url) } -fn sanitize_panel_api_json_for_log(value: &Value) -> Value { +fn sanitize_panel_api_json_for_log(value: &Value, sanitize_sensitive: bool) -> Value { match value { - Value::Array(arr) => Value::Array(arr.iter().map(sanitize_panel_api_json_for_log).collect()), + Value::Array(arr) => Value::Array( + arr.iter() + .map(|v| sanitize_panel_api_json_for_log(v, sanitize_sensitive)) + .collect(), + ), Value::Object(obj) => { let mut out = serde_json::Map::with_capacity(obj.len()); for (k, v) in obj { - if k.eq_ignore_ascii_case("api_key") || k.eq_ignore_ascii_case("apikey") || k.eq_ignore_ascii_case("token") { - out.insert(k.clone(), Value::String("***".to_string())); - continue; - } - if k.eq_ignore_ascii_case("username") || k.eq_ignore_ascii_case("password") { - out.insert(k.clone(), Value::String("***".to_string())); - continue; - } - if k.eq_ignore_ascii_case("url") { - if let Some(s) = v.as_str() { - out.insert(k.clone(), Value::String(sanitize_sensitive_info(s).into_owned())); + if sanitize_sensitive { + if k.eq_ignore_ascii_case("api_key") + || k.eq_ignore_ascii_case("apikey") + || k.eq_ignore_ascii_case("token") + { + out.insert(k.clone(), Value::String("***".to_string())); + continue; + } + if k.eq_ignore_ascii_case("username") || k.eq_ignore_ascii_case("password") { + out.insert(k.clone(), Value::String("***".to_string())); continue; } } - out.insert(k.clone(), sanitize_panel_api_json_for_log(v)); + if k.eq_ignore_ascii_case("url") { + if let Some(s) = v.as_str() { + out.insert( + k.clone(), + Value::String(sanitize_sensitive_info(s).into_owned()), + ); + continue; + } + } + out.insert( + k.clone(), + sanitize_panel_api_json_for_log(v, sanitize_sensitive), + ); } Value::Object(out) } @@ -157,7 +576,7 @@ async fn panel_get_json(app_state: &AppState, url: Url) -> Result Result Result<(String, String, Option), TuliproxError> { - let params = resolve_query_params(&cfg.query_parameter.client_new, cfg.api_key.as_deref(), None)?; - let url = build_panel_url(cfg.url.as_str(), ¶ms)?; +async fn user_api_get_json(app_state: &AppState, url: Url) -> Result { + let client = app_state.http_client.load(); + let sanitized = sanitize_sensitive_info(url.as_str()); + debug_if_enabled!("panel_api user_api request {}", sanitized); + let resp = client + .get(url) + .timeout(std::time::Duration::from_secs(30)) + .send() + .await + .map_err(|e| info_err!("panel_api user_api request failed: {e}"))?; + let status = resp.status(); + let body = resp + .text() + .await + .map_err(|e| info_err!("panel_api user_api read response failed: {e}"))?; + let json: Value = serde_json::from_str(&body) + .map_err(|e| info_err!("panel_api user_api invalid json (http {status}): {e}"))?; + let sanitize_sensitive = app_state + .app_config + .config + .load() + .log + .as_ref() + .is_none_or(|l| l.sanitize_sensitive_info); + let json_for_log = sanitize_panel_api_json_for_log(&json, sanitize_sensitive); + if let Ok(json_str) = serde_json::to_string(&json_for_log) { + debug_if_enabled!( + "panel_api user_api response (http {}): {}", + format_http_status(status), + sanitize_sensitive_info(&json_str) + ); + } + Ok(json) +} + +async fn panel_client_new( + app_state: &AppState, + cfg: &PanelApiConfig, +) -> Result<(String, String, Option), TuliproxError> { + validate_client_new_params(&cfg.query_parameter.client_new)?; + let params = resolve_query_params( + &cfg.query_parameter.client_new, + cfg.api_key.as_deref(), + None, + )?; + let url = build_panel_url(cfg.url.as_ref(), ¶ms)?; let json = panel_get_json(app_state, url).await?; let Some(obj) = first_json_object(&json) else { return info_err_res!("panel_api: client_new response is not a JSON object/array"); @@ -187,21 +660,27 @@ async fn panel_client_new(app_state: &AppState, cfg: &PanelApiConfig) -> Result< return Ok((u, p, None)); } if let Some(url_str) = obj.get("url").and_then(|v| v.as_str()) { - if let Some((u, p)) = extract_username_password_from_url(url_str) { - let base = extract_base_url(url_str); + if let (Some(u), Some(p)) = get_credentials_from_url_str(url_str) { + let base = get_base_url_from_str(url_str); return Ok((u, p, base)); } } info_err_res!("panel_api: client_new response missing username/password (and no parsable url)") } -async fn panel_client_renew(app_state: &AppState, cfg: &PanelApiConfig, username: &str, password: &str) -> Result<(), TuliproxError> { +async fn panel_client_renew( + app_state: &AppState, + cfg: &PanelApiConfig, + username: &str, + password: &str, +) -> Result<(), TuliproxError> { + validate_client_renew_params(&cfg.query_parameter.client_renew)?; let params = resolve_query_params( &cfg.query_parameter.client_renew, cfg.api_key.as_deref(), Some((username, password)), )?; - let url = build_panel_url(cfg.url.as_str(), ¶ms)?; + let url = build_panel_url(cfg.url.as_ref(), ¶ms)?; let json = panel_get_json(app_state, url).await?; let Some(obj) = first_json_object(&json) else { return info_err_res!("panel_api: client_renew response is not a JSON object/array"); @@ -213,13 +692,19 @@ async fn panel_client_renew(app_state: &AppState, cfg: &PanelApiConfig, username Ok(()) } -async fn panel_client_info(app_state: &AppState, cfg: &PanelApiConfig, username: &str, password: &str) -> Result, TuliproxError> { +async fn panel_client_info_raw( + app_state: &AppState, + cfg: &PanelApiConfig, + username: &str, + password: &str, +) -> Result, TuliproxError> { + validate_client_info_params(&cfg.query_parameter.client_info)?; let params = resolve_query_params( &cfg.query_parameter.client_info, cfg.api_key.as_deref(), Some((username, password)), )?; - let url = build_panel_url(cfg.url.as_str(), ¶ms)?; + let url = build_panel_url(cfg.url.as_ref(), ¶ms)?; let json = panel_get_json(app_state, url).await?; let Some(obj) = first_json_object(&json) else { return info_err_res!("panel_api: client_info response is not a JSON object/array"); @@ -228,19 +713,225 @@ async fn panel_client_info(app_state: &AppState, cfg: &PanelApiConfig, username: if !status_ok { return info_err_res!("panel_api: client_info status=false"); } - let expire = obj.get("expire").and_then(|v| v.as_str()).unwrap_or_default().trim(); - let parsed = parse_timestamp(expire).ok().flatten(); - if parsed.is_some() { - return Ok(parsed); + let expire = obj + .get("expire") + .and_then(|v| v.as_str()) + .unwrap_or_default() + .trim() + .to_string(); + if expire.is_empty() { + Ok(None) + } else { + Ok(Some(expire)) + } +} + +async fn panel_client_info( + app_state: &AppState, + cfg: &PanelApiConfig, + username: &str, + password: &str, + time_ctx: Option<&PanelApiTimeContext>, +) -> Result, TuliproxError> { + let expire = panel_client_info_raw(app_state, cfg, username, password).await?; + Ok(expire + .as_deref() + .and_then(|value| normalize_panel_expire(value, time_ctx))) +} + +async fn fetch_root_user_api_info( + app_state: &AppState, + input: &ConfigInput, +) -> Option { + let (username, password) = extract_account_creds_from_input(input)?; + let base_url = get_base_url_from_str(input.url.as_str()).unwrap_or_else(|| input.url.clone()); + let mut url = Url::parse(base_url.as_str()).ok()?; + url.set_path("/player_api.php"); + { + let mut pairs = url.query_pairs_mut(); + pairs.append_pair("username", username.as_ref()); + pairs.append_pair("password", password.as_ref()); + pairs.append_pair("action", "account_info"); } - // Some panels return only a date ("YYYY-MM-DD") without time. Normalize to midnight. - if is_date_only_yyyy_mm_dd(expire) { - let normalized = format!("{expire} 00:00:00"); - return Ok(parse_timestamp(&normalized).ok().flatten()); - } + let json = match user_api_get_json(app_state, url).await { + Ok(json) => json, + Err(err) => { + debug_if_enabled!( + "panel_api user_api account_info failed for {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + return None; + } + }; - Ok(None) + let exp_date = json + .get("user_info") + .and_then(|v| v.get("exp_date")) + .and_then(get_i64_from_serde_value); + let server_now_ts = json + .get("server_info") + .and_then(|v| v.get("timestamp_now")) + .and_then(get_i64_from_serde_value); + let server_tz = json + .get("server_info") + .and_then(|v| v.get("timezone")) + .and_then(get_string_from_serde_value) + .and_then(|tz| tz.parse::().ok()); + + Some(UserApiAccountInfo { + exp_date, + server_now_ts, + server_tz, + }) +} + +fn resolve_panel_expire_mode( + root_expire: Option, + panel_expire: Option<&str>, + server_tz: Option, +) -> PanelApiExpireMode { + let Some(root_expire) = root_expire else { + return PanelApiExpireMode::UtcString; + }; + let Some(panel_expire) = panel_expire else { + return PanelApiExpireMode::UtcString; + }; + let utc_ts = parse_panel_expire_utc(panel_expire); + let tz_ts = server_tz.and_then(|tz| parse_panel_expire_with_tz(panel_expire, tz)); + let Some(utc_ts) = utc_ts else { + return tz_ts.map_or(PanelApiExpireMode::UtcString, |_| { + PanelApiExpireMode::ServerTzString + }); + }; + let Some(tz_ts) = tz_ts else { + return PanelApiExpireMode::UtcString; + }; + let diff_utc = (utc_ts - root_expire).abs(); + let diff_tz = (tz_ts - root_expire).abs(); + let threshold = 120_i64; + match (diff_utc <= threshold, diff_tz <= threshold) { + (true, false) => PanelApiExpireMode::UtcString, + (false, true) => PanelApiExpireMode::ServerTzString, + _ => { + if diff_tz < diff_utc { + PanelApiExpireMode::ServerTzString + } else { + PanelApiExpireMode::UtcString + } + } + } +} + +fn apply_clock_skew(now: u64, skew_secs: i64) -> u64 { + if skew_secs == 0 { + return now; + } + if skew_secs.is_negative() { + now.saturating_sub(skew_secs.unsigned_abs()) + } else { + now.saturating_add(u64::try_from(skew_secs).unwrap_or(0)) + } +} + +fn panel_api_time_cache_path(app_state: &AppState) -> PathBuf { + let paths = app_state.app_config.paths.load(); + PathBuf::from(&paths.config_path) + .join("panel-api") + .join("panel_api_time_cache.json") +} + +async fn load_panel_api_time_cache(app_state: &AppState, cache_path: &Path) -> PanelApiTimeCache { + if let Some(parent) = cache_path.parent() { + if tokio::fs::create_dir_all(parent).await.is_err() { + return PanelApiTimeCache::default(); + } + } + let _lock = app_state.app_config.file_locks.read_lock(cache_path).await; + let Ok(content) = tokio::fs::read_to_string(cache_path).await else { + return PanelApiTimeCache::default(); + }; + serde_json::from_str(&content).unwrap_or_default() +} + +async fn persist_panel_api_time_cache( + app_state: &AppState, + cache_path: &Path, + cache: &PanelApiTimeCache, +) -> Result<(), TuliproxError> { + if let Some(parent) = cache_path.parent() { + tokio::fs::create_dir_all(parent) + .await + .map_err(|e| info_err!("panel_api: failed to create cache dir: {e}"))?; + } + let content = serde_json::to_string_pretty(cache).map_err(|e| info_err!("panel_api: {e}"))?; + let _lock = app_state.app_config.file_locks.write_lock(cache_path).await; + tokio::fs::write(cache_path, content) + .await + .map_err(|e| info_err!("panel_api: failed to persist time cache: {e}"))?; + Ok(()) +} + +fn parse_cached_tz(tz: Option) -> Option { + tz.and_then(|name| name.parse::().ok()) +} + +async fn panel_account_info( + app_state: &AppState, + cfg: &PanelApiConfig, + creds: Option<(&str, &str)>, +) -> Result, TuliproxError> { + if cfg.query_parameter.account_info.is_empty() { + return Ok(None); + } + validate_account_info_params(&cfg.query_parameter.account_info)?; + let params = resolve_query_params( + &cfg.query_parameter.account_info, + cfg.api_key.as_deref(), + creds, + )?; + let url = build_panel_url(cfg.url.as_ref(), ¶ms)?; + let json = panel_get_json(app_state, url).await?; + let Some(obj) = first_json_object(&json) else { + return info_err_res!("panel_api: account_info response is not a JSON object/array"); + }; + let status_ok = obj.get("status").is_some_and(parse_boolish); + if !status_ok { + return info_err_res!("panel_api: account_info status=false"); + } + let Some(credits) = obj.get("credits").and_then(extract_stringish) else { + return info_err_res!("panel_api: account_info response missing credits"); + }; + Ok(Some(credits)) +} + +async fn panel_client_adult_content( + app_state: &AppState, + cfg: &PanelApiConfig, + creds: Option<(&str, &str)>, +) -> Result<(), TuliproxError> { + if cfg.query_parameter.client_adult_content.is_empty() { + return Ok(()); + } + validate_client_adult_content_params(&cfg.query_parameter.client_adult_content)?; + let params = resolve_query_params( + &cfg.query_parameter.client_adult_content, + cfg.api_key.as_deref(), + creds, + )?; + let url = build_panel_url(cfg.url.as_ref(), ¶ms)?; + let json = panel_get_json(app_state, url).await?; + let Some(obj) = first_json_object(&json) else { + return info_err_res!( + "panel_api: client_adult_content response is not a JSON object/array" + ); + }; + let status_ok = obj.get("status").is_some_and(parse_boolish); + if !status_ok { + return info_err_res!("panel_api: client_adult_content status=false"); + } + Ok(()) } fn extract_account_creds_from_input(input: &ConfigInput) -> Option<(String, String)> { @@ -252,44 +943,393 @@ fn extract_account_creds_from_input(input: &ConfigInput) -> Option<(String, Stri Url::parse(input.url.as_str()).ok().and_then(|u| { let (uu, pp) = get_credentials_from_url(&u); match (uu, pp) { - (Some(uu), Some(pp)) if !uu.trim().is_empty() && !pp.trim().is_empty() => Some((uu, pp)), + (Some(uu), Some(pp)) if !uu.trim().is_empty() && !pp.trim().is_empty() => { + Some((uu, pp)) + } _ => None, } }) } -fn collect_expired_accounts(input: &ConfigInput) -> Vec { - let mut out = Vec::new(); - if is_input_expired(input.exp_date) { - if let Some((u, p)) = extract_account_creds_from_input(input) { - out.push(AccountCredentials { - name: input.name.clone(), - username: u, - password: p, - exp_date: input.exp_date, - }); +fn alias_pool_limit_values( + cfg: &PanelApiConfig, +) -> ( + Option<&PanelApiAliasPoolSizeValue>, + Option<&PanelApiAliasPoolSizeValue>, +) { + let size = cfg.alias_pool.as_ref().and_then(|p| p.size.as_ref()); + let min = size.and_then(|s| s.min.as_ref()); + let max = size.and_then(|s| s.max.as_ref()); + (min, max) +} + +#[allow(dead_code)] +fn alias_pool_both_auto(cfg: &PanelApiConfig) -> bool { + let (min, max) = alias_pool_limit_values(cfg); + min.is_some_and(PanelApiAliasPoolSizeValue::is_auto) + && max.is_some_and(PanelApiAliasPoolSizeValue::is_auto) +} + +fn alias_pool_has_min(cfg: &PanelApiConfig) -> bool { + let (min, _) = alias_pool_limit_values(cfg); + min.is_some() +} + +fn resolve_alias_pool_limit_value( + value: Option<&PanelApiAliasPoolSizeValue>, + auto_value: Option, +) -> Option { + match value { + Some(PanelApiAliasPoolSizeValue::Number(v)) => Some(*v), + Some(PanelApiAliasPoolSizeValue::Auto(_)) => auto_value, + None => None, + } +} + +fn is_proxy_user_enabled(user: &ProxyUserCredentials) -> bool { + if let Some(status) = user.status { + if !matches!(status, ProxyUserStatus::Active | ProxyUserStatus::Trial) { + return false; } } - if let Some(aliases) = input.aliases.as_ref() { - for a in aliases { - if is_input_expired(a.exp_date) { - if let (Some(u), Some(p)) = (a.username.as_deref(), a.password.as_deref()) { - if !u.trim().is_empty() && !p.trim().is_empty() { - out.push(AccountCredentials { - name: a.name.clone(), - username: u.to_string(), - password: p.to_string(), - exp_date: a.exp_date, - }); - } + !is_input_expired(user.exp_date) +} + +fn find_input_target_names(app_state: &AppState, input_name: &Arc) -> Vec { + let sources = app_state.app_config.sources.load(); + for source in &sources.sources { + if source.inputs.iter().any(|name| name == input_name) { + return source.targets.iter().map(|t| t.name.clone()).collect(); + } + } + vec![] +} + +fn count_enabled_proxy_users(app_state: &AppState, input_name: &Arc) -> usize { + let api_proxy_guard = app_state.app_config.api_proxy.load(); + let Some(api_proxy) = api_proxy_guard.as_ref() else { + return 0; + }; + let target_names = find_input_target_names(app_state, input_name); + if target_names.is_empty() { + return 0; + } + api_proxy + .user + .iter() + .filter(|target_user| { + target_names + .iter() + .any(|target| target.eq_ignore_ascii_case(&target_user.target)) + }) + .map(|target_user| { + target_user + .credentials + .iter() + .filter(|cred| is_proxy_user_enabled(cred)) + .count() + }) + .sum() +} + +fn resolve_alias_pool_auto_value(app_state: &AppState, input_name: &Arc) -> u16 { + let enabled_users = count_enabled_proxy_users(app_state, input_name); + u16::try_from(enabled_users).unwrap_or(u16::MAX) +} + +#[allow(dead_code)] +pub(crate) fn target_has_alias_pool_min(app_state: &AppState, target_name: &str) -> bool { + let sources = app_state.app_config.sources.load(); + for source in &sources.sources { + let target_match = source + .targets + .iter() + .any(|target| target.name.eq_ignore_ascii_case(target_name)); + if !target_match { + continue; + } + for input_name in &source.inputs { + let Some(input) = sources.get_input_by_name(input_name) else { + continue; + }; + if let Some(panel_cfg) = input.panel_api.as_ref() { + if !panel_cfg.enabled { + continue; + } + if alias_pool_has_min(panel_cfg) { + return true; + } + } + } + } + false +} + +fn resolve_alias_pool_limits( + app_state: &AppState, + input_name: &Arc, + cfg: &PanelApiConfig, +) -> Result<(Option, Option), TuliproxError> { + let (min_val, max_val) = alias_pool_limit_values(cfg); + if min_val.is_none() && max_val.is_none() { + return Ok((None, None)); + } + let min_auto = min_val.is_some_and(PanelApiAliasPoolSizeValue::is_auto); + let auto_value = min_auto.then(|| resolve_alias_pool_auto_value(app_state, input_name)); + let min = resolve_alias_pool_limit_value(min_val, auto_value); + let max = match max_val { + Some(PanelApiAliasPoolSizeValue::Number(value)) => Some(*value), + Some(PanelApiAliasPoolSizeValue::Auto(_)) | None => None, + }; + if let (Some(min), Some(max)) = (min, max) { + if min > max { + return info_err_res!( + "panel_api.alias_pool.size.min must be <= panel_api.alias_pool.size.max" + ); + } + } + Ok((min, max)) +} + +#[allow(dead_code)] +fn resolve_alias_pool_min( + app_state: &AppState, + input_name: &Arc, + cfg: &PanelApiConfig, +) -> Option { + let (min_val, _) = alias_pool_limit_values(cfg); + let min_val = min_val?; + let auto_value = min_val + .is_auto() + .then(|| resolve_alias_pool_auto_value(app_state, input_name)); + resolve_alias_pool_limit_value(Some(min_val), auto_value) +} + +fn alias_pool_remove_expired(cfg: &PanelApiConfig) -> bool { + cfg.alias_pool.as_ref().is_some_and(|p| p.remove_expired) +} + +fn collect_accounts(input: &ConfigInput) -> Vec { + let mut out = Vec::new(); + if let Some((u, p)) = extract_account_creds_from_input(input) { + out.push(AccountCredentials { + name: input.name.clone(), + username: u, + password: p, + exp_date: input.exp_date, + }); + } + if let Some(aliases) = input.aliases.as_ref() { + for a in aliases { + if let (Some(u), Some(p)) = (a.username.as_deref(), a.password.as_deref()) { + if !u.trim().is_empty() && !p.trim().is_empty() { + out.push(AccountCredentials { + name: a.name.clone(), + username: u.to_string(), + password: p.to_string(), + exp_date: a.exp_date, + }); } } } } - out.sort_by_key(|a| a.exp_date.unwrap_or(i64::MAX)); out } +fn compare_alias_exp_date(a: &ConfigInputAliasDto, b: &ConfigInputAliasDto) -> Ordering { + let a_ts = a.exp_date.unwrap_or(i64::MAX); + let b_ts = b.exp_date.unwrap_or(i64::MAX); + a_ts.cmp(&b_ts).then_with(|| a.name.cmp(&b.name)) +} + +fn compare_alias_exp_date_config(a: &ConfigInputAlias, b: &ConfigInputAlias) -> Ordering { + let a_ts = a.exp_date.unwrap_or(i64::MAX); + let b_ts = b.exp_date.unwrap_or(i64::MAX); + a_ts.cmp(&b_ts).then_with(|| a.name.cmp(&b.name)) +} + +fn compare_account_exp_date(a: &AccountCredentials, b: &AccountCredentials) -> Ordering { + let a_ts = a.exp_date.unwrap_or(i64::MAX); + let b_ts = b.exp_date.unwrap_or(i64::MAX); + a_ts.cmp(&b_ts).then_with(|| a.name.cmp(&b.name)) +} + +fn aliases_need_sort_config(aliases: &[ConfigInputAlias]) -> bool { + if aliases.len() < 2 { + return false; + } + aliases + .windows(2) + .any(|pair| compare_alias_exp_date_config(&pair[0], &pair[1]) == Ordering::Greater) +} + +fn sort_aliases_by_exp_date(aliases: &mut Vec) -> bool { + if aliases.len() < 2 { + return false; + } + let mut sorted = aliases.clone(); + sorted.sort_by(compare_alias_exp_date); + if &sorted == aliases { + false + } else { + *aliases = sorted; + true + } +} + +fn sort_account_aliases_keep_root_first(accounts: &mut Vec, root_name: &str) { + let root = accounts.iter().find(|acct| acct.name.as_ref() == root_name).cloned(); + let mut aliases: Vec = accounts + .iter() + .filter(|acct| acct.name.as_ref() != root_name) + .cloned() + .collect(); + aliases.sort_by(compare_account_exp_date); + accounts.clear(); + if let Some(root) = root { + accounts.push(root); + } + accounts.extend(aliases); +} + +fn is_account_valid(exp_date: Option) -> bool { + exp_date.is_some() && !is_input_expired(exp_date) +} + +fn count_valid_accounts(accounts: &[AccountCredentials]) -> usize { + accounts + .iter() + .filter(|acct| is_account_valid(acct.exp_date)) + .count() +} + +fn root_counts_towards_pool(accounts: &[AccountCredentials], input_name: &Arc) -> bool { + accounts + .iter() + .find(|acct| &acct.name == input_name) + .is_some_and(|acct| is_account_valid(acct.exp_date)) +} + +fn count_valid_accounts_at(accounts: &[AccountCredentials], now: u64) -> usize { + accounts + .iter() + .filter(|acct| acct.exp_date.is_some() && !is_input_expired_at(acct.exp_date, now)) + .count() +} + +fn count_valid_alias_accounts_at( + accounts: &[AccountCredentials], + input_name: &Arc, + now: u64, +) -> usize { + accounts + .iter() + .filter(|acct| { + &acct.name != input_name + && acct.exp_date.is_some() + && !is_input_expired_at(acct.exp_date, now) + }) + .count() +} + +fn root_counts_towards_pool_at( + accounts: &[AccountCredentials], + input_name: &Arc, + now: u64, +) -> bool { + accounts + .iter() + .find(|acct| &acct.name == input_name) + .is_some_and(|acct| acct.exp_date.is_some() && !is_input_expired_at(acct.exp_date, now)) +} + +fn should_reload_sources_after_internal_write(app_state: &AppState) -> bool { + !app_state.app_config.config.load().config_hot_reload +} + +pub(crate) fn is_alias_pool_max_reached(app_state: &AppState, input: &ConfigInput) -> bool { + let Some(panel_cfg) = input.panel_api.as_ref() else { + return false; + }; + if !panel_cfg.enabled { + return false; + } + if panel_cfg.url.trim().is_empty() { + return false; + } + if validate_panel_api_config(panel_cfg).is_err() { + return false; + } + let Ok((_, max_pool)) = resolve_alias_pool_limits(app_state, &input.name, panel_cfg) else { + return false; + }; + if let Some(max_pool) = max_pool { + let valid_count = count_valid_accounts(&collect_accounts(input)); + if valid_count >= max_pool as usize { + debug_if_enabled!( + "panel_api: alias_pool.size.max reached for input {} (valid_accounts={}, max={})", + sanitize_sensitive_info(&input.name), + valid_count, + max_pool + ); + return true; + } + } + false +} + +pub(crate) fn can_provision_on_exhausted(app_state: &AppState, input: &ConfigInput) -> bool { + let Some(panel_cfg) = input.panel_api.as_ref() else { + return false; + }; + if !panel_cfg.enabled { + return false; + } + if panel_cfg.url.trim().is_empty() { + return false; + } + if let Err(err) = validate_panel_api_config(panel_cfg) { + debug_if_enabled!( + "panel_api config invalid: {}", + sanitize_sensitive_info(err.to_string().as_str()) + ); + return false; + } + if is_alias_pool_max_reached(app_state, input) { + return false; + } + true +} + +#[allow(dead_code)] +pub(crate) fn find_input_by_name( + app_state: &AppState, + input_name: &Arc, +) -> Option> { + let sources = app_state.app_config.sources.load(); + sources.get_input_by_name(input_name).map(Arc::clone) +} + +pub(crate) fn find_input_by_provider_name( + app_state: &AppState, + provider_name: &str, +) -> Option> { + let sources = app_state.app_config.sources.load(); + for input in &sources.inputs { + if &*input.name == provider_name { + return Some(Arc::clone(input)); + } + if input + .aliases + .as_ref() + .is_some_and(|aliases| aliases.iter().any(|alias| &*alias.name == provider_name)) + { + return Some(Arc::clone(input)); + } + } + None +} + #[allow(clippy::too_many_arguments)] async fn patch_source_yml_add_alias( app_state: &Arc, @@ -306,10 +1346,16 @@ async fn patch_source_yml_add_alias( Err(e) => return info_err_res!("panel_api: failed to read source file: {e}"), }; - let Some(input) = sources.inputs.iter_mut().find(|i| &i.name == input_name) else { + let Some(input) = sources.inputs.iter_mut().find(|i| i.name == *input_name) else { return info_err_res!("panel_api: could not find input '{input_name}' in source.yml"); }; + let aliases = input.aliases.get_or_insert_with(Vec::new); + let next_index = aliases.iter().map(|a| a.id).max().unwrap_or(0); + if next_index == u16::MAX { + return info_err_res!("panel_api: cannot add alias for '{input_name}': alias id overflow"); + } + let alias = ConfigInputAliasDto { id: 0, name: Arc::clone(alias_name), @@ -317,21 +1363,332 @@ async fn patch_source_yml_add_alias( username: Some(username.to_string()), password: Some(password.to_string()), priority: 0, - max_connections: 0, + max_connections: 1, exp_date, }; - input.upsert_alias(alias)?; + input.upsert_alias(alias)?; persist_source_config(app_state, Some(source_file_path), sources).await?; Ok(()) } +#[derive(Debug, Clone)] +enum SourcesYmlPatch { + UpdatePanelApiCredits { + input_name: Arc, + credits: String, + }, + SortAliases { + input_name: Arc, + }, + UpdateExpDate { + input_name: Arc, + account_name: Arc, + exp_date: i64, + }, + UpdateRootCredentials { + input_name: Arc, + username: String, + password: String, + exp_date: Option, + }, + UpdateAliasCredentials { + input_name: Arc, + alias_name: Arc, + username: String, + password: String, + exp_date: Option, + }, + AddAlias { + input_name: Arc, + alias_name: Arc, + base_url: String, + username: String, + password: String, + exp_date: Option, + }, + RemoveExpiredAliases { + input_name: Arc, + }, +} + +fn update_url_query_credentials_if_present(url: &mut String, username: &str, password: &str) { + let Ok(mut parsed) = Url::parse(url.as_str()) else { + return; + }; + let mut pairs: Vec<(String, String)> = parsed + .query_pairs() + .map(|(k, v)| (k.to_string(), v.to_string())) + .collect(); + let mut has_user = false; + let mut has_pass = false; + for (k, v) in &mut pairs { + if k.eq_ignore_ascii_case("username") { + *v = username.to_string(); + has_user = true; + } else if k.eq_ignore_ascii_case("password") { + *v = password.to_string(); + has_pass = true; + } + } + if has_user || has_pass { + if !has_user { + pairs.push(("username".to_string(), username.to_string())); + } + if !has_pass { + pairs.push(("password".to_string(), password.to_string())); + } + parsed.query_pairs_mut().clear(); + { + let mut qp = parsed.query_pairs_mut(); + for (k, v) in pairs { + qp.append_pair(k.as_str(), v.as_str()); + } + } + *url = parsed.to_string(); + } +} + +#[allow(clippy::too_many_lines)] +fn apply_sources_yml_patches( + doc: &mut SourcesConfigDto, + patches: &[SourcesYmlPatch], +) -> Result { + if patches.is_empty() { + return Ok(false); + } + + let mut changed = false; + let mut inputs_by_name: HashMap, usize> = HashMap::with_capacity(doc.inputs.len()); + let mut alias_indices: Vec, usize>> = Vec::with_capacity(doc.inputs.len()); + for (idx, input) in doc.inputs.iter().enumerate() { + inputs_by_name.insert(input.name.clone(), idx); + let map = input + .aliases + .as_ref() + .map(|aliases| { + aliases + .iter() + .enumerate() + .map(|(idx, alias)| (alias.name.clone(), idx)) + .collect::, usize>>() + }) + .unwrap_or_default(); + alias_indices.push(map); + } + + for patch in patches { + match patch { + SourcesYmlPatch::UpdatePanelApiCredits { + input_name, + credits, + } => { + let idx = *inputs_by_name.get(input_name.as_ref()).ok_or_else(|| { + info_err!("panel_api: could not find input '{input_name}' in source.yml") + })?; + let Some(panel_api) = doc.inputs[idx].panel_api.as_mut() else { + return Err(info_err!( + "panel_api: could not find panel_api for input '{input_name}' in source.yml" + )); + }; + if panel_api.credits.as_deref().map(str::trim) != Some(credits.trim()) { + panel_api.credits = Some(credits.trim().to_string()); + changed = true; + } + } + SourcesYmlPatch::SortAliases { input_name } => { + let idx = *inputs_by_name.get(input_name.as_ref()).ok_or_else(|| { + info_err!("panel_api: could not find input '{input_name}' in source.yml") + })?; + let Some(aliases) = doc.inputs[idx].aliases.as_mut() else { + continue; + }; + if sort_aliases_by_exp_date(aliases) { + alias_indices[idx] = aliases + .iter() + .enumerate() + .map(|(idx, alias)| (alias.name.clone(), idx)) + .collect(); + changed = true; + } + } + SourcesYmlPatch::UpdateExpDate { + input_name, + account_name, + exp_date, + } => { + let idx = *inputs_by_name.get(input_name.as_ref()).ok_or_else(|| { + info_err!("panel_api: could not find input '{input_name}' in source.yml") + })?; + if account_name == input_name { + if doc.inputs[idx].exp_date != Some(*exp_date) { + doc.inputs[idx].exp_date = Some(*exp_date); + doc.inputs[idx].enabled = true; + doc.inputs[idx].max_connections = 1; + changed = true; + } + continue; + } + let Some(alias_idx) = alias_indices[idx].get(account_name).copied() else { + return Err(info_err!( + "panel_api: could not find alias '{account_name}' under input '{input_name}' in source.yml" + )); + }; + let aliases = doc.inputs[idx] + .aliases + .as_mut() + .ok_or_else(|| info_err!("panel_api: input '{input_name}' has no aliases"))?; + if aliases[alias_idx].exp_date != Some(*exp_date) { + aliases[alias_idx].exp_date = Some(*exp_date); + aliases[alias_idx].max_connections = 1; + changed = true; + } + } + SourcesYmlPatch::UpdateRootCredentials { + input_name, + username, + password, + exp_date, + } => { + let idx = *inputs_by_name.get(input_name.as_ref()).ok_or_else(|| { + info_err!("panel_api: could not find input '{input_name}' in source.yml") + })?; + let input = &mut doc.inputs[idx]; + let exp_date_changed = exp_date.is_some() && input.exp_date != *exp_date; + if input.username.as_deref() != Some(username.as_str()) + || input.password.as_deref() != Some(password.as_str()) + || exp_date_changed + { + input.username = Some(username.clone()); + input.password = Some(password.clone()); + input.enabled = true; + input.max_connections = 1; + if let Some(exp_date) = *exp_date { + input.exp_date = Some(exp_date); + } + update_url_query_credentials_if_present(&mut input.url, username, password); + changed = true; + } + } + SourcesYmlPatch::UpdateAliasCredentials { + input_name, + alias_name, + username, + password, + exp_date, + } => { + let idx = *inputs_by_name.get(input_name.as_ref()).ok_or_else(|| { + info_err!("panel_api: could not find input '{input_name}' in source.yml") + })?; + let Some(alias_idx) = alias_indices[idx].get(alias_name).copied() else { + return Err(info_err!( + "panel_api: could not find alias '{alias_name}' under input '{input_name}' in source.yml" + )); + }; + let aliases = doc.inputs[idx] + .aliases + .as_mut() + .ok_or_else(|| info_err!("panel_api: input '{input_name}' has no aliases"))?; + let alias = &mut aliases[alias_idx]; + let exp_date_changed = exp_date.is_some() && alias.exp_date != *exp_date; + if alias.username.as_deref() != Some(username.as_str()) + || alias.password.as_deref() != Some(password.as_str()) + || exp_date_changed + { + alias.username = Some(username.clone()); + alias.password = Some(password.clone()); + alias.max_connections = 1; + if let Some(exp_date) = *exp_date { + alias.exp_date = Some(exp_date); + } + update_url_query_credentials_if_present(&mut alias.url, username, password); + changed = true; + } + } + SourcesYmlPatch::AddAlias { + input_name, + alias_name, + base_url, + username, + password, + exp_date, + } => { + let idx = *inputs_by_name.get(input_name).ok_or_else(|| { + info_err!("panel_api: could not find input '{input_name}' in source.yml") + })?; + let input_type = doc.inputs[idx].input_type; + let aliases = doc.inputs[idx].aliases.get_or_insert_with(Vec::new); + + let next_index = u16::try_from(aliases.len()).map_err(|_| { + info_err!("panel_api: cannot add alias for '{input_name}': alias id overflow") + })?; + + let mut alias = ConfigInputAliasDto { + id: 0, + name: Arc::clone(alias_name), + url: base_url.clone(), + username: Some(username.clone()), + password: Some(password.clone()), + priority: 0, + max_connections: 1, + exp_date: *exp_date, + }; + alias.prepare(next_index, &input_type)?; + aliases.push(alias); + + alias_indices[idx].insert(Arc::clone(alias_name), aliases.len().saturating_sub(1)); + changed = true; + } + SourcesYmlPatch::RemoveExpiredAliases { input_name } => { + let idx = *inputs_by_name.get(input_name).ok_or_else(|| { + info_err!("panel_api: could not find input '{input_name}' in source.yml") + })?; + let Some(aliases) = doc.inputs[idx].aliases.as_mut() else { + continue; + }; + let before = aliases.len(); + aliases.retain(|a| !is_input_expired(a.exp_date)); + if aliases.len() != before { + alias_indices[idx] = aliases + .iter() + .enumerate() + .map(|(idx, alias)| (alias.name.clone(), idx)) + .collect(); + changed = true; + } + } + } + } + + Ok(changed) +} + +async fn persist_sources_yml_with_patches( + app_state: &Arc, + sources_path: &Path, + patches: &[SourcesYmlPatch], +) -> Result { + if patches.is_empty() { + return Ok(false); + } + let mut sources = read_sources_file_from_path(sources_path, false, false, None) + .map_err(|e| info_err!("panel_api: failed to read source file: {e}"))?; + + let changed = apply_sources_yml_patches(&mut sources, patches)?; + if !changed { + return Ok(false); + } + + persist_source_config(app_state, Some(sources_path), sources).await?; + Ok(true) +} + async fn patch_source_yml_update_exp_date( app_state: &Arc, source_file_path: &Path, input_name: &Arc, - account_name: &str, + account_name: &Arc, exp_date: i64, ) -> Result<(), TuliproxError> { let mut sources = match read_sources_file_from_path(source_file_path, false, false, None) { @@ -339,140 +1696,54 @@ async fn patch_source_yml_update_exp_date( Err(e) => return info_err_res!("panel_api: failed to read source file: {e}"), }; - let Some(input) = sources.inputs.iter_mut().find(|i| &i.name == input_name) else { + let Some(input) = sources.inputs.iter_mut().find(|i| i.name == *input_name) else { return info_err_res!("panel_api: could not find input '{input_name}' in source.yml"); }; - if input.update_account_expiration_date(input_name, account_name, exp_date).is_err() { - return info_err_res!("panel_api: could not find account '{account_name}' under input '{input_name}' in source.yml"); + if account_name == input_name { + input.exp_date = Some(exp_date); + input.enabled = true; + input.max_connections = 1; + } else if let Some(aliases) = input.aliases.as_mut() { + let Some(alias) = aliases.iter_mut().find(|a| &a.name == account_name) else { + return info_err_res!( + "panel_api: could not find alias '{account_name}' under input '{input_name}' in source.yml" + ); + }; + alias.exp_date = Some(exp_date); + alias.max_connections = 1; + } else { + return info_err_res!( + "panel_api: input '{input_name}' has no aliases; cannot update exp_date for '{account_name}'" + ); } persist_source_config(app_state, Some(source_file_path), sources).await?; Ok(()) } -async fn patch_batch_csv_append( - csv_path: &Path, - batch_type: InputType, - alias_name: &str, - base_url: &str, - username: &str, - password: &str, - exp_date: Option, -) -> Result<(), TuliproxError> { - let raw = tokio::fs::read_to_string(csv_path).await.unwrap_or_default(); - let mut lines: Vec = raw.lines().map(ToString::to_string).collect(); - let header_line_idx = lines.iter().position(|l| l.trim_start().starts_with('#')); - let header = header_line_idx - .and_then(|idx| lines.get(idx).map(|s| s.trim_start_matches('#').trim().to_string())) - .unwrap_or_else(|| match batch_type { - InputType::XtreamBatch => "name;username;password;url;max_connections;priority;exp_date".to_string(), - _ => "url;max_connections;priority;name;username;password;exp_date".to_string(), - }); - let cols: Vec = header.split(';').map(|s| s.trim().to_lowercase()).collect(); - if header_line_idx.is_none() { - lines.insert(0, format!("#{header}")); - } - let mut record: Vec = vec![String::new(); cols.len()]; - for (i, c) in cols.iter().enumerate() { - record[i] = match c.as_str() { - "name" => alias_name.to_string(), - "username" => username.to_string(), - "password" => password.to_string(), - "url" => { - if batch_type == InputType::M3uBatch { - format!( - "{}/get.php?username={}&password={}&type=m3u_plus", - trim_last_slash(base_url), - username, - password - ) - } else { - base_url.to_string() - } - } - "max_connections" => "1".to_string(), - "priority" => "0".to_string(), - "exp_date" => exp_date.map_or(String::new(), |ts| ts.to_string()), - _ => String::new(), - }; - } - lines.push(record.join(";")); - tokio::fs::write(csv_path, lines.join("\n") + "\n") - .await - .map_err(|e| info_err!("panel_api: failed to write csv: {e}"))?; - Ok(()) -} - -async fn patch_batch_csv_update_exp_date( - csv_path: &Path, - account_name: &str, - username: &str, - password: &str, - exp_date: i64, -) -> Result<(), TuliproxError> { - let raw = tokio::fs::read_to_string(csv_path) - .await - .map_err(|e| info_err!("panel_api: failed to read csv: {e}"))?; - let mut lines: Vec = raw.lines().map(ToString::to_string).collect(); - let header_line_idx = lines.iter().position(|l| l.trim_start().starts_with('#')); - let Some(header_idx) = header_line_idx else { - return info_err_res!("panel_api: csv missing header line"); - }; - let header = lines[header_idx].trim_start_matches('#').trim(); - let cols: Vec = header.split(';').map(|s| s.trim().to_lowercase()).collect(); - let exp_idx = cols.iter().position(|c| c == "exp_date"); - let name_idx = cols.iter().position(|c| c == "name"); - let user_idx = cols.iter().position(|c| c == "username"); - let pass_idx = cols.iter().position(|c| c == "password"); - let url_idx = cols.iter().position(|c| c == "url"); - let Some(exp_idx) = exp_idx else { - debug!("panel_api: csv has no exp_date column; skipping exp_date persistence"); - return Ok(()); - }; - - for i in (header_idx + 1)..lines.len() { - let line = lines[i].trim(); - if line.is_empty() || line.starts_with('#') { - continue; - } - let mut fields: Vec = line.split(';').map(ToString::to_string).collect(); - fields.resize(cols.len(), String::new()); - - let mut matches = false; - if let Some(n_idx) = name_idx { - if fields.get(n_idx).map(|s| s.trim()) == Some(account_name) { - matches = true; - } - } - if !matches { - if let (Some(u_idx), Some(p_idx)) = (user_idx, pass_idx) { - matches = fields.get(u_idx).map(|s| s.trim()) == Some(username) - && fields.get(p_idx).map(|s| s.trim()) == Some(password); - } else if let Some(u_idx) = url_idx { - if let Some(url_str) = fields.get(u_idx) { - if let Some((u, p)) = extract_username_password_from_url(url_str) { - matches = u == username && p == password; - } - } - } - } - if matches { - fields[exp_idx] = exp_date.to_string(); - lines[i] = fields.join(";"); - tokio::fs::write(csv_path, lines.join("\n") + "\n") - .await - .map_err(|e| info_err!("panel_api: failed to write csv: {e}"))?; - return Ok(()); - } - } - warn!("panel_api: could not find batch csv row for account {account_name}"); - Ok(()) -} - const MAX_ALIAS_NAME_ATTEMPTS: usize = 1000; -fn derive_unique_alias_name(existing: &HashSet<&str>, input_name: &Arc, username: &str) -> String { +fn derive_unique_alias_name(existing: &[Arc], input_name: &Arc, username: &str) -> Arc { + let base: Arc = concat_string!(input_name, "-", username).intern(); + if !existing.contains(&base) { + return base; + } + for i in 2..MAX_ALIAS_NAME_ATTEMPTS { + let cand = concat_string!(&*base, "-", &i.to_string()).intern(); + if !existing.contains(&cand) { + return cand; + } + } + warn!("derive_unique_alias_name: exhausted {MAX_ALIAS_NAME_ATTEMPTS} attempts for base '{base}'; returning potentially duplicate name"); + base +} + +fn derive_unique_alias_name_set( + existing: &HashSet>, + input_name: &Arc, + username: &str, +) -> String { let base = format!("{input_name}-{username}"); if !existing.contains(base.as_str()) { return base; @@ -483,47 +1754,162 @@ fn derive_unique_alias_name(existing: &HashSet<&str>, input_name: &Arc, use return cand; } } - warn!("derive_unique_alias_name: exhausted {MAX_ALIAS_NAME_ATTEMPTS} attempts for base '{base}'; returning potentially duplicate name"); + warn!( + "derive_unique_alias_name_set: exhausted {MAX_ALIAS_NAME_ATTEMPTS} attempts for base '{base}'; returning potentially duplicate name" + ); base } +#[derive(Debug, Clone)] +pub(crate) enum PanelApiProvisionOutcome { + Renewed { username: String, password: String }, + Created { username: String, password: String }, +} + +impl PanelApiProvisionOutcome { + pub(crate) fn credentials(&self) -> (&str, &str) { + match self { + Self::Renewed { username, password } | Self::Created { username, password } => { + (username.as_str(), password.as_str()) + } + } + } + + pub(crate) fn kind_label(&self) -> &'static str { + match self { + Self::Renewed { .. } => "client_renew", + Self::Created { .. } => "client_new", + } + } +} + +#[allow(clippy::too_many_lines)] async fn try_renew_expired_account( app_state: &Arc, input: &ConfigInput, panel_cfg: &PanelApiConfig, is_batch: bool, sources_path: &Path, -) -> bool { - let expired = collect_expired_accounts(input); - for acct in &expired { - match panel_client_renew(app_state, panel_cfg, acct.username.as_str(), acct.password.as_str()).await { + treat_missing_exp_date_as_expired: bool, + optional: PanelApiOptionalFlags, +) -> Option { + if !optional.client_renew { + return None; + } + let adult_enabled = optional.adult_content; + let mut candidates = collect_accounts(input); + for acct in &mut candidates { + if treat_missing_exp_date_as_expired && acct.exp_date.is_none() { + acct.exp_date = panel_client_info( + app_state, + panel_cfg, + acct.username.as_str(), + acct.password.as_str(), + None, + ) + .await + .ok() + .flatten(); + } + } + candidates.sort_by_key(|a| a.exp_date.unwrap_or(i64::MAX)); + + for acct in &candidates { + // Only attempt renew/new when the account is *known* to be expired. + // If exp_date is missing (even after an optional client_info refresh), we skip renewal. + let expired = is_input_expired(acct.exp_date); + if !expired { + continue; + } + match panel_client_renew( + app_state, + panel_cfg, + acct.username.as_str(), + acct.password.as_str(), + ) + .await + { Ok(()) => { - let refreshed_exp = panel_client_info(app_state, panel_cfg, acct.username.as_str(), acct.password.as_str()) + if adult_enabled { + if let Err(err) = panel_client_adult_content( + app_state, + panel_cfg, + Some((acct.username.as_str(), acct.password.as_str())), + ) .await - .ok() - .flatten(); + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&acct.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + let refreshed_exp = panel_client_info( + app_state, + panel_cfg, + acct.username.as_str(), + acct.password.as_str(), + None, + ) + .await + .ok() + .flatten(); if let Some(new_exp) = refreshed_exp.or(acct.exp_date) { if is_batch { let batch_url = input.t_batch_url.as_deref().unwrap_or_default(); if let Ok(csv_path) = get_csv_file_path(batch_url) { - let _csv_lock = app_state.app_config.file_locks.write_lock(&csv_path).await; - if let Err(err) = patch_batch_csv_update_exp_date(&csv_path, &acct.name, &acct.username, &acct.password, new_exp).await { - debug_if_enabled!("panel_api failed to persist renew exp_date to csv: {}", err); + let _csv_lock = + app_state.app_config.file_locks.write_lock(&csv_path).await; + if let Err(err) = csv_patch_batch_update_exp_date( + input.input_type, + &csv_path, + &acct.name, + &acct.username, + &acct.password, + new_exp, + ) + .await + { + debug_if_enabled!( + "panel_api failed to persist renew exp_date to csv: {}", + err + ); } } } else { - let _src_lock = app_state.app_config.file_locks.write_lock(sources_path).await; - if let Err(err) = patch_source_yml_update_exp_date(app_state, sources_path, &input.name, &acct.name, new_exp).await { - debug_if_enabled!("panel_api failed to persist renew exp_date to source.yml: {}", err); + let _src_lock = app_state + .app_config + .file_locks + .write_lock(sources_path) + .await; + if let Err(err) = patch_source_yml_update_exp_date( + app_state, + sources_path, + &input.name, + &acct.name, + new_exp, + ) + .await + { + debug_if_enabled!( + "panel_api failed to persist renew exp_date to source.yml: {}", + err + ); } } } - if let Err(err) = ConfigFile::load_sources(app_state).await { - debug_if_enabled!("panel_api reload sources failed: {}", err); + if should_reload_sources_after_internal_write(app_state.as_ref()) { + if let Err(err) = ConfigFile::load_sources(app_state).await { + debug_if_enabled!("panel_api reload sources failed: {}", err); + } } - return true; + return Some(PanelApiProvisionOutcome::Renewed { + username: acct.username.clone(), + password: acct.password.clone(), + }); } Err(err) => { debug_if_enabled!( @@ -534,29 +1920,48 @@ async fn try_renew_expired_account( } } } - false + None } +#[allow(clippy::too_many_lines)] async fn try_create_new_account( app_state: &Arc, input: &ConfigInput, panel_cfg: &PanelApiConfig, is_batch: bool, sources_path: &Path, -) -> bool { + optional: PanelApiOptionalFlags, +) -> Option { + if !optional.client_new { + return None; + } + let adult_enabled = optional.adult_content; match panel_client_new(app_state, panel_cfg).await { Ok((username, password, base_url_from_resp)) => { let base_url = base_url_from_resp.unwrap_or_else(|| input.url.clone()); - let base_url = extract_base_url(base_url.as_str()).unwrap_or_else(|| base_url.clone()); + let base_url = + get_base_url_from_str(base_url.as_str()).unwrap_or_else(|| base_url.clone()); - let mut existing_names: HashSet<&str> = HashSet::new(); - existing_names.insert(&*input.name); + let mut existing_names: Vec> = vec![input.name.clone()]; if let Some(aliases) = input.aliases.as_ref() { - existing_names.extend(aliases.iter().map(|a| &*a.name)); + existing_names.extend(aliases.iter().map(|a| a.name.clone())); } - let alias_name = derive_unique_alias_name(&existing_names, &input.name, &username).intern(); + let alias_name = derive_unique_alias_name(&existing_names, &input.name, &username); - let exp_date = panel_client_info(app_state, panel_cfg, &username, &password) + if adult_enabled { + if let Err(err) = + panel_client_adult_content(app_state, panel_cfg, Some((&username, &password))) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&alias_name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + + let exp_date = panel_client_info(app_state, panel_cfg, &username, &password, None) .await .ok() .flatten(); @@ -571,11 +1976,19 @@ async fn try_create_new_account( InputType::M3uBatch }; let _csv_lock = app_state.app_config.file_locks.write_lock(&csv_path).await; - if let Err(err) = - patch_batch_csv_append(&csv_path, batch_type, &alias_name, &base_url, &username, &password, exp_date).await + if let Err(err) = csv_patch_batch_append( + &csv_path, + batch_type, + &alias_name, + &base_url, + &username, + &password, + exp_date, + ) + .await { warn!("panel_api failed to append new account to csv: {err}"); - return false; + return None; } } Err(err) => { @@ -584,45 +1997,74 @@ async fn try_create_new_account( sanitize_sensitive_info(batch_url), err ); - return false; + return None; } } } else { - let _src_lock = app_state.app_config.file_locks.write_lock(sources_path).await; - if let Err(err) = - patch_source_yml_add_alias(app_state, sources_path, &input.name, &alias_name, &base_url, &username, &password, exp_date).await + let _src_lock = app_state + .app_config + .file_locks + .write_lock(sources_path) + .await; + if let Err(err) = patch_source_yml_add_alias( + app_state, + sources_path, + &input.name, + &alias_name, + &base_url, + &username, + &password, + exp_date, + ) + .await { warn!("panel_api failed to persist new alias to source.yml: {err}"); - return false; + return None; } } - if let Err(err) = ConfigFile::load_sources(app_state).await { - error!("panel_api reload sources failed: {err}"); - return false; + if should_reload_sources_after_internal_write(app_state.as_ref()) { + if let Err(err) = ConfigFile::load_sources(app_state).await { + error!("panel_api reload sources failed: {err}"); + return None; + } } - true + Some(PanelApiProvisionOutcome::Created { username, password }) } Err(err) => { - debug_if_enabled!("panel_api client_new failed: {}", sanitize_sensitive_info(err.to_string().as_str())); - false + debug_if_enabled!( + "panel_api client_new failed: {}", + sanitize_sensitive_info(err.to_string().as_str()) + ); + None } } } -pub async fn try_provision_account_on_exhausted(app_state: &Arc, input: &ConfigInput) -> bool { +pub async fn try_provision_account_on_exhausted( + app_state: &Arc, + input: &ConfigInput, +) -> Option { let Some(panel_cfg) = input.panel_api.as_ref() else { - debug_if_enabled!("panel_api: skipped (no panel_api config) for input {}", sanitize_sensitive_info(&input.name)); - return false; + debug_if_enabled!( + "panel_api: skipped (no panel_api config) for input {}", + sanitize_sensitive_info(&input.name) + ); + return None; }; if !panel_cfg.enabled { - debug_if_enabled!("panel_api: skipped (panel_api.enabled false) for input {}", sanitize_sensitive_info(&input.name)); - return false; + debug_if_enabled!( + "panel_api: skipped (panel_api.enabled false) for input {}", + sanitize_sensitive_info(&input.name) + ); + return None; } - if panel_cfg.url.trim().is_empty() { - debug_if_enabled!("panel_api: skipped (panel_api.url empty) for input {}", sanitize_sensitive_info(&input.name)); - return false; + debug_if_enabled!( + "panel_api: skipped (panel_api.url empty) for input {}", + sanitize_sensitive_info(&input.name) + ); + return None; } let _input_lock = app_state @@ -631,29 +2073,1581 @@ pub async fn try_provision_account_on_exhausted(app_state: &Arc, input .write_lock_str(format!("panel_api:{}", input.name).as_str()) .await; + if let Err(err) = validate_panel_api_config(panel_cfg) { + debug_if_enabled!( + "panel_api config invalid: {}", + sanitize_sensitive_info(err.to_string().as_str()) + ); + return None; + } + if is_alias_pool_max_reached(app_state, input) { + return None; + } + + let optional = resolve_panel_api_optional_flags(panel_cfg, &input.name); debug_if_enabled!( "panel_api: exhausted -> provisioning for input {} (aliases={})", sanitize_sensitive_info(&input.name), input.aliases.as_ref().map_or(0, Vec::len) ); - let is_batch = input.t_batch_url.as_ref().is_some_and(|u| !u.trim().is_empty()); + let is_batch = input + .t_batch_url + .as_ref() + .is_some_and(|u| !u.trim().is_empty()); let sources_file_path = app_state.app_config.paths.load().sources_file_path.clone(); let sources_path = PathBuf::from(&sources_file_path); - if try_renew_expired_account(app_state, input, panel_cfg, is_batch, sources_path.as_path()).await { - debug_if_enabled!("panel_api: provisioning succeeded via client_renew for input {}", sanitize_sensitive_info(&input.name)); - return true; + if let Some(outcome) = try_renew_expired_account( + app_state, + input, + panel_cfg, + is_batch, + sources_path.as_path(), + true, + optional, + ) + .await + { + debug_if_enabled!( + "panel_api: provisioning succeeded via client_renew for input {}", + sanitize_sensitive_info(&input.name) + ); + return Some(outcome); } - let created = try_create_new_account(app_state, input, panel_cfg, is_batch, sources_path.as_path()).await; + let created = try_create_new_account( + app_state, + input, + panel_cfg, + is_batch, + sources_path.as_path(), + optional, + ) + .await; debug_if_enabled!( "panel_api: provisioning via client_new for input {} => {}", sanitize_sensitive_info(&input.name), - if created { "success" } else { "failed" } + if created.is_some() { + "success" + } else { + "failed" + } ); created } +#[allow(clippy::too_many_lines, clippy::too_many_arguments)] +async fn ensure_alias_pool_min( + app_state: &Arc, + input: &ConfigInput, + panel_cfg: &PanelApiConfig, + accounts: &mut Vec, + min_pool: u16, + csv_path: Option<&Path>, + sources_yml_patches: &mut Vec, + time_ctx: Option<&PanelApiTimeContext>, + effective_now: u64, + optional: PanelApiOptionalFlags, +) -> (bool, u16) { + if min_pool == 0 { + return (false, 0); + } + + let renew_enabled = optional.client_renew; + let new_enabled = optional.client_new; + let adult_enabled = optional.adult_content; + if !renew_enabled && !new_enabled { + return (false, 0); + } + + let mut changed = false; + let mut provisioned = 0_u16; + let max_pool = resolve_alias_pool_limits(app_state.as_ref(), &input.name, panel_cfg) + .ok() + .and_then(|(_, max)| max); + let mut existing_names: HashSet> = accounts.iter().map(|a| a.name.clone()).collect(); + let max_attempts = usize::from(min_pool).saturating_add(10); + for _ in 0..max_attempts { + let current_valid = + count_valid_alias_accounts_at(accounts, &input.name, effective_now); + if current_valid >= usize::from(min_pool) { + break; + } + if let Some(max_pool) = max_pool { + if current_valid >= usize::from(max_pool) { + break; + } + } + + let expired_index = accounts + .iter() + .enumerate() + .filter(|(_, acct)| { + acct.name != input.name && is_input_expired_at(acct.exp_date, effective_now) + }) + .min_by_key(|(_, acct)| acct.exp_date.unwrap_or(i64::MAX)) + .map(|(idx, _)| idx); + + if let Some(idx) = expired_index { + let acct = accounts.get(idx).cloned(); + let Some(acct) = acct else { + break; + }; + if renew_enabled { + match panel_client_renew( + app_state.as_ref(), + panel_cfg, + acct.username.as_str(), + acct.password.as_str(), + ) + .await + { + Ok(()) => { + provisioned = provisioned.saturating_add(1); + if adult_enabled { + if let Err(err) = panel_client_adult_content( + app_state.as_ref(), + panel_cfg, + Some((acct.username.as_str(), acct.password.as_str())), + ) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&acct.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + + let refreshed_exp = panel_client_info( + app_state.as_ref(), + panel_cfg, + acct.username.as_str(), + acct.password.as_str(), + time_ctx, + ) + .await + .ok() + .flatten() + .or(acct.exp_date); + + if let Some(new_exp) = refreshed_exp { + if let Some(acct_mut) = accounts.get_mut(idx) { + acct_mut.exp_date = Some(new_exp); + } + if let Some(csv_path) = csv_path { + let _csv_lock = + app_state.app_config.file_locks.write_lock(csv_path).await; + if let Err(err) = csv_patch_batch_update_exp_date( + input.input_type, + csv_path, + &acct.name, + acct.username.as_str(), + acct.password.as_str(), + new_exp, + ) + .await + { + debug_if_enabled!( + "panel_api failed to persist renew exp_date to csv: {}", + err + ); + } else { + changed = true; + } + } else { + sources_yml_patches.push(SourcesYmlPatch::UpdateExpDate { + input_name: input.name.clone(), + account_name: acct.name.clone(), + exp_date: new_exp, + }); + changed = true; + } + } + continue; + } + Err(err) => { + debug_if_enabled!( + "panel_api client_renew failed for {}: {}", + sanitize_sensitive_info(&acct.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + } + } + + if !new_enabled { + break; + } + match panel_client_new(app_state.as_ref(), panel_cfg).await { + Ok((username, password, base_url_from_resp)) => { + let base_url = base_url_from_resp.unwrap_or_else(|| input.url.clone()); + let base_url = + get_base_url_from_str(base_url.as_str()).unwrap_or_else(|| base_url.clone()); + + let alias_name = + derive_unique_alias_name_set(&existing_names, &input.name, &username); + existing_names.insert(alias_name.clone().into()); + + if adult_enabled { + if let Err(err) = panel_client_adult_content( + app_state.as_ref(), + panel_cfg, + Some((&username, &password)), + ) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&alias_name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + + let exp_date = panel_client_info( + app_state.as_ref(), + panel_cfg, + &username, + &password, + time_ctx, + ) + .await + .ok() + .flatten(); + + accounts.push(AccountCredentials { + name: alias_name.clone().into(), + username: username.clone(), + password: password.clone(), + exp_date, + }); + provisioned = provisioned.saturating_add(1); + + if let Some(csv_path) = csv_path { + let batch_type = if input.input_type == InputType::Xtream { + InputType::XtreamBatch + } else if input.input_type == InputType::M3u { + InputType::M3uBatch + } else { + input.input_type + }; + let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; + if let Err(err) = csv_patch_batch_append( + csv_path, + batch_type, + &alias_name, + &base_url, + &username, + &password, + exp_date, + ) + .await + { + warn!("panel_api failed to append new account to csv: {err}"); + break; + } + changed = true; + } else { + sources_yml_patches.push(SourcesYmlPatch::AddAlias { + input_name: input.name.clone(), + alias_name: alias_name.into(), + base_url, + username, + password, + exp_date, + }); + changed = true; + } + } + Err(err) => { + debug_if_enabled!( + "panel_api client_new failed: {}", + sanitize_sensitive_info(err.to_string().as_str()) + ); + break; + } + } + } + + (changed, provisioned) +} + +#[allow(clippy::too_many_lines)] +async fn sync_panel_api_for_input_on_boot( + app_state: &Arc, + input: &Arc, + sources_path: &Path, +) -> bool { + let Some(panel_cfg) = input.panel_api.as_ref() else { + return false; + }; + if !panel_cfg.enabled || panel_cfg.url.trim().is_empty() { + return false; + } + + if let Err(err) = validate_panel_api_config(panel_cfg) { + debug_if_enabled!( + "panel_api boot sync skipped for {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + return false; + } + let optional = resolve_panel_api_optional_flags(panel_cfg, &input.name); + + let input_name = &input.name; + let _input_lock = app_state + .app_config + .file_locks + .write_lock_str(format!("panel_api:{input_name}").as_str()) + .await; + + let mut any_change = false; + let is_batch = input + .t_batch_url + .as_ref() + .is_some_and(|u| !u.trim().is_empty()); + let batch_url = input.t_batch_url.as_deref().unwrap_or_default(); + let csv_path = if is_batch { + get_csv_file_path(batch_url).ok() + } else { + None + }; + let mut sources_yml_patches: Vec = Vec::new(); + let mut pending_sources_yml = false; + + let mut accounts = collect_accounts(input.as_ref()); + if panel_cfg.alias_pool.is_some() { + sort_account_aliases_keep_root_first(&mut accounts, &input.name); + } + let mut existing_names: HashSet> = accounts.iter().map(|a| a.name.clone()).collect(); + let mut newly_created_accounts: Vec = Vec::new(); + let mut time_ctx: Option = None; + let mut effective_now = get_current_timestamp(); + + let cache_path = panel_api_time_cache_path(app_state.as_ref()); + let mut time_cache = load_panel_api_time_cache(app_state.as_ref(), &cache_path).await; + let cached_entry = time_cache.inputs.get(input.name.as_ref()).cloned(); + + if panel_cfg.alias_pool.is_some() { + if let Some(csv_path) = csv_path.as_ref() { + let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; + match csv_patch_batch_sort_by_exp_date(input.input_type, csv_path).await { + Ok(true) => any_change = true, + Ok(false) => {} + Err(err) => debug_if_enabled!( + "panel_api boot/update failed to sort csv alias pool for {}: {}", + sanitize_sensitive_info(&input.name), + err + ), + } + } else if input + .aliases + .as_ref() + .is_some_and(|aliases| aliases_need_sort_config(aliases)) + { + sources_yml_patches.push(SourcesYmlPatch::SortAliases { + input_name: input.name.clone(), + }); + pending_sources_yml = true; + } + } + + if let Some((root_username, root_password)) = extract_account_creds_from_input(input.as_ref()) { + let user_info = fetch_root_user_api_info(app_state.as_ref(), input.as_ref()).await; + let (root_exp_date, server_tz, skew_secs) = if let Some(info) = user_info { + let local_now = i64::try_from(get_current_timestamp()).unwrap_or(0); + let skew_secs = info.server_now_ts.unwrap_or(local_now) - local_now; + (info.exp_date, info.server_tz, Some(skew_secs)) + } else { + (None, None, None) + }; + + let panel_expire_raw = match panel_client_info_raw( + app_state.as_ref(), + panel_cfg, + root_username.as_str(), + root_password.as_str(), + ) + .await + { + Ok(expire) => expire, + Err(err) => { + debug_if_enabled!( + "panel_api root client_info (raw) failed for {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + None + } + }; + + let mut expire_mode = + resolve_panel_expire_mode(root_exp_date, panel_expire_raw.as_deref(), server_tz); + let mut server_tz = server_tz; + let mut skew_secs = skew_secs.or_else(|| cached_entry.as_ref().and_then(|e| e.skew_secs)); + + if root_exp_date.is_none() { + if let Some(cached) = cached_entry.as_ref() { + expire_mode = cached.expire_mode; + if server_tz.is_none() { + server_tz = parse_cached_tz(cached.server_tz.clone()); + } + if skew_secs.is_none() { + skew_secs = cached.skew_secs; + } + } + } + + time_ctx = Some(PanelApiTimeContext { + expire_mode, + server_tz, + }); + effective_now = apply_clock_skew(get_current_timestamp(), skew_secs.unwrap_or_default()); + + time_cache.inputs.insert( + input.name.to_string(), + PanelApiTimeCacheEntry { + expire_mode, + server_tz: server_tz.map(|tz| tz.name().to_string()), + skew_secs, + }, + ); + if let Err(err) = + persist_panel_api_time_cache(app_state.as_ref(), &cache_path, &time_cache).await + { + debug_if_enabled!( + "panel_api failed to persist time cache for {}: {}", + sanitize_sensitive_info(&input.name), + err + ); + } + + let server_tz_name = server_tz.as_ref().map_or("none", |tz| Tz::name(*tz)); + debug_if_enabled!( + "panel_api time context for input {}: expire_mode={:?}, tz={}, skew_secs={}", + sanitize_sensitive_info(&input.name), + expire_mode, + server_tz_name, + skew_secs.unwrap_or_default() + ); + } else if let Some(cached) = cached_entry.as_ref() { + let server_tz = parse_cached_tz(cached.server_tz.clone()); + time_ctx = Some(PanelApiTimeContext { + expire_mode: cached.expire_mode, + server_tz, + }); + effective_now = apply_clock_skew( + get_current_timestamp(), + cached.skew_secs.unwrap_or_default(), + ); + let server_tz_name = server_tz.as_ref().map_or("none", |tz| Tz::name(*tz)); + debug_if_enabled!( + "panel_api time context fallback for input {}: expire_mode={:?}, tz={}, skew_secs={}", + sanitize_sensitive_info(&input.name), + cached.expire_mode, + server_tz_name, + cached.skew_secs.unwrap_or_default() + ); + } else { + debug_if_enabled!( + "panel_api time context skipped for input {}: missing root credentials", + sanitize_sensitive_info(&input.name) + ); + } + + for acct in &mut accounts { + let new_exp = match panel_client_info( + app_state.as_ref(), + panel_cfg, + &acct.username, + &acct.password, + time_ctx.as_ref(), + ) + .await + { + Ok(v) => v, + Err(err) => { + debug_if_enabled!( + "panel_api client_info failed for {}: {}", + sanitize_sensitive_info(&acct.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + None + } + }; + let Some(new_exp) = new_exp else { + continue; + }; + if acct.exp_date == Some(new_exp) { + continue; + } + + if let Some(csv_path) = csv_path.as_ref() { + let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; + if let Err(err) = csv_patch_batch_update_exp_date( + input.input_type, + csv_path, + &acct.name, + &acct.username, + &acct.password, + new_exp, + ) + .await + { + debug_if_enabled!( + "panel_api boot sync failed to persist exp_date to csv: {}", + err + ); + continue; + } + any_change = true; + } else { + sources_yml_patches.push(SourcesYmlPatch::UpdateExpDate { + input_name: input.name.clone(), + account_name: acct.name.clone(), + exp_date: new_exp, + }); + pending_sources_yml = true; + } + acct.exp_date = Some(new_exp); + } + + let offset_secs = panel_cfg + .provisioning + .offset + .as_deref() + .and_then(|v| parse_panel_api_provisioning_offset_secs(v).ok()) + .unwrap_or(0); + + let min_pool = resolve_alias_pool_min(app_state.as_ref(), &input.name, panel_cfg); + let renew_enabled = optional.client_renew; + let new_enabled = optional.client_new; + let adult_enabled = optional.adult_content; + let provisioning_enabled = renew_enabled || new_enabled; + // Refresh/provision credentials on boot/update. + // Root is handled first (may affect desired_aliases and avoids over-provisioning). + let mut provisioned_root = 0_u16; + let mut provisioned_aliases = 0_u16; + + if let Some(root_idx) = accounts.iter().position(|a| a.name == input.name) { + let now = effective_now; + let offset_deadline = now.saturating_add(offset_secs); + let root_exp_date = accounts[root_idx].exp_date; + let root_exp_missing = root_exp_date.is_none(); + let root_expired = match root_exp_date { + Some(ts) => u64::try_from(ts) + .map(|exp_ts| exp_ts <= now) + .unwrap_or(true), + None => false, + }; + let root_expiring = match root_exp_date { + Some(ts) => u64::try_from(ts) + .map(|exp_ts| exp_ts > now && exp_ts <= offset_deadline) + .unwrap_or(true), + None => false, + }; + let should_refresh_root = root_exp_missing || root_expired || root_expiring; + + let root_exp_display = + root_exp_date.map_or_else(|| "None".to_string(), |ts| ts.to_string()); + debug_if_enabled!( + "panel_api boot/update root status for input {} (offset={}s): exp_date={}, expired={}, expiring(offset)={}", + sanitize_sensitive_info(&input.name), + offset_secs, + root_exp_display, + root_expired, + root_expiring + ); + + if should_refresh_root { + if provisioning_enabled { + let old_username = accounts[root_idx].username.clone(); + let old_password = accounts[root_idx].password.clone(); + + debug_if_enabled!( + "panel_api boot/update refreshing root account {} for input {} (exp_date={}, offset={}s)", + sanitize_sensitive_info(&old_username), + sanitize_sensitive_info(&input.name), + root_exp_display, + offset_secs + ); + + let (active_username, active_password, creds_changed) = if renew_enabled { + match panel_client_renew( + app_state.as_ref(), + panel_cfg, + old_username.as_str(), + old_password.as_str(), + ) + .await + { + Ok(()) => { + provisioned_root = 1; + (old_username.clone(), old_password.clone(), false) + } + Err(err) => { + debug_if_enabled!( + "panel_api client_renew failed for root {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + if new_enabled { + match panel_client_new(app_state.as_ref(), panel_cfg).await { + Ok((new_username, new_password, _base_url_from_resp)) => { + provisioned_root = 1; + // Variant B: if the old root is still valid but within offset window, + // keep it as a new alias entry so we don't lose usable credentials. + let park_old_root_as_alias = root_expiring + && !root_expired + && root_exp_date.is_some(); + + if park_old_root_as_alias { + let base_url = + get_base_url_from_str(input.url.as_str()) + .unwrap_or_else(|| input.url.clone()); + let alias_name = derive_unique_alias_name_set( + &existing_names, + &input.name, + old_username.as_str(), + ); + existing_names.insert(alias_name.clone().into()); + + if let Some(csv_path) = csv_path.as_ref() { + let batch_type = + if input.input_type == InputType::Xtream { + InputType::XtreamBatch + } else if input.input_type == InputType::M3u { + InputType::M3uBatch + } else { + input.input_type + }; + let _csv_lock = app_state + .app_config + .file_locks + .write_lock(csv_path) + .await; + if let Err(err) = csv_patch_batch_append( + csv_path, + batch_type, + &alias_name, + &base_url, + &old_username, + &old_password, + root_exp_date, + ) + .await + { + debug_if_enabled!( + "panel_api boot/update failed to park old root as csv alias {}: {}", + sanitize_sensitive_info(&alias_name), + err + ); + } else { + any_change = true; + } + } else { + sources_yml_patches.push( + SourcesYmlPatch::AddAlias { + input_name: input.name.clone(), + alias_name: alias_name.clone().into(), + base_url, + username: old_username.clone(), + password: old_password.clone(), + exp_date: root_exp_date, + }, + ); + pending_sources_yml = true; + } + + accounts.push(AccountCredentials { + name: alias_name.into(), + username: old_username.clone(), + password: old_password.clone(), + exp_date: root_exp_date, + }); + + debug_if_enabled!( + "panel_api boot/update parked old root credentials for input {} as new alias (exp_date={:?})", + sanitize_sensitive_info(&input.name), + root_exp_date + ); + } + + if let Some(csv_path) = csv_path.as_ref() { + let _csv_lock = app_state + .app_config + .file_locks + .write_lock(csv_path) + .await; + if let Err(err) = csv_patch_batch_update_credentials( + input.input_type, + csv_path, + &input.name, + &old_username, + &old_password, + &new_username, + &new_password, + None, + ) + .await + { + debug_if_enabled!( + "panel_api boot/update failed to persist new root credentials to csv for {}: {}", + sanitize_sensitive_info(&input.name), + err + ); + } else { + any_change = true; + } + } else { + sources_yml_patches.push( + SourcesYmlPatch::UpdateRootCredentials { + input_name: input.name.clone(), + username: new_username.clone(), + password: new_password.clone(), + exp_date: None, + }, + ); + pending_sources_yml = true; + } + + accounts[root_idx].username.clone_from(&new_username); + accounts[root_idx].password.clone_from(&new_password); + (new_username, new_password, true) + } + Err(err) => { + debug_if_enabled!( + "panel_api client_new failed for root {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + (old_username.clone(), old_password.clone(), false) + } + } + } else { + (old_username.clone(), old_password.clone(), false) + } + } + } + } else if new_enabled { + match panel_client_new(app_state.as_ref(), panel_cfg).await { + Ok((new_username, new_password, _base_url_from_resp)) => { + provisioned_root = 1; + let park_old_root_as_alias = + root_expiring && !root_expired && root_exp_date.is_some(); + + if park_old_root_as_alias { + let base_url = get_base_url_from_str(input.url.as_str()) + .unwrap_or_else(|| input.url.clone()); + let alias_name = derive_unique_alias_name_set( + &existing_names, + &input.name, + old_username.as_str(), + ); + existing_names.insert(alias_name.clone().into()); + + if let Some(csv_path) = csv_path.as_ref() { + let batch_type = if input.input_type == InputType::Xtream { + InputType::XtreamBatch + } else if input.input_type == InputType::M3u { + InputType::M3uBatch + } else { + input.input_type + }; + let _csv_lock = + app_state.app_config.file_locks.write_lock(csv_path).await; + if let Err(err) = csv_patch_batch_append( + csv_path, + batch_type, + &alias_name, + &base_url, + &old_username, + &old_password, + root_exp_date, + ) + .await + { + debug_if_enabled!( + "panel_api boot/update failed to park old root as csv alias {}: {}", + sanitize_sensitive_info(&alias_name), + err + ); + } else { + any_change = true; + } + } else { + sources_yml_patches.push(SourcesYmlPatch::AddAlias { + input_name: input.name.clone(), + alias_name: alias_name.clone().into(), + base_url, + username: old_username.clone(), + password: old_password.clone(), + exp_date: root_exp_date, + }); + pending_sources_yml = true; + } + + accounts.push(AccountCredentials { + name: alias_name.into(), + username: old_username.clone(), + password: old_password.clone(), + exp_date: root_exp_date, + }); + + debug_if_enabled!( + "panel_api boot/update parked old root credentials for input {} as new alias (exp_date={:?})", + sanitize_sensitive_info(&input.name), + root_exp_date + ); + } + + if let Some(csv_path) = csv_path.as_ref() { + let _csv_lock = + app_state.app_config.file_locks.write_lock(csv_path).await; + if let Err(err) = csv_patch_batch_update_credentials( + input.input_type, + csv_path, + &input.name, + &old_username, + &old_password, + &new_username, + &new_password, + None, + ) + .await + { + debug_if_enabled!( + "panel_api boot/update failed to persist new root credentials to csv for {}: {}", + sanitize_sensitive_info(&input.name), + err + ); + } else { + any_change = true; + } + } else { + sources_yml_patches.push(SourcesYmlPatch::UpdateRootCredentials { + input_name: input.name.clone(), + username: new_username.clone(), + password: new_password.clone(), + exp_date: None, + }); + pending_sources_yml = true; + } + + accounts[root_idx].username.clone_from(&new_username); + accounts[root_idx].password.clone_from(&new_password); + (new_username, new_password, true) + } + Err(err) => { + debug_if_enabled!( + "panel_api client_new failed for root {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + (old_username.clone(), old_password.clone(), false) + } + } + } else { + (old_username.clone(), old_password.clone(), false) + }; + + if adult_enabled { + if let Err(err) = panel_client_adult_content( + app_state.as_ref(), + panel_cfg, + Some((active_username.as_str(), active_password.as_str())), + ) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for root {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + + let refreshed_exp = panel_client_info( + app_state.as_ref(), + panel_cfg, + active_username.as_str(), + active_password.as_str(), + time_ctx.as_ref(), + ) + .await + .ok() + .flatten(); + + let ready = wait_for_panel_api_account_ready( + app_state, + input.as_ref(), + panel_cfg, + &input.name, + active_username.as_str(), + active_password.as_str(), + ) + .await; + if !ready { + debug_if_enabled!( + "panel_api boot/update probe timeout for root {}; skipping exp_date refresh", + sanitize_sensitive_info(&input.name) + ); + } else if let Some(new_exp) = refreshed_exp { + if let Some(csv_path) = csv_path.as_ref() { + let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; + let result = if creds_changed { + csv_patch_batch_update_credentials( + input.input_type, + csv_path, + &input.name, + old_username.as_str(), + old_password.as_str(), + active_username.as_str(), + active_password.as_str(), + Some(new_exp), + ) + .await + } else { + csv_patch_batch_update_exp_date( + input.input_type, + csv_path, + &input.name, + old_username.as_str(), + old_password.as_str(), + new_exp, + ) + .await + }; + if let Err(err) = result { + debug_if_enabled!( + "panel_api boot/update failed to persist root exp_date to csv for {}: {}", + sanitize_sensitive_info(&input.name), + err + ); + } else { + accounts[root_idx].exp_date = Some(new_exp); + any_change = true; + } + } else { + if creds_changed { + sources_yml_patches.push(SourcesYmlPatch::UpdateRootCredentials { + input_name: input.name.clone(), + username: active_username.clone(), + password: active_password.clone(), + exp_date: Some(new_exp), + }); + } else { + sources_yml_patches.push(SourcesYmlPatch::UpdateExpDate { + input_name: input.name.clone(), + account_name: input.name.clone(), + exp_date: new_exp, + }); + } + pending_sources_yml = true; + accounts[root_idx].exp_date = Some(new_exp); + } + } + } else { + debug_if_enabled!( + "panel_api boot/update skipped root refresh for input {}: client_new/client_renew disabled", + sanitize_sensitive_info(&input.name) + ); + } + } + } else { + debug_if_enabled!( + "panel_api boot/update skipped root provisioning for input {}: missing credentials", + sanitize_sensitive_info(&input.name) + ); + } + + // Plan and execute alias refresh after the root operation (avoids over-provisioning). + let now = effective_now; + let offset_deadline = now.saturating_add(offset_secs); + let root_valid = root_counts_towards_pool_at(&accounts, &input.name, now); + let desired_aliases = min_pool.filter(|m| *m > 0).map_or_else( + || { + u16::try_from(accounts.iter().filter(|a| a.name != input.name).count()) + .unwrap_or(u16::MAX) + }, + |min_pool| min_pool.saturating_sub(u16::from(root_valid)), + ); + + let expiring_aliases = accounts + .iter() + .filter(|a| { + a.name != input.name && is_expiring_with_offset_at(a.exp_date, offset_secs, now) + }) + .count(); + let expired_aliases = accounts + .iter() + .filter(|a| a.name != input.name && is_input_expired_at(a.exp_date, now)) + .count(); + + let valid_aliases_beyond_offset = accounts + .iter() + .filter(|a| { + if a.name == input.name { + return false; + } + if is_input_expired_at(a.exp_date, now) { + return false; + } + match a.exp_date { + Some(ts) => u64::try_from(ts) + .map(|exp_ts| exp_ts > offset_deadline) + .unwrap_or(false), + None => false, + } + }) + .count(); + + let desired_aliases_u16 = desired_aliases; + let alias_total = accounts.iter().filter(|a| a.name != input.name).count(); + let alias_total_u16 = u16::try_from(alias_total).unwrap_or(u16::MAX); + let missing_aliases_u16 = desired_aliases_u16.saturating_sub(alias_total_u16); + + let (refresh_plan, planned_refresh_aliases) = if provisioning_enabled { + let mut refresh_candidates: Vec = accounts + .iter() + .enumerate() + .filter(|(_, a)| { + if a.name == input.name { + return false; + } + if is_input_expired_at(a.exp_date, now) { + return false; + } + match a.exp_date { + None => true, + Some(ts) => u64::try_from(ts) + .map(|exp_ts| exp_ts <= offset_deadline) + .unwrap_or(true), + } + }) + .map(|(idx, _)| idx) + .collect(); + + refresh_candidates.sort_by_key(|idx| { + let acct = &accounts[*idx]; + match acct.exp_date { + None => (0_u8, i64::MIN), + Some(ts) => (1_u8, ts), + } + }); + + let valid_aliases_beyond_offset_u16 = + u16::try_from(valid_aliases_beyond_offset).unwrap_or(u16::MAX); + let needed_refresh_aliases_u16 = + desired_aliases_u16.saturating_sub(valid_aliases_beyond_offset_u16); + let planned_refresh_aliases = refresh_candidates + .len() + .min(usize::from(needed_refresh_aliases_u16)); + let refresh_plan: Vec = refresh_candidates + .into_iter() + .take(planned_refresh_aliases) + .collect(); + (refresh_plan, planned_refresh_aliases) + } else { + (Vec::new(), 0) + }; + + let log_pool = alias_pool_has_min(panel_cfg); + let enabled_users = if log_pool { + count_enabled_proxy_users(app_state.as_ref(), &input.name) + } else { + 0 + }; + if log_pool { + debug_if_enabled!( + "panel_api boot/update provisioning aliases for input {} (offset={}s): desired={}, valid_beyond_offset={}, expiring(offset)={}, expired={}, refresh_planned(offset)={}, missing={}", + sanitize_sensitive_info(&input.name), + offset_secs, + desired_aliases_u16, + valid_aliases_beyond_offset, + expiring_aliases, + expired_aliases, + planned_refresh_aliases, + missing_aliases_u16 + ); + } + + if !refresh_plan.is_empty() { + debug_if_enabled!( + "panel_api boot/update alias refresh plan for input {}: selected={}", + sanitize_sensitive_info(&input.name), + refresh_plan + .iter() + .filter_map(|idx| accounts.get(*idx)) + .map(|acct| sanitize_sensitive_info(&acct.name).to_string()) + .collect::>() + .join(",") + ); + } + + for idx in refresh_plan { + let Some(acct) = accounts.get_mut(idx) else { + continue; + }; + let account_name = acct.name.clone(); + let old_username = acct.username.clone(); + let old_password = acct.password.clone(); + + debug_if_enabled!( + "panel_api boot/update refreshing alias account {} for input {} (exp_date={:?}, offset={}s)", + sanitize_sensitive_info(&account_name), + sanitize_sensitive_info(&input.name), + acct.exp_date, + offset_secs + ); + + let (active_username, active_password, creds_changed) = if renew_enabled { + match panel_client_renew( + app_state.as_ref(), + panel_cfg, + old_username.as_str(), + old_password.as_str(), + ) + .await + { + Ok(()) => { + provisioned_aliases = provisioned_aliases.saturating_add(1); + (old_username.clone(), old_password.clone(), false) + } + Err(err) => { + debug_if_enabled!( + "panel_api client_renew failed for alias {}: {}", + sanitize_sensitive_info(&account_name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + if new_enabled { + match panel_client_new(app_state.as_ref(), panel_cfg).await { + Ok((new_username, new_password, base_url_from_resp)) => { + let base_url = + base_url_from_resp.unwrap_or_else(|| input.url.clone()); + let base_url = get_base_url_from_str(base_url.as_str()) + .unwrap_or_else(|| base_url.clone()); + + let alias_name = derive_unique_alias_name_set( + &existing_names, + &input.name, + &new_username, + ); + existing_names.insert(alias_name.clone().into()); + + if adult_enabled { + if let Err(err) = panel_client_adult_content( + app_state.as_ref(), + panel_cfg, + Some((new_username.as_str(), new_password.as_str())), + ) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&alias_name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + + let exp_date = panel_client_info( + app_state.as_ref(), + panel_cfg, + new_username.as_str(), + new_password.as_str(), + time_ctx.as_ref(), + ) + .await + .ok() + .flatten(); + + if let Some(csv_path) = csv_path.as_ref() { + let batch_type = if input.input_type == InputType::Xtream { + InputType::XtreamBatch + } else if input.input_type == InputType::M3u { + InputType::M3uBatch + } else { + input.input_type + }; + let _csv_lock = + app_state.app_config.file_locks.write_lock(csv_path).await; + if let Err(err) = csv_patch_batch_append( + csv_path, + batch_type, + &alias_name, + &base_url, + &new_username, + &new_password, + exp_date, + ) + .await + { + debug_if_enabled!( + "panel_api boot/update failed to append new csv account for {}: {}", + sanitize_sensitive_info(&alias_name), + err + ); + continue; + } + any_change = true; + } else { + sources_yml_patches.push(SourcesYmlPatch::AddAlias { + input_name: input.name.clone(), + alias_name: alias_name.clone().into(), + base_url, + username: new_username.clone(), + password: new_password.clone(), + exp_date, + }); + pending_sources_yml = true; + } + + newly_created_accounts.push(AccountCredentials { + name: alias_name.into(), + username: new_username, + password: new_password, + exp_date, + }); + provisioned_aliases = provisioned_aliases.saturating_add(1); + continue; + } + Err(err) => { + debug_if_enabled!( + "panel_api client_new failed for input {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + continue; + } + } + } + continue; + } + } + } else if new_enabled { + match panel_client_new(app_state.as_ref(), panel_cfg).await { + Ok((new_username, new_password, base_url_from_resp)) => { + let base_url = base_url_from_resp.unwrap_or_else(|| input.url.clone()); + let base_url = get_base_url_from_str(base_url.as_str()) + .unwrap_or_else(|| base_url.clone()); + + let alias_name = + derive_unique_alias_name_set(&existing_names, &input.name, &new_username); + existing_names.insert(alias_name.clone().into()); + + if adult_enabled { + if let Err(err) = panel_client_adult_content( + app_state.as_ref(), + panel_cfg, + Some((new_username.as_str(), new_password.as_str())), + ) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&alias_name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + + let exp_date = panel_client_info( + app_state.as_ref(), + panel_cfg, + new_username.as_str(), + new_password.as_str(), + time_ctx.as_ref(), + ) + .await + .ok() + .flatten(); + + if let Some(csv_path) = csv_path.as_ref() { + let batch_type = if input.input_type == InputType::Xtream { + InputType::XtreamBatch + } else if input.input_type == InputType::M3u { + InputType::M3uBatch + } else { + input.input_type + }; + let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; + if let Err(err) = csv_patch_batch_append( + csv_path, + batch_type, + &alias_name, + &base_url, + &new_username, + &new_password, + exp_date, + ) + .await + { + debug_if_enabled!( + "panel_api boot/update failed to append new csv account for {}: {}", + sanitize_sensitive_info(&alias_name), + err + ); + continue; + } + any_change = true; + } else { + sources_yml_patches.push(SourcesYmlPatch::AddAlias { + input_name: input.name.clone(), + alias_name: alias_name.clone().into(), + base_url, + username: new_username.clone(), + password: new_password.clone(), + exp_date, + }); + pending_sources_yml = true; + } + + newly_created_accounts.push(AccountCredentials { + name: alias_name.into(), + username: new_username, + password: new_password, + exp_date, + }); + provisioned_aliases = provisioned_aliases.saturating_add(1); + continue; + } + Err(err) => { + debug_if_enabled!( + "panel_api client_new failed for input {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + continue; + } + } + } else { + continue; + }; + + if adult_enabled { + if let Err(err) = panel_client_adult_content( + app_state.as_ref(), + panel_cfg, + Some((active_username.as_str(), active_password.as_str())), + ) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&account_name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + + let refreshed_exp = panel_client_info( + app_state.as_ref(), + panel_cfg, + active_username.as_str(), + active_password.as_str(), + time_ctx.as_ref(), + ) + .await + .ok() + .flatten(); + + if let Some(new_exp) = refreshed_exp { + if let Some(csv_path) = csv_path.as_ref() { + let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; + let result = if creds_changed { + csv_patch_batch_update_credentials( + input.input_type, + csv_path, + &account_name, + &old_username, + &old_password, + active_username.as_str(), + active_password.as_str(), + Some(new_exp), + ) + .await + } else { + csv_patch_batch_update_exp_date( + input.input_type, + csv_path, + &account_name, + &old_username, + &old_password, + new_exp, + ) + .await + }; + if let Err(err) = result { + debug_if_enabled!( + "panel_api boot/update failed to persist exp_date to csv for {}: {}", + sanitize_sensitive_info(&account_name), + err + ); + } else { + acct.exp_date = Some(new_exp); + any_change = true; + } + } else { + if creds_changed { + sources_yml_patches.push(SourcesYmlPatch::UpdateAliasCredentials { + input_name: input.name.clone(), + alias_name: account_name.clone(), + username: active_username.clone(), + password: active_password.clone(), + exp_date: Some(new_exp), + }); + } else { + sources_yml_patches.push(SourcesYmlPatch::UpdateExpDate { + input_name: input.name.clone(), + account_name: account_name.clone(), + exp_date: new_exp, + }); + } + pending_sources_yml = true; + acct.exp_date = Some(new_exp); + } + } else { + debug_if_enabled!( + "panel_api boot/update renew/create succeeded but exp_date refresh failed for {}", + sanitize_sensitive_info(&account_name) + ); + } + } + + if !newly_created_accounts.is_empty() { + accounts.extend(newly_created_accounts); + } + + if adult_enabled { + for acct in &accounts { + if let Err(err) = panel_client_adult_content( + app_state.as_ref(), + panel_cfg, + Some((acct.username.as_str(), acct.password.as_str())), + ) + .await + { + debug_if_enabled!( + "panel_api client_adult_content failed for {}: {}", + sanitize_sensitive_info(&acct.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + } + + let min_pool = min_pool.filter(|m| *m > 0); + if let Some(min_pool) = min_pool { + let root_valid = root_counts_towards_pool(&accounts, &input.name); + let alias_min = min_pool.saturating_sub(u16::from(root_valid)); + let (pool_changed, pool_provisioned) = ensure_alias_pool_min( + app_state, + input.as_ref(), + panel_cfg, + &mut accounts, + alias_min, + csv_path.as_deref(), + &mut sources_yml_patches, + time_ctx.as_ref(), + effective_now, + optional, + ) + .await; + if pool_changed { + if csv_path.is_some() { + any_change = true; + } else { + pending_sources_yml = true; + } + } + provisioned_aliases = provisioned_aliases.saturating_add(pool_provisioned); + } + + if log_pool { + let valid_total = count_valid_accounts_at(&accounts, now); + debug_if_enabled!( + "panel_api boot/update provisioning total for input {} (offset={}s): enabled_users={}, valid_accounts={}, provisioned_root={}, provisioned_aliases={}", + sanitize_sensitive_info(&input.name), + offset_secs, + enabled_users, + valid_total, + provisioned_root, + provisioned_aliases + ); + } + + if alias_pool_remove_expired(panel_cfg) { + if let Some(csv_path) = csv_path.as_ref() { + let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; + match csv_patch_batch_remove_expired(input.input_type, csv_path).await { + Ok(true) => any_change = true, + Ok(false) => {} + Err(err) => debug_if_enabled!( + "panel_api boot sync failed to remove expired csv accounts: {}", + err + ), + } + } else { + sources_yml_patches.push(SourcesYmlPatch::RemoveExpiredAliases { + input_name: input.name.clone(), + }); + pending_sources_yml = true; + } + } + + if optional.account_info { + let creds = accounts + .first() + .map(|acct| (acct.username.as_str(), acct.password.as_str())); + match panel_account_info(app_state.as_ref(), panel_cfg, creds).await { + Ok(Some(credits)) => { + let normalized = credits.trim().to_string(); + if !normalized.is_empty() + /* && panel_cfg.credits.as_deref().map(str::trim) != Some(normalized.as_str()) */ + { + sources_yml_patches.push(SourcesYmlPatch::UpdatePanelApiCredits { + input_name: input.name.clone(), + credits: normalized, + }); + pending_sources_yml = true; + } + } + Ok(None) => {} + Err(err) => { + debug_if_enabled!( + "panel_api account_info failed for {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + } + } + } + + if pending_sources_yml { + let _src_lock = app_state + .app_config + .file_locks + .write_lock(sources_path) + .await; + match persist_sources_yml_with_patches(app_state, sources_path, &sources_yml_patches).await + { + Ok(true) => any_change = true, + Ok(false) => {} + Err(err) => debug_if_enabled!( + "panel_api boot sync failed to persist source.yml patches: {}", + err + ), + } + } + + any_change +} + pub(crate) async fn sync_panel_api_exp_dates_on_boot(app_state: &Arc) { let sources_file_path = app_state.app_config.paths.load().sources_file_path.clone(); let sources_path = PathBuf::from(&sources_file_path); @@ -661,74 +3655,525 @@ pub(crate) async fn sync_panel_api_exp_dates_on_boot(app_state: &Arc) let sources = app_state.app_config.sources.load(); for input in &sources.inputs { - let Some(panel_cfg) = input.panel_api.as_ref() else { continue; }; - if !panel_cfg.enabled || panel_cfg.url.trim().is_empty() { - continue; - } - - let is_batch = input.t_batch_url.as_ref().is_some_and(|u| !u.trim().is_empty()); - let batch_url = input.t_batch_url.as_deref().unwrap_or_default(); - let csv_path = if is_batch { get_csv_file_path(batch_url).ok() } else { None }; - - let mut accounts: Vec = vec![]; - if let Some((u, p)) = extract_account_creds_from_input(input.as_ref()) { - accounts.push(AccountCredentials { - name: input.name.clone(), - username: u, - password: p, - exp_date: input.exp_date, - }); - } - if let Some(aliases) = input.aliases.as_ref() { - for a in aliases { - if let (Some(u), Some(p)) = (a.username.as_deref(), a.password.as_deref()) { - accounts.push(AccountCredentials { - name: a.name.clone(), - username: u.to_string(), - password: p.to_string(), - exp_date: a.exp_date, - }); - } - } - } - - for acct in &accounts { - let new_exp = match panel_client_info(app_state.as_ref(), panel_cfg, &acct.username, &acct.password).await { - Ok(v) => v, - Err(err) => { - debug_if_enabled!( - "panel_api client_info failed for {}: {}", - sanitize_sensitive_info(&acct.name), - sanitize_sensitive_info(err.to_string().as_str()) - ); - None - } - }; - let Some(new_exp) = new_exp else { continue; }; - if acct.exp_date == Some(new_exp) { - continue; - } - - if let Some(csv_path) = csv_path.as_ref() { - let _csv_lock = app_state.app_config.file_locks.write_lock(csv_path).await; - if let Err(err) = patch_batch_csv_update_exp_date(csv_path, &acct.name, &acct.username, &acct.password, new_exp).await { - debug_if_enabled!("panel_api boot sync failed to persist exp_date to csv: {}", err); - continue; - } - } else { - let _src_lock = app_state.app_config.file_locks.write_lock(&sources_path).await; - if let Err(err) = patch_source_yml_update_exp_date(app_state, &sources_path, &input.name, &acct.name, new_exp).await { - debug_if_enabled!("panel_api boot sync failed to persist exp_date to source.yml: {}", err); - continue; - } - } + if sync_panel_api_for_input_on_boot(app_state, input, sources_path.as_path()).await { any_change = true; } } if any_change { + // Even with `config_hot_reload=true`, the file watcher reload is asynchronous. + // Reload immediately so subsequent routines use updated credentials (e.g. after root renewal). if let Err(err) = ConfigFile::load_sources(app_state).await { - debug_if_enabled!("panel_api boot sync reload sources failed: {}", err); + debug_if_enabled!("panel_api boot/update reload sources failed: {}", err); } } } + +pub(crate) async fn sync_panel_api_alias_pool_for_target( + app_state: &Arc, + target_name: &str, +) { + let sources_file_path = app_state.app_config.paths.load().sources_file_path.clone(); + let sources_path = PathBuf::from(&sources_file_path); + let mut any_change = false; + + let sources = app_state.app_config.sources.load(); + for source in &sources.sources { + let target_match = source + .targets + .iter() + .any(|target| target.name.eq_ignore_ascii_case(target_name)); + if !target_match { + continue; + } + + for input_name in &source.inputs { + let Some(input) = sources.get_input_by_name(input_name) else { + continue; + }; + let Some(panel_cfg) = input.panel_api.as_ref() else { + continue; + }; + if !panel_cfg.enabled || panel_cfg.url.trim().is_empty() { + continue; + } + if let Err(err) = validate_panel_api_config(panel_cfg) { + debug_if_enabled!( + "panel_api user sync skipped for {}: {}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(err.to_string().as_str()) + ); + continue; + } + if !alias_pool_has_min(panel_cfg) { + continue; + } + + if sync_panel_api_for_input_on_boot(app_state, input, sources_path.as_path()).await { + any_change = true; + } + } + } + + if any_change && should_reload_sources_after_internal_write(app_state.as_ref()) { + if let Err(err) = ConfigFile::load_sources(app_state).await { + debug_if_enabled!("panel_api user sync reload sources failed: {}", err); + } + } +} + +fn provisioning_method_to_reqwest(method: PanelApiProvisioningMethod) -> Method { + match method { + PanelApiProvisioningMethod::Head => Method::HEAD, + PanelApiProvisioningMethod::Get => Method::GET, + PanelApiProvisioningMethod::Post => Method::POST, + } +} + +fn build_player_api_action_url( + base_url: &str, + username: &str, + password: &str, + action: &str, +) -> Option { + let url = Url::parse(base_url).ok()?; + let host = url.host_str()?; + let scheme = url.scheme(); + let mut base = concat_string!(scheme, "://", host); + if let Some(port) = url.port() { + base.push(':'); + base.push_str(port.to_string().as_str()); + } + base.push_str("/player_api.php"); + let mut test_url = Url::parse(&base).ok()?; + test_url + .query_pairs_mut() + .append_pair("username", username) + .append_pair("password", password) + .append_pair("action", action); + Some(test_url) +} + +fn build_panel_api_test_url(base_url: &str, username: &str, password: &str) -> Option { + build_player_api_action_url(base_url, username, password, "account_info") +} + +enum PanelApiProbeTarget { + PlayerApi { action: &'static str, url: Url }, +} + +impl PanelApiProbeTarget { + fn action(&self) -> &'static str { + match self { + PanelApiProbeTarget::PlayerApi { action, .. } => action, + } + } +} + +fn build_panel_api_probe_targets( + input: &ConfigInput, + username: &str, + password: &str, +) -> Vec { + let mut targets = Vec::new(); + for action in [ + "client_info", + "get_live_categories", + "get_series_categories", + "get_vod_categories", + ] { + if let Some(url) = + build_player_api_action_url(input.url.as_str(), username, password, action) + { + targets.push(PanelApiProbeTarget::PlayerApi { action, url }); + } + } + targets +} + +async fn probe_panel_api_targets( + app_state: &Arc, + probe_method: PanelApiProvisioningMethod, + targets: &[PanelApiProbeTarget], + done: &mut HashSet<&'static str>, +) -> bool { + for target in targets { + let action = target.action(); + if done.contains(action) { + continue; + } + match target { + PanelApiProbeTarget::PlayerApi { action, url } => { + match probe_panel_api_test_url(app_state, url, probe_method).await { + Ok(status) => { + debug_if_enabled!( + "panel_api probe status: '{}' action={} url: {}", + format_http_status(status), + action, + sanitize_sensitive_info(url.as_str()) + ); + if status.is_success() { + done.insert(action); + } + } + Err(err) => { + if err.is_timeout() { + debug_if_enabled!( + "panel_api probe timeout action={} url: {}", + action, + sanitize_sensitive_info(url.as_str()) + ); + } else { + debug_if_enabled!( + "panel_api probe failed action={} url: {}: {err}", + action, + sanitize_sensitive_info(url.as_str()) + ); + } + } + } + } + } + } + done.len() == targets.len() +} + +async fn probe_panel_api_test_url( + app_state: &Arc, + test_url: &Url, + method: PanelApiProvisioningMethod, +) -> Result { + let client = app_state.http_client.load(); + let request_method = provisioning_method_to_reqwest(method); + let response = client + .request(request_method, test_url.clone()) + .send() + .await?; + Ok(response.status()) +} + +async fn apply_provisioning_cooldown( + panel_cfg: &PanelApiConfig, + account_name: &str, + input_name: &Arc, +) { + let cooldown_secs = panel_cfg.provisioning.cooldown_sec; + if cooldown_secs == 0 { + return; + } + debug_if_enabled!( + "panel_api provisioning cooldown for {} (input={}): {}s", + sanitize_sensitive_info(account_name), + sanitize_sensitive_info(input_name), + cooldown_secs + ); + tokio::time::sleep(Duration::from_secs(cooldown_secs)).await; +} + +async fn wait_for_panel_api_account_ready( + app_state: &Arc, + input: &ConfigInput, + panel_cfg: &PanelApiConfig, + account_name: &str, + username: &str, + password: &str, +) -> bool { + let max_wait_secs = panel_cfg.provisioning.timeout_sec; + let probe_interval_secs = panel_cfg.provisioning.probe_interval_sec.max(1); + let probe_method = panel_cfg.provisioning.method; + + let probe_targets = build_panel_api_probe_targets(input, username, password); + if probe_targets.is_empty() { + debug_if_enabled!( + "panel_api probe skipped for {} (input={}): no probe targets", + sanitize_sensitive_info(account_name), + sanitize_sensitive_info(&input.name) + ); + return false; + } + + let targets_list = probe_targets + .iter() + .map(PanelApiProbeTarget::action) + .collect::>() + .join(","); + debug_if_enabled!( + "panel_api probe start for {} (input={} timeout={}s interval={}s method={}) targets={}", + sanitize_sensitive_info(account_name), + sanitize_sensitive_info(&input.name), + max_wait_secs, + probe_interval_secs, + probe_method, + targets_list + ); + + let deadline = Instant::now() + Duration::from_secs(max_wait_secs); + let probe_delay = Duration::from_secs(probe_interval_secs); + let mut done_targets = HashSet::new(); + let mut attempt = 0u64; + loop { + attempt += 1; + debug_if_enabled!("panel_api probe attempt {}", attempt); + if probe_panel_api_targets(app_state, probe_method, &probe_targets, &mut done_targets).await + { + apply_provisioning_cooldown(panel_cfg, account_name, &input.name).await; + return true; + } + + if max_wait_secs == 0 { + return false; + } + let now = Instant::now(); + if now >= deadline { + return false; + } + let remaining = deadline.checked_duration_since(now).unwrap_or_default(); + let sleep_for = if remaining < probe_delay { + remaining + } else { + probe_delay + }; + tokio::time::sleep(sleep_for).await; + } +} + +#[allow(clippy::too_many_lines)] +pub(crate) async fn run_panel_api_provisioning_probe( + app_state: Arc, + input: ConfigInput, + stop_signal: Arc, + addr: SocketAddr, + virtual_id: VirtualId, +) { + let Some(panel_cfg) = input.panel_api.as_ref() else { + debug_if_enabled!( + "panel_api provisioning probe skipped (missing config) for input {}", + sanitize_sensitive_info(&input.name) + ); + stop_signal.notify(); + let _ = app_state + .connection_manager + .kick_connection(&addr, virtual_id, 0) + .await; + return; + }; + if !panel_cfg.enabled { + debug_if_enabled!( + "panel_api provisioning probe skipped (panel_api.enabled false) for input {}", + sanitize_sensitive_info(&input.name) + ); + stop_signal.notify(); + let _ = app_state + .connection_manager + .kick_connection(&addr, virtual_id, 0) + .await; + return; + } + if panel_cfg.url.trim().is_empty() { + debug_if_enabled!( + "panel_api provisioning probe skipped (panel_api.url empty) for input {}", + sanitize_sensitive_info(&input.name) + ); + stop_signal.notify(); + let _ = app_state + .connection_manager + .kick_connection(&addr, virtual_id, 0) + .await; + return; + } + + let max_wait_secs = panel_cfg.provisioning.timeout_sec; + let probe_interval_secs = panel_cfg.provisioning.probe_interval_sec.max(1); + let probe_method = panel_cfg.provisioning.method; + + debug_if_enabled!( + "panel_api provisioning probe start for input {} (timeout={}s interval={}s method={})", + sanitize_sensitive_info(&input.name), + max_wait_secs, + probe_interval_secs, + probe_method + ); + + let deadline = Instant::now() + Duration::from_secs(max_wait_secs); + let outcome = try_provision_account_on_exhausted(&app_state, &input).await; + let credentials = outcome.as_ref().map(PanelApiProvisionOutcome::credentials); + + if let Some(outcome) = outcome.as_ref() { + debug_if_enabled!( + "panel_api provisioning {} completed for input {}", + outcome.kind_label(), + sanitize_sensitive_info(&input.name) + ); + } else { + debug_if_enabled!( + "panel_api provisioning failed for input {}; waiting for timeout", + sanitize_sensitive_info(&input.name) + ); + } + + let Some((username, password)) = credentials else { + if max_wait_secs > 0 { + tokio::time::sleep(Duration::from_secs(max_wait_secs)).await; + } + debug_if_enabled!( + "panel_api provisioning probe timeout reached for input {} (no credentials)", + sanitize_sensitive_info(&input.name) + ); + stop_signal.notify(); + debug_if_enabled!( + "panel_api provisioning closing client connection for input {} addr={}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(addr.to_string().as_str()) + ); + let _ = app_state + .connection_manager + .kick_connection(&addr, virtual_id, 0) + .await; + return; + }; + + let Some(test_url) = build_panel_api_test_url(input.url.as_str(), username, password) else { + if max_wait_secs > 0 { + tokio::time::sleep(Duration::from_secs(max_wait_secs)).await; + } + debug_if_enabled!( + "panel_api provisioning probe failed to build test url for input {}", + sanitize_sensitive_info(&input.name) + ); + stop_signal.notify(); + let _ = app_state + .connection_manager + .kick_connection(&addr, virtual_id, 0) + .await; + return; + }; + + let probe_delay = Duration::from_secs(probe_interval_secs); + let mut attempt = 0u64; + let mut ready = false; + while Instant::now() < deadline { + attempt += 1; + debug_if_enabled!("panel_api provisioning probe attempt {}", attempt); + match probe_panel_api_test_url(&app_state, &test_url, probe_method).await { + Ok(status) => { + debug_if_enabled!( + "panel_api provisioning probe status: '{}' url: {}", + format_http_status(status), + sanitize_sensitive_info(test_url.as_str()) + ); + if status.is_success() { + ready = true; + break; + } + } + Err(err) => { + if err.is_timeout() { + debug_if_enabled!( + "panel_api provisioning probe timeout for {}", + sanitize_sensitive_info(test_url.as_str()) + ); + } else { + debug_if_enabled!( + "panel_api provisioning probe failed for {}: {err}", + sanitize_sensitive_info(test_url.as_str()) + ); + } + } + } + + let now = Instant::now(); + if now >= deadline { + break; + } + let remaining = deadline.checked_duration_since(now).unwrap_or_default(); + let sleep_for = if remaining < probe_delay { + remaining + } else { + probe_delay + }; + tokio::time::sleep(sleep_for).await; + } + + if ready { + debug_if_enabled!( + "panel_api provisioning ready for input {} (attempts={})", + sanitize_sensitive_info(&input.name), + attempt + ); + } else { + debug_if_enabled!( + "panel_api provisioning probe timeout reached for input {} (attempts={})", + sanitize_sensitive_info(&input.name), + attempt + ); + } + stop_signal.notify(); + debug_if_enabled!( + "panel_api provisioning closing client connection for input {} addr={}", + sanitize_sensitive_info(&input.name), + sanitize_sensitive_info(addr.to_string().as_str()) + ); + let _ = app_state + .connection_manager + .kick_connection(&addr, virtual_id, 0) + .await; +} + +pub fn create_panel_api_provisioning_stream_details( + app_state: &Arc, + input: &ConfigInput, + provider_name: Option>, + grace_period_millis: u64, + addr: SocketAddr, + virtual_id: VirtualId, +) -> StreamDetails { + let stop_signal = Arc::new(AtomicOnceFlag::new()); + let headers = [("connection".to_string(), "close".to_string())]; + let (stream, stream_info) = create_panel_api_provisioning_stream_with_stop( + &app_state.app_config, + &headers, + Arc::clone(&stop_signal), + ); + + if stream.is_none() { + debug_if_enabled!( + "panel_api provisioning stream missing; falling back to provider exhausted for input {}", + sanitize_sensitive_info(&input.name) + ); + let (stream, stream_info) = + create_provider_connections_exhausted_stream(&app_state.app_config, &[]); + return StreamDetails { + stream, + stream_info, + provider_name, + grace_period_millis, + disable_provider_grace: true, + reconnect_flag: None, + provider_handle: None, + }; + } + + let app_state_clone = Arc::clone(app_state); + let input_clone = input.clone(); + let stop_clone = Arc::clone(&stop_signal); + tokio::spawn(async move { + run_panel_api_provisioning_probe( + app_state_clone, + input_clone, + stop_clone, + addr, + virtual_id, + ) + .await; + }); + + StreamDetails { + stream, + stream_info, + provider_name, + grace_period_millis, + disable_provider_grace: true, + reconnect_flag: None, + provider_handle: None, + } +} diff --git a/backend/src/api/scheduler.rs b/backend/src/api/scheduler.rs index 716ebd065..e29677031 100644 --- a/backend/src/api/scheduler.rs +++ b/backend/src/api/scheduler.rs @@ -1,4 +1,5 @@ use crate::api::model::AppState; +use crate::api::panel_api::sync_panel_api_exp_dates_on_boot; use crate::model::{AppConfig, ProcessTargets, ScheduleConfig}; use crate::processing::processor::playlist::exec_processing; use crate::utils::exit; @@ -58,11 +59,12 @@ async fn start_scheduler(client: reqwest::Client, expression: &str, app_state: A if let Some(datetime) = upcoming.next() { tokio::select! { () = tokio::time::sleep_until(tokio::time::Instant::from(datetime_to_instant(datetime))) => { - let app_config = Arc::clone(&app_state.app_config); - let event_manager = Arc::clone(&app_state.event_manager); - let playlist_state = app_state.playlists.clone(); - exec_processing(&client, app_config, Arc::clone(&targets), Some(event_manager), - Some(playlist_state), Some(app_state.update_guard.clone())).await; + let app_config = Arc::clone(&app_state.app_config); + let event_manager = Arc::clone(&app_state.event_manager); + let playlist_state = app_state.playlists.clone(); + sync_panel_api_exp_dates_on_boot(&app_state).await; + exec_processing(&client, app_config, Arc::clone(&targets), Some(event_manager), + Some(playlist_state), Some(app_state.update_guard.clone())).await; } () = cancel.cancelled() => { break; @@ -159,4 +161,4 @@ mod tests { assert!(runs.load(Ordering::Acquire) == 6, "Failed to run"); assert!(duration.as_secs() > 4, "Failed time"); } -} \ No newline at end of file +} diff --git a/backend/src/model/config/api_proxy.rs b/backend/src/model/config/api_proxy.rs index 00caca04c..cd2495c18 100644 --- a/backend/src/model/config/api_proxy.rs +++ b/backend/src/model/config/api_proxy.rs @@ -1,5 +1,5 @@ use crate::model::{macros, AppConfig, Config, ProxyUserCredentials, TargetUser}; -use crate::repository::user_repository::{backup_api_user_db_file, get_api_user_db_path, load_api_user, merge_api_user}; +use crate::repository::{backup_api_user_db_file, get_api_user_db_path, load_api_user, merge_api_user}; use log::debug; use std::cmp::PartialEq; use std::fs; diff --git a/backend/src/model/config/app.rs b/backend/src/model/config/app.rs index 23af47845..51adf557a 100644 --- a/backend/src/model/config/app.rs +++ b/backend/src/model/config/app.rs @@ -19,6 +19,7 @@ const CHANNEL_UNAVAILABLE: &str = "channel_unavailable.ts"; const USER_CONNECTIONS_EXHAUSTED: &str = "user_connections_exhausted.ts"; const PROVIDER_CONNECTIONS_EXHAUSTED: &str = "provider_connections_exhausted.ts"; const USER_ACCOUNT_EXPIRED: &str = "user_account_expired.ts"; +const PANEL_API_PROVISIONING: &str = "panel_api_provisioning.ts"; fn generate_secret() -> [u8; 32] { let mut rng = rand::rng(); @@ -381,11 +382,13 @@ impl AppConfig { let user_connections_exhausted = load_and_set_file(&path.join(USER_CONNECTIONS_EXHAUSTED)); let provider_connections_exhausted = load_and_set_file(&path.join(PROVIDER_CONNECTIONS_EXHAUSTED)); let user_account_expired = load_and_set_file(&path.join(USER_ACCOUNT_EXPIRED)); + let panel_api_provisioning = load_and_set_file(&path.join(PANEL_API_PROVISIONING)); self.custom_stream_response.store(Some(Arc::new(CustomStreamResponse { channel_unavailable, user_connections_exhausted, provider_connections_exhausted, user_account_expired, + panel_api_provisioning, }))); } } @@ -413,4 +416,3 @@ impl AppConfig { } } - diff --git a/backend/src/model/config/base.rs b/backend/src/model/config/base.rs index 3712377fd..366101274 100644 --- a/backend/src/model/config/base.rs +++ b/backend/src/model/config/base.rs @@ -46,6 +46,7 @@ pub struct Config { pub process_parallel: bool, pub api: ConfigApi, pub working_dir: String, + pub default_user_agent: Option, pub backup_dir: Option, pub user_config_dir: Option, pub mapping_path: Option, @@ -138,6 +139,7 @@ impl From<&ConfigDto> for Config { disk_based_processing: dto.disk_based_processing, api: ConfigApi::from(&dto.api), working_dir: dto.working_dir.clone(), + default_user_agent: dto.default_user_agent.clone(), backup_dir: dto.backup_dir.clone(), user_config_dir: dto.user_config_dir.clone(), mapping_path: dto.mapping_path.clone(), @@ -160,4 +162,4 @@ impl From<&ConfigDto> for Config { library: dto.library.as_ref().map(Into::into), } } -} \ No newline at end of file +} diff --git a/backend/src/model/config/input.rs b/backend/src/model/config/input.rs index 7d25ed9ff..3aa852c63 100644 --- a/backend/src/model/config/input.rs +++ b/backend/src/model/config/input.rs @@ -1,5 +1,4 @@ -use crate::model::{macros, EpgConfig}; -use crate::utils::get_csv_file_path; +use crate::model::{macros, EpgConfig, PanelApiConfig}; use chrono::Utc; use log::warn; use shared::error::TuliproxError; @@ -12,7 +11,7 @@ use std::fmt; use std::path::PathBuf; use std::sync::Arc; use url::Url; -use crate::model::config::panel_api::PanelApiConfig; +use crate::repository::get_csv_file_path; #[allow(clippy::struct_excessive_bools)] #[derive(Debug, Clone)] diff --git a/backend/src/model/config/mod.rs b/backend/src/model/config/mod.rs index d9eda0d3d..097a61e35 100644 --- a/backend/src/model/config/mod.rs +++ b/backend/src/model/config/mod.rs @@ -62,4 +62,4 @@ pub use web_auth::*; pub use web_ui::*; pub use favourites::*; pub use library::*; -pub use panel_api::*; \ No newline at end of file +pub use panel_api::*; diff --git a/backend/src/model/config/panel_api.rs b/backend/src/model/config/panel_api.rs index 9fff392b8..6f24b6be9 100644 --- a/backend/src/model/config/panel_api.rs +++ b/backend/src/model/config/panel_api.rs @@ -1,11 +1,13 @@ use crate::model::macros; use shared::error::{TuliproxError, info_err_res}; -use shared::model::{PanelApiConfigDto, PanelApiQueryParamDto, PanelApiQueryParametersDto}; +use shared::model::{PanelApiAliasPoolDto, PanelApiAliasPoolSizeDto, PanelApiAliasPoolSizeValue, PanelApiConfigDto, PanelApiProvisioningDto, PanelApiQueryParamDto, PanelApiQueryParametersDto}; +use std::sync::Arc; +use shared::utils::Internable; #[derive(Debug, Clone)] pub struct PanelApiQueryParam { - pub key: String, - pub value: String, + pub key: Arc, + pub value: Arc, } macros::from_impl!(PanelApiQueryParam); @@ -29,18 +31,22 @@ impl From<&PanelApiQueryParam> for PanelApiQueryParamDto { #[derive(Debug, Clone)] pub struct PanelApiQueryParameters { + pub account_info: Vec, pub client_info: Vec, pub client_new: Vec, pub client_renew: Vec, + pub client_adult_content: Vec, } macros::from_impl!(PanelApiQueryParameters); impl From<&PanelApiQueryParametersDto> for PanelApiQueryParameters { fn from(dto: &PanelApiQueryParametersDto) -> Self { Self { + account_info: dto.account_info.iter().map(PanelApiQueryParam::from).collect(), client_info: dto.client_info.iter().map(PanelApiQueryParam::from).collect(), client_new: dto.client_new.iter().map(PanelApiQueryParam::from).collect(), client_renew: dto.client_renew.iter().map(PanelApiQueryParam::from).collect(), + client_adult_content: dto.client_adult_content.iter().map(PanelApiQueryParam::from).collect(), } } } @@ -48,9 +54,11 @@ impl From<&PanelApiQueryParametersDto> for PanelApiQueryParameters { impl From<&PanelApiQueryParameters> for PanelApiQueryParametersDto { fn from(instance: &PanelApiQueryParameters) -> Self { Self { + account_info: instance.account_info.iter().map(PanelApiQueryParamDto::from).collect(), client_info: instance.client_info.iter().map(PanelApiQueryParamDto::from).collect(), client_new: instance.client_new.iter().map(PanelApiQueryParamDto::from).collect(), client_renew: instance.client_renew.iter().map(PanelApiQueryParamDto::from).collect(), + client_adult_content: instance.client_adult_content.iter().map(PanelApiQueryParamDto::from).collect(), } } } @@ -125,12 +133,80 @@ impl PanelApiQueryParameters { } } +#[derive(Debug, Clone, PartialEq)] +pub struct PanelApiProvisioning { + pub timeout_sec: u64, + pub method: shared::model::PanelApiProvisioningMethod, + pub probe_interval_sec: u64, + pub cooldown_sec: u64, + pub offset: Option>, +} + +macros::from_impl!(PanelApiProvisioning); +impl From<&PanelApiProvisioningDto> for PanelApiProvisioning { + fn from(dto: &PanelApiProvisioningDto) -> Self { + Self { + timeout_sec: dto.timeout_sec, + method: dto.method, + probe_interval_sec: dto.probe_interval_sec, + cooldown_sec: dto.cooldown_sec, + offset: dto.offset.as_ref().map(Internable::intern), + } + } +} + +impl From<&PanelApiProvisioning> for PanelApiProvisioningDto { + fn from(instance: &PanelApiProvisioning) -> Self { + Self { + timeout_sec: instance.timeout_sec, + method: instance.method, + probe_interval_sec: instance.probe_interval_sec, + cooldown_sec: instance.cooldown_sec, + offset: instance.offset.as_ref().map(ToString::to_string), + } + } +} + +#[derive(Debug, Clone)] +pub struct PanelApiAliasPoolSize { + pub min: Option, + pub max: Option, +} + +macros::from_impl!(PanelApiAliasPoolSize); +impl From<&PanelApiAliasPoolSizeDto> for PanelApiAliasPoolSize { + fn from(dto: &PanelApiAliasPoolSizeDto) -> Self { + Self { + min: dto.min.clone(), + max: dto.max.clone(), + } + } +} + +#[derive(Debug, Clone)] +pub struct PanelApiAliasPool { + pub size: Option, + pub remove_expired: bool, +} + +macros::from_impl!(PanelApiAliasPool); +impl From<&PanelApiAliasPoolDto> for PanelApiAliasPool { + fn from(dto: &PanelApiAliasPoolDto) -> Self { + Self { + size: dto.size.as_ref().map(PanelApiAliasPoolSize::from), + remove_expired: dto.remove_expired, + } + } +} + #[derive(Debug, Clone)] pub struct PanelApiConfig { pub enabled: bool, - pub url: String, - pub api_key: Option, + pub url: Arc, + pub api_key: Option>, + pub provisioning: PanelApiProvisioning, pub query_parameter: PanelApiQueryParameters, + pub alias_pool: Option, } macros::from_impl!(PanelApiConfig); @@ -138,9 +214,11 @@ impl From<&PanelApiConfigDto> for PanelApiConfig { fn from(dto: &PanelApiConfigDto) -> Self { Self { enabled: dto.enabled, - url: dto.url.clone(), - api_key: dto.api_key.clone(), + url: dto.url.clone().intern(), + api_key: dto.api_key.as_ref().map(Internable::intern), + provisioning: PanelApiProvisioning::from(&dto.provisioning), query_parameter: PanelApiQueryParameters::from(&dto.query_parameter), + alias_pool: dto.alias_pool.as_ref().map(PanelApiAliasPool::from), } } } @@ -149,15 +227,24 @@ impl From<&PanelApiConfig> for PanelApiConfigDto { fn from(instance: &PanelApiConfig) -> Self { Self { enabled: instance.enabled, - url: instance.url.clone(), - api_key: instance.api_key.clone(), + url: instance.url.to_string(), + api_key: instance.api_key.as_ref().map(Arc::clone), + provisioning: PanelApiProvisioningDto::from(&instance.provisioning), query_parameter: PanelApiQueryParametersDto::from(&instance.query_parameter), - + credits: None, + alias_pool: instance.alias_pool.as_ref().map(|p| PanelApiAliasPoolDto { + size: p.size.as_ref().map(|s| PanelApiAliasPoolSizeDto { + min: s.min.clone(), + max: s.max.clone(), + }), + remove_expired: p.remove_expired, + }), } } } impl PanelApiConfig { + pub fn prepare(&mut self) -> Result<(), TuliproxError> { if !self.enabled { return Ok(()); diff --git a/backend/src/model/config/stream.rs b/backend/src/model/config/stream.rs index e3bbaa38c..dfcfe8c56 100644 --- a/backend/src/model/config/stream.rs +++ b/backend/src/model/config/stream.rs @@ -74,4 +74,5 @@ pub struct CustomStreamResponse { pub user_connections_exhausted: Option, // user has no more connections pub provider_connections_exhausted: Option, // provider limit reached, has no more connections pub user_account_expired: Option, + pub panel_api_provisioning: Option, } diff --git a/backend/src/model/xmltv.rs b/backend/src/model/xmltv.rs index 4c3bde2de..ef5103179 100644 --- a/backend/src/model/xmltv.rs +++ b/backend/src/model/xmltv.rs @@ -236,6 +236,7 @@ pub async fn parse_xmltv_for_web_ui_from_url(app_state: &Arc, url: &st }; let disabled_headers = app_state.get_disabled_headers(); + let default_user_agent = app_state.app_config.config.load().default_user_agent.clone(); match get_remote_content_as_stream( &client, @@ -243,6 +244,7 @@ pub async fn parse_xmltv_for_web_ui_from_url(app_state: &Arc, url: &st None, &request_url, disabled_headers.as_ref(), + default_user_agent.as_deref(), ).await { Ok((stream, _url)) => { parse_xmltv_for_web_ui(stream).await diff --git a/backend/src/processing/input_cache.rs b/backend/src/processing/input_cache.rs index 8fb271720..d6a550b21 100644 --- a/backend/src/processing/input_cache.rs +++ b/backend/src/processing/input_cache.rs @@ -4,7 +4,7 @@ use std::path::{Path, PathBuf}; use serde::{Deserialize, Serialize}; use std::time::{SystemTime, UNIX_EPOCH}; use log::{error, warn}; -use crate::repository::storage::{build_input_storage_path, get_input_storage_path}; +use crate::repository::{build_input_storage_path, get_input_storage_path}; pub const STATUS_FILE: &str = "status.json"; diff --git a/backend/src/processing/processor/playlist.rs b/backend/src/processing/processor/playlist.rs index 4176d7d4c..39b50d409 100644 --- a/backend/src/processing/processor/playlist.rs +++ b/backend/src/processing/processor/playlist.rs @@ -27,9 +27,8 @@ use crate::processing::processor::sort::sort_playlist; use crate::processing::processor::trakt::process_trakt_categories_for_target; use crate::processing::processor::xtream_series::playlist_resolve_series; use crate::processing::processor::xtream_vod::playlist_resolve_vod; -use crate::repository::playlist_repository::{load_input_playlist, persist_input_playlist, persist_playlist}; -use crate::repository::xtream_repository::CategoryKey; -use crate::repository::{MemoryPlaylistSource, PlaylistSource}; +use crate::repository::{load_input_playlist, persist_input_playlist, persist_playlist}; +use crate::repository::{CategoryKey, MemoryPlaylistSource, PlaylistSource}; use crate::utils::StepMeasure; use crate::utils::{debug_if_enabled, trace_if_enabled}; use futures::StreamExt; diff --git a/backend/src/processing/processor/sort.rs b/backend/src/processing/processor/sort.rs index 70cc7e420..22bc8ac80 100644 --- a/backend/src/processing/processor/sort.rs +++ b/backend/src/processing/processor/sort.rs @@ -45,7 +45,6 @@ fn playlist_comparator( match (match_a, match_b) { (Some((idx_a, caps_a)), Some((idx_b, caps_b))) => { - // Different regex indices → sort by their sequence order. if idx_a != idx_b { return match order { SortOrder::Asc => idx_a.cmp(&idx_b), @@ -66,15 +65,19 @@ fn playlist_comparator( for name in named { let va = caps_a.name(name).map(|m| m.as_str()); let vb = caps_b.name(name).map(|m| m.as_str()); - if let (Some(va), Some(vb)) = (va, vb) { - let o = va.cmp(vb); - if !matches!(o, Ordering::Equal) { - return match order { - SortOrder::Asc => o, - SortOrder::Desc => o.reverse(), - SortOrder::None => Ordering::Equal, - }; - } + let o = match (va, vb) { + (Some(a), Some(b)) => a.cmp(b), + (Some(_), None) => Ordering::Greater, + (None, Some(_)) => Ordering::Less, + _ => Ordering::Equal, + }; + + if o != Ordering::Equal { + return match order { + SortOrder::Asc => o, + SortOrder::Desc => o.reverse(), + SortOrder::None => Ordering::Equal, + }; } } @@ -205,15 +208,24 @@ fn sort_channels_in_groups( let va = vp_a.get(rule.field.as_str()); let vb = vp_b.get(rule.field.as_str()); - let ord = match (va, vb) { + let ord = match (&va, &vb) { (None, None) => Ordering::Equal, (Some(_), None) => direction(rule.order, Ordering::Less), (None, Some(_)) => direction(rule.order, Ordering::Greater), (Some(va), Some(vb)) => { - playlist_comparator(rule.sequence.as_ref(), rule.order, &va, &vb) + playlist_comparator(rule.sequence.as_ref(), rule.order, va, vb) } }; + if ord == Ordering::Equal { + if let (Some(va), Some(vb)) = (&va, &vb) { + let fallback = direction(rule.order, va.cmp(vb)); + if fallback != Ordering::Equal { + return fallback; + } + } + } + if ord != Ordering::Equal { return ord; } diff --git a/backend/src/processing/processor/xtream.rs b/backend/src/processing/processor/xtream.rs index 911bfc172..30b1b6665 100644 --- a/backend/src/processing/processor/xtream.rs +++ b/backend/src/processing/processor/xtream.rs @@ -4,12 +4,20 @@ use crate::model::{ConfigInput, InputSource}; use shared::model::{PlaylistEntry, PlaylistItem, XtreamCluster}; use crate::utils::xtream; -pub(in crate::processing) async fn playlist_resolve_download_playlist_item(client: &reqwest::Client, pli: &PlaylistItem, input: &ConfigInput, errors: &mut Vec, resolve_delay: u16, cluster: XtreamCluster) -> Option { +pub(in crate::processing) async fn playlist_resolve_download_playlist_item( + client: &reqwest::Client, + pli: &PlaylistItem, + input: &ConfigInput, + errors: &mut Vec, + resolve_delay: u16, + cluster: XtreamCluster, + default_user_agent: Option<&str>, +) -> Option { let mut result = None; let provider_id = pli.get_provider_id()?; if let Some(info_url) = xtream::get_xtream_player_api_info_url(input, cluster, provider_id) { let input_source = InputSource::from(input).with_url(info_url); - result = match xtream::get_xtream_stream_info_content(client, &input_source, true).await { + result = match xtream::get_xtream_stream_info_content(client, &input_source, true, default_user_agent).await { Ok(content) => Some(content), Err(err) => { errors.push(info_err!("{err}")); diff --git a/backend/src/processing/processor/xtream_series.rs b/backend/src/processing/processor/xtream_series.rs index 90229d6d9..6f51c1782 100644 --- a/backend/src/processing/processor/xtream_series.rs +++ b/backend/src/processing/processor/xtream_series.rs @@ -4,9 +4,7 @@ use crate::processing::parser::xtream::parse_xtream_series_info; use crate::processing::processor::create_resolve_options_function_for_xtream_target; use crate::processing::processor::playlist::ProcessingPipe; use crate::processing::processor::xtream::playlist_resolve_download_playlist_item; -use crate::repository::storage::get_input_storage_path; -use crate::repository::xtream_repository::persist_input_series_info_batch; -use crate::repository::{MemoryPlaylistSource, PlaylistSource}; +use crate::repository::{get_input_storage_path, persist_input_series_info_batch, MemoryPlaylistSource, PlaylistSource}; use log::{error, info, log_enabled, Level}; use shared::error::TuliproxError; use shared::model::{InputType, PlaylistEntry, SeriesStreamProperties, StreamProperties, XtreamSeriesInfo}; @@ -50,6 +48,7 @@ async fn playlist_resolve_series_info(app_config: &Arc, client: &reqw let mut processed_series_info_count = 0; let mut group_series: HashMap = HashMap::new(); let mut batch = Vec::with_capacity(BATCH_SIZE); + let default_user_agent = app_config.config.load().default_user_agent.clone(); let input = fpl.input; for pli in fpl.items_mut() { @@ -66,7 +65,17 @@ async fn playlist_resolve_series_info(app_config: &Arc, client: &reqw let should_download = resolve_series && !pli.has_details(); if should_download { processed_series_info_count += 1; - if let Some(content) = playlist_resolve_download_playlist_item(client, pli, input, errors, resolve_delay, XtreamCluster::Series).await { + if let Some(content) = playlist_resolve_download_playlist_item( + client, + pli, + input, + errors, + resolve_delay, + XtreamCluster::Series, + default_user_agent.as_deref(), + ) + .await + { if !content.is_empty() { match serde_json::from_str::(&content) { Ok(info) => { diff --git a/backend/src/processing/processor/xtream_vod.rs b/backend/src/processing/processor/xtream_vod.rs index 2b6b792ee..ac7b1aab2 100644 --- a/backend/src/processing/processor/xtream_vod.rs +++ b/backend/src/processing/processor/xtream_vod.rs @@ -2,8 +2,8 @@ use crate::model::FetchedPlaylist; use crate::model::{AppConfig, ConfigTarget}; use crate::processing::processor::create_resolve_options_function_for_xtream_target; use crate::processing::processor::xtream::playlist_resolve_download_playlist_item; -use crate::repository::storage::get_input_storage_path; -use crate::repository::xtream_repository::persist_input_vod_info_batch; +use crate::repository::get_input_storage_path; +use crate::repository::persist_input_vod_info_batch; use log::{error, info, log_enabled, Level}; use shared::error::TuliproxError; use shared::model::{InputType, PlaylistEntry, StreamProperties, VideoStreamProperties, XtreamVideoInfo}; @@ -41,6 +41,7 @@ pub async fn playlist_resolve_vod(app_config: &Arc, let mut last_log_time = Instant::now(); let mut processed_vod_info_count = 0; let mut batch = Vec::with_capacity(BATCH_SIZE); + let default_user_agent = app_config.config.load().default_user_agent.clone(); provider_fpl.source.release_resources(XtreamCluster::Video); @@ -54,7 +55,17 @@ pub async fn playlist_resolve_vod(app_config: &Arc, let Some(provider_id) = pli.get_provider_id() else { continue; }; processed_vod_info_count += 1; if provider_id != 0 { - if let Some(content) = playlist_resolve_download_playlist_item(client, pli, input, errors, resolve_delay, XtreamCluster::Video).await { + if let Some(content) = playlist_resolve_download_playlist_item( + client, + pli, + input, + errors, + resolve_delay, + XtreamCluster::Video, + default_user_agent.as_deref(), + ) + .await + { if content.is_empty() { continue; } match serde_json::from_str::(&content) { Ok(info) => { diff --git a/backend/src/repository/alias_repository.rs b/backend/src/repository/alias_repository.rs new file mode 100644 index 000000000..c04bb2872 --- /dev/null +++ b/backend/src/repository/alias_repository.rs @@ -0,0 +1,609 @@ +use crate::model::is_input_expired; +use crate::utils::request::get_local_csv_file_content; +use crate::utils::EnvResolvingReader; +use crate::utils::{file_reader, resolve_relative_path}; +use futures::TryFutureExt; +use log::{error, warn}; +use shared::error::{string_to_io_error, to_io_error, TuliproxError}; +use shared::info_err; +use shared::model::{ConfigInputAliasDto, InputType}; +use shared::utils::{get_credentials_from_url, get_credentials_from_url_str, parse_timestamp, sanitize_sensitive_info, Internable}; +use std::io; +use std::io::{BufRead, Cursor, Error}; +use std::path::{Path, PathBuf}; +use std::sync::Arc; +use url::Url; + +const CSV_SEPARATOR: char = ';'; +const HEADER_PREFIX: char = '#'; +const FIELD_MAX_CON: &str = "max_connections"; +const FIELD_PRIO: &str = "priority"; +const FIELD_URL: &str = "url"; +const FIELD_NAME: &str = "name"; +const FIELD_USERNAME: &str = "username"; +const FIELD_PASSWORD: &str = "password"; +const FIELD_EXP_DATE: &str = "exp_date"; +const FIELD_UNKNOWN: &str = "?"; +const DEFAULT_COLUMNS: &[&str] = &[ + FIELD_URL, + FIELD_MAX_CON, + FIELD_PRIO, + FIELD_NAME, + FIELD_USERNAME, + FIELD_PASSWORD, + FIELD_EXP_DATE, +]; +const CSV_EXTENSION: &str = ".csv"; + +pub fn is_csv_file(url: &str) -> bool { + url.to_lowercase().ends_with(CSV_EXTENSION) +} + + +fn build_m3u_url( + base: &Url, + username: Option<&str>, + password: Option<&str>, +) -> Result { + let base_origin = base.origin().ascii_serialization(); + let mut url = base_origin.parse::()?.join("get.php")?; + { + let mut qp = url.query_pairs_mut(); + qp.append_pair("username", username.unwrap_or("")); + qp.append_pair("password", password.unwrap_or("")); + qp.append_pair("type", "m3u_plus"); + } + + Ok(url) +} + +fn csv_assign_mandatory_fields(alias: &mut ConfigInputAliasDto, input_type: InputType) { + if !alias.url.is_empty() { + match Url::parse(alias.url.as_str()) { + Ok(url) => { + let (username, password) = get_credentials_from_url(&url); + if username.is_none() || password.is_none() { + // xtream url + if input_type == InputType::XtreamBatch { + alias.url = url.origin().ascii_serialization(); + } else if input_type == InputType::M3uBatch + && alias.username.is_some() + && alias.password.is_some() + { + match build_m3u_url( + &url, + alias.username.as_deref(), + alias.password.as_deref()) { + Ok(alias_url) => { + alias.url = alias_url.to_string(); + } + Err(err) => { + error!("Could not build m3u url for alias {}: {err}", alias.name); + } + } + } + } else { + if input_type == InputType::XtreamBatch { + alias.url = url.origin().ascii_serialization(); + } + // m3u url + alias.username = username; + alias.password = password; + } + + if alias.name.is_empty() { + let username = alias.username.as_deref().unwrap_or_default(); + let domain: Vec<&str> = url.domain().unwrap_or_default().split('.').collect(); + if domain.len() > 1 { + alias.name = format!("{}_{username}", domain[domain.len() - 2]).intern(); + } else { + alias.name = username.intern(); + } + } + } + Err(err) => { + warn!("Could not parse URL '{}' for alias: {err}", sanitize_sensitive_info(&alias.url)); + } + } + } +} + +fn csv_assign_config_input_column( + config_input: &mut ConfigInputAliasDto, + header: &str, + raw_value: &str, +) -> Result<(), io::Error> { + let value = raw_value.trim(); + if !value.is_empty() { + match header { + FIELD_URL => { + let url = Url::parse(value.trim()).map_err(to_io_error)?; + config_input.url = url.to_string(); + } + FIELD_MAX_CON => { + let max_connections = value.parse::().unwrap_or(1); + config_input.max_connections = max_connections; + } + FIELD_PRIO => { + let priority = value.parse::().unwrap_or(0); + config_input.priority = priority; + } + FIELD_NAME => { + config_input.name = value.intern(); + } + FIELD_USERNAME => { + config_input.username = Some(value.to_string()); + } + FIELD_PASSWORD => { + config_input.password = Some(value.to_string()); + } + FIELD_EXP_DATE => { + config_input.exp_date = parse_timestamp(value).unwrap_or_else(|e| { + error!("Failed to parse exp_date '{value}': {e}"); + None + }); + } + _ => {} + } + } + Ok(()) +} + +pub fn csv_read_inputs_from_reader( + batch_input_type: InputType, + reader: impl BufRead, +) -> Result, Error> { + let input_type = match batch_input_type { + InputType::M3uBatch | InputType::M3u => InputType::M3uBatch, + InputType::XtreamBatch | InputType::Xtream => InputType::XtreamBatch, + InputType::Library => InputType::Library, + }; + let mut result = vec![]; + let mut default_columns = vec![]; + default_columns.extend_from_slice(DEFAULT_COLUMNS); + let mut header_defined = false; + for (line_idx, line) in reader.lines().enumerate() { + let line = line?; + if line.is_empty() { + continue; + } + if line.starts_with(HEADER_PREFIX) { + if !header_defined { + header_defined = true; + default_columns = line[1..] + .split(CSV_SEPARATOR) + .map(|s| match s { + FIELD_URL => FIELD_URL, + FIELD_MAX_CON => FIELD_MAX_CON, + FIELD_PRIO => FIELD_PRIO, + FIELD_NAME => FIELD_NAME, + FIELD_USERNAME => FIELD_USERNAME, + FIELD_PASSWORD => FIELD_PASSWORD, + FIELD_EXP_DATE => FIELD_EXP_DATE, + _ => { + error!("Field {s} is unsupported for csv input"); + FIELD_UNKNOWN + } + }) + .collect(); + } + continue; + } + + let mut config_input = ConfigInputAliasDto { + id: 0, + name: "".intern(), + url: String::new(), + username: None, + password: None, + priority: 0, + max_connections: 1, + exp_date: None, + }; + + let columns: Vec<&str> = line.split(CSV_SEPARATOR).collect(); + for (&header, &value) in default_columns.iter().zip(columns.iter()) { + if let Err(err) = csv_assign_config_input_column(&mut config_input, header, value) { + error!("Could not parse input line: {} err: {err}", line_idx+1); + } + } + csv_assign_mandatory_fields(&mut config_input, input_type); + if config_input.url.is_empty() { + warn!("Skipping CSV line {}: missing or invalid url", line_idx + 1); + continue; + } + result.push(config_input); + } + Ok(result) +} + +async fn csv_read_inputs_from_path( + input_type: InputType, + file_path: &Path, +) -> Result<(PathBuf, Vec), Error> { + match get_local_csv_file_content(file_path).await { + Ok(content) => Ok(( + file_path.to_path_buf(), + csv_read_inputs_from_reader( + input_type, + EnvResolvingReader::new(file_reader(Cursor::new(content))), + )?, + )), + Err(err) => Err(err), + } +} + +pub async fn csv_read_inputs( + input_type: InputType, + file_uri: &str, +) -> Result<(PathBuf, Vec), Error> { + let file_path = get_csv_file_path(file_uri)?; + csv_read_inputs_from_path(input_type, &file_path).await +} + +pub fn get_csv_file_path(file_uri: &str) -> Result { + let raw_path = Path::new(file_uri); + if raw_path.is_absolute() { + return Ok(raw_path.to_path_buf()); + } + if let Ok(url) = file_uri.parse::() { + if url.scheme() == "file" { + match url.to_file_path() { + Ok(path) => Ok(path), + Err(()) => Err(string_to_io_error(format!("Could not open {file_uri}"))), + } + } else { + Err(string_to_io_error(format!( + "Only file:// is supported {file_uri}" + ))) + } + } else { + resolve_relative_path(file_uri) + } +} + +async fn csv_write_input_to_path( + file_path: &Path, + aliases: &[ConfigInputAliasDto], +) -> Result<(), Error> { + let mut content = String::new(); + content.push(HEADER_PREFIX); + content.push_str(FIELD_NAME); + content.push(CSV_SEPARATOR); + content.push_str(FIELD_USERNAME); + content.push(CSV_SEPARATOR); + content.push_str(FIELD_PASSWORD); + content.push(CSV_SEPARATOR); + content.push_str(FIELD_URL); + content.push(CSV_SEPARATOR); + content.push_str(FIELD_MAX_CON); + content.push(CSV_SEPARATOR); + content.push_str(FIELD_PRIO); + content.push(CSV_SEPARATOR); + content.push_str(FIELD_EXP_DATE); + content.push('\n'); + + for alias in aliases { + content.push_str(&alias.name); + content.push(CSV_SEPARATOR); + content.push_str(alias.username.as_deref().unwrap_or("")); + content.push(CSV_SEPARATOR); + content.push_str(alias.password.as_deref().unwrap_or("")); + content.push(CSV_SEPARATOR); + content.push_str(&alias.url); + content.push(CSV_SEPARATOR); + content.push_str(&alias.max_connections.to_string()); + content.push(CSV_SEPARATOR); + content.push_str(&alias.priority.to_string()); + content.push(CSV_SEPARATOR); + if let Some(exp) = alias.exp_date { + content.push_str( + &shared::utils::unix_ts_to_str_with_format(exp, "%Y-%m-%d %H:%M:%S") + .unwrap_or_default(), + ); + } + content.push('\n'); + } + + tokio::fs::write(file_path, content) + .await + .map_err(to_io_error) +} + +pub async fn csv_write_inputs( + file_uri: &str, + aliases: &[ConfigInputAliasDto], +) -> Result<(), Error> { + let file_path = get_csv_file_path(file_uri)?; + csv_write_input_to_path(&file_path, aliases).await +} + +pub async fn csv_patch_batch_append( + csv_path: &Path, + input_type: InputType, + alias_name: &str, + base_url: &str, + username: &str, + password: &str, + exp_date: Option, +) -> Result<(), TuliproxError> { + // TODO check if alias name exists in any config ? + + let (file_path, mut aliases) = csv_read_inputs_from_path(input_type, csv_path) + .map_err(|err| info_err!("{err}")) + .await?; + + + let url = if input_type == InputType::M3uBatch { + let base = Url::parse(base_url).map_err(|e| info_err!("{e}"))?; + build_m3u_url(&base, Some(username), Some(password)) + .map_err(|e| info_err!("{e}"))? + .to_string() + } else { + base_url.to_string() + }; + + let alias = ConfigInputAliasDto { + id: 0, + name: alias_name.intern(), + url, + username: Some(username.to_string()), + password: Some(password.to_string()), + priority: 0, + max_connections: 1, + exp_date, + }; + aliases.push(alias); + + csv_write_input_to_path(&file_path, &aliases) + .map_err(|err| info_err!("{err}")) + .await?; + Ok(()) +} + +pub async fn csv_patch_batch_update_exp_date( + input_type: InputType, + csv_path: &Path, + account_name: &Arc, + username: &str, + password: &str, + exp_date: i64, +) -> Result<(), TuliproxError> { + let mut matched = false; + let (file_path, mut aliases) = csv_read_inputs_from_path(input_type, csv_path) + .map_err(|err| info_err!("{err}")) + .await?; + for alias in &mut aliases { + if &alias.name == account_name + || (alias.username == Some(username.to_string()) + && alias.password == Some(password.to_string())) + { + alias.exp_date = Some(exp_date); + alias.max_connections = 1; + matched = true; + } else if let (Some(u), Some(p)) = get_credentials_from_url_str(&alias.url) { + if u == username && p == password { + alias.exp_date = Some(exp_date); + alias.max_connections = 1; + matched = true; + } + } + } + + if matched { + csv_write_input_to_path(&file_path, &aliases) + .map_err(|err| info_err!("{err}")) + .await?; + } else { + warn!("panel_api: could not find batch csv row for account {account_name}"); + } + Ok(()) +} + +#[allow(clippy::too_many_arguments)] +pub async fn csv_patch_batch_update_credentials( + input_type: InputType, + csv_path: &Path, + account_name: &Arc, + old_username: &str, + old_password: &str, + new_username: &str, + new_password: &str, + exp_date: Option, +) -> Result<(), TuliproxError> { + let mut matched = false; + let (file_path, mut aliases) = csv_read_inputs_from_path(input_type, csv_path) + .map_err(|err| info_err!("{err}")) + .await?; + + for alias in &mut aliases { + let mut is_match = &alias.name == account_name; + if !is_match { + is_match = alias.username.as_deref() == Some(old_username) + && alias.password.as_deref() == Some(old_password); + } + if !is_match { + is_match = alias.username.as_deref() == Some(new_username) + && alias.password.as_deref() == Some(new_password); + } + + if !is_match { + if let (Some(u), Some(p)) = get_credentials_from_url_str(&alias.url) { + is_match = (u == old_username && p == old_password) + || (u == new_username && p == new_password); + } + } + + if !is_match { + continue; + } + + alias.username = Some(new_username.to_string()); + alias.password = Some(new_password.to_string()); + alias.max_connections = 1; + if let Some(exp_date) = exp_date { + alias.exp_date = Some(exp_date); + } + + if matches!(input_type, InputType::M3uBatch | InputType::M3u) { + if let Ok(mut url) = Url::parse(alias.url.as_str()) { + let mut pairs: Vec<(String, String)> = url + .query_pairs() + .map(|(k, v)| (k.to_string(), v.to_string())) + .collect(); + let mut has_user = false; + let mut has_pass = false; + for (k, v) in &mut pairs { + if k.eq_ignore_ascii_case("username") { + *v = new_username.to_string(); + has_user = true; + } else if k.eq_ignore_ascii_case("password") { + *v = new_password.to_string(); + has_pass = true; + } + } + if has_user || has_pass { + if !has_user { + pairs.push(("username".to_string(), new_username.to_string())); + } + if !has_pass { + pairs.push(("password".to_string(), new_password.to_string())); + } + url.query_pairs_mut().clear(); + { + let mut qp = url.query_pairs_mut(); + for (k, v) in pairs { + qp.append_pair(k.as_str(), v.as_str()); + } + } + alias.url = url.to_string(); + } + } + } + + matched = true; + } + + if matched { + csv_write_input_to_path(&file_path, &aliases) + .map_err(|err| info_err!("{err}")) + .await?; + } else { + warn!("panel_api: could not find batch csv row to update credentials for account {account_name}"); + } + Ok(()) +} + +pub async fn csv_patch_batch_remove_expired( + input_type: InputType, + csv_path: &Path, +) -> Result { + let (file_path, mut aliases) = csv_read_inputs_from_path(input_type, csv_path) + .map_err(|err| info_err!("{err}")) + .await?; + let before_len = aliases.len(); + aliases.retain(|alias| !is_input_expired(alias.exp_date)); + let changed = before_len != aliases.len(); + if changed { + csv_write_input_to_path(&file_path, &aliases) + .map_err(|err| info_err!("{err}")) + .await?; + } + Ok(changed) +} + +pub async fn csv_patch_batch_sort_by_exp_date( + input_type: InputType, + csv_path: &Path, +) -> Result { + let (file_path, mut aliases) = csv_read_inputs_from_path(input_type, csv_path) + .map_err(|err| info_err!("{err}")) + .await?; + if aliases.len() < 2 { + return Ok(false); + } + let mut sorted = aliases.clone(); + sorted.sort_by(|a, b| { + let a_ts = a.exp_date.unwrap_or(i64::MAX); + let b_ts = b.exp_date.unwrap_or(i64::MAX); + a_ts.cmp(&b_ts).then_with(|| a.name.cmp(&b.name)) + }); + if sorted == aliases { + return Ok(false); + } + aliases = sorted; + csv_write_input_to_path(&file_path, &aliases) + .map_err(|err| info_err!("{err}")) + .await?; + Ok(true) +} + +#[cfg(test)] +mod tests { + use crate::repository::csv_read_inputs_from_reader; + use crate::utils::{file_reader, resolve_env_var}; + use shared::model::InputType; + use std::io::Cursor; + + const M3U_BATCH: &str = r" +#url;name;max_connections;priority +http://hd.providerline.com:8080/get.php?username=user1&password=user1&type=m3u_plus;input_1 +http://hd.providerline.com/get.php?username=user2&password=user2&type=m3u_plus;input_2;1;2 +http://hd.providerline.com/get.php?username=user3&password=user3&type=m3u_plus;input_3;1;2 +http://hd.providerline.com/get.php?username=user4&password=user4&type=m3u_plus;input_4 +"; + + const XTREAM_BATCH: &str = r" +#name;username;password;url;max_connections;exp_date +input_1;de566567;de2345f43g5;http://provider_1.tv:80;1;2028-11-23 13:12:34 +input_2;de566567;de2345f43g5;http://provider_2.tv:8080;1;2028-12-23 13:12:34 +"; + + #[test] + fn test_read_inputs_xtream_as_m3u() { + let reader = file_reader(Cursor::new(XTREAM_BATCH)); + let result = csv_read_inputs_from_reader(InputType::M3uBatch, reader); + assert!(result.is_ok()); + let aliases = result.unwrap(); + assert!(!aliases.is_empty()); + for config in aliases { + assert!(config.url.contains("username")); + } + } + + #[test] + fn test_read_inputs_m3u_as_m3u() { + let reader = file_reader(Cursor::new(M3U_BATCH)); + let result = csv_read_inputs_from_reader(InputType::M3uBatch, reader); + assert!(result.is_ok()); + let aliases = result.unwrap(); + assert!(!aliases.is_empty()); + for config in aliases { + assert!(config.url.contains("username")); + } + } + + #[test] + fn test_read_inputs_xtream_as_xtream() { + let reader = file_reader(Cursor::new(XTREAM_BATCH)); + let result = csv_read_inputs_from_reader(InputType::XtreamBatch, reader); + assert!(result.is_ok()); + let aliases = result.unwrap(); + assert!(!aliases.is_empty()); + for config in aliases { + assert!(!config.url.contains("username")); + } + } + + #[test] + fn test_read_inputs_m3u_as_xtream() { + let reader = file_reader(Cursor::new(M3U_BATCH)); + let result = csv_read_inputs_from_reader(InputType::XtreamBatch, reader); + assert!(result.is_ok()); + let aliases = result.unwrap(); + assert!(!aliases.is_empty()); + for config in aliases { + assert!(!config.url.contains("username")); + } + } +} diff --git a/backend/src/repository/epg_repository.rs b/backend/src/repository/epg_repository.rs index 7bdd375d3..4f13cee24 100644 --- a/backend/src/repository/epg_repository.rs +++ b/backend/src/repository/epg_repository.rs @@ -1,8 +1,8 @@ use crate::model::Epg; use crate::model::{Config, ConfigTarget, TargetOutput}; -use crate::repository::m3u_repository::m3u_get_epg_file_path; +use crate::repository::m3u_get_epg_file_path; use shared::model::PlaylistGroup; -use crate::repository::xtream_repository::{xtream_get_epg_file_path, xtream_get_storage_path}; +use crate::repository::{xtream_get_epg_file_path, xtream_get_storage_path}; use crate::utils::{async_file_writer, debug_if_enabled}; use shared::error::{notify_err, TuliproxError}; use std::collections::HashMap; diff --git a/backend/src/repository/m3u_playlist_iterator.rs b/backend/src/repository/m3u_playlist_iterator.rs index c3c78f841..389c547fd 100644 --- a/backend/src/repository/m3u_playlist_iterator.rs +++ b/backend/src/repository/m3u_playlist_iterator.rs @@ -3,11 +3,11 @@ use shared::error::{TuliproxError}; use crate::model::{AppConfig, ProxyUserCredentials}; use crate::model::{ConfigTarget}; use shared::model::{ConfigTargetOptions, M3uPlaylistItem, PlaylistItemType, ProxyType, TargetType, XtreamCluster}; -use crate::repository::bplustree::{BPlusTreeQuery, PlaylistIteratorReader}; -use crate::repository::m3u_repository::m3u_get_file_path_for_db; -use crate::repository::storage::{ensure_target_storage_path, get_file_path_for_db_index}; +use crate::repository::{BPlusTreeQuery, PlaylistIteratorReader}; +use crate::repository::m3u_get_file_path_for_db; +use crate::repository::{ensure_target_storage_path, get_file_path_for_db_index}; use crate::repository::storage_const; -use crate::repository::user_repository::user_get_bouquet_filter; +use crate::repository::user_get_bouquet_filter; use crate::utils::FileReadGuard; use std::collections::HashSet; use std::iter::Peekable; diff --git a/backend/src/repository/mod.rs b/backend/src/repository/mod.rs index 614a171fb..7cdc578e5 100644 --- a/backend/src/repository/mod.rs +++ b/backend/src/repository/mod.rs @@ -1,19 +1,34 @@ -pub mod storage; -pub mod target_id_mapping; -pub mod bplustree; -pub mod playlist_repository; -pub mod m3u_repository; -pub mod xtream_repository; -pub mod epg_repository; -pub mod strm_repository; -pub mod m3u_playlist_iterator; -pub mod xtream_playlist_iterator; -pub mod user_repository; +mod storage; +mod target_id_mapping; +mod bplustree; +mod playlist_repository; +mod m3u_repository; +mod xtream_repository; +mod epg_repository; +mod strm_repository; +mod m3u_playlist_iterator; +mod xtream_playlist_iterator; +mod user_repository; pub mod storage_const; mod playlist_scratch; mod playlist_source; mod library_repository; -pub mod sorted_index; +mod sorted_index; +mod alias_repository; +pub use storage::*; +pub use target_id_mapping::*; +pub use bplustree::*; +pub use playlist_repository::*; +pub use m3u_repository::*; +pub use xtream_repository::*; +pub use epg_repository::*; +pub use strm_repository::*; +pub use m3u_playlist_iterator::*; +pub use xtream_playlist_iterator::*; +pub use user_repository::*; +pub use storage_const::*; +pub use sorted_index::*; +pub use alias_repository::*; pub use playlist_source::*; - +pub use library_repository::*; \ No newline at end of file diff --git a/backend/src/repository/playlist_repository.rs b/backend/src/repository/playlist_repository.rs index 4056d8bec..765ad1f39 100644 --- a/backend/src/repository/playlist_repository.rs +++ b/backend/src/repository/playlist_repository.rs @@ -2,14 +2,14 @@ use crate::api::model::{AppState, PlaylistM3uStorage, PlaylistStorage, PlaylistS use crate::model::Epg; use crate::model::{AppConfig, ConfigInput, ConfigTarget, TargetOutput}; use crate::processing::processor::playlist::{apply_filter_to_playlist, PlaylistProcessingContext}; -use crate::repository::bplustree::{BPlusTree, BPlusTreeQuery}; -use crate::repository::epg_repository::epg_write; -use crate::repository::m3u_repository::{load_input_m3u_playlist, m3u_get_file_path_for_db, m3u_write_playlist, persist_input_m3u_playlist}; -use crate::repository::storage::{ensure_target_storage_path, get_input_storage_path, get_target_id_mapping_file, get_target_storage_path}; -use crate::repository::storage_const::FILE_SUFFIX_DB; -use crate::repository::strm_repository::write_strm_playlist; -use crate::repository::target_id_mapping::{TargetIdMapping, VirtualIdRecord}; -use crate::repository::xtream_repository::{load_input_xtream_playlist, persist_input_xtream_playlist, xtream_get_file_path, xtream_get_storage_path, xtream_write_playlist}; +use crate::repository::{BPlusTree, BPlusTreeQuery}; +use crate::repository::epg_write; +use crate::repository::{load_input_m3u_playlist, m3u_get_file_path_for_db, m3u_write_playlist, persist_input_m3u_playlist}; +use crate::repository::{ensure_target_storage_path, get_input_storage_path, get_target_id_mapping_file, get_target_storage_path}; +use crate::repository::FILE_SUFFIX_DB; +use crate::repository::write_strm_playlist; +use crate::repository::{TargetIdMapping, VirtualIdRecord}; +use crate::repository::{load_input_xtream_playlist, persist_input_xtream_playlist, xtream_get_file_path, xtream_get_storage_path, xtream_write_playlist}; use crate::utils; use log::info; use crate::repository::{LocalLibraryDiskPlaylistSource, M3uDiskPlaylistSource, MemoryPlaylistSource, PlaylistSource, XtreamDiskPlaylistSource}; @@ -20,7 +20,7 @@ use shared::utils::{is_dash_url, is_hls_url, Internable}; use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::sync::Arc; -use crate::repository::library_repository::{load_input_local_library_playlist, persist_input_library_playlist}; +use crate::repository::{load_input_local_library_playlist, persist_input_library_playlist}; struct LocalEpisodeKey { path: Arc, diff --git a/backend/src/repository/playlist_source.rs b/backend/src/repository/playlist_source.rs index 0ab8af01f..1d773e06c 100644 --- a/backend/src/repository/playlist_source.rs +++ b/backend/src/repository/playlist_source.rs @@ -1,6 +1,6 @@ use crate::model::AppConfig; -use crate::repository::bplustree::BPlusTreeQuery; -use crate::repository::xtream_repository::xtream_get_file_path; +use crate::repository::BPlusTreeQuery; +use crate::repository::xtream_get_file_path; use crate::utils::FileReadGuard; use futures::future::BoxFuture; use indexmap::IndexMap; diff --git a/backend/src/repository/user_repository.rs b/backend/src/repository/user_repository.rs index 4df00cea8..36b0a1e70 100644 --- a/backend/src/repository/user_repository.rs +++ b/backend/src/repository/user_repository.rs @@ -1,9 +1,9 @@ use crate::model::PlaylistXtreamCategory; use crate::model::{AppConfig, ProxyUserCredentials, TargetUser}; use crate::model::Config; -use crate::repository::bplustree::BPlusTree; +use crate::repository::BPlusTree; use crate::repository::storage_const; -use crate::repository::xtream_repository::xtream_get_playlist_categories; +use crate::repository::xtream_get_playlist_categories; use crate::utils; use crate::utils::json_write_documents_to_file; use chrono::Local; diff --git a/backend/src/repository/xtream_playlist_iterator.rs b/backend/src/repository/xtream_playlist_iterator.rs index 8cd7841ef..1228a4220 100644 --- a/backend/src/repository/xtream_playlist_iterator.rs +++ b/backend/src/repository/xtream_playlist_iterator.rs @@ -1,15 +1,15 @@ use crate::model::ConfigTarget; use crate::model::{xtream_mapping_option_from_target_options, AppConfig, ProxyUserCredentials}; -use crate::repository::bplustree::{BPlusTreeQuery, PlaylistIteratorReader}; +use crate::repository::{BPlusTreeQuery, PlaylistIteratorReader}; -use crate::repository::user_repository::user_get_bouquet_filter; -use crate::repository::xtream_repository::{xtream_get_file_path, xtream_get_storage_path}; +use crate::repository::user_get_bouquet_filter; +use crate::repository::{xtream_get_file_path, xtream_get_storage_path}; use crate::utils::FileReadGuard; use log::error; use shared::error::{TuliproxError, info_err, info_err_res}; use shared::model::{PlaylistItemType, TargetType, XtreamCluster, XtreamMappingOptions, XtreamPlaylistItem}; use std::collections::HashSet; -use crate::repository::storage::get_file_path_for_db_index; +use crate::repository::get_file_path_for_db_index; pub struct XtreamPlaylistIterator { reader: PlaylistIteratorReader, diff --git a/backend/src/utils/db_viewer.rs b/backend/src/utils/db_viewer.rs index 6f60ee2f4..96bb8af36 100644 --- a/backend/src/utils/db_viewer.rs +++ b/backend/src/utils/db_viewer.rs @@ -1,4 +1,4 @@ -use crate::repository::bplustree::{BPlusTreeDiskIterator, BPlusTreeQuery}; +use crate::repository::{BPlusTreeDiskIterator, BPlusTreeQuery}; use env_logger::{Builder, Target}; use log::{error, LevelFilter}; use serde::{Deserialize, Serialize}; diff --git a/backend/src/utils/epg_parser.rs b/backend/src/utils/epg_parser.rs index 087f0b654..2daea07a6 100644 --- a/backend/src/utils/epg_parser.rs +++ b/backend/src/utils/epg_parser.rs @@ -199,9 +199,10 @@ pub fn time_correct(original: &str, shift: &Duration) -> String { let Ok(naive_dt) = NaiveDateTime::parse_from_str(datetime_part, "%Y%m%d%H%M%S") else { return original.to_string() }; let tz_offset_minutes = if tz_part.len() == 5 { - let sign = if &tz_part[0..1] == "-" { -1 } else { 1 }; - let hours: i32 = tz_part[1..3].parse().unwrap_or(0); - let mins: i32 = tz_part[3..5].parse().unwrap_or(0); + let bytes = tz_part.as_bytes(); + let sign = if bytes.first() == Some(&b'-') { -1 } else { 1 }; + let hours: i32 = tz_part.get(1..3).and_then(|s| s.parse().ok()).unwrap_or(0); + let mins: i32 = tz_part.get(3..5).and_then(|s| s.parse().ok()).unwrap_or(0); sign * (hours * 60 + mins) } else { 0 @@ -226,6 +227,8 @@ pub fn format_offset(offset_minutes: i32) -> String { let mins = abs % 60; format!("{sign}{hours:02}{mins:02}") } + +#[inline] fn get_attr_value_unescaped(attr: &quick_xml::events::attributes::Attribute, decoder: quick_xml::Decoder) -> Option { attr.decode_and_unescape_value(decoder).ok().map(|v| v.to_string()) } diff --git a/backend/src/utils/file/config_reader.rs b/backend/src/utils/file/config_reader.rs index 04047007b..7f38db19f 100644 --- a/backend/src/utils/file/config_reader.rs +++ b/backend/src/utils/file/config_reader.rs @@ -1,18 +1,23 @@ use crate::api::model::AppState; use crate::model::Config; use crate::model::{ApiProxyConfig, AppConfig, SourcesConfig}; -use crate::repository::user_repository::{get_api_user_db_path, load_api_user}; +use crate::repository::{ + csv_read_inputs, csv_write_inputs, get_api_user_db_path, is_csv_file, load_api_user, +}; +use crate::utils; use crate::utils::file_reader; use crate::utils::sys_utils::exit; use crate::utils::{open_file, read_mappings_file, EnvResolvingReader, FileLockManager}; -use crate::utils; use arc_swap::access::Access; use arc_swap::{ArcSwap, ArcSwapAny}; use chrono::Local; use log::{error, info, warn}; use serde::Serialize; use shared::error::{info_err, info_err_res, TuliproxError}; -use shared::model::{ApiProxyConfigDto, AppConfigDto, ConfigDto, ConfigInputAliasDto, ConfigPaths, HdHomeRunDeviceOverview, InputType, SourcesConfigDto, TargetUserDto}; +use shared::model::{ + ApiProxyConfigDto, AppConfigDto, ConfigDto, ConfigInputAliasDto, ConfigPaths, + HdHomeRunDeviceOverview, InputType, SourcesConfigDto, TargetUserDto, +}; use shared::utils::CONSTANTS; use std::env; use std::fs::File; @@ -36,8 +41,7 @@ impl Read for EitherReader { } } -pub fn config_file_reader(file: File, resolve_env: bool) -> impl Read -{ +pub fn config_file_reader(file: File, resolve_env: bool) -> impl Read { if resolve_env { EitherReader::Left(EnvResolvingReader::new(file_reader(file))) } else { @@ -45,7 +49,10 @@ pub fn config_file_reader(file: File, resolve_env: bool) -> impl Read } } -pub async fn read_api_proxy_config(config: &AppConfig, resolve_env: bool) -> Result, TuliproxError> { +pub async fn read_api_proxy_config( + config: &AppConfig, + resolve_env: bool, +) -> Result, TuliproxError> { let paths = > as Access>::load(&config.paths); let api_proxy_file_path = paths.api_proxy_file_path.as_str(); if let Some(api_proxy_dto) = read_api_proxy_file(api_proxy_file_path, resolve_env)? { @@ -64,35 +71,64 @@ pub async fn read_api_proxy_config(config: &AppConfig, resolve_env: bool) -> Res } } -pub fn read_sources_file_from_path(sources_file: &Path, resolve_env: bool, include_computed: bool, hdhr_config: Option<&HdHomeRunDeviceOverview>) -> Result { +pub fn read_sources_file_from_path( + sources_file: &Path, + resolve_env: bool, + include_computed: bool, + hdhr_config: Option<&HdHomeRunDeviceOverview>, +) -> Result { match open_file(sources_file) { Ok(file) => { - let maybe_sources: Result = serde_saphyr::from_reader(config_file_reader(file, resolve_env)); + let maybe_sources: Result = + serde_saphyr::from_reader(config_file_reader(file, resolve_env)); match maybe_sources { Ok(mut sources) => { if resolve_env { if let Err(err) = sources.prepare(include_computed, hdhr_config) { - return info_err_res!("Can't read the sources-config file: {}: {err}", sources_file.display()); + return info_err_res!( + "Can't read the sources-config file: {}: {err}", + sources_file.display() + ); } } Ok(sources) } - Err(err) => info_err_res!("Can't read the sources-config file: {}: {err}", sources_file.display()) + Err(err) => info_err_res!( + "Can't read the sources-config file: {}: {err}", + sources_file.display() + ), } } - Err(err) => info_err_res!("Can't read the sources-config file: {}: {err}", sources_file.display()) + Err(err) => info_err_res!( + "Can't read the sources-config file: {}: {err}", + sources_file.display() + ), } } - -pub fn read_sources_file(sources_file: &str, resolve_env: bool, include_computed: bool, hdhr_config: Option<&HdHomeRunDeviceOverview>) -> Result { - read_sources_file_from_path(&PathBuf::from(sources_file), resolve_env, include_computed, hdhr_config) +pub fn read_sources_file( + sources_file: &str, + resolve_env: bool, + include_computed: bool, + hdhr_config: Option<&HdHomeRunDeviceOverview>, +) -> Result { + read_sources_file_from_path( + &PathBuf::from(sources_file), + resolve_env, + include_computed, + hdhr_config, + ) } -pub fn read_config_file(config_file: &str, resolve_env: bool, include_computed: bool) -> Result { +pub fn read_config_file( + config_file: &str, + resolve_env: bool, + include_computed: bool, +) -> Result { match open_file(&std::path::PathBuf::from(config_file)) { Ok(file) => { - let maybe_config: Result = serde_saphyr::from_reader(config_file_reader(file, resolve_env)); + let maybe_config: Result = + serde_saphyr::from_reader(config_file_reader(file, resolve_env)); match maybe_config { Ok(mut config) => { if resolve_env { @@ -100,24 +136,33 @@ pub fn read_config_file(config_file: &str, resolve_env: bool, include_computed: } Ok(config) } - Err(err) => info_err_res!("Can't read the config file: {config_file}: {err}") + Err(err) => info_err_res!("Can't read the config file: {config_file}: {err}"), } } - Err(err) => info_err_res!("Can't read the config file: {config_file}: {err}") + Err(err) => info_err_res!("Can't read the config file: {config_file}: {err}"), } } -pub fn read_app_config_dto(paths: &ConfigPaths, - resolve_env: bool, - include_computed: bool) -> Result { +pub fn read_app_config_dto( + paths: &ConfigPaths, + resolve_env: bool, + include_computed: bool, +) -> Result { let config_file = paths.config_file_path.as_str(); let sources_file = paths.sources_file_path.as_str(); let api_proxy_file = paths.api_proxy_file_path.as_str(); let config = read_config_file(config_file, resolve_env, include_computed)?; - let sources = read_sources_file(sources_file, resolve_env, include_computed, config.get_hdhr_device_overview().as_ref())?; + let sources = read_sources_file( + sources_file, + resolve_env, + include_computed, + config.get_hdhr_device_overview().as_ref(), + )?; let mappings = if let Some(mappings_file) = paths.mapping_file_path.as_ref() { - read_mappings_file(mappings_file, resolve_env).unwrap_or(None).map(|(_, mappings)| mappings) + read_mappings_file(mappings_file, resolve_env) + .unwrap_or(None) + .map(|(_, mappings)| mappings) } else { None }; @@ -132,9 +177,14 @@ pub fn read_app_config_dto(paths: &ConfigPaths, }) } -pub async fn prepare_sources_batch(sources: &mut SourcesConfigDto, include_computed: bool) -> Result<(), TuliproxError> { +pub async fn prepare_sources_batch( + sources: &mut SourcesConfigDto, + include_computed: bool, +) -> Result<(), TuliproxError> { let mut current_index = 0; - let max_id_in_source = sources.inputs.iter() + let max_id_in_source = sources + .inputs + .iter() .flat_map(|item| { std::iter::once(item.id).chain( item.aliases @@ -168,12 +218,13 @@ pub async fn prepare_sources_batch(sources: &mut SourcesConfigDto, include_compu Ok(()) } -pub async fn get_batch_aliases(input_type: InputType, url: &str) -> Result)>, TuliproxError> { +pub async fn get_batch_aliases( + input_type: InputType, + url: &str, +) -> Result)>, TuliproxError> { if input_type == InputType::M3uBatch || input_type == InputType::XtreamBatch { - return match utils::csv_read_inputs(input_type, url).await { - Ok((file_path, batch_aliases)) => { - Ok(Some((file_path, batch_aliases))) - } + return match csv_read_inputs(input_type, url).await { + Ok((file_path, batch_aliases)) => Ok(Some((file_path, batch_aliases))), Err(err) => { info_err_res!("{err}") } @@ -182,7 +233,10 @@ pub async fn get_batch_aliases(input_type: InputType, url: &str) -> Result Result<(), TuliproxError> { +pub async fn prepare_users( + app_config_dto: &mut AppConfigDto, + app_config: &AppConfig, +) -> Result<(), TuliproxError> { let use_user_db = app_config_dto .api_proxy .as_ref() @@ -192,11 +246,18 @@ pub async fn prepare_users(app_config_dto: &mut AppConfigDto, app_config: &AppCo let user_db_path = get_api_user_db_path(app_config); if user_db_path.exists() { match load_api_user(app_config).await { - Ok(stored_users) => if let Some(api_proxy) = app_config_dto.api_proxy.as_mut() { - api_proxy.user.extend(stored_users.iter().map(TargetUserDto::from)); - }, + Ok(stored_users) => { + if let Some(api_proxy) = app_config_dto.api_proxy.as_mut() { + api_proxy + .user + .extend(stored_users.iter().map(TargetUserDto::from)); + } + } Err(err) => { - warn!("Failed to load users from DB at {}: {err}", user_db_path.display()); + warn!( + "Failed to load users from DB at {}: {err}", + user_db_path.display() + ); } } } @@ -204,16 +265,23 @@ pub async fn prepare_users(app_config_dto: &mut AppConfigDto, app_config: &AppCo Ok(()) } -pub async fn read_initial_app_config(paths: &mut ConfigPaths, - resolve_env: bool, - include_computed: bool, - server_mode: bool) -> Result { +pub async fn read_initial_app_config( + paths: &mut ConfigPaths, + resolve_env: bool, + include_computed: bool, + server_mode: bool, +) -> Result { let config_path = paths.config_path.as_str(); let config_file = paths.config_file_path.as_str(); let sources_file = paths.sources_file_path.as_str(); let config_dto = read_config_file(config_file, resolve_env, include_computed)?; - let mut sources_dto = read_sources_file(sources_file, resolve_env, include_computed, config_dto.get_hdhr_device_overview().as_ref())?; + let mut sources_dto = read_sources_file( + sources_file, + resolve_env, + include_computed, + config_dto.get_hdhr_device_overview().as_ref(), + )?; prepare_sources_batch(&mut sources_dto, include_computed).await?; let sources: SourcesConfig = SourcesConfig::try_from(sources_dto)?; let mut config: Config = Config::from(config_dto); @@ -221,7 +289,10 @@ pub async fn read_initial_app_config(paths: &mut ConfigPaths, config.update_runtime(); if paths.mapping_file_path.is_none() { - let mut path = config.mapping_path.as_ref().map_or_else(|| utils::get_default_mappings_path(config_path), ToString::to_string); + let mut path = config.mapping_path.as_ref().map_or_else( + || utils::get_default_mappings_path(config_path), + ToString::to_string, + ); if resolve_env { path = resolve_env_var(&path); } @@ -252,10 +323,14 @@ pub async fn read_initial_app_config(paths: &mut ConfigPaths, .map(|p| p.display().to_string()) .collect(); - if vec.is_empty() { None } else { Some(vec) } + if vec.is_empty() { + None + } else { + Some(vec) + } }; app_config.paths.store(Arc::new(paths.clone())); - }, + } Ok(None) => info!("Mapping file: not used"), Err(err) => exit!("{err}"), } @@ -272,9 +347,13 @@ pub async fn read_initial_app_config(paths: &mut ConfigPaths, Ok(app_config) } -pub fn read_api_proxy_file(api_proxy_file: &str, resolve_env: bool) -> Result, TuliproxError> { +pub fn read_api_proxy_file( + api_proxy_file: &str, + resolve_env: bool, +) -> Result, TuliproxError> { open_file(&std::path::PathBuf::from(api_proxy_file)).map_or(Ok(None), |file| { - let maybe_api_proxy: Result = serde_saphyr::from_reader(config_file_reader(file, resolve_env)); + let maybe_api_proxy: Result = + serde_saphyr::from_reader(config_file_reader(file, resolve_env)); match maybe_api_proxy { Ok(mut api_proxy_dto) => { if resolve_env { @@ -313,13 +392,20 @@ pub async fn read_api_proxy(config: &AppConfig, resolve_env: bool) -> Option(file_path: &str, backup_dir: &str, config: &T, default_name: &str) -> Result<(), TuliproxError> +async fn write_config_file( + file_path: &str, + backup_dir: &str, + config: &T, + default_name: &str, +) -> Result<(), TuliproxError> where T: ?Sized + Serialize, { let path = PathBuf::from(file_path); - let filename = path.file_name().map_or(default_name.to_string(), |f| f.to_string_lossy().to_string()); - + let filename = path.file_name().map_or(default_name.to_string(), |f| { + f.to_string_lossy().to_string() + }); + let mut serialized = String::new(); let options = serde_saphyr::SerializerOptions { prefer_block_scalars: false, @@ -337,43 +423,96 @@ where } } - let backup_path = PathBuf::from(backup_dir).join(format!("{filename}_{}", Local::now().format("%Y%m%d_%H%M%S"))); + if path.exists() { + let backup_path = PathBuf::from(backup_dir).join(format!("{filename}_{}", Local::now().format("%Y%m%d_%H%M%S"))); - match fs::copy(&path, &backup_path).await { - Ok(_) => {} - Err(err) => { error!("Could not backup file {}:{}", &backup_path.to_str().unwrap_or("?"), err) } + match fs::copy(&path, &backup_path).await { + Ok(_) => {} + Err(err) => { + error!("Could not backup file {}:{err}", &backup_path.to_str().unwrap_or("?")); + } + } + info!("Saving file to {}", &path.to_str().unwrap_or("?")); } - info!("Saving file to {}", &path.to_str().unwrap_or("?")); - fs::write(&path, serialized) - .await - .map_err(|err| info_err!("Could not write file {}: {}", &path.to_str().unwrap_or("?"), err)) + let parent_dir = path.parent().ok_or_else(|| { info_err!("Could not write file {}: missing parent directory", &path.to_str().unwrap_or("?"))})?; + + let dest_file_name = path + .file_name() + .and_then(|s| s.to_str()) + .unwrap_or(default_name); + + let mut tmp_path = parent_dir.to_path_buf(); + tmp_path.push(format!(".{dest_file_name}.tmp-{}-{}", std::process::id(), Local::now().timestamp_nanos_opt().unwrap_or_default())); + + fs::write(&tmp_path, serialized).await.map_err(|err| { info_err!("Could not write temp file {}: {err}", &tmp_path.to_str().unwrap_or("?"))})?; + + match fs::rename(&tmp_path, &path).await { + Ok(()) => Ok(()), + Err(err) => { + // Windows doesn't allow overwriting an existing file via rename. + #[cfg(windows)] + { + if fs::remove_file(&path).await.is_ok() { + if fs::rename(&tmp_path, &path).await.is_ok() { + return Ok(()); + } + } + } + + // Best-effort cleanup; if the temp file can't be removed, ignore it. + let _ = fs::remove_file(&tmp_path).await; + Err(info_err!( + "Could not replace file {} with {}: {err}", + &path.to_str().unwrap_or("?"), + &tmp_path.to_str().unwrap_or("?") + )) + } + } } -pub async fn save_api_proxy(file_path: &str, backup_dir: &str, config: &ApiProxyConfigDto) -> Result<(), TuliproxError> { +pub async fn save_api_proxy( + file_path: &str, + backup_dir: &str, + config: &ApiProxyConfigDto, +) -> Result<(), TuliproxError> { write_config_file(file_path, backup_dir, config, "api-proxy.yml").await } -pub async fn save_main_config(file_path: &str, backup_dir: &str, config: &ConfigDto) -> Result<(), TuliproxError> { +pub async fn save_main_config( + file_path: &str, + backup_dir: &str, + config: &ConfigDto, +) -> Result<(), TuliproxError> { write_config_file(file_path, backup_dir, config, "config.yml").await } -pub async fn save_sources_config(file_path: &str, backup_dir: &str, config: &T) -> Result<(), TuliproxError> +pub async fn save_sources_config( + file_path: &str, + backup_dir: &str, + config: &T, +) -> Result<(), TuliproxError> where T: ?Sized + Serialize, { write_config_file(file_path, backup_dir, config, "source.yml").await } -pub async fn persist_source_config(app_state: &Arc, source_file_path: Option<&Path>, doc: SourcesConfigDto) -> Result -{ +pub async fn persist_source_config( + app_state: &Arc, + source_file_path: Option<&Path>, + doc: SourcesConfigDto, +) -> Result { let source_file = { - source_file_path - .and_then(|p| p.to_str()) - .map_or_else(|| { - let paths = > as Access>::load(&app_state.app_config.paths); + source_file_path.and_then(|p| p.to_str()).map_or_else( + || { + let paths = > as Access>::load( + &app_state.app_config.paths, + ); paths.sources_file_path.clone() - }, ToString::to_string) + }, + ToString::to_string, + ) }; let backup_dir = { let config = > as Access>::load(&app_state.app_config.config); @@ -382,9 +521,26 @@ pub async fn persist_source_config(app_state: &Arc, source_file_path: let mut source_config = doc.clone(); for input in &mut source_config.inputs { - if matches!(input.input_type, InputType::XtreamBatch | InputType::M3uBatch) && utils::is_csv_file(input.url.as_str()) { + if input + .panel_api + .as_ref() + .is_some_and(|panel| panel.alias_pool.is_some()) + { + if let Some(aliases) = input.aliases.as_mut() { + aliases.sort_by(|a, b| { + let a_ts = a.exp_date.unwrap_or(i64::MAX); + let b_ts = b.exp_date.unwrap_or(i64::MAX); + a_ts.cmp(&b_ts).then_with(|| a.name.cmp(&b.name)) + }); + } + } + if matches!( + input.input_type, + InputType::XtreamBatch | InputType::M3uBatch + ) && is_csv_file(input.url.as_str()) + { if let Some(aliases) = &input.aliases { - if let Err(err) = utils::csv_write_inputs(input.url.as_str(), aliases).await { + if let Err(err) = csv_write_inputs(input.url.as_str(), aliases).await { error!("Could not persist aliases to csv {}: {}", input.url, err); } } @@ -407,7 +563,10 @@ pub async fn persist_source_config(app_state: &Arc, source_file_path: Ok(doc) } -pub async fn validate_and_persist_source_config(app_state: &Arc, dto: SourcesConfigDto) -> Result { +pub async fn validate_and_persist_source_config( + app_state: &Arc, + dto: SourcesConfigDto, +) -> Result { { let mut new_dto = dto.clone(); let config = > as Access>::load(&app_state.app_config.config); @@ -421,13 +580,16 @@ pub fn resolve_env_var(value: &str) -> String { if value.is_empty() { return String::new(); } - CONSTANTS.re_env_var.replace_all(value, |caps: ®ex::Captures| { - let var_name = &caps["var"]; - env::var(var_name).unwrap_or_else(|e| { - error!("Could not resolve env var '{var_name}': {e}"); - format!("${{env:{var_name}}}") + CONSTANTS + .re_env_var + .replace_all(value, |caps: ®ex::Captures| { + let var_name = &caps["var"]; + env::var(var_name).unwrap_or_else(|e| { + error!("Could not resolve env var '{var_name}': {e}"); + format!("${{env:{var_name}}}") + }) }) - }).to_string() + .to_string() } #[cfg(test)] @@ -436,7 +598,8 @@ mod tests { #[test] fn test_resolve() { - let resolved = resolve_env_var("${env:HOME}"); - assert_eq!(resolved, std::env::var("HOME").unwrap()); + // Use PATH which exists on both Windows and Unix + let resolved = resolve_env_var("${env:PATH}"); + assert_eq!(resolved, std::env::var("PATH").unwrap()); } } diff --git a/backend/src/utils/file/csv_input_reader.rs b/backend/src/utils/file/csv_input_reader.rs deleted file mode 100644 index c23c3c168..000000000 --- a/backend/src/utils/file/csv_input_reader.rs +++ /dev/null @@ -1,306 +0,0 @@ -use shared::error::{string_to_io_error, to_io_error}; -use crate::utils::EnvResolvingReader; -use crate::utils::{file_reader, resolve_relative_path}; -use log::error; -use std::io; -use std::io::{BufRead, Cursor, Error}; -use std::path::PathBuf; -use url::Url; -use shared::concat_string; -use shared::model::{ConfigInputAliasDto, InputType}; -use shared::utils::{get_credentials_from_url, parse_timestamp, trim_last_slash, Internable}; -use crate::utils::request::get_local_file_content; - -const CSV_SEPARATOR: char = ';'; -const HEADER_PREFIX: char = '#'; - -pub fn is_csv_file(url: &str) -> bool { - url.to_lowercase().ends_with(".csv") -} -const FIELD_MAX_CON: &str = "max_connections"; -const FIELD_PRIO: &str = "priority"; -const FIELD_URL: &str = "url"; -const FIELD_NAME: &str = "name"; -const FIELD_USERNAME: &str = "username"; -const FIELD_PASSWORD: &str = "password"; -const FIELD_EXP_DATE: &str = "exp_date"; -const FIELD_UNKNOWN: &str = "?"; -const DEFAULT_COLUMNS: &[&str] = &[FIELD_URL, FIELD_MAX_CON, FIELD_PRIO, FIELD_NAME, FIELD_USERNAME, FIELD_PASSWORD, FIELD_EXP_DATE]; - -fn csv_assign_mandatory_fields(alias: &mut ConfigInputAliasDto, input_type: InputType) { - if !alias.url.is_empty() { - match Url::parse(alias.url.as_str()) { - Ok(url) => { - let (username, password) = get_credentials_from_url(&url); - if username.is_none() || password.is_none() { - // xtream url - if input_type == InputType::XtreamBatch { - alias.url = url.origin().ascii_serialization(); - } else if input_type == InputType::M3uBatch && alias.username.is_some() && alias.password.is_some() { - alias.url = format!("{}/get.php?username={}&password={}&type=m3u_plus", - trim_last_slash(&url.origin().ascii_serialization()), - alias.username.as_deref().unwrap_or(""), - alias.password.as_deref().unwrap_or("") - ); - } - } else { - if input_type == InputType::XtreamBatch { - alias.url = url.origin().ascii_serialization(); - } - // m3u url - alias.username = username; - alias.password = password; - } - - if alias.name.is_empty() { - let username = alias.username.as_deref().unwrap_or_default(); - let domain: Vec<&str> = url.domain().unwrap_or_default().split('.').collect(); - if domain.len() > 1 { - alias.name = concat_string!(domain[domain.len() - 2], "_", username).intern(); - } else { - alias.name = username.intern(); - } - } - } - Err(_err) => {} - } - } -} - -fn csv_assign_config_input_column(config_input: &mut ConfigInputAliasDto, header: &str, raw_value: &str) -> Result<(), io::Error> { - let value = raw_value.trim(); - if !value.is_empty() { - match header { - FIELD_URL => { - let url = Url::parse(value.trim()).map_err(to_io_error)?; - config_input.url = url.to_string(); - } - FIELD_MAX_CON => { - let max_connections = value.parse::().unwrap_or(1); - config_input.max_connections = max_connections; - } - FIELD_PRIO => { - let priority = value.parse::().unwrap_or(0); - config_input.priority = priority; - } - FIELD_NAME => { - config_input.name = value.intern(); - } - FIELD_USERNAME => { - config_input.username = Some(value.to_string()); - } - FIELD_PASSWORD => { - config_input.password = Some(value.to_string()); - } - FIELD_EXP_DATE => { - config_input.exp_date = parse_timestamp(value).unwrap_or_else(|e| { - error!("Failed to parse exp_date '{value}': {e}"); - None - }); - } - _ => {} - } - } - Ok(()) -} - -pub fn csv_read_inputs_from_reader(batch_input_type: InputType, reader: impl BufRead) -> Result, Error> { - let input_type = match batch_input_type { - InputType::M3uBatch | InputType::M3u => InputType::M3uBatch, - InputType::XtreamBatch | InputType::Xtream => InputType::XtreamBatch, - InputType::Library => InputType::Library - }; - let mut result = vec![]; - let mut default_columns = vec![]; - default_columns.extend_from_slice(DEFAULT_COLUMNS); - let mut header_defined = false; - for line in reader.lines() { - let line = line?; - if line.is_empty() { - continue; - } - if line.starts_with(HEADER_PREFIX) { - if !header_defined { - header_defined = true; - default_columns = line[1..].split(CSV_SEPARATOR).map(|s| { - match s { - FIELD_URL => FIELD_URL, - FIELD_MAX_CON => FIELD_MAX_CON, - FIELD_PRIO => FIELD_PRIO, - FIELD_NAME => FIELD_NAME, - FIELD_USERNAME => FIELD_USERNAME, - FIELD_PASSWORD => FIELD_PASSWORD, - FIELD_EXP_DATE => FIELD_EXP_DATE, - _ => { - error!("Field {s} is unsupported for csv input"); - FIELD_UNKNOWN - } - } - }).collect(); - } - continue; - } - - let mut config_input = ConfigInputAliasDto { - id: 0, - name: "".intern(), - url: String::new(), - username: None, - password: None, - priority: 0, - max_connections: 1, - exp_date: None, - }; - - let columns: Vec<&str> = line.split(CSV_SEPARATOR).collect(); - for (&header, &value) in default_columns.iter().zip(columns.iter()) { - if let Err(err) = csv_assign_config_input_column(&mut config_input, header, value) { - error!("Could not parse input line: {line} err: {err}"); - } - } - csv_assign_mandatory_fields(&mut config_input, input_type); - result.push(config_input); - } - Ok(result) -} - - -pub async fn csv_read_inputs(input_type: InputType, file_uri: &str) -> Result<(PathBuf, Vec), Error> { - let file_path = get_csv_file_path(file_uri)?; - match get_local_file_content(&file_path).await { - Ok(content) => { - Ok((file_path, csv_read_inputs_from_reader(input_type, EnvResolvingReader::new(file_reader(Cursor::new(content))))?)) - } - Err(err) => { - Err(err) - } - } -} - -pub fn get_csv_file_path(file_uri: &str) -> Result { - if let Ok(url) = file_uri.parse::() { - if url.scheme() == "file" { - match url.to_file_path() { - Ok(path) => Ok(path), - Err(()) => Err(string_to_io_error(format!("Could not open {file_uri}"))), - } - } else { - Err(string_to_io_error(format!("Only file:// is supported {file_uri}"))) - } - } else { - resolve_relative_path(file_uri) - } -} - -pub async fn csv_write_inputs(file_uri: &str, aliases: &[ConfigInputAliasDto]) -> Result<(), Error> { - let file_path = get_csv_file_path(file_uri)?; - let mut content = String::new(); - content.push(HEADER_PREFIX); - content.push_str(FIELD_NAME); - content.push(CSV_SEPARATOR); - content.push_str(FIELD_USERNAME); - content.push(CSV_SEPARATOR); - content.push_str(FIELD_PASSWORD); - content.push(CSV_SEPARATOR); - content.push_str(FIELD_URL); - content.push(CSV_SEPARATOR); - content.push_str(FIELD_MAX_CON); - content.push(CSV_SEPARATOR); - content.push_str(FIELD_EXP_DATE); - content.push('\n'); - - for alias in aliases { - content.push_str(&alias.name); - content.push(CSV_SEPARATOR); - content.push_str(alias.username.as_deref().unwrap_or("")); - content.push(CSV_SEPARATOR); - content.push_str(alias.password.as_deref().unwrap_or("")); - content.push(CSV_SEPARATOR); - content.push_str(&alias.url); - content.push(CSV_SEPARATOR); - content.push_str(&alias.max_connections.to_string()); - content.push(CSV_SEPARATOR); - if let Some(exp) = alias.exp_date { - content.push_str(&shared::utils::unix_ts_to_str_with_format(exp, "%Y-%m-%d %H:%M:%S").unwrap_or_default()); - } - content.push('\n'); - } - - tokio::fs::write(file_path, content).await.map_err(to_io_error) -} - -#[cfg(test)] -mod tests { - use crate::utils::file::csv_input_reader::csv_read_inputs_from_reader; - use crate::utils::{file_reader, resolve_env_var}; - use std::io::{Cursor}; - use shared::model::InputType; - - const M3U_BATCH: &str = r" -#url;name;max_connections;priority -http://hd.providerline.com:8080/get.php?username=user1&password=user1&type=m3u_plus;input_1 -http://hd.providerline.com/get.php?username=user2&password=user2&type=m3u_plus;input_2;1;2 -http://hd.providerline.com/get.php?username=user3&password=user3&type=m3u_plus;input_3;1;2 -http://hd.providerline.com/get.php?username=user4&password=user4&type=m3u_plus;input_4 -"; - - const XTREAM_BATCH: &str = r" -#name;username;password;url;max_connections;exp_date -input_1;de566567;de2345f43g5;http://provider_1.tv:80;1;2028-11-23 13:12:34 -input_2;de566567;de2345f43g5;http://provider_2.tv:8080;1;2028-12-23 13:12:34 -"; - - #[test] - fn test_read_inputs_xtream_as_m3u() { - let reader = file_reader(Cursor::new(XTREAM_BATCH)); - let result = csv_read_inputs_from_reader(InputType::M3uBatch, reader); - assert!(result.is_ok()); - let aliases = result.unwrap(); - assert!(!aliases.is_empty()); - for config in aliases { - assert!(config.url.contains("username")); - } - } - - #[test] - fn test_read_inputs_m3u_as_m3u() { - let reader = file_reader(Cursor::new(M3U_BATCH)); - let result = csv_read_inputs_from_reader(InputType::M3uBatch, reader); - assert!(result.is_ok()); - let aliases = result.unwrap(); - assert!(!aliases.is_empty()); - for config in aliases { - assert!(config.url.contains("username")); - } - } - - #[test] - fn test_read_inputs_xtream_as_xtream() { - let reader = file_reader(Cursor::new(XTREAM_BATCH)); - let result = csv_read_inputs_from_reader(InputType::XtreamBatch, reader); - assert!(result.is_ok()); - let aliases = result.unwrap(); - assert!(!aliases.is_empty()); - for config in aliases { - assert!(!config.url.contains("username")); - } - } - - #[test] - fn test_read_inputs_m3u_as_xtream() { - let reader = file_reader(Cursor::new(M3U_BATCH)); - let result = csv_read_inputs_from_reader(InputType::XtreamBatch, reader); - assert!(result.is_ok()); - let aliases = result.unwrap(); - assert!(!aliases.is_empty()); - for config in aliases { - assert!(!config.url.contains("username")); - } - } - - #[test] - fn test_resolve() { - let resolved = resolve_env_var("${env:HOME}"); - assert_eq!(resolved, std::env::var("HOME").unwrap()); - } -} diff --git a/backend/src/utils/file/mod.rs b/backend/src/utils/file/mod.rs index d52fe4843..6723dbeae 100644 --- a/backend/src/utils/file/mod.rs +++ b/backend/src/utils/file/mod.rs @@ -4,11 +4,9 @@ mod file_lock_manager; mod config_reader; mod env_resolving_reader; mod mapping_reader; -mod csv_input_reader; pub use self::file_utils::*; pub use self::file_lock_manager::*; pub use self::config_reader::*; pub use self::mapping_reader::*; -pub use self::env_resolving_reader::*; -pub use self::csv_input_reader::*; \ No newline at end of file +pub use self::env_resolving_reader::*; \ No newline at end of file diff --git a/backend/src/utils/geoip.rs b/backend/src/utils/geoip.rs index de67a984c..40f2bcdc3 100644 --- a/backend/src/utils/geoip.rs +++ b/backend/src/utils/geoip.rs @@ -1,4 +1,4 @@ -use crate::repository::bplustree::BPlusTree; +use crate::repository::BPlusTree; use std::io; use std::io::BufRead; use std::net::Ipv4Addr; diff --git a/backend/src/utils/network/epg.rs b/backend/src/utils/network/epg.rs index 21edc47b0..b66d4efdb 100644 --- a/backend/src/utils/network/epg.rs +++ b/backend/src/utils/network/epg.rs @@ -8,7 +8,7 @@ use shared::utils::{sanitize_sensitive_info, short_hash}; use std::path::PathBuf; use shared::concat_string; use crate::processing::processor::playlist::PlaylistProcessingContext; -use crate::repository::storage::get_input_storage_path; +use crate::repository::get_input_storage_path; use crate::repository::storage_const; pub fn get_input_raw_epg_file_path(url: &str, input: &ConfigInput, working_dir: &str) -> std::io::Result { @@ -53,7 +53,8 @@ async fn download_epg_file(url: &str, ctx: &PlaylistProcessingContext, input: &C return Ok(persist_file_path); } debug!("Downloading epg for input '{}'", input.name); - match request::get_input_epg_content_as_file(&ctx.client, input, working_dir, url, &persist_file_path).await { + let default_user_agent = ctx.config.config.load().default_user_agent.clone(); + match request::get_input_epg_content_as_file(&ctx.client, input, working_dir, url, &persist_file_path, default_user_agent.as_deref()).await { Ok(path) => { ctx.mark_input_downloaded(lock_key.clone()).await; Ok(path) diff --git a/backend/src/utils/network/ip_checker.rs b/backend/src/utils/network/ip_checker.rs index ae6312bd9..d6f17336f 100644 --- a/backend/src/utils/network/ip_checker.rs +++ b/backend/src/utils/network/ip_checker.rs @@ -1,25 +1,43 @@ -use std::sync::Arc; -use shared::error::{TuliproxError, TuliproxErrorKind}; use crate::model::IpCheckConfig; use regex::Regex; +use shared::error::{TuliproxError, TuliproxErrorKind}; use shared::utils::sanitize_sensitive_info; +use std::sync::Arc; -async fn fetch_ip(client: &reqwest::Client, url: &str, regex: Option<&Arc>) -> Result { - let response = client.get(url).send().await - .map_err(|e| TuliproxError::new(TuliproxErrorKind::Info, format!("Failed to request {}: {e}", sanitize_sensitive_info(url))))?; +async fn fetch_ip( + client: &reqwest::Client, + url: &str, + regex: Option<&Arc>, +) -> Result { + let response = client.get(url).send().await.map_err(|e| { + TuliproxError::new( + TuliproxErrorKind::Info, + format!("Failed to request {}: {e}", sanitize_sensitive_info(url)), + ) + })?; - let text = response.text().await - .map_err(|e| TuliproxError::new(TuliproxErrorKind::Info, format!("Failed to read response: {e}")))?; + let text = response.text().await.map_err(|e| { + TuliproxError::new( + TuliproxErrorKind::Info, + format!("Failed to read response: {e}"), + ) + })?; if let Some(re) = regex { return if let Some(caps) = re.captures(&text) { if let Some(m) = caps.get(1) { Ok(m.as_str().to_string()) } else { - Err(TuliproxError::new(TuliproxErrorKind::Info, "Regex matched but no group found".to_string())) + Err(TuliproxError::new( + TuliproxErrorKind::Info, + "Regex matched but no group found".to_string(), + )) } } else { - Err(TuliproxError::new(TuliproxErrorKind::Info, "Regex did not match".to_string())) + Err(TuliproxError::new( + TuliproxErrorKind::Info, + "Regex did not match".to_string(), + )) }; } @@ -27,7 +45,11 @@ async fn fetch_ip(client: &reqwest::Client, url: &str, regex: Option<&Arc } /// Fetch both IPs from a shared URL (if both regex patterns are available) -async fn fetch_combined_ips(client: &reqwest::Client, config: &IpCheckConfig, url: &str) -> (Option, Option) { +async fn fetch_combined_ips( + client: &reqwest::Client, + config: &IpCheckConfig, + url: &str, +) -> (Option, Option) { let response = client.get(url).send().await.ok(); let text = match response { Some(r) => r.text().await.ok(), @@ -54,14 +76,17 @@ async fn fetch_combined_ips(client: &reqwest::Client, config: &IpCheckConfig, ur } /// Fetch both IPv4 and IPv6 addresses, using separate or combined URL(s) -pub async fn get_ips(client: &reqwest::Client, config: &IpCheckConfig) -> Result<(Option, Option), TuliproxError> { +pub async fn get_ips( + client: &reqwest::Client, + config: &IpCheckConfig, +) -> Result<(Option, Option), TuliproxError> { match (&config.url_ipv4, &config.url_ipv6, &config.url) { // Both dedicated URLs provided (Some(url_v4), Some(url_v6), _) => { let (ipv4, ipv6) = tokio::join!( - fetch_ip(client, url_v4, config.pattern_ipv4.as_ref()), - fetch_ip(client, url_v6, config.pattern_ipv6.as_ref()) - ); + fetch_ip(client, url_v4, config.pattern_ipv4.as_ref()), + fetch_ip(client, url_v6, config.pattern_ipv6.as_ref()) + ); Ok((ipv4.ok(), ipv6.ok())) } @@ -73,15 +98,22 @@ pub async fn get_ips(client: &reqwest::Client, config: &IpCheckConfig) -> Result // Only one dedicated URL (Some(url_v4), None, _) => { - let ipv4 = fetch_ip(client, url_v4, config.pattern_ipv4.as_ref()).await.ok(); + let ipv4 = fetch_ip(client, url_v4, config.pattern_ipv4.as_ref()) + .await + .ok(); Ok((ipv4, None)) } (None, Some(url_v6), _) => { - let ipv6 = fetch_ip(client, url_v6, config.pattern_ipv6.as_ref()).await.ok(); + let ipv6 = fetch_ip(client, url_v6, config.pattern_ipv6.as_ref()) + .await + .ok(); Ok((None, ipv6)) } // No URLs given - _ => Err(TuliproxError::new(TuliproxErrorKind::Info, "No valid IP-check URLs provided".to_owned())), + _ => Err(TuliproxError::new( + TuliproxErrorKind::Info, + "No valid IP-check URLs provided".to_owned(), + )), } -} \ No newline at end of file +} diff --git a/backend/src/utils/network/m3u.rs b/backend/src/utils/network/m3u.rs index 6e311a9db..7b013a456 100644 --- a/backend/src/utils/network/m3u.rs +++ b/backend/src/utils/network/m3u.rs @@ -1,12 +1,16 @@ -use std::sync::Arc; -use shared::error::TuliproxError; -use shared::model::PlaylistGroup; use crate::model::{Config, ConfigInput, InputSource}; use crate::processing::parser::m3u; use crate::utils::prepare_file_path; use crate::utils::request; +use shared::error::TuliproxError; +use shared::model::PlaylistGroup; +use std::sync::Arc; -pub async fn download_m3u_playlist(client: &reqwest::Client, cfg: &Arc, input: &ConfigInput) -> (Vec, Vec) { +pub async fn download_m3u_playlist( + client: &reqwest::Client, + cfg: &Arc, + input: &ConfigInput, +) -> (Vec, Vec) { let working_dir = &cfg.working_dir; let input_source: InputSource = { match input.staged.as_ref() { @@ -15,10 +19,16 @@ pub async fn download_m3u_playlist(client: &reqwest::Client, cfg: &Arc, } }; let persist_file_path = prepare_file_path(input.persist.as_deref(), working_dir, ""); - match request::get_input_text_content_as_stream(client, &input_source, working_dir, persist_file_path).await { - Ok(reader) => { - (m3u::parse_m3u(cfg, input, reader).await, vec![]) - } - Err(err) => (vec![], vec![err]) + match request::get_input_text_content_as_stream( + client, + &input_source, + working_dir, + persist_file_path, + cfg.default_user_agent.as_deref(), + ) + .await + { + Ok(reader) => (m3u::parse_m3u(cfg, input, reader).await, vec![]), + Err(err) => (vec![], vec![err]), } } diff --git a/backend/src/utils/network/mod.rs b/backend/src/utils/network/mod.rs index ad3fefb8d..1c026709f 100644 --- a/backend/src/utils/network/mod.rs +++ b/backend/src/utils/network/mod.rs @@ -1,5 +1,7 @@ +pub mod epg; +pub mod ip_checker; +pub mod m3u; pub mod request; pub mod xtream; -pub mod m3u; -pub mod epg; -pub mod ip_checker; \ No newline at end of file + +pub use request::format_http_status; diff --git a/backend/src/utils/network/request.rs b/backend/src/utils/network/request.rs index f88b14307..df7b2863f 100644 --- a/backend/src/utils/network/request.rs +++ b/backend/src/utils/network/request.rs @@ -8,9 +8,13 @@ use futures::{StreamExt, TryStreamExt}; use log::{debug, error, log_enabled, trace, Level}; use reqwest::header::CONTENT_ENCODING; use reqwest::header::{HeaderMap, HeaderName, HeaderValue}; +use reqwest::StatusCode; use shared::error::{notify_err_res, string_to_io_error, TuliproxError}; use shared::model::{InputFetchMethod, DEFAULT_USER_AGENT}; -use shared::utils::{filter_request_header, human_readable_byte_size, sanitize_sensitive_info, ENCODING_DEFLATE, ENCODING_GZIP}; +use shared::utils::{ + filter_request_header, human_readable_byte_size, sanitize_sensitive_info, ENCODING_DEFLATE, + ENCODING_GZIP, +}; use std::collections::HashMap; use std::io::{Error, ErrorKind}; use std::path::{Path, PathBuf}; @@ -50,6 +54,14 @@ pub fn classify_content_type(headers: &[(String, String)]) -> MimeCategory { }) } +pub fn format_http_status(status: StatusCode) -> String { + let code = status.as_u16(); + match status.canonical_reason() { + Some(reason) => format!("{code} {reason}"), + None => code.to_string(), + } +} + pub fn content_type_from_ext(ext: &str) -> &'static str { match ext.to_ascii_lowercase().as_str() { "mp4" => "video/mp4", @@ -62,10 +74,29 @@ pub fn content_type_from_ext(ext: &str) -> &'static str { } } -pub async fn get_input_epg_content_as_file(client: &reqwest::Client, input: &ConfigInput, working_dir: &str, url_str: &str, persist_filepath: &Path) -> Result { - debug_if_enabled!("getting input epg content working_dir: {}, url: {}", working_dir, sanitize_sensitive_info(url_str)); +pub async fn get_input_epg_content_as_file( + client: &reqwest::Client, + input: &ConfigInput, + working_dir: &str, + url_str: &str, + persist_filepath: &Path, + default_user_agent: Option<&str>, +) -> Result { + debug_if_enabled!( + "getting input epg content working_dir: {}, url: {}", + working_dir, + sanitize_sensitive_info(url_str) + ); if url_str.parse::().is_ok() { - match download_epg_content_as_file(client, input, url_str, persist_filepath).await { + match download_epg_content_as_file( + client, + input, + url_str, + persist_filepath, + default_user_agent, + ) + .await + { Ok(content) => Ok(content), Err(e) => { error!("can't download input {} epg url: {} => {}", input.name, sanitize_sensitive_info(url_str), sanitize_sensitive_info(e.to_string().as_str())); @@ -89,7 +120,7 @@ pub async fn get_input_epg_content_as_file(client: &reqwest::Client, input: &Con None } } - None => None + None => None, }; result.map_or_else(|| { @@ -100,11 +131,31 @@ pub async fn get_input_epg_content_as_file(client: &reqwest::Client, input: &Con } } -pub async fn get_input_text_content(client: &reqwest::Client, input: &InputSource, working_dir: &str, persist_filepath: Option) -> Result { - debug_if_enabled!("getting input text content working_dir: {}, url: {}", working_dir, sanitize_sensitive_info(&input.url)); +pub async fn get_input_text_content( + client: &reqwest::Client, + input: &InputSource, + working_dir: &str, + persist_filepath: Option, + default_user_agent: Option<&str>, +) -> Result { + debug_if_enabled!( + "getting input text content working_dir: {}, url: {}", + working_dir, + sanitize_sensitive_info(&input.url) + ); if input.url.parse::().is_ok() { - match download_text_content(client, None, input, None, persist_filepath, false).await { + match download_text_content( + client, + None, + input, + None, + persist_filepath, + false, + default_user_agent, + ) + .await + { Ok((content, _response_url)) => Ok(content), Err(e) => { error!("Failed to download input '{}': {}", &input.name, sanitize_sensitive_info(e.to_string().as_str())); @@ -123,7 +174,7 @@ pub async fn get_input_text_content(client: &reqwest::Client, input: &InputSourc } } - match get_local_file_content(&filepath).await { + match get_local_csv_file_content(&filepath).await { Ok(content) => Some(content), Err(err) => { return notify_err_res!("Failed : {}", err); @@ -133,7 +184,7 @@ pub async fn get_input_text_content(client: &reqwest::Client, input: &InputSourc None } } - None => None + None => None, }; result.map_or_else(|| { let msg = format!("can't read input url: {}", sanitize_sensitive_info(&input.url)); @@ -143,15 +194,37 @@ pub async fn get_input_text_content(client: &reqwest::Client, input: &InputSourc } } - -pub async fn get_input_text_content_as_stream(client: &reqwest::Client, input: &InputSource, working_dir: &str, persist_filepath: Option) -> Result { - debug_if_enabled!("getting input text content working_dir: {}, url: {}", working_dir, sanitize_sensitive_info(&input.url)); +pub async fn get_input_text_content_as_stream( + client: &reqwest::Client, + input: &InputSource, + working_dir: &str, + persist_filepath: Option, + default_user_agent: Option<&str>, +) -> Result { + debug_if_enabled!( + "getting input text content working_dir: {}, url: {}", + working_dir, + sanitize_sensitive_info(&input.url) + ); if input.url.parse::().is_ok() { - match download_text_content_as_stream(client, None, input, None, persist_filepath).await { + match download_text_content_as_stream( + client, + None, + input, + None, + persist_filepath, + default_user_agent, + ) + .await + { Ok((content, _response_url)) => Ok(content), Err(e) => { - error!("Failed to download input '{}': {}", &input.name, sanitize_sensitive_info(e.to_string().as_str())); + error!( + "Failed to download input '{}': {}", + &input.name, + sanitize_sensitive_info(e.to_string().as_str()) + ); notify_err_res!("Failed to download") } } @@ -162,9 +235,17 @@ pub async fn get_input_text_content_as_stream(client: &reqwest::Client, input: & match get_local_file_content_as_stream(&filepath).await { Ok(content) => { if let Some(path) = persist_filepath { - let tee = tee_dyn_reader(content, &path, Some(Arc::new(|size| { - debug_if_enabled!("Persisted {} bytes", human_readable_byte_size(size as u64)); - }))).await; + let tee = tee_dyn_reader( + content, + &path, + Some(Arc::new(|size| { + debug_if_enabled!( + "Persisted {} bytes", + human_readable_byte_size(size as u64) + ); + })), + ) + .await; Some(tee) } else { Some(content) @@ -178,7 +259,7 @@ pub async fn get_input_text_content_as_stream(client: &reqwest::Client, input: & None } } - None => None + None => None, }; result.map_or_else(|| { let msg = format!("can't read input url: {}", sanitize_sensitive_info(&input.url)); @@ -188,13 +269,15 @@ pub async fn get_input_text_content_as_stream(client: &reqwest::Client, input: & } } -pub fn get_client_request -(client: &reqwest::Client, - method: InputFetchMethod, - headers: Option<&HashMap>, - url: &Url, - custom_headers: Option<&HashMap, S>>, - disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>) -> reqwest::RequestBuilder { +pub fn get_client_request( + client: &reqwest::Client, + method: InputFetchMethod, + headers: Option<&HashMap>, + url: &Url, + custom_headers: Option<&HashMap, S>>, + disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + default_user_agent: Option<&str>, +) -> reqwest::RequestBuilder { let request = match method { InputFetchMethod::GET => client.get(url.clone()), InputFetchMethod::POST => { @@ -207,11 +290,21 @@ pub fn get_client_request client.post(url.clone()).form(¶ms) } }; - let headers = get_request_headers(headers, custom_headers, disabled_headers); + let headers = get_request_headers( + headers, + custom_headers, + disabled_headers, + default_user_agent, + ); request.headers(headers) } -pub fn get_request_headers(request_headers: Option<&HashMap>, custom_headers: Option<&HashMap, S>>, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>) -> HeaderMap { +pub fn get_request_headers( + request_headers: Option<&HashMap>, + custom_headers: Option<&HashMap, S>>, + disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + default_user_agent: Option<&str>, +) -> HeaderMap { let mut headers = HeaderMap::default(); let mut has_user_agent = false; @@ -219,9 +312,15 @@ pub fn get_request_headers(request_header // These should have the highest priority. if let Some(req_headers) = request_headers { for (key, value) in req_headers { - if let (Ok(key), Ok(value)) = (HeaderName::from_bytes(key.as_bytes()), HeaderValue::from_bytes(value.as_bytes())) { + if let (Ok(key), Ok(value)) = ( + HeaderName::from_bytes(key.as_bytes()), + HeaderValue::from_bytes(value.as_bytes()), + ) { if filter_request_header(key.as_str()) { - if disabled_headers.as_ref().is_some_and(|d| d.should_remove(key.as_str())) { + if disabled_headers + .as_ref() + .is_some_and(|d| d.should_remove(key.as_str())) + { continue; } if key == axum::http::header::USER_AGENT { @@ -239,10 +338,16 @@ pub fn get_request_headers(request_header for (key, value) in custom { let key_lc = key.to_lowercase(); if filter_request_header(key_lc.as_str()) { - if disabled_headers.as_ref().is_some_and(|d| d.should_remove(key_lc.as_str())) { + if disabled_headers + .as_ref() + .is_some_and(|d| d.should_remove(key_lc.as_str())) + { continue; } - if let (Ok(name), Ok(val)) = (HeaderName::from_bytes(key.as_bytes()), HeaderValue::from_bytes(value)) { + if let (Ok(name), Ok(val)) = ( + HeaderName::from_bytes(key.as_bytes()), + HeaderValue::from_bytes(value), + ) { // Only insert if not already present (config takes precedence) if !headers.contains_key(&name) { if name == axum::http::header::USER_AGENT { @@ -256,7 +361,15 @@ pub fn get_request_headers(request_header } if log_enabled!(Level::Trace) { - let he: HashMap = headers.iter().map(|(k, v)| (k.to_string(), String::from_utf8_lossy(v.as_bytes()).to_string())).collect(); + let he: HashMap = headers + .iter() + .map(|(k, v)| { + ( + k.to_string(), + String::from_utf8_lossy(v.as_bytes()).to_string(), + ) + }) + .collect(); if !he.is_empty() { trace!("Request headers {he:?}"); } @@ -264,16 +377,29 @@ pub fn get_request_headers(request_header // 3. Finally, if no User-Agent was provided by config OR client, use the default. if !has_user_agent { - headers.insert(axum::http::header::USER_AGENT, HeaderValue::from_static(DEFAULT_USER_AGENT)); + let config_ua = default_user_agent + .and_then(|ua| { + let trimmed = ua.trim(); + (!trimmed.is_empty()).then_some(trimmed) + }) + .and_then(|ua| HeaderValue::from_str(ua).ok()); + + headers.insert( + axum::http::header::USER_AGENT, + config_ua.unwrap_or_else(|| HeaderValue::from_static(DEFAULT_USER_AGENT)), + ); } headers } -pub async fn get_local_file_content(file_path: &Path) -> Result { +pub async fn get_local_csv_file_content(file_path: &Path) -> Result { // Datei öffnen let file = File::open(file_path).await.map_err(|err| { - std::io::Error::new(ErrorKind::NotFound, format!("Failed to open file: {}, {err:?}", file_path.display())) + std::io::Error::new( + ErrorKind::NotFound, + format!("Failed to open file: {}, {err:?}", file_path.display()), + ) })?; let mut buf_reader = async_file_reader(file); @@ -287,23 +413,30 @@ pub async fn get_local_file_content(file_path: &Path) -> Result Result { +pub async fn get_local_file_content_as_stream( + file_path: &Path, +) -> Result { // open file let file = File::open(file_path).await.map_err(|err| { - std::io::Error::new(ErrorKind::NotFound, format!("Failed to open file: {}, {err:?}", file_path.display())) + std::io::Error::new( + ErrorKind::NotFound, + format!("Failed to open file: {}, {err:?}", file_path.display()), + ) })?; let mut buf_reader = async_file_reader(file); @@ -314,7 +447,9 @@ pub async fn get_local_file_content_as_stream(file_path: &Path) -> Result Result Result { +async fn get_remote_content_as_file( + client: &reqwest::Client, + input: &ConfigInput, + url: &Url, + file_path: &Path, + default_user_agent: Option<&str>, +) -> Result { let start_time = Instant::now(); - let request = get_client_request(client, input.method, Some(&input.headers), url, None, None); + let request = get_client_request( + client, + input.method, + Some(&input.headers), + url, + None, + None, + default_user_agent, + ); match request.send().await { Ok(response) => { if response.status().is_success() { @@ -360,13 +508,24 @@ async fn get_remote_content_as_file(client: &reqwest::Client, input: &ConfigInpu writer.flush().await?; writer.shutdown().await?; let elapsed = start_time.elapsed().as_secs(); - debug!("File downloaded successfully to {}, took:{}", file_path.display(), format_elapsed_time(elapsed)); + debug!( + "File downloaded successfully to {}, took:{}", + file_path.display(), + format_elapsed_time(elapsed) + ); Ok(file_path.to_path_buf()) } else { - Err(string_to_io_error(format!("Request failed with status {} {}", response.status(), sanitize_sensitive_info(url.as_str())))) + Err(string_to_io_error(format!( + "Request failed with status {} {}", + format_http_status(response.status()), + sanitize_sensitive_info(url.as_str()) + ))) } } - Err(err) => Err(string_to_io_error(format!("Request failed: {} {err}", sanitize_sensitive_info(url.as_str())))), + Err(err) => Err(string_to_io_error(format!( + "Request failed: {} {err}", + sanitize_sensitive_info(url.as_str()) + ))), } } @@ -379,27 +538,54 @@ pub async fn get_remote_content_as_stream( headers: Option<&HeaderMap>, url: &Url, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + default_user_agent: Option<&str>, ) -> Result<(DynReader, String), Error> { let custom_headers = headers.map(|h| { - h.iter().map(|(k, v)| (k.as_str().to_string(), v.as_bytes().to_vec())).collect::>() + h.iter() + .map(|(k, v)| (k.as_str().to_string(), v.as_bytes().to_vec())) + .collect::>() }); - let merged = get_request_headers(Some(&input.headers), custom_headers.as_ref(), disabled_headers); - let headers: HashMap = merged.iter().map(|(k, v)| (k.as_str().to_string(), String::from_utf8_lossy(v.as_bytes()).to_string())).collect(); + let merged = get_request_headers( + Some(&input.headers), + custom_headers.as_ref(), + disabled_headers, + default_user_agent, + ); + let headers: HashMap = merged + .iter() + .map(|(k, v)| { + ( + k.as_str().to_string(), + String::from_utf8_lossy(v.as_bytes()).to_string(), + ) + }) + .collect(); - let request = get_client_request(client, input.method, Some(&headers), url, None, None); + let request = get_client_request( + client, + input.method, + Some(&headers), + url, + None, + None, + default_user_agent, + ); let response = request.send().await.map_err(std::io::Error::other)?; if !response.status().is_success() { - return Err(string_to_io_error(format!("Request failed with status {} {}", response.status(), sanitize_sensitive_info(url.as_str())))); + return Err(string_to_io_error(format!( + "Request failed with status {} {}", + format_http_status(response.status()), + sanitize_sensitive_info(url.as_str()) + ))); } let response_url = response.url().to_string(); let headers = response.headers(); let header_value = headers.get(CONTENT_ENCODING); - let mut encoding = header_value.and_then(|encoding_header| encoding_header.to_str().map_or(None, |value| Some(value.to_string()))); - let stream_reader = StreamReader::new( - response.bytes_stream().map_err(std::io::Error::other), - ); + let mut encoding = header_value.and_then(|h| h.to_str().ok()).map(ToString::to_string); + + let stream_reader = StreamReader::new(response.bytes_stream().map_err(std::io::Error::other)); let mut buf_reader = async_file_reader(stream_reader); let peek = buf_reader.fill_buf().await?; @@ -411,10 +597,20 @@ pub async fn get_remote_content_as_stream( } } - let reader: DynReader = if encoding.as_ref().is_some_and(|e| e.eq_ignore_ascii_case(ENCODING_GZIP)) { - Box::pin(async_compression::tokio::bufread::GzipDecoder::new(buf_reader)) - } else if encoding.as_ref().is_some_and(|e| e.eq_ignore_ascii_case(ENCODING_DEFLATE)) { - Box::pin(async_compression::tokio::bufread::ZlibDecoder::new(buf_reader)) + let reader: DynReader = if encoding + .as_ref() + .is_some_and(|e| e.eq_ignore_ascii_case(ENCODING_GZIP)) + { + Box::pin(async_compression::tokio::bufread::GzipDecoder::new( + buf_reader, + )) + } else if encoding + .as_ref() + .is_some_and(|e| e.eq_ignore_ascii_case(ENCODING_DEFLATE)) + { + Box::pin(async_compression::tokio::bufread::ZlibDecoder::new( + buf_reader, + )) } else { Box::pin(buf_reader) }; @@ -422,26 +618,68 @@ pub async fn get_remote_content_as_stream( Ok((reader, response_url)) } -async fn get_remote_content(client: &reqwest::Client, input: &InputSource, headers: Option<&HeaderMap>, url: &Url, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>) -> Result<(String, String), Error> { - let (mut stream, response_url) = get_remote_content_as_stream(client, input, headers, url, disabled_headers).await.map_err(|e| string_to_io_error(format!("Failed to read content: {e}")))?; +async fn get_remote_content( + client: &reqwest::Client, + input: &InputSource, + headers: Option<&HeaderMap>, + url: &Url, + disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + default_user_agent: Option<&str>, +) -> Result<(String, String), Error> { + let (mut stream, response_url) = get_remote_content_as_stream( + client, + input, + headers, + url, + disabled_headers, + default_user_agent, + ) + .await + .map_err(|e| string_to_io_error(format!("Failed to read content: {e}")))?; let mut content = String::new(); - stream.read_to_string(&mut content).await.map_err(|e| string_to_io_error(format!("Failed to read content: {e}")))?; + stream + .read_to_string(&mut content) + .await + .map_err(|e| string_to_io_error(format!("Failed to read content: {e}")))?; Ok((content, response_url)) } -async fn download_epg_content_as_file(client: &reqwest::Client, input: &ConfigInput, url_str: &str, persist_filepath: &Path) -> Result { +async fn download_epg_content_as_file( + client: &reqwest::Client, + input: &ConfigInput, + url_str: &str, + persist_filepath: &Path, + default_user_agent: Option<&str>, +) -> Result { if let Ok(url) = url_str.parse::() { if url.scheme() == "file" { - url.to_file_path().map_or_else(|()| Err(Error::new(ErrorKind::Unsupported, format!("Unknown file {}", sanitize_sensitive_info(url_str)))), |file_path| if file_path.exists() { - Ok(file_path) - } else { - Err(Error::new(ErrorKind::NotFound, format!("Unknown file {}", file_path.display()))) - }) + url.to_file_path().map_or_else( + |()| { + Err(Error::new( + ErrorKind::Unsupported, + format!("Unknown file {}", sanitize_sensitive_info(url_str)), + )) + }, + |file_path| { + if file_path.exists() { + Ok(file_path) + } else { + Err(Error::new( + ErrorKind::NotFound, + format!("Unknown file {}", file_path.display()), + )) + } + }, + ) } else { - get_remote_content_as_file(client, input, &url, persist_filepath).await + get_remote_content_as_file(client, input, &url, persist_filepath, default_user_agent) + .await } } else { - Err(Error::new(ErrorKind::Unsupported, format!("Malformed URL {}", sanitize_sensitive_info(url_str)))) + Err(Error::new( + ErrorKind::Unsupported, + format!("Malformed URL {}", sanitize_sensitive_info(url_str)), + )) } } @@ -452,16 +690,30 @@ pub async fn download_text_content( headers: Option<&HeaderMap>, persist_filepath: Option, trace_log: bool, + default_user_agent: Option<&str>, ) -> Result<(String, String), Error> { let start_time = Instant::now(); let result = if let Ok(url) = input.url.parse::() { let result = if url.scheme() == "file" { match url.to_file_path() { - Ok(file_path) => get_local_file_content(&file_path).await.map(|c| (c, url.to_string())), - Err(()) => Err(string_to_io_error(format!("Unknown file {}", sanitize_sensitive_info(&input.url)))), + Ok(file_path) => get_local_csv_file_content(&file_path) + .await + .map(|c| (c, url.to_string())), + Err(()) => Err(string_to_io_error(format!( + "Unknown file {}", + sanitize_sensitive_info(&input.url) + ))), } } else { - get_remote_content(client, input, headers, &url, disabled_headers).await + get_remote_content( + client, + input, + headers, + &url, + disabled_headers, + default_user_agent, + ) + .await }; match result { Ok((content, response_url)) => { @@ -473,13 +725,25 @@ pub async fn download_text_content( Err(err) => Err(err), } } else { - Err(string_to_io_error(format!("Malformed URL {}", sanitize_sensitive_info(&input.url)))) + Err(string_to_io_error(format!( + "Malformed URL {}", + sanitize_sensitive_info(&input.url) + ))) }; - let level = if trace_log { log::Level::Trace } else { log::Level::Debug }; + let level = if trace_log { + log::Level::Trace + } else { + log::Level::Debug + }; if log_enabled!(level) { if let Ok((_content, response_url)) = result.as_ref() { - log::log!(level, "Request took: {} {}", format_elapsed_time(start_time.elapsed().as_secs()), sanitize_sensitive_info(response_url.as_str())); + log::log!( + level, + "Request took: {} {}", + format_elapsed_time(start_time.elapsed().as_secs()), + sanitize_sensitive_info(response_url.as_str()) + ); } } @@ -492,25 +756,41 @@ pub async fn download_text_content_as_stream( input: &InputSource, headers: Option<&HeaderMap>, persist_filepath: Option, + default_user_agent: Option<&str>, ) -> Result<(DynReader, String), Error> { if let Ok(url) = input.url.parse::() { let result = if url.scheme() == "file" { match url.to_file_path() { - Ok(file_path) => get_local_file_content_as_stream(&file_path).await.map(|c| (c, url.to_string())), + Ok(file_path) => get_local_file_content_as_stream(&file_path) + .await + .map(|c| (c, url.to_string())), Err(()) => Err(string_to_io_error(format!( "Unknown file {}", sanitize_sensitive_info(&input.url) ))), } } else { - get_remote_content_as_stream(client, input, headers, &url, disabled_headers).await + get_remote_content_as_stream( + client, + input, + headers, + &url, + disabled_headers, + default_user_agent, + ) + .await }; match result { Ok((content, response_url)) => { if let Some(path) = persist_filepath { - let tee_reader: DynReader = tee_dyn_reader(content, &path, Some(Arc::new(|size| { - debug!("Persisted {size} bytes"); - }))).await; + let tee_reader: DynReader = tee_dyn_reader( + content, + &path, + Some(Arc::new(|size| { + debug!("Persisted {size} bytes"); + })), + ) + .await; Ok((tee_reader, response_url)) } else { Ok((content, response_url)) @@ -519,42 +799,119 @@ pub async fn download_text_content_as_stream( Err(err) => Err(err), } } else { - Err(string_to_io_error(format!("Malformed URL {}", sanitize_sensitive_info(&input.url)))) + Err(string_to_io_error(format!( + "Malformed URL {}", + sanitize_sensitive_info(&input.url) + ))) } } -async fn download_json_content(client: &reqwest::Client, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, input: &InputSource, persist_filepath: Option, trace_log: bool) -> Result { - debug_if_enabled!("Downloading json content from {}", sanitize_sensitive_info(&input.url)); - match download_text_content(client, disabled_headers, input, None, persist_filepath, trace_log).await { - Ok((content, _response_url)) => { - match serde_json::from_str::(&content) { - Ok(value) => Ok(value), - Err(err) => Err(string_to_io_error(format!("Failed to parse json {err}"))) - } - } - Err(err) => Err(err) +async fn download_json_content( + client: &reqwest::Client, + disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + input: &InputSource, + persist_filepath: Option, + trace_log: bool, + default_user_agent: Option<&str>, +) -> Result { + debug_if_enabled!( + "Downloading json content from {}", + sanitize_sensitive_info(&input.url) + ); + match download_text_content( + client, + disabled_headers, + input, + None, + persist_filepath, + trace_log, + default_user_agent, + ) + .await + { + Ok((content, _response_url)) => match serde_json::from_str::(&content) { + Ok(value) => Ok(value), + Err(err) => Err(string_to_io_error(format!("Failed to parse json {err}"))), + }, + Err(err) => Err(err), } } -pub async fn get_input_json_content(client: &reqwest::Client, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, input: &InputSource, persist_filepath: Option, trace_log: bool) -> Result { - match download_json_content(client, disabled_headers, input, persist_filepath, trace_log).await { +pub async fn get_input_json_content( + client: &reqwest::Client, + disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + input: &InputSource, + persist_filepath: Option, + trace_log: bool, + default_user_agent: Option<&str>, +) -> Result { + match download_json_content( + client, + disabled_headers, + input, + persist_filepath, + trace_log, + default_user_agent, + ) + .await + { Ok(content) => Ok(content), - Err(e) => notify_err_res!("can't download input {}, => {}", input.name, sanitize_sensitive_info(e.to_string().as_str())) + Err(e) => notify_err_res!( + "can't download input {}, => {}", + input.name, + sanitize_sensitive_info(e.to_string().as_str()) + ), } } -async fn download_json_content_as_stream(client: &reqwest::Client, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, input: &InputSource, persist_filepath: Option) -> Result { - debug_if_enabled!("Downloading json content as stream from {}", sanitize_sensitive_info(&input.url)); - match download_text_content_as_stream(client, disabled_headers, input, None, persist_filepath).await { +async fn download_json_content_as_stream( + client: &reqwest::Client, + disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + input: &InputSource, + persist_filepath: Option, + default_user_agent: Option<&str>, +) -> Result { + debug_if_enabled!( + "Downloading json content as stream from {}", + sanitize_sensitive_info(&input.url) + ); + match download_text_content_as_stream( + client, + disabled_headers, + input, + None, + persist_filepath, + default_user_agent, + ) + .await + { Ok((reader, _response_url)) => Ok(reader), - Err(err) => Err(err) + Err(err) => Err(err), } } -pub async fn get_input_json_content_as_stream(client: &reqwest::Client, disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, input: &InputSource, persist_filepath: Option) -> Result { - match download_json_content_as_stream(client, disabled_headers, input, persist_filepath).await { +pub async fn get_input_json_content_as_stream( + client: &reqwest::Client, + disabled_headers: Option<&ReverseProxyDisabledHeaderConfig>, + input: &InputSource, + persist_filepath: Option, + default_user_agent: Option<&str>, +) -> Result { + match download_json_content_as_stream( + client, + disabled_headers, + input, + persist_filepath, + default_user_agent, + ) + .await + { Ok(stream) => Ok(stream), - Err(e) => notify_err_res!("can't download input {} => {}", input.name, sanitize_sensitive_info(e.to_string().as_str())) + Err(e) => notify_err_res!( + "can't download input {} => {}", + input.name, + sanitize_sensitive_info(e.to_string().as_str()) + ), } } @@ -580,24 +937,24 @@ pub fn create_client(cfg: &AppConfig) -> reqwest::ClientBuilder { let _ = url.set_password(Some(pass)); } match reqwest::Proxy::all(url.as_str()) { - Ok(p) => { client = client.proxy(p); } + Ok(p) => { + client = client.proxy(p); + } Err(err) => error!("Failed to create SOCKS proxy {url}: {err}"), } } - "http" | "https" => { - match reqwest::Proxy::all(url.as_str()) { - Ok(p) => { - if let (Some(username), Some(password)) = - (&proxy_cfg.username, &proxy_cfg.password) - { - client = client.proxy(p.basic_auth(username, password)); - } else { - client = client.proxy(p); - } + "http" | "https" => match reqwest::Proxy::all(url.as_str()) { + Ok(p) => { + if let (Some(username), Some(password)) = + (&proxy_cfg.username, &proxy_cfg.password) + { + client = client.proxy(p.basic_auth(username, password)); + } else { + client = client.proxy(p); } - Err(err) => error!("Failed to create HTTP proxy {url}: {err}"), } - } + Err(err) => error!("Failed to create HTTP proxy {url}: {err}"), + }, _ => { error!("Unsupported proxy scheme '{scheme}' in URL: {url}"); } @@ -659,10 +1016,22 @@ mod tests { fn test_replace_ext() { let tests = [ ("http://hello.world.com", "http://hello.world.com"), - ("http://hello.world.com/123", "http://hello.world.com/123.mp4"), - ("http://hello.world.com/123.ts?hello=world", "http://hello.world.com/123.mp4?hello=world"), - ("http://hello.world.com/123?hello=world", "http://hello.world.com/123.mp4?hello=world"), - ("http://hello.world.com/123#hello=world", "http://hello.world.com/123.mp4#hello=world") + ( + "http://hello.world.com/123", + "http://hello.world.com/123.mp4", + ), + ( + "http://hello.world.com/123.ts?hello=world", + "http://hello.world.com/123.mp4?hello=world", + ), + ( + "http://hello.world.com/123?hello=world", + "http://hello.world.com/123.mp4?hello=world", + ), + ( + "http://hello.world.com/123#hello=world", + "http://hello.world.com/123.mp4#hello=world", + ), ]; for (test, expect) in &tests { @@ -680,31 +1049,51 @@ mod tests { #[test] fn test_get_request_headers_prioritization() { use super::{get_request_headers, DEFAULT_USER_AGENT}; - use std::collections::HashMap; use axum::http::header::USER_AGENT; + use std::collections::HashMap; // Case 1: No headers provided -> Default UA - let headers = get_request_headers::(None, None, None); + let headers = + get_request_headers::(None, None, None, None); assert_eq!(headers.get(USER_AGENT).unwrap(), DEFAULT_USER_AGENT); - // Case 2: Only client header -> Client UA + // Case 2: No headers provided but config default UA set -> Config default UA + let headers = get_request_headers::( + None, + None, + None, + Some("Config-Default-UA"), + ); + assert_eq!(headers.get(USER_AGENT).unwrap(), "Config-Default-UA"); + + // Case 3: Only client header -> Client UA (overrides config default UA) let mut client_headers = HashMap::new(); client_headers.insert("User-Agent".to_string(), b"Client-UA".to_vec()); - let headers = get_request_headers(None, Some(&client_headers), None); + let headers = + get_request_headers(None, Some(&client_headers), None, Some("Config-Default-UA")); assert_eq!(headers.get(USER_AGENT).unwrap(), "Client-UA"); - // Case 3: Both config and client -> Config UA overrides + // Case 4: Both config and client -> Config UA overrides let mut config_headers = HashMap::new(); config_headers.insert("User-Agent".to_string(), "Config-UA".to_string()); - let headers = get_request_headers(Some(&config_headers), Some(&client_headers), None); + let headers = get_request_headers( + Some(&config_headers), + Some(&client_headers), + None, + Some("Config-Default-UA"), + ); assert_eq!(headers.get(USER_AGENT).unwrap(), "Config-UA"); - // Case 4: Other headers also prioritized + // Case 5: Other headers also prioritized config_headers.insert("X-Test".to_string(), "From-Config".to_string()); let mut client_headers = HashMap::new(); client_headers.insert("X-Test".to_string(), b"From-Client".to_vec()); - let headers = get_request_headers(Some(&config_headers), Some(&client_headers), None); + let headers = get_request_headers( + Some(&config_headers), + Some(&client_headers), + None, + Some("Config-Default-UA"), + ); assert_eq!(headers.get("X-Test").unwrap(), "From-Config"); } } - diff --git a/backend/src/utils/network/xtream.rs b/backend/src/utils/network/xtream.rs index 75cfbec71..d83917877 100644 --- a/backend/src/utils/network/xtream.rs +++ b/backend/src/utils/network/xtream.rs @@ -4,12 +4,12 @@ use crate::model::{is_input_expired, xtream_mapping_option_from_target_options, use crate::model::{InputSource, ProxyUserCredentials}; use crate::processing::parser::xtream; use crate::processing::parser::xtream::parse_xtream_series_info; -use crate::repository::bplustree::BPlusTreeUpdate; -use crate::repository::playlist_repository::{get_target_id_mapping, rewrite_provider_series_info_episode_virtual_id, ProviderEpisodeKey}; -use crate::repository::storage::{ensure_input_storage_path, get_input_storage_path, get_target_storage_path}; -use crate::repository::target_id_mapping::VirtualIdRecord; -use crate::repository::xtream_repository::{get_live_cat_collection_path, get_series_cat_collection_path, get_vod_cat_collection_path, xtream_get_file_path, CategoryEntry}; -use crate::repository::xtream_repository::{persist_input_vod_info, persists_input_series_info, write_playlist_batch_item_upsert, write_playlist_item_update}; +use crate::repository::BPlusTreeUpdate; +use crate::repository::{get_target_id_mapping, rewrite_provider_series_info_episode_virtual_id, ProviderEpisodeKey}; +use crate::repository::{ensure_input_storage_path, get_input_storage_path, get_target_storage_path}; +use crate::repository::VirtualIdRecord; +use crate::repository::{get_live_cat_collection_path, get_series_cat_collection_path, get_vod_cat_collection_path, xtream_get_file_path, CategoryEntry}; +use crate::repository::{persist_input_vod_info, persists_input_series_info, write_playlist_batch_item_upsert, write_playlist_item_update}; use crate::utils::request; use chrono::{DateTime, Utc}; use log::{error, info, warn}; @@ -60,8 +60,8 @@ pub fn get_xtream_player_api_info_url(input: &ConfigInput, cluster: XtreamCluste } -pub async fn get_xtream_stream_info_content(client: &reqwest::Client, input: &InputSource, trace_log: bool) -> Result { - match request::download_text_content(client, None, input, None, None, trace_log).await { +pub async fn get_xtream_stream_info_content(client: &reqwest::Client, input: &InputSource, trace_log: bool, default_user_agent: Option<&str>,) -> Result { + match request::download_text_content(client, None, input, None, None, trace_log, default_user_agent).await { Ok((content, _response_url)) => Ok(content), Err(err) => Err(err) } @@ -87,7 +87,7 @@ pub async fn get_xtream_stream_info(client: &reqwest::Client, } let input_source = InputSource::from(input).with_url(info_url.to_owned()); - if let Ok(content) = get_xtream_stream_info_content(client, &input_source, false).await { + if let Ok(content) = get_xtream_stream_info_content(client, &input_source, false, app_config.config.load().default_user_agent.as_deref()).await { if content.is_empty() { return Err(info_err!("Provider returned no response for stream with id: {}/{}/{}", target.name.replace(' ', "_").as_str(), &cluster, pli.get_virtual_id())); @@ -267,12 +267,12 @@ const ACTIONS: [(XtreamCluster, &str, &str); 3] = [ (XtreamCluster::Series, crate::model::XC_ACTION_GET_SERIES_CATEGORIES, crate::model::XC_ACTION_GET_SERIES)]; async fn xtream_login(cfg: &Config, client: &reqwest::Client, input: &InputSource, username: &str) -> Result, TuliproxError> { - let content = if let Ok(content) = request::get_input_json_content(client, None, input, None, false).await { + let content = if let Ok(content) = request::get_input_json_content(client, None, input, None, false, cfg.default_user_agent.as_deref()).await { content } else { let input_source_account_info = input.with_url(format!("{}&action={}", &input.url, crate::model::XC_ACTION_GET_ACCOUNT_INFO)); - match request::get_input_json_content(client, None, &input_source_account_info, None, false).await { + match request::get_input_json_content(client, None, &input_source_account_info, None, false, cfg.default_user_agent.as_deref()).await { Ok(content) => content, Err(err) => { warn!("Failed to login xtream account {username} {err}"); @@ -378,8 +378,8 @@ pub async fn download_xtream_playlist(app_config: &Arc, client: &reqw working_dir, format!("{stream}_").as_str()); match futures::join!( - request::get_input_json_content_as_stream(client, None, &input_source_category, category_file_path), - request::get_input_json_content_as_stream(client, None, &input_source_stream, stream_file_path) + request::get_input_json_content_as_stream(client, None, &input_source_category, category_file_path, cfg.default_user_agent.as_deref()), + request::get_input_json_content_as_stream(client, None, &input_source_stream, stream_file_path, cfg.default_user_agent.as_deref()) ) { (Ok(category_content), Ok(stream_content)) => { if cfg.disk_based_processing { @@ -532,7 +532,7 @@ async fn process_xtream_cluster_to_disk( // trace!("Spawned consumer_task for cluster {}", cluster); let tmp_xtream_path = xtream_path_for_consumer.with_extension("tmp"); // trace!("Creating fresh ghost database at {:?}", tmp_xtream_path); - crate::repository::bplustree::BPlusTree::::new() + crate::repository::BPlusTree::::new() .store(&tmp_xtream_path) .map_err(|e| { error!("Failed to initialize ghost BPlusTree at {}: {e}", tmp_xtream_path.display()); diff --git a/config/config.yml b/config/config.yml index ec994a980..7f6b15444 100644 --- a/config/config.yml +++ b/config/config.yml @@ -8,6 +8,9 @@ working_dir: ${env:TULIPROX_HOME}/data backup_dir: ${env:TULIPROX_HOME}/backup custom_stream_response_path: ${env:TULIPROX_HOME}/resources connect_timeout_secs: 10 +# Used when no `User-Agent` is provided by the client request and none is set in input headers. +# If omitted, the built-in default is used. +default_user_agent: "VLC/3.0.16 LibVLC/3.0.16" user_access_control: false schedules: diff --git a/docker/Dockerfile b/docker/Dockerfile index 27fee2eef..111b0e4f4 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -103,12 +103,16 @@ RUN ffmpeg -loop 1 -i ./resources/channel_unavailable.jpg -t 10 -r 1 -an \ ./resources/user_connections_exhausted.ts && \ ffmpeg -loop 1 -i ./resources/provider_connections_exhausted.jpg -t 10 -r 1 -an \ -vf "scale=1920:1080" \ - -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ - ./resources/provider_connections_exhausted.ts && \ + -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ + ./resources/provider_connections_exhausted.ts && \ ffmpeg -loop 1 -i ./resources/user_account_expired.jpg -t 10 -r 1 -an \ -vf "scale=1920:1080" \ -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ - ./resources/user_account_expired.ts + ./resources/user_account_expired.ts && \ + ffmpeg -loop 1 -i ./resources/panel_api_provisioning.ppm -t 10 -r 1 -an \ + -vf "scale=1920:1080" \ + -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ + ./resources/panel_api_provisioning.ts # ----------------------------------------------------------------- # Stage 4: Prepare timezone data @@ -222,4 +226,4 @@ COPY --from=trunk-build /src/frontend/dist ./web COPY --from=resource-build /src/resources ./resources ENTRYPOINT ["/sbin/tini", "--", "/app/tuliprox"] -CMD ["-s", "-p", "/app/config"] \ No newline at end of file +CMD ["-s", "-p", "/app/config"] diff --git a/docker/Dockerfile-cross b/docker/Dockerfile-cross index 85c75f43c..8fcb2c54f 100644 --- a/docker/Dockerfile-cross +++ b/docker/Dockerfile-cross @@ -106,12 +106,16 @@ RUN ffmpeg -loop 1 -i ./resources/channel_unavailable.jpg -t 10 -r 1 -an \ ./resources/user_connections_exhausted.ts && \ ffmpeg -loop 1 -i ./resources/provider_connections_exhausted.jpg -t 10 -r 1 -an \ -vf "scale=1920:1080" \ - -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ - ./resources/provider_connections_exhausted.ts && \ + -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ + ./resources/provider_connections_exhausted.ts && \ ffmpeg -loop 1 -i ./resources/user_account_expired.jpg -t 10 -r 1 -an \ -vf "scale=1920:1080" \ -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ - ./resources/user_account_expired.ts + ./resources/user_account_expired.ts && \ + ffmpeg -loop 1 -i ./resources/panel_api_provisioning.ppm -t 10 -r 1 -an \ + -vf "scale=1920:1080" \ + -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p \ + ./resources/panel_api_provisioning.ts # ----------------------------------------------------------------- # Stage 4: Prepare timezone data diff --git a/frontend/public/assets/i18n/en.json b/frontend/public/assets/i18n/en.json index d5e50e9f2..f7344005c 100644 --- a/frontend/public/assets/i18n/en.json +++ b/frontend/public/assets/i18n/en.json @@ -30,6 +30,7 @@ "WEB_ROOT": "Web-Root", "PROCESS_PARALLEL": "Process Parallel", "WORKING_DIR": "Working dir", + "DEFAULT_USER_AGENT": "Default User-Agent", "BACKUP_DIR": "Backup dir", "UPDATE_ON_BOOT": "Update on boot", "WEB_UI": "Web UI", @@ -377,9 +378,22 @@ "HEADER_NAME": "Header Name", "HEADER_VALUE": "Header Value", "PANEL": "Panel", + "PANEL_ACCOUNT_INFO": "Account info", + "PANEL_ADULT_CONTENT": "Adult content", "PANEL_CLIENT_INFO": "Client info", "PANEL_CLIENT_NEW": "Client new", "PANEL_CLIENT_RENEW": "Client renew", + "PANEL_CREDITS": "Credits", + "PANEL_PROVISIONING": "Provisioning", + "PANEL_PROVISION_TIMEOUT_SEC": "Timeout (sec)", + "PANEL_PROBE_INTERVAL_SEC": "Probe interval (sec)", + "PANEL_PROVISION_COOLDOWN_SEC": "Cooldown (sec)", + "PANEL_PROVISION_OFFSET": "Renew offset (e.g. 30m, 12h)", + "PANEL_PROVISION_METHOD": "Probe method", + "PANEL_ALIAS_POOL": "Alias pool", + "PANEL_ALIAS_POOL_MIN": "Size: min", + "PANEL_ALIAS_POOL_MAX": "Size: max", + "PANEL_ALIAS_POOL_REMOVE_EXPIRED": "Remove expired", "PANEL_STATUS_READY": "Ready", "PANEL_STATUS_INVALID": "Invalid", "PANEL_STATUS_DISABLED": "Disabled", @@ -786,4 +800,4 @@ "ZM": "Zambia", "ZW": "Zimbabwe" } -} \ No newline at end of file +} diff --git a/frontend/scss/app/_component.scss b/frontend/scss/app/_component.scss index 09448ae6b..3fe82b8e1 100644 --- a/frontend/scss/app/_component.scss +++ b/frontend/scss/app/_component.scss @@ -67,7 +67,11 @@ @forward "components/accordion"; @forward "components/cvs_table"; @forward "components/config/config_view"; -@forward "components/config/panel_config_view"; +@forward "components/config/local_library_config"; +@forward "components/config/log_config"; +@forward "components/config/messaging_config"; +@forward "components/config/panel_api_config"; +@forward "components/config/schedules_config"; @forward "components/tabset"; @forward "components/select"; @forward "components/form"; diff --git a/frontend/scss/app/components/_table.scss b/frontend/scss/app/components/_table.scss index d6cc62986..729b1cc79 100644 --- a/frontend/scss/app/components/_table.scss +++ b/frontend/scss/app/components/_table.scss @@ -15,6 +15,10 @@ overflow: auto; } + &__nowrap { + white-space: nowrap; + } + &__table { width: 100%; border-collapse: collapse; @@ -65,4 +69,4 @@ } } } -} \ No newline at end of file +} diff --git a/frontend/scss/app/components/config/_local_library_config.scss b/frontend/scss/app/components/config/_local_library_config.scss new file mode 100644 index 000000000..6eba22d27 --- /dev/null +++ b/frontend/scss/app/components/config/_local_library_config.scss @@ -0,0 +1,25 @@ +.tp__library-config-view { + &__header { + display: flex; + flex-flow: column; + gap: var(--gap-default); + box-sizing: border-box; + } + + &__list { + display: flex; + flex-flow: row; + gap: var(--gap-default); + &-item { + font-size: 1.1rem; + color: var(--text-color); + } + } + + &__editor-row { + display: flex; + flex-flow: row wrap; + gap: var(--gap-default); + box-sizing: border-box; + } +} diff --git a/frontend/scss/app/components/config/_log_config.scss b/frontend/scss/app/components/config/_log_config.scss new file mode 100644 index 000000000..a97d42f00 --- /dev/null +++ b/frontend/scss/app/components/config/_log_config.scss @@ -0,0 +1,9 @@ +.tp__log-config-view__header { + .tp__form-field { + display: flex; + flex-flow: row wrap; + gap: var(--gap-default); + box-sizing: border-box; + align-items: center; + } +} \ No newline at end of file diff --git a/frontend/scss/app/components/config/_messaging_config.scss b/frontend/scss/app/components/config/_messaging_config.scss new file mode 100644 index 000000000..e2a58d05f --- /dev/null +++ b/frontend/scss/app/components/config/_messaging_config.scss @@ -0,0 +1,6 @@ +.tp__messaging-config-view__notify-on { + display: flex; + flex-flow: row wrap; + gap: var(--gap-default); + box-sizing: border-box; +} \ No newline at end of file diff --git a/frontend/scss/app/components/config/_panel_config_view.scss b/frontend/scss/app/components/config/_panel_api_config.scss similarity index 91% rename from frontend/scss/app/components/config/_panel_config_view.scss rename to frontend/scss/app/components/config/_panel_api_config.scss index 920b0391e..a4768a6c9 100644 --- a/frontend/scss/app/components/config/_panel_config_view.scss +++ b/frontend/scss/app/components/config/_panel_api_config.scss @@ -1,6 +1,6 @@ @use "../../../size" as size; -.tp__panel-config-view { +.tp__panel-api-config-view { &__info-text { color: var(--modest-text-color); line-height: 1.35; @@ -22,6 +22,12 @@ gap: var(--gap-micro); } + &__input-badges { + display: flex; + flex-flow: row wrap; + gap: var(--gap-small); + } + &__input-subtitle { color: var(--modest-text-color); font-size: 0.9rem; @@ -34,6 +40,12 @@ gap: var(--gap-small); } + &__credits-chip { + color: var(--warn-color); + border-color: var(--warn-color); + background: color-mix(in srgb, var(--warn-color) 18%, transparent); + } + &__toggle { display: flex; flex-flow: row nowrap; @@ -152,4 +164,4 @@ margin: 0; } } -} +} \ No newline at end of file diff --git a/frontend/scss/app/components/config/_schedules_config.scss b/frontend/scss/app/components/config/_schedules_config.scss new file mode 100644 index 000000000..9361ba2fe --- /dev/null +++ b/frontend/scss/app/components/config/_schedules_config.scss @@ -0,0 +1,72 @@ +.tp__schedules-config-view { + &__body { + display: flex; + flex-flow: column; + gap: var(--gap-default); + box-sizing: border-box; + } + + &__schedule { + display: flex; + flex-flow: column; + gap: var(--gap-default); + box-sizing: border-box; + padding: var(--padding-default); + + .tp__config-view__table { + th { + text-align: left; + } + + th, td { + width: 1%; + white-space: nowrap; + } + + th:last-child, + td:last-child { + width: auto; + } + + td { + vertical-align: middle; + } + + .tp__config-view__tags { + padding-left: var(--padding-default); + } + } + + } + + &__footer { + margin-top: var(--margin-default); + padding-top: var(--margin-default); + border-top: 1px solid var(--card-border-color); + + svg { + width: 320px; + height: 90px; + } + + fill: var(--label-color); + } + + &__editor { + display: flex; + flex-flow: row wrap; + align-items: flex-end; + gap: var(--gap-default); + box-sizing: border-box; + + .tp__icon-button { + svg { + width: 2.3rem; + } + } + } + + &__delete-btn { + fill: var(--menu-button-warn-hover-color); + } +} \ No newline at end of file diff --git a/frontend/src/app/components/config/main_config_view.rs b/frontend/src/app/components/config/main_config_view.rs index 361c80bae..77303e07c 100644 --- a/frontend/src/app/components/config/main_config_view.rs +++ b/frontend/src/app/components/config/main_config_view.rs @@ -13,6 +13,7 @@ const LABEL_USER_ACCESS_CONTROL: &str = "LABEL.USER_ACCESS_CONTROL"; const LABEL_PROCESS_PARALLEL: &str = "LABEL.PROCESS_PARALLEL"; const LABEL_DISK_BASED_PROCESSING: &str = "LABEL.DISK_BASED_PROCESSING"; const LABEL_WORKING_DIR: &str = "LABEL.WORKING_DIR"; +const LABEL_DEFAULT_USER_AGENT: &str = "LABEL.DEFAULT_USER_AGENT"; const LABEL_MAPPING_PATH: &str = "LABEL.MAPPING_PATH"; const LABEL_BACKUP_DIR: &str = "LABEL.BACKUP_DIR"; const LABEL_USER_CONFIG_DIR: &str = "LABEL.USER_CONFIG_DIR"; @@ -32,6 +33,7 @@ generate_form_reducer!( ProcessParallel => process_parallel: bool, DiskBasedProcessing => disk_based_processing: bool, WorkingDir => working_dir: String, + DefaultUserAgent => default_user_agent: Option, MappingPath => mapping_path: Option, BackupDir => backup_dir: Option, UserConfigDir => user_config_dir: Option, @@ -83,6 +85,7 @@ pub fn MainConfigView() -> Html { { config_field_bool!(form_state.form, translate.t(LABEL_PROCESS_PARALLEL), process_parallel) } { config_field_bool!(form_state.form, translate.t(LABEL_DISK_BASED_PROCESSING), disk_based_processing) } { config_field!(form_state.form, translate.t(LABEL_WORKING_DIR), working_dir) } + { config_field_optional!(form_state.form, translate.t(LABEL_DEFAULT_USER_AGENT), default_user_agent) } { config_field_optional!(form_state.form, translate.t(LABEL_MAPPING_PATH), mapping_path) } { config_field_optional!(form_state.form, translate.t(LABEL_BACKUP_DIR), backup_dir) } { config_field_optional!(form_state.form, translate.t(LABEL_USER_CONFIG_DIR), user_config_dir) } @@ -102,6 +105,7 @@ pub fn MainConfigView() -> Html { { edit_field_bool!(form_state, translate.t(LABEL_PROCESS_PARALLEL), process_parallel, MainConfigFormAction::ProcessParallel) } { edit_field_bool!(form_state, translate.t(LABEL_DISK_BASED_PROCESSING), disk_based_processing, MainConfigFormAction::DiskBasedProcessing) } { edit_field_text!(form_state, translate.t(LABEL_WORKING_DIR), working_dir, MainConfigFormAction::WorkingDir) } + { edit_field_text_option!(form_state, translate.t(LABEL_DEFAULT_USER_AGENT), default_user_agent, MainConfigFormAction::DefaultUserAgent) } { edit_field_text_option!(form_state, translate.t(LABEL_MAPPING_PATH), mapping_path, MainConfigFormAction::MappingPath) } { edit_field_text_option!(form_state, translate.t(LABEL_BACKUP_DIR), backup_dir, MainConfigFormAction::BackupDir) } { edit_field_text_option!(form_state, translate.t(LABEL_USER_CONFIG_DIR), user_config_dir, MainConfigFormAction::UserConfigDir) } diff --git a/frontend/src/app/components/config/panel_config_view.rs b/frontend/src/app/components/config/panel_config_view.rs index 6f9c603ea..b7063c9eb 100644 --- a/frontend/src/app/components/config/panel_config_view.rs +++ b/frontend/src/app/components/config/panel_config_view.rs @@ -1,13 +1,20 @@ -use crate::app::components::input::Input; -use crate::app::components::{Card, Chip, IconButton, ToggleSwitch}; use crate::app::components::config::config_page::{ConfigForm, LABEL_PANEL_CONFIG}; use crate::app::components::config::config_view_context::ConfigViewContext; +use crate::app::components::input::Input; +use crate::app::components::select::Select; +use crate::app::components::{ + Card, Chip, DropDownOption, DropDownSelection, IconButton, ToggleSwitch, +}; use crate::app::context::ConfigContext; use crate::html_if; -use shared::model::{ConfigInputDto, PanelApiConfigDto, PanelApiQueryParamDto, SourcesConfigDto}; +use shared::model::{ + ConfigInputDto, PanelApiAliasPoolAuto, PanelApiAliasPoolSizeDto, PanelApiAliasPoolSizeValue, + PanelApiConfigDto, PanelApiProvisioningMethod, PanelApiQueryParamDto, SourcesConfigDto, +}; use std::rc::Rc; use yew::prelude::*; use yew_i18n::use_translation; +use shared::utils::Internable; const LABEL_ENABLED: &str = "LABEL.ENABLED"; const LABEL_URL: &str = "LABEL.URL"; @@ -15,23 +22,39 @@ const LABEL_API_KEY: &str = "LABEL.API_KEY"; const LABEL_STATUS_READY: &str = "LABEL.PANEL_STATUS_READY"; const LABEL_STATUS_INVALID: &str = "LABEL.PANEL_STATUS_INVALID"; const LABEL_STATUS_DISABLED: &str = "LABEL.PANEL_STATUS_DISABLED"; +const LABEL_PANEL_ADULT_CONTENT: &str = "LABEL.PANEL_ADULT_CONTENT"; +const LABEL_PANEL_CREDITS: &str = "LABEL.PANEL_CREDITS"; const LABEL_VALIDATION: &str = "LABEL.VALIDATION"; const HINT_PANEL_INFO: &str = "HINT.CONFIG.PANEL.INFO"; const HINT_PANEL_ENABLE: &str = "HINT.CONFIG.PANEL.ENABLE"; +const LABEL_PANEL_PROVISIONING: &str = "LABEL.PANEL_PROVISIONING"; +const LABEL_PANEL_PROVISION_TIMEOUT: &str = "LABEL.PANEL_PROVISION_TIMEOUT_SEC"; +const LABEL_PANEL_PROBE_INTERVAL: &str = "LABEL.PANEL_PROBE_INTERVAL_SEC"; +const LABEL_PANEL_PROVISION_COOLDOWN: &str = "LABEL.PANEL_PROVISION_COOLDOWN_SEC"; +const LABEL_PANEL_PROVISION_METHOD: &str = "LABEL.PANEL_PROVISION_METHOD"; +const LABEL_PANEL_PROVISION_OFFSET: &str = "LABEL.PANEL_PROVISION_OFFSET"; +const LABEL_PANEL_ALIAS_POOL: &str = "LABEL.PANEL_ALIAS_POOL"; +const LABEL_PANEL_ALIAS_POOL_MIN: &str = "LABEL.PANEL_ALIAS_POOL_MIN"; +const LABEL_PANEL_ALIAS_POOL_MAX: &str = "LABEL.PANEL_ALIAS_POOL_MAX"; +const LABEL_PANEL_ALIAS_POOL_REMOVE_EXPIRED: &str = "LABEL.PANEL_ALIAS_POOL_REMOVE_EXPIRED"; #[derive(Copy, Clone, Debug, PartialEq, Eq)] enum PanelSection { + AccountInfo, Info, New, Renew, + AdultContent, } impl PanelSection { fn label_key(&self) -> &'static str { match self { + Self::AccountInfo => "LABEL.PANEL_ACCOUNT_INFO", Self::Info => "LABEL.PANEL_CLIENT_INFO", Self::New => "LABEL.PANEL_CLIENT_NEW", Self::Renew => "LABEL.PANEL_CLIENT_RENEW", + Self::AdultContent => LABEL_PANEL_ADULT_CONTENT, } } } @@ -46,26 +69,94 @@ struct PanelConfigFormState { #[derive(Clone)] enum PanelConfigFormAction { SetAll(SourcesConfigDto), - SetEnabled { input_idx: usize, enabled: bool }, - SetPanelUrl { input_idx: usize, url: String }, - SetApiKey { input_idx: usize, api_key: String }, - AddParam { input_idx: usize, section: PanelSection }, - RemoveParam { input_idx: usize, section: PanelSection, param_idx: usize }, - SetParamKey { input_idx: usize, section: PanelSection, param_idx: usize, key: String }, - SetParamValue { input_idx: usize, section: PanelSection, param_idx: usize, value: String }, - EnsureRequired { input_idx: usize, section: PanelSection }, + SetEnabled { + input_idx: usize, + enabled: bool, + }, + SetPanelUrl { + input_idx: usize, + url: String, + }, + SetApiKey { + input_idx: usize, + api_key: String, + }, + SetProvisioningTimeout { + input_idx: usize, + timeout_sec: u64, + }, + SetProvisioningProbeInterval { + input_idx: usize, + probe_interval_sec: u64, + }, + SetProvisioningCooldown { + input_idx: usize, + cooldown_sec: u64, + }, + SetProvisioningMethod { + input_idx: usize, + method: PanelApiProvisioningMethod, + }, + SetProvisioningOffset { + input_idx: usize, + offset: String, + }, + SetAliasPoolMin { + input_idx: usize, + value: Option, + }, + SetAliasPoolMax { + input_idx: usize, + value: Option, + }, + SetAliasPoolRemoveExpired { + input_idx: usize, + remove_expired: bool, + }, + AddParam { + input_idx: usize, + section: PanelSection, + }, + RemoveParam { + input_idx: usize, + section: PanelSection, + param_idx: usize, + }, + SetParamKey { + input_idx: usize, + section: PanelSection, + param_idx: usize, + key: String, + }, + SetParamValue { + input_idx: usize, + section: PanelSection, + param_idx: usize, + value: String, + }, + EnsureRequired { + input_idx: usize, + section: PanelSection, + }, } -fn params_mut(panel: &mut PanelApiConfigDto, section: PanelSection) -> &mut Vec { +fn params_mut( + panel: &mut PanelApiConfigDto, + section: PanelSection, +) -> &mut Vec { match section { + PanelSection::AccountInfo => &mut panel.query_parameter.account_info, PanelSection::Info => &mut panel.query_parameter.client_info, PanelSection::New => &mut panel.query_parameter.client_new, PanelSection::Renew => &mut panel.query_parameter.client_renew, + PanelSection::AdultContent => &mut panel.query_parameter.client_adult_content, } } fn has_param(params: &[PanelApiQueryParamDto], key: &str) -> bool { - params.iter().any(|p| p.key.trim().eq_ignore_ascii_case(key)) + params + .iter() + .any(|p| p.key.trim().eq_ignore_ascii_case(key)) } fn get_param_value(params: &[PanelApiQueryParamDto], key: &str) -> Option { @@ -75,11 +166,39 @@ fn get_param_value(params: &[PanelApiQueryParamDto], key: &str) -> Option) -> String { + match value { + Some(PanelApiAliasPoolSizeValue::Auto(_)) => "auto".to_string(), + Some(PanelApiAliasPoolSizeValue::Number(num)) => num.to_string(), + None => String::new(), + } +} + +fn parse_alias_pool_size(value: &str) -> Option { + let trimmed = value.trim(); + if trimmed.is_empty() { + return None; + } + // this is for the search + if "auto".starts_with(&trimmed.to_ascii_lowercase()) { + return Some(PanelApiAliasPoolSizeValue::Auto( + PanelApiAliasPoolAuto::Auto, + )); + } + trimmed + .parse::() + .ok() + .map(PanelApiAliasPoolSizeValue::Number) +} + fn validate_panel(panel: Option<&PanelApiConfigDto>) -> Vec { let mut errors = vec![]; let Some(panel) = panel else { return errors; }; + if !panel.enabled { + return errors; + } if panel.url.trim().is_empty() { errors.push("Missing panel url".to_string()); @@ -89,27 +208,59 @@ fn validate_panel(panel: Option<&PanelApiConfigDto>) -> Vec { } let sections = [ - (PanelSection::Info, &panel.query_parameter.client_info), - (PanelSection::New, &panel.query_parameter.client_new), - (PanelSection::Renew, &panel.query_parameter.client_renew), + ( + PanelSection::AccountInfo, + &panel.query_parameter.account_info, + false, + ), + (PanelSection::Info, &panel.query_parameter.client_info, true), + (PanelSection::New, &panel.query_parameter.client_new, true), + ( + PanelSection::Renew, + &panel.query_parameter.client_renew, + true, + ), + ( + PanelSection::AdultContent, + &panel.query_parameter.client_adult_content, + false, + ), ]; - for (section, params) in sections { + for (section, params, required) in sections { if params.is_empty() { - errors.push(match section { - PanelSection::Info => "client_info: empty".to_string(), - PanelSection::New => "client_new: empty".to_string(), - PanelSection::Renew => "client_renew: empty".to_string(), - }); + if required { + errors.push(match section { + PanelSection::AccountInfo => "account_info: empty".to_string(), + PanelSection::Info => "client_info: empty".to_string(), + PanelSection::New => "client_new: empty".to_string(), + PanelSection::Renew => "client_renew: empty".to_string(), + PanelSection::AdultContent => "client_adult_content: empty".to_string(), + }); + } continue; } if !has_param(params, "api_key") { errors.push(match section { + PanelSection::AccountInfo => "account_info: missing api_key param".to_string(), PanelSection::Info => "client_info: missing api_key param".to_string(), PanelSection::New => "client_new: missing api_key param".to_string(), PanelSection::Renew => "client_renew: missing api_key param".to_string(), + PanelSection::AdultContent => { + "client_adult_content: missing api_key param".to_string() + } }); } match section { + PanelSection::AccountInfo => { + if has_param(params, "username") || has_param(params, "password") { + if get_param_value(params, "username").as_deref() != Some("auto") { + errors.push("account_info: username must be auto".to_string()); + } + if get_param_value(params, "password").as_deref() != Some("auto") { + errors.push("account_info: password must be auto".to_string()); + } + } + } PanelSection::New => { if has_param(params, "user") { errors.push("client_new: must not include user".to_string()); @@ -137,22 +288,94 @@ fn validate_panel(panel: Option<&PanelApiConfigDto>) -> Vec { errors.push("client_info: password must be auto".to_string()); } } + PanelSection::AdultContent => { + if has_param(params, "username") || has_param(params, "password") { + if get_param_value(params, "username").as_deref() != Some("auto") { + errors.push("client_adult_content: username must be auto".to_string()); + } + if get_param_value(params, "password").as_deref() != Some("auto") { + errors.push("client_adult_content: password must be auto".to_string()); + } + } + } + } + } + + if let Some(size) = panel.alias_pool.as_ref().and_then(|p| p.size.as_ref()) { + let min = size + .min + .as_ref() + .and_then(PanelApiAliasPoolSizeValue::as_number); + let max = size + .max + .as_ref() + .and_then(PanelApiAliasPoolSizeValue::as_number); + if let (Some(min), Some(max)) = (min, max) { + if min > max { + errors.push("alias_pool.size: min must be <= max".to_string()); + } + } + if let Some(min) = min { + if min == 0 { + errors.push("alias_pool.size: min must be > 0".to_string()); + } + } + if let Some(max) = max { + if max == 0 { + errors.push("alias_pool.size: max must be > 0".to_string()); + } + } + } + if panel.provisioning.probe_interval_sec == 0 { + errors.push("provisioning: probe_interval_sec must be > 0".to_string()); + } + if let Some(offset) = panel.provisioning.offset.as_deref() { + if !offset.trim().is_empty() && parse_offset_secs(offset).is_none() { + errors.push("provisioning: offset must be a number with optional suffix s/m/h/d (e.g. 30m, 12h)".to_string()); } } errors } +fn parse_offset_secs(value: &str) -> Option { + let raw = value.trim(); + if raw.is_empty() { + return Some(0); + } + let lower = raw.to_ascii_lowercase(); + let bytes = lower.as_bytes(); + let last = *bytes.last()?; + let (num_part, multiplier) = match last { + b's' => (&lower[..lower.len().saturating_sub(1)], 1_u64), + b'm' => (&lower[..lower.len().saturating_sub(1)], 60_u64), + b'h' => (&lower[..lower.len().saturating_sub(1)], 60_u64 * 60), + b'd' => (&lower[..lower.len().saturating_sub(1)], 60_u64 * 60 * 24), + b'0'..=b'9' => (lower.as_str(), 1_u64), + _ => return None, + }; + let num_part = num_part.trim(); + if num_part.is_empty() { + return None; + } + let value: u64 = num_part.parse().ok()?; + value.checked_mul(multiplier) +} + fn ensure_required_params(params: &mut Vec, section: PanelSection) { let ensure = |params: &mut Vec, key: &str, value: &str| { if !has_param(params, key) { params.push(PanelApiQueryParamDto { - key: key.to_string(), - value: value.to_string(), + key: key.intern(), + value: value.intern(), }); } }; ensure(params, "api_key", "auto"); match section { + PanelSection::AccountInfo => { + ensure(params, "username", "auto"); + ensure(params, "password", "auto"); + } PanelSection::New => { params.retain(|p| !p.key.trim().eq_ignore_ascii_case("user")); ensure(params, "type", "m3u"); @@ -166,10 +389,18 @@ fn ensure_required_params(params: &mut Vec, section: Pane ensure(params, "username", "auto"); ensure(params, "password", "auto"); } + PanelSection::AdultContent => { + ensure(params, "username", "auto"); + ensure(params, "password", "auto"); + } } } -fn with_input_mut(form: &mut SourcesConfigDto, input_idx: usize, f: impl FnOnce(&mut ConfigInputDto)) { +fn with_input_mut( + form: &mut SourcesConfigDto, + input_idx: usize, + f: impl FnOnce(&mut ConfigInputDto), +) { if let Some(input) = form.inputs.get_mut(input_idx) { f(input); } @@ -180,45 +411,238 @@ impl Reducible for PanelConfigFormState { fn reduce(self: Rc, action: Self::Action) -> Rc { match action { - PanelConfigFormAction::SetAll(form) => Self { form, modified: false }.into(), - PanelConfigFormAction::SetEnabled { input_idx, enabled } => { + PanelConfigFormAction::SetAll(form) => Self { + form, + modified: false, + } + .into(), + PanelConfigFormAction::SetEnabled { + input_idx, + enabled, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { if enabled { - if input.panel_api.is_none() { - input.panel_api = Some(PanelApiConfigDto::default()); - } - } else { - input.panel_api = None; + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + panel.enabled = true; + } else if let Some(panel) = input.panel_api.as_mut() { + panel.enabled = false; } }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } - PanelConfigFormAction::SetPanelUrl { input_idx, url } => { + PanelConfigFormAction::SetPanelUrl { + input_idx, + url, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { - let panel = input.panel_api.get_or_insert_with(PanelApiConfigDto::default); + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); panel.url = url; }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } - PanelConfigFormAction::SetApiKey { input_idx, api_key } => { + PanelConfigFormAction::SetApiKey { + input_idx, + api_key, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { - let panel = input.panel_api.get_or_insert_with(PanelApiConfigDto::default); - panel.api_key = if api_key.trim().is_empty() { None } else { Some(api_key) }; + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + panel.api_key = if api_key.trim().is_empty() { + None + } else { + Some(api_key.intern()) + }; }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } - PanelConfigFormAction::AddParam { input_idx, section } => { + PanelConfigFormAction::SetProvisioningTimeout { + input_idx, + timeout_sec, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { - let panel = input.panel_api.get_or_insert_with(PanelApiConfigDto::default); - params_mut(panel, section).push(PanelApiQueryParamDto { key: String::new(), value: String::new() }); + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + panel.provisioning.timeout_sec = timeout_sec; }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } - PanelConfigFormAction::RemoveParam { input_idx, section, param_idx } => { + PanelConfigFormAction::SetProvisioningProbeInterval { + input_idx, + probe_interval_sec, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + panel.provisioning.probe_interval_sec = probe_interval_sec; + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::SetProvisioningCooldown { + input_idx, + cooldown_sec, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + panel.provisioning.cooldown_sec = cooldown_sec; + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::SetProvisioningMethod { + input_idx, + method, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + panel.provisioning.method = method; + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::SetProvisioningOffset { + input_idx, + offset, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + let normalized = offset.trim().to_string(); + panel.provisioning.offset = if normalized.is_empty() { + None + } else { + Some(normalized) + }; + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::SetAliasPoolMin { + input_idx, + value, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + let alias_pool = panel.alias_pool.get_or_insert_with(Default::default); + let size = alias_pool.size.get_or_insert_with(Default::default); + size.min = value; + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::SetAliasPoolMax { + input_idx, + value, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + let alias_pool = panel.alias_pool.get_or_insert_with(Default::default); + let size = alias_pool.size.get_or_insert_with(Default::default); + size.max = value; + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::SetAliasPoolRemoveExpired { + input_idx, + remove_expired, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + let alias_pool = panel.alias_pool.get_or_insert_with(Default::default); + alias_pool.remove_expired = remove_expired; + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::AddParam { + input_idx, + section, + } => { + let mut form = self.form.clone(); + with_input_mut(&mut form, input_idx, |input| { + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); + params_mut(panel, section).push(PanelApiQueryParamDto::default()); + }); + Self { + form, + modified: true, + } + .into() + } + PanelConfigFormAction::RemoveParam { + input_idx, + section, + param_idx, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { if let Some(panel) = input.panel_api.as_mut() { @@ -228,39 +652,70 @@ impl Reducible for PanelConfigFormState { } } }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } - PanelConfigFormAction::SetParamKey { input_idx, section, param_idx, key } => { + PanelConfigFormAction::SetParamKey { + input_idx, + section, + param_idx, + key, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { if let Some(panel) = input.panel_api.as_mut() { let params = params_mut(panel, section); if let Some(p) = params.get_mut(param_idx) { - p.key = key; + p.key = key.intern(); } } }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } - PanelConfigFormAction::SetParamValue { input_idx, section, param_idx, value } => { + PanelConfigFormAction::SetParamValue { + input_idx, + section, + param_idx, + value, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { if let Some(panel) = input.panel_api.as_mut() { let params = params_mut(panel, section); if let Some(p) = params.get_mut(param_idx) { - p.value = value; + p.value = value.intern(); } } }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } - PanelConfigFormAction::EnsureRequired { input_idx, section } => { + PanelConfigFormAction::EnsureRequired { + input_idx, + section, + } => { let mut form = self.form.clone(); with_input_mut(&mut form, input_idx, |input| { - let panel = input.panel_api.get_or_insert_with(PanelApiConfigDto::default); + let panel = input + .panel_api + .get_or_insert_with(PanelApiConfigDto::default); ensure_required_params(params_mut(panel, section), section); }); - Self { form, modified: true }.into() + Self { + form, + modified: true, + } + .into() } } } @@ -276,37 +731,43 @@ fn render_param_editor( ) -> Html { let add_required = { let form_state = form_state.clone(); - Callback::from(move |(name, _): (String, web_sys::MouseEvent)| { + Callback::from(move |(name, _): (String, MouseEvent)| { if name == "required" { - form_state.dispatch(PanelConfigFormAction::EnsureRequired { input_idx, section }); + form_state.dispatch(PanelConfigFormAction::EnsureRequired { + input_idx, + section, + }); } }) }; let add_param = { let form_state = form_state.clone(); - Callback::from(move |(name, _): (String, web_sys::MouseEvent)| { + Callback::from(move |(name, _): (String, MouseEvent)| { if name == "add" { - form_state.dispatch(PanelConfigFormAction::AddParam { input_idx, section }); + form_state.dispatch(PanelConfigFormAction::AddParam { + input_idx, + section, + }); } }) }; html! { -
-
+
+

{ section_title }

{ html_if!(edit_mode, { -
+
})}
-
+
{ if params.is_empty() { - html!{
{ "—" }
} + html!{
{ "—" }
} } else { html!{ for params.iter().enumerate().map(|(param_idx, p)| { let on_key = { @@ -323,7 +784,7 @@ fn render_param_editor( }; let on_remove = { let form_state = form_state.clone(); - Callback::from(move |(name, _): (String, web_sys::MouseEvent)| { + Callback::from(move |(name, _): (String, MouseEvent)| { if name == "rm" { form_state.dispatch(PanelConfigFormAction::RemoveParam { input_idx, section, param_idx }); } @@ -331,21 +792,21 @@ fn render_param_editor( }; html!{
{ if edit_mode { html!{ <> - ::None} value={p.key.clone()} placeholder={Some("key".to_string())} on_change={Some(on_key)} /> - ::None} value={p.value.clone()} placeholder={Some("value".to_string())} on_change={Some(on_val)} /> - + ::None} value={p.key.to_string()} placeholder={Some("key".to_string())} on_change={Some(on_key)} /> + ::None} value={p.value.to_string()} placeholder={Some("value".to_string())} on_change={Some(on_val)} /> + } } else { html!{ -
+
{ &p.key } { &p.value }
@@ -384,17 +845,21 @@ pub fn PanelConfigView() -> Html { { let form_state = form_state.clone(); let sources_cfg = config_ctx.config.as_ref().map(|c| c.sources.clone()); - use_effect_with((sources_cfg, config_view_ctx.edit_mode.clone()), move |(sources_cfg, _mode)| { - if let Some(src) = sources_cfg { - form_state.dispatch(PanelConfigFormAction::SetAll((*src).clone())); - } else { - form_state.dispatch(PanelConfigFormAction::SetAll(SourcesConfigDto::default())); - } - }); + use_effect_with( + (sources_cfg, config_view_ctx.edit_mode.clone()), + move |(sources_cfg, _mode)| { + if let Some(src) = sources_cfg { + form_state.dispatch(PanelConfigFormAction::SetAll((*src).clone())); + } else { + form_state.dispatch(PanelConfigFormAction::SetAll(SourcesConfigDto::default())); + } + || () + }, + ); } let render_input_card = |input_idx: usize, input: &ConfigInputDto| -> Html { - let panel_enabled = input.panel_api.is_some(); + let panel_enabled = input.panel_api.as_ref().is_some_and(|panel| panel.enabled); let errors = validate_panel(input.panel_api.as_ref()); let has_errors = !errors.is_empty(); let status_chip = if panel_enabled { @@ -410,42 +875,216 @@ pub fn PanelConfigView() -> Html { let on_toggle = { let form_state = form_state.clone(); Callback::from(move |enabled: bool| { - form_state.dispatch(PanelConfigFormAction::SetEnabled { input_idx, enabled }); + form_state.dispatch(PanelConfigFormAction::SetEnabled { + input_idx, + enabled, + }); }) }; let on_url = { let form_state = form_state.clone(); Callback::from(move |value: String| { - form_state.dispatch(PanelConfigFormAction::SetPanelUrl { input_idx, url: value }); + form_state.dispatch(PanelConfigFormAction::SetPanelUrl { + input_idx, + url: value, + }); }) }; let on_api_key = { let form_state = form_state.clone(); Callback::from(move |value: String| { - form_state.dispatch(PanelConfigFormAction::SetApiKey { input_idx, api_key: value }); + form_state.dispatch(PanelConfigFormAction::SetApiKey { + input_idx, + api_key: value, + }); + }) + }; + let on_provision_timeout = { + let form_state = form_state.clone(); + Callback::from(move |value: String| { + let timeout_sec = value.trim().parse::().unwrap_or(0); + form_state.dispatch(PanelConfigFormAction::SetProvisioningTimeout { + input_idx, + timeout_sec, + }); + }) + }; + let on_probe_interval = { + let form_state = form_state.clone(); + Callback::from(move |value: String| { + let probe_interval_sec = value.trim().parse::().unwrap_or(0); + form_state.dispatch(PanelConfigFormAction::SetProvisioningProbeInterval { + input_idx, + probe_interval_sec, + }); + }) + }; + let on_provision_cooldown = { + let form_state = form_state.clone(); + Callback::from(move |value: String| { + let cooldown_sec = value.trim().parse::().unwrap_or(0); + form_state.dispatch(PanelConfigFormAction::SetProvisioningCooldown { + input_idx, + cooldown_sec, + }); + }) + }; + let on_method_select = { + let form_state = form_state.clone(); + Callback::from(move |(_name, selection): (String, DropDownSelection)| { + if let DropDownSelection::Single(option) = selection { + if let Ok(method) = option.parse::() { + form_state.dispatch(PanelConfigFormAction::SetProvisioningMethod { + input_idx, + method, + }); + } + } + }) + }; + let on_provision_offset = { + let form_state = form_state.clone(); + Callback::from(move |value: String| { + form_state.dispatch(PanelConfigFormAction::SetProvisioningOffset { + input_idx, + offset: value, + }); + }) + }; + let on_alias_pool_min = { + let form_state = form_state.clone(); + Callback::from(move |value: String| { + form_state.dispatch(PanelConfigFormAction::SetAliasPoolMin { + input_idx, + value: parse_alias_pool_size(&value), + }); + }) + }; + let on_alias_pool_max = { + let form_state = form_state.clone(); + Callback::from(move |value: String| { + form_state.dispatch(PanelConfigFormAction::SetAliasPoolMax { + input_idx, + value: parse_alias_pool_size(&value), + }); + }) + }; + let on_alias_pool_remove_expired = { + let form_state = form_state.clone(); + Callback::from(move |value: bool| { + form_state.dispatch(PanelConfigFormAction::SetAliasPoolRemoveExpired { + input_idx, + remove_expired: value, + }); }) }; let panel = input.panel_api.as_ref(); let url_val = panel.map(|p| p.url.clone()).unwrap_or_default(); let api_key_val = panel.and_then(|p| p.api_key.clone()).unwrap_or_default(); - let client_info = panel.map(|p| p.query_parameter.client_info.as_slice()).unwrap_or(&[]); - let client_new = panel.map(|p| p.query_parameter.client_new.as_slice()).unwrap_or(&[]); - let client_renew = panel.map(|p| p.query_parameter.client_renew.as_slice()).unwrap_or(&[]); + let provisioning_timeout_val = panel + .map(|p| p.provisioning.timeout_sec.to_string()) + .unwrap_or_default(); + let provisioning_probe_interval_val = panel + .map(|p| p.provisioning.probe_interval_sec.to_string()) + .unwrap_or_default(); + let provisioning_cooldown_val = panel + .map(|p| p.provisioning.cooldown_sec.to_string()) + .unwrap_or_default(); + let provisioning_offset_val = panel + .and_then(|p| p.provisioning.offset.as_ref()) + .map(|v| v.trim().to_string()) + .unwrap_or_default(); + let provisioning_method = panel.map(|p| p.provisioning.method).unwrap_or_default(); + let alias_pool = panel.and_then(|p| p.alias_pool.as_ref()); + let alias_pool_size_default = PanelApiAliasPoolSizeDto::default(); + let alias_pool_size = alias_pool + .and_then(|p| p.size.as_ref()) + .unwrap_or(&alias_pool_size_default); + let alias_pool_min = alias_pool_size.min.as_ref(); + let alias_pool_max = alias_pool_size.max.as_ref(); + let alias_pool_min_val = alias_pool_size_to_string(alias_pool_min); + let alias_pool_max_val = alias_pool_size_to_string(alias_pool_max); + let alias_pool_remove_expired = alias_pool.is_some_and(|p| p.remove_expired); + let client_info = panel + .map(|p| p.query_parameter.client_info.as_slice()) + .unwrap_or(&[]); + let client_new = panel + .map(|p| p.query_parameter.client_new.as_slice()) + .unwrap_or(&[]); + let client_renew = panel + .map(|p| p.query_parameter.client_renew.as_slice()) + .unwrap_or(&[]); + let account_info = panel + .map(|p| p.query_parameter.account_info.as_slice()) + .unwrap_or(&[]); + let adult_content = panel + .map(|p| p.query_parameter.client_adult_content.as_slice()) + .unwrap_or(&[]); + let credits_value = panel + .and_then(|p| p.credits.as_ref()) + .map(|credits| credits.trim().to_string()) + .filter(|credits| !credits.is_empty()) + .unwrap_or_else(|| "—".to_string()); + let credits_label = format!("{}: {}", translate.t(LABEL_PANEL_CREDITS), credits_value); + let type_label = input.input_type.to_string().to_uppercase(); + let provisioning_method_label = provisioning_method.to_string(); + let provisioning_summary = format!( + "{} / {}s / {}s / {}s", + provisioning_method_label, + provisioning_timeout_val, + provisioning_probe_interval_val, + provisioning_cooldown_val + ); + let alias_pool_min_label = if alias_pool_min_val.is_empty() { + "—".to_string() + } else { + alias_pool_min_val.clone() + }; + let alias_pool_max_label = if alias_pool_max_val.is_empty() { + "—".to_string() + } else { + alias_pool_max_val.clone() + }; + let alias_pool_remove_label = if alias_pool_remove_expired { + "true".to_string() + } else { + "false".to_string() + }; + let method_options = Rc::new(vec![ + DropDownOption::new( + "HEAD", + html! {{ "HEAD" }}, + provisioning_method == PanelApiProvisioningMethod::Head, + ), + DropDownOption::new( + "GET", + html! {{ "GET" }}, + provisioning_method == PanelApiProvisioningMethod::Get, + ), + DropDownOption::new( + "POST", + html! {{ "POST" }}, + provisioning_method == PanelApiProvisioningMethod::Post, + ), + ]); html! { - -
-
+ +
+

{ &input.name }

-
{ format!("type={}", input.input_type) }
+
+ ::None}/> + +
-
+
{ status_chip } { html_if!(*config_view_ctx.edit_mode, { -
+
{ translate.t(LABEL_ENABLED) }
@@ -455,17 +1094,82 @@ pub fn PanelConfigView() -> Html { { if !panel_enabled { - html! {
{ translate.t(HINT_PANEL_ENABLE) }
} + html! {
{ translate.t(HINT_PANEL_ENABLE) }
} } else if *config_view_ctx.edit_mode { html! { <> - + +
+
+

{ translate.t(LABEL_PANEL_PROVISIONING) }

+
+
+
+ + + + +
+ + ".to_string())}/> + ".to_string())}/> +
+ +
+ { translate.t(LABEL_ENABLED) } + +
+
+
+
+
+ { render_param_editor(&form_state, true, input_idx, PanelSection::AccountInfo, translate.t(PanelSection::AccountInfo.label_key()), account_info) } { render_param_editor(&form_state, true, input_idx, PanelSection::Info, translate.t(PanelSection::Info.label_key()), client_info) } { render_param_editor(&form_state, true, input_idx, PanelSection::New, translate.t(PanelSection::New.label_key()), client_new) } { render_param_editor(&form_state, true, input_idx, PanelSection::Renew, translate.t(PanelSection::Renew.label_key()), client_renew) } + { render_param_editor(&form_state, true, input_idx, PanelSection::AdultContent, translate.t(PanelSection::AdultContent.label_key()), adult_content) } { html_if!(has_errors, { -
+

{ translate.t(LABEL_VALIDATION) }

    { for errors.iter().map(|e| html!{
  • { e }
  • }) } @@ -477,7 +1181,7 @@ pub fn PanelConfigView() -> Html { } else { html!{ <> -
    +
    { if url_val.is_empty() { "—".to_string() } else { url_val } } @@ -486,6 +1190,26 @@ pub fn PanelConfigView() -> Html { { if api_key_val.is_empty() { "—".to_string() } else { "••••••••".to_string() } }
    +
    + + { provisioning_summary } +
    +
    + + { alias_pool_min_label } +
    +
    + + { alias_pool_max_label } +
    +
    + + { alias_pool_remove_label } +
    +
    + + { format!("{} params", account_info.len()) } +
    { format!("{} params", client_info.len()) } @@ -498,9 +1222,13 @@ pub fn PanelConfigView() -> Html { { format!("{} params", client_renew.len()) }
    +
    + + { format!("{} params", adult_content.len()) } +
    { html_if!(has_errors, { -
    +

    { translate.t(LABEL_VALIDATION) }

      { for errors.iter().map(|e| html!{
    • { e }
    • }) } @@ -523,18 +1251,18 @@ pub fn PanelConfigView() -> Html { .collect::>(); html! { -
      +
      { translate.t(LABEL_PANEL_CONFIG) }
      -
      - +
      +

      { translate.t(LABEL_PANEL_CONFIG) }

      -
      +
      { translate.t(HINT_PANEL_INFO) }
      -
      - { for inputs.into_iter().map(|(iidx, inp)| render_input_card(iidx, inp)) } +
      + { for inputs.into_iter().map(|(input_idx, inp)| render_input_card(input_idx, inp)) }
      } diff --git a/frontend/src/app/components/userlist/user_table.rs b/frontend/src/app/components/userlist/user_table.rs index 19d7c68cb..4c4607237 100644 --- a/frontend/src/app/components/userlist/user_table.rs +++ b/frontend/src/app/components/userlist/user_table.rs @@ -201,7 +201,8 @@ pub fn UserTable(props: &UserTableProps) -> Html { 12 => dto.credentials.created_at.as_ref().and_then(|ts| unix_ts_to_str(*ts)) .map(|s| html! { { s } }).unwrap_or_else(|| html! { }), 13 => dto.credentials.exp_date.as_ref().and_then(|ts| unix_ts_to_str(*ts)) - .map(|s| html! { { s } }).unwrap_or_else(|| html! { }), + .map(|s| html! { { s } }) + .unwrap_or_else(|| html! { }), 14 => dto.credentials.comment.as_ref() .map_or_else(|| html! {}, |comment| html! { {comment} }), diff --git a/resources/panel_api_provisioning.ppm b/resources/panel_api_provisioning.ppm new file mode 100644 index 000000000..07917a2bd --- /dev/null +++ b/resources/panel_api_provisioning.ppm @@ -0,0 +1,273 @@ +P3 +480 270 +255 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 240 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 +12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 12 14 18 diff --git a/shared/src/model/config/base.rs b/shared/src/model/config/base.rs index 81239ec6f..2d76e90e0 100644 --- a/shared/src/model/config/base.rs +++ b/shared/src/model/config/base.rs @@ -6,6 +6,10 @@ use crate::utils::{is_false, default_connect_timeout_secs, is_default_connect_ti pub const DEFAULT_USER_AGENT: &str = "VLC/3.0.16 LibVLC/3.0.16"; +fn default_default_user_agent() -> Option { + Some(DEFAULT_USER_AGENT.to_string()) +} + #[allow(clippy::struct_excessive_bools)] #[derive(Debug, Clone, serde::Serialize, serde::Deserialize, Default, PartialEq)] #[serde(deny_unknown_fields)] @@ -14,6 +18,8 @@ pub struct ConfigDto { pub process_parallel: bool, pub api: ConfigApiDto, pub working_dir: String, + #[serde(default = "default_default_user_agent", skip_serializing_if = "is_blank_optional_string")] + pub default_user_agent: Option, #[serde(default, skip_serializing_if = "is_blank_optional_string")] pub backup_dir: Option, #[serde(default, skip_serializing_if = "is_blank_optional_string")] @@ -65,6 +71,8 @@ pub struct MainConfigDto { #[serde(default, skip_serializing_if = "is_false")] pub process_parallel: bool, pub working_dir: String, + #[serde(default = "default_default_user_agent", skip_serializing_if = "is_blank_optional_string")] + pub default_user_agent: Option, #[serde(default, skip_serializing_if = "is_blank_optional_string")] pub backup_dir: Option, #[serde(default, skip_serializing_if = "is_blank_optional_string")] @@ -95,6 +103,7 @@ impl Default for MainConfigDto { process_parallel: false, disk_based_processing: false, working_dir: String::new(), + default_user_agent: default_default_user_agent(), backup_dir: None, user_config_dir: None, mapping_path: None, @@ -115,6 +124,7 @@ impl From<&ConfigDto> for MainConfigDto { process_parallel: config.process_parallel, disk_based_processing: config.disk_based_processing, working_dir: config.working_dir.clone(), + default_user_agent: config.default_user_agent.clone(), backup_dir: config.backup_dir.clone(), user_config_dir: config.user_config_dir.clone(), mapping_path: config.mapping_path.clone(), @@ -159,6 +169,10 @@ pub struct HdHomeRunDeviceOverview { impl ConfigDto { pub fn prepare(&mut self, include_computed: bool) -> Result<(), TuliproxError> { + if is_blank_optional_string(&self.default_user_agent) { + self.default_user_agent = default_default_user_agent(); + } + if let Some(mins) = self.sleep_timer_mins { if mins == 0 { return Err(TuliproxError::new(TuliproxErrorKind::Info, "`sleep_timer_mins` must be > 0 when specified".to_string())); @@ -250,6 +264,7 @@ impl ConfigDto { self.process_parallel = main_config.process_parallel; self.disk_based_processing = main_config.disk_based_processing; self.working_dir = main_config.working_dir.clone(); + self.default_user_agent = main_config.default_user_agent.clone(); self.backup_dir = main_config.backup_dir.clone(); self.user_config_dir = main_config.user_config_dir.clone(); self.mapping_path = main_config.mapping_path.clone(); @@ -271,4 +286,4 @@ impl ConfigDto { self.library.as_ref().is_some_and(|l| l.enabled) } -} \ No newline at end of file +} diff --git a/shared/src/model/config/input.rs b/shared/src/model/config/input.rs index 5056a7ef6..9eb93a16d 100644 --- a/shared/src/model/config/input.rs +++ b/shared/src/model/config/input.rs @@ -8,11 +8,11 @@ use crate::utils::{is_blank_optional_string, Internable}; use crate::{check_input_connections, check_input_credentials, info_err_res}; use enum_iterator::Sequence; +use log::warn; use std::collections::{HashMap, HashSet}; use std::fmt::Display; use std::str::FromStr; use std::sync::Arc; -use log::warn; #[macro_export] macro_rules! apply_batch_aliases { @@ -394,6 +394,11 @@ impl ConfigInputDto { current_index = alias.prepare(current_index, input_type)?; } } + + if let Some(panel_api) = self.panel_api.as_mut() { + panel_api.prepare(&self.name)?; + } + Ok(current_index) } @@ -423,7 +428,6 @@ impl ConfigInputDto { pub fn prepare_epg(&mut self, include_computed: bool) -> Result<(), TuliproxError> { if let Some(epg) = self.epg.as_mut() { - if self.input_type == InputType::Library { warn!("EPG is not supported for library inputs {}, skipping", self.name); self.epg = None; diff --git a/shared/src/model/config/panel_api.rs b/shared/src/model/config/panel_api.rs index 9b3d7ecaf..56b55354a 100644 --- a/shared/src/model/config/panel_api.rs +++ b/shared/src/model/config/panel_api.rs @@ -1,21 +1,218 @@ -use crate::utils::{default_as_true, is_true}; +use crate::error::TuliproxError; +use crate::info_err_res; +use crate::utils::{ + default_as_true, default_panel_api_alias_pool_max, default_panel_api_alias_pool_min, + default_panel_api_provision_cooldown_secs, default_panel_api_provision_probe_interval_secs, + default_panel_api_provision_timeout_secs, deserialize_as_option_string, is_true, + serialize_vec_flow_map_items, arc_str_serde, arc_str_option_serde, is_blank_optional_arc_str +}; +use log::warn; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; +use std::fmt; +use std::str::FromStr; +use std::sync::Arc; #[derive(Debug, Clone, serde::Serialize, serde::Deserialize, Default, PartialEq)] #[serde(deny_unknown_fields)] pub struct PanelApiQueryParamDto { - pub key: String, - pub value: String, + #[serde(with = "arc_str_serde")] + pub key: Arc, + #[serde(with = "arc_str_serde")] + pub value: Arc, } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize, Default, PartialEq)] #[serde(deny_unknown_fields)] pub struct PanelApiQueryParametersDto { - #[serde(default, skip_serializing_if = "Vec::is_empty")] + #[serde( + default, + skip_serializing_if = "Vec::is_empty", + serialize_with = "serialize_vec_flow_map_items" + )] + pub account_info: Vec, + #[serde( + default, + skip_serializing_if = "Vec::is_empty", + serialize_with = "serialize_vec_flow_map_items" + )] pub client_info: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] + #[serde( + default, + skip_serializing_if = "Vec::is_empty", + serialize_with = "serialize_vec_flow_map_items" + )] pub client_new: Vec, - #[serde(default, skip_serializing_if = "Vec::is_empty")] + #[serde( + default, + skip_serializing_if = "Vec::is_empty", + serialize_with = "serialize_vec_flow_map_items" + )] pub client_renew: Vec, + #[serde( + default, + skip_serializing_if = "Vec::is_empty", + serialize_with = "serialize_vec_flow_map_items" + )] + pub client_adult_content: Vec, +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq, Eq)] +#[serde(rename_all = "lowercase")] +pub enum PanelApiAliasPoolAuto { + Auto, +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)] +#[serde(untagged)] +pub enum PanelApiAliasPoolSizeValue { + Auto(PanelApiAliasPoolAuto), + Number(u16), +} + +impl PanelApiAliasPoolSizeValue { + pub fn as_number(&self) -> Option { + match self { + Self::Number(value) => Some(*value), + Self::Auto(_) => None, + } + } + + pub fn is_auto(&self) -> bool { + matches!(self, Self::Auto(_)) + } +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)] +#[serde(deny_unknown_fields)] +pub struct PanelApiAliasPoolSizeDto { + #[serde( + default = "default_panel_api_alias_pool_min_value", + skip_serializing_if = "Option::is_none" + )] + pub min: Option, + #[serde( + default = "default_panel_api_alias_pool_max_value", + skip_serializing_if = "Option::is_none" + )] + pub max: Option, +} + +fn default_panel_api_alias_pool_min_value() -> Option { + Some(PanelApiAliasPoolSizeValue::Number( + default_panel_api_alias_pool_min(), + )) +} + +fn default_panel_api_alias_pool_max_value() -> Option { + Some(PanelApiAliasPoolSizeValue::Number( + default_panel_api_alias_pool_max(), + )) +} + +impl Default for PanelApiAliasPoolSizeDto { + fn default() -> Self { + Self { + min: default_panel_api_alias_pool_min_value(), + max: default_panel_api_alias_pool_max_value(), + } + } +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, Default, PartialEq)] +#[serde(deny_unknown_fields)] +pub struct PanelApiAliasPoolDto { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub size: Option, + #[serde(default)] + pub remove_expired: bool, +} + +#[derive(Default, Debug, Copy, Clone, PartialEq, Eq)] +pub enum PanelApiProvisioningMethod { + #[default] + Head, + Get, + Post, +} + +impl fmt::Display for PanelApiProvisioningMethod { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let s = match self { + Self::Head => "HEAD", + Self::Get => "GET", + Self::Post => "POST", + }; + write!(f, "{s}") + } +} + +impl FromStr for PanelApiProvisioningMethod { + type Err = String; + + fn from_str(s: &str) -> Result { + match s.trim().to_ascii_uppercase().as_str() { + "HEAD" => Ok(Self::Head), + "GET" => Ok(Self::Get), + "POST" => Ok(Self::Post), + _ => Err(format!("Unknown provisioning method: {s}")), + } + } +} + +impl Serialize for PanelApiProvisioningMethod { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + serializer.serialize_str(&self.to_string()) + } +} + +impl<'de> Deserialize<'de> for PanelApiProvisioningMethod { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let s = String::deserialize(deserializer)?; + Self::from_str(&s).map_err(serde::de::Error::custom) + } +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)] +#[serde(deny_unknown_fields)] +pub struct PanelApiProvisioningDto { + #[serde(default = "default_panel_api_provision_timeout_secs")] + pub timeout_sec: u64, + #[serde(default)] + pub method: PanelApiProvisioningMethod, + #[serde(default = "default_panel_api_provision_probe_interval_secs")] + pub probe_interval_sec: u64, + #[serde(default = "default_panel_api_provision_cooldown_secs")] + pub cooldown_sec: u64, + #[serde( + default, + deserialize_with = "deserialize_as_option_string", + skip_serializing_if = "Option::is_none" + )] + pub offset: Option, +} + +impl Default for PanelApiProvisioningDto { + fn default() -> Self { + Self { + timeout_sec: default_panel_api_provision_timeout_secs(), + method: PanelApiProvisioningMethod::default(), + probe_interval_sec: default_panel_api_provision_probe_interval_secs(), + cooldown_sec: default_panel_api_provision_cooldown_secs(), + offset: None, + } + } +} + +impl PanelApiProvisioningDto { + pub fn is_default(&self) -> bool { + *self == Self::default() + } } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq)] @@ -24,10 +221,20 @@ pub struct PanelApiConfigDto { #[serde(default = "default_as_true", skip_serializing_if = "is_true")] pub enabled: bool, pub url: String, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub api_key: Option, + #[serde(with = "arc_str_option_serde", skip_serializing_if = "is_blank_optional_arc_str")] + pub api_key: Option>, + #[serde(default, skip_serializing_if = "PanelApiProvisioningDto::is_default")] + pub provisioning: PanelApiProvisioningDto, #[serde(default)] pub query_parameter: PanelApiQueryParametersDto, + #[serde( + default, + deserialize_with = "deserialize_as_option_string", + skip_serializing_if = "Option::is_none" + )] + pub credits: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub alias_pool: Option, } impl Default for PanelApiConfigDto { @@ -36,7 +243,56 @@ impl Default for PanelApiConfigDto { enabled: true, url: String::new(), api_key: None, + provisioning: PanelApiProvisioningDto::default(), query_parameter: PanelApiQueryParametersDto::default(), + credits: None, + alias_pool: None, } } } + +impl PanelApiConfigDto { + pub fn prepare(&mut self, input_name: &Arc) -> Result<(), TuliproxError> { + if self.enabled { + if let Some(alias_pool) = self.alias_pool.as_mut() { + let size = alias_pool + .size + .get_or_insert_with(PanelApiAliasPoolSizeDto::default); + // Capture original state before applying defaults + let min_was_none = size.min.is_none(); + if size.min.is_none() { + size.min = Some(PanelApiAliasPoolSizeValue::Number(1)); + } + if size.max.is_none() { + size.max = Some(PanelApiAliasPoolSizeValue::Number(1)); + } + let min = size + .min + .as_ref() + .and_then(PanelApiAliasPoolSizeValue::as_number); + let max = size + .max + .as_ref() + .and_then(PanelApiAliasPoolSizeValue::as_number); + if let (Some(min), Some(max)) = (min, max) { + if min > max { + return info_err_res!("panel_api.alias_pool.size.min must be <= panel_api.alias_pool.size.max"); + } + } + + let max_auto = size + .max + .as_ref() + .is_some_and(PanelApiAliasPoolSizeValue::is_auto); + if max_auto && min_was_none { + warn!("panel_api.alias_pool.size.max is set to auto without min for input {input_name}"); + } + } + + if self.provisioning.probe_interval_sec == 0 { + return info_err_res!("panel_api.provisioning.probe_interval_sec must be greater than 0"); + } + } + Ok(()) + } +} \ No newline at end of file diff --git a/shared/src/model/short_epg.rs b/shared/src/model/short_epg.rs index 16b0afc80..e19d71dc9 100644 --- a/shared/src/model/short_epg.rs +++ b/shared/src/model/short_epg.rs @@ -1,15 +1,15 @@ -use crate::utils::{serialize_as_base64, serialize_option_string_as_null_if_empty}; +use crate::utils::{serialize_as_base64_padded, serialize_option_string_as_null_if_empty}; #[derive(Debug, serde::Serialize, serde::Deserialize, Default)] pub struct ShortEpgDto { pub id: String, pub epg_id: String, - #[serde(serialize_with = "serialize_as_base64")] + #[serde(serialize_with = "serialize_as_base64_padded")] pub title: String, pub lang: String, pub start: String, // Format "2026-01-14 23:50:00" pub end: String, // Format "2026-01-14 00:45:00" - #[serde(serialize_with = "serialize_as_base64")] + #[serde(serialize_with = "serialize_as_base64_padded")] pub description: String, pub channel_id : String, pub start_timestamp: String, // Format "1768431000" diff --git a/shared/src/model/stream_properties.rs b/shared/src/model/stream_properties.rs index fc39f613a..50f365fe6 100644 --- a/shared/src/model/stream_properties.rs +++ b/shared/src/model/stream_properties.rs @@ -110,11 +110,7 @@ pub struct VideoStreamProperties { pub stream_icon: Arc, #[serde(default, deserialize_with = "arc_str_none_default_on_null")] pub direct_source: Arc, - #[serde( - default, - deserialize_with = "deserialize_as_option_arc_str_none", - serialize_with = "serialize_option_string_as_null_if_empty" - )] + #[serde(default, deserialize_with = "deserialize_as_option_arc_str_none", serialize_with = "serialize_option_string_as_null_if_empty")] pub custom_sid: Option>, #[serde(default, deserialize_with = "arc_str_none_default_on_null")] pub added: Arc, @@ -170,11 +166,7 @@ pub struct SeriesStreamDetailEpisodeProperties { pub title: Arc, #[serde(default, deserialize_with = "arc_str_default_on_null")] pub container_extension: Arc, - #[serde( - default, - deserialize_with = "deserialize_as_option_arc_str_none", - serialize_with = "serialize_option_string_as_null_if_empty" - )] + #[serde(default, deserialize_with = "deserialize_as_option_arc_str_none", serialize_with = "serialize_option_string_as_null_if_empty")] pub custom_sid: Option>, #[serde(default, deserialize_with = "arc_str_none_default_on_null")] pub added: Arc, diff --git a/shared/src/utils/default_utils.rs b/shared/src/utils/default_utils.rs index 87ce06628..30727996d 100644 --- a/shared/src/utils/default_utils.rs +++ b/shared/src/utils/default_utils.rs @@ -1,13 +1,22 @@ use std::sync::Arc; use crate::model::{ConfigTargetOptions, LibraryMetadataFormat, ProcessingOrder}; -pub const fn is_zero_u16(v: &u16) -> bool { *v == 0 } -pub const fn is_true(v: &bool) -> bool { *v } -pub const fn is_false(v: &bool) -> bool { !*v } -pub const fn default_as_true() -> bool { true } +pub const fn is_zero_u16(v: &u16) -> bool { + *v == 0 +} +pub const fn is_true(v: &bool) -> bool { + *v +} +pub const fn is_false(v: &bool) -> bool { + !*v +} +pub const fn default_as_true() -> bool { + true +} pub fn is_blank_optional_string(s: &Option) -> bool { - s.as_ref().is_none_or(|s| s.chars().all(|c| c.is_whitespace())) + s.as_ref() + .is_none_or(|s| s.chars().all(|c| c.is_whitespace())) } pub fn is_blank_optional_arc_str(s: &Option>) -> bool { @@ -18,26 +27,73 @@ pub fn is_empty_optional_vec(s: &Option>) -> bool { s.as_ref().is_none_or(|v| v.is_empty()) } -pub fn default_as_default() -> String { "default".into() } +pub fn default_as_default() -> String { + "default".into() +} // Default delay values for resolving VOD or Series requests, // used to prevent frequent requests that could trigger a provider ban. -pub const fn default_resolve_delay_secs() -> u16 { 2 } -pub const fn is_default_resolve_delay_secs(v: &u16) -> bool { *v == default_resolve_delay_secs() } +pub const fn default_resolve_delay_secs() -> u16 { + 2 +} +pub const fn is_default_resolve_delay_secs(v: &u16) -> bool { + *v == default_resolve_delay_secs() +} // Default grace values to accommodate rapid channel changes and seek requests, // helping avoid triggering hard max_connection enforcement. -pub const fn default_grace_period_millis() -> u64 { 2000 } -pub const fn is_default_grace_period_millis(v: &u64) -> bool { *v == default_grace_period_millis() } -pub const fn default_shared_burst_buffer_mb() -> u64 { 12 } -pub const fn is_default_shared_burst_buffer_mb(v: &u64) -> bool { *v == default_shared_burst_buffer_mb() } -pub const fn default_grace_period_timeout_secs() -> u64 { 4 } -pub const fn is_default_grace_period_timeout_secs(v: &u64) -> bool { *v == default_grace_period_timeout_secs() } -pub const fn default_connect_timeout_secs() -> u32 { 6 } -pub const fn is_default_connect_timeout_secs(v: &u32) -> bool { *v == default_connect_timeout_secs() } -pub const fn default_resource_retry_attempts() -> u32 { 3 } -pub const fn is_default_resource_retry_attempts(v: &u32) -> bool { *v == default_resource_retry_attempts() } -pub const fn default_resource_retry_backoff_ms() -> u64 { 250 } -pub const fn is_default_resource_retry_backoff_ms(v: &u64) -> bool { *v == default_resource_retry_backoff_ms() } -pub const fn default_resource_retry_backoff_multiplier() -> f64 { 1.0 } +pub const fn default_grace_period_millis() -> u64 { + 2000 +} +pub const fn is_default_grace_period_millis(v: &u64) -> bool { + *v == default_grace_period_millis() +} +pub const fn default_shared_burst_buffer_mb() -> u64 { + 12 +} +pub const fn is_default_shared_burst_buffer_mb(v: &u64) -> bool { + *v == default_shared_burst_buffer_mb() +} +pub const fn default_grace_period_timeout_secs() -> u64 { + 4 +} +pub const fn is_default_grace_period_timeout_secs(v: &u64) -> bool { + *v == default_grace_period_timeout_secs() +} +pub const fn default_panel_api_provision_timeout_secs() -> u64 { + 65 +} +pub const fn default_panel_api_provision_probe_interval_secs() -> u64 { + 15 +} +pub const fn default_panel_api_provision_cooldown_secs() -> u64 { + 0 +} +pub const fn default_panel_api_alias_pool_min() -> u16 { + 1 +} +pub const fn default_panel_api_alias_pool_max() -> u16 { + 1 +} +pub const fn default_connect_timeout_secs() -> u32 { + 6 +} +pub const fn is_default_connect_timeout_secs(v: &u32) -> bool { + *v == default_connect_timeout_secs() +} +pub const fn default_resource_retry_attempts() -> u32 { + 3 +} +pub const fn is_default_resource_retry_attempts(v: &u32) -> bool { + *v == default_resource_retry_attempts() +} +pub const fn default_resource_retry_backoff_ms() -> u64 { + 250 +} +pub const fn is_default_resource_retry_backoff_ms(v: &u64) -> bool { + *v == default_resource_retry_backoff_ms() +} +pub const fn default_resource_retry_backoff_multiplier() -> f64 { + 1.0 +} pub const F64_DEFAULT_EPSILON: f64 = 1e-9; pub const fn is_default_resource_retry_backoff_multiplier(v: &f64) -> bool { (*v - default_resource_retry_backoff_multiplier()).abs() < F64_DEFAULT_EPSILON @@ -51,25 +107,43 @@ pub fn default_secret() -> String { out.iter().map(|b| format!("{:02X}", b)).collect() } -pub const fn default_kick_secs() -> u64 { 90 } -pub const fn is_default_kick_secs(v: &u64) -> bool { *v == default_kick_secs() } +pub const fn default_kick_secs() -> u64 { + 90 +} +pub const fn is_default_kick_secs(v: &u64) -> bool { + *v == default_kick_secs() +} /// 30 minutes by default; `0` still means “no expiration.” pub const fn default_token_ttl_mins() -> u32 { 30 } -pub const fn is_default_token_ttl_mins(v: &u32) -> bool { *v == default_token_ttl_mins() } +pub const fn is_default_token_ttl_mins(v: &u32) -> bool { + *v == default_token_ttl_mins() +} -pub const fn default_match_threshold() -> u16 { 80 } -pub const fn is_default_match_threshold(v: &u16) -> bool { *v == default_match_threshold() } -pub const fn default_best_match_threshold() -> u16 { 95 } -pub const fn is_default_best_match_threshold(v: &u16) -> bool { *v == default_best_match_threshold() } +pub const fn default_match_threshold() -> u16 { + 80 +} +pub const fn is_default_match_threshold(v: &u16) -> bool { + *v == default_match_threshold() +} +pub const fn default_best_match_threshold() -> u16 { + 95 +} +pub const fn is_default_best_match_threshold(v: &u16) -> bool { + *v == default_best_match_threshold() +} pub const TMDB_API_KEY: &str = "4219e299c89411838049ab0dab19ebd5"; -pub fn default_tmdb_api_key() -> Option { Some(TMDB_API_KEY.to_string()) } +pub fn default_tmdb_api_key() -> Option { + Some(TMDB_API_KEY.to_string()) +} pub fn is_tmdb_default_api_key(s: &Option) -> bool { s.as_ref().is_none_or(|s| s == TMDB_API_KEY) } -pub fn is_default_tmdb_language(v: &String) -> bool { v == DEFAULT_TMDB_LANGUAGE } +pub fn is_default_tmdb_language(v: &String) -> bool { + v == DEFAULT_TMDB_LANGUAGE +} pub fn default_metadata_path() -> String { "library_metadata".to_string() @@ -78,11 +152,21 @@ pub fn default_metadata_path() -> String { pub const DEFAULT_TMDB_RATE_LIMIT_MS: u64 = 250; pub const DEFAULT_TMDB_CACHE_DURATION_DAYS: u32 = 30; pub const DEFAULT_TMDB_LANGUAGE: &str = "en-US"; -pub const fn default_tmdb_rate_limit_ms() -> u64 { DEFAULT_TMDB_RATE_LIMIT_MS } -pub const fn default_tmdb_cache_duration_days() -> u32 { DEFAULT_TMDB_CACHE_DURATION_DAYS } -pub fn default_tmdb_language() -> String { DEFAULT_TMDB_LANGUAGE.to_owned() } -pub fn is_default_tmdb_rate_limit_ms(v: &u64) -> bool { *v == DEFAULT_TMDB_RATE_LIMIT_MS } -pub fn is_default_tmdb_cache_duration_days(v: &u32) -> bool { *v == DEFAULT_TMDB_CACHE_DURATION_DAYS } +pub const fn default_tmdb_rate_limit_ms() -> u64 { + DEFAULT_TMDB_RATE_LIMIT_MS +} +pub const fn default_tmdb_cache_duration_days() -> u32 { + DEFAULT_TMDB_CACHE_DURATION_DAYS +} +pub fn default_tmdb_language() -> String { + DEFAULT_TMDB_LANGUAGE.to_owned() +} +pub fn is_default_tmdb_rate_limit_ms(v: &u64) -> bool { + *v == DEFAULT_TMDB_RATE_LIMIT_MS +} +pub fn is_default_tmdb_cache_duration_days(v: &u32) -> bool { + *v == DEFAULT_TMDB_CACHE_DURATION_DAYS +} pub fn default_storage_formats() -> Vec { vec![] @@ -94,15 +178,8 @@ pub fn default_series_category() -> String { String::from("Local TV Shows") } -pub const DEFAULT_SUPPORTED_LIBRARY_EXTENSIONS: &[&str] = &[ - "mp4", - "mkv", - "avi", - "mov", - "ts", - "m4v", - "webm", -]; +pub const DEFAULT_SUPPORTED_LIBRARY_EXTENSIONS: &[&str] = + &["mp4", "mkv", "avi", "mov", "ts", "m4v", "webm"]; pub fn default_supported_library_extensions() -> Vec { DEFAULT_SUPPORTED_LIBRARY_EXTENSIONS @@ -114,8 +191,8 @@ pub fn default_supported_library_extensions() -> Vec { pub fn is_default_supported_library_extensions(v: &[String]) -> bool { v.len() == DEFAULT_SUPPORTED_LIBRARY_EXTENSIONS.len() && v.iter() - .zip(DEFAULT_SUPPORTED_LIBRARY_EXTENSIONS) - .all(|(a, b)| a == b) + .zip(DEFAULT_SUPPORTED_LIBRARY_EXTENSIONS) + .all(|(a, b)| a == b) } pub const DEFAULT_VIDEO_EXTENSIONS: &[&str] = &["mkv", "avi", "mp4", "mpeg", "divx", "mov"]; @@ -129,13 +206,11 @@ pub fn default_supported_video_extensions() -> Vec { pub fn is_default_supported_video_extensions(v: &[String]) -> bool { v.len() == DEFAULT_VIDEO_EXTENSIONS.len() - && v.iter() - .zip(DEFAULT_VIDEO_EXTENSIONS) - .all(|(a, b)| a == b) + && v.iter().zip(DEFAULT_VIDEO_EXTENSIONS).all(|(a, b)| a == b) } pub fn is_config_target_options_empty(v: &Option) -> bool { - v.as_ref().is_none_or(|c| c.is_empty() ) + v.as_ref().is_none_or(|c| c.is_empty()) } pub fn is_default_processing_order(p: &ProcessingOrder) -> bool { @@ -151,28 +226,57 @@ const DEFAULT_MODEL_NAME: &str = "HDTC-2US"; const DEFAULT_FIRMWARE_NAME: &str = "hdhomeruntc_atsc"; const DEFAULT_FIRMWARE_VERSION: &str = "20170930"; const DEFAULT_DEVICE_TYPE: &str = "urn:schemas-upnp-org:device:MediaServer:1"; -const DEFAULT_DEVICE_UDN: &str = "uuid:12345678-90ab-cdef-1234-567890abcdef::urn:dial-multicast:com.silicondust.hdhomerun"; -pub fn default_friendly_name() -> String { DEFAULT_FRIENDLY_NAME.into() } -pub fn default_manufacturer() -> String { DEFAULT_MANUFACTURER.into() } -pub fn default_model_name() -> String { DEFAULT_MODEL_NAME.into() } -pub fn default_firmware_name() -> String { DEFAULT_FIRMWARE_NAME.into() } -pub fn default_firmware_version() -> String { DEFAULT_FIRMWARE_VERSION.into() } -pub fn default_device_type() -> String { DEFAULT_DEVICE_TYPE.into() } -pub fn default_device_udn() -> String { DEFAULT_DEVICE_UDN.into() } -pub fn is_default_friendly_name(value: &String) -> bool { value == DEFAULT_FRIENDLY_NAME } -pub fn is_default_manufacturer(value: &String) -> bool { value == DEFAULT_MANUFACTURER } -pub fn is_default_model_name(value: &String) -> bool { value == DEFAULT_MODEL_NAME } -pub fn is_default_firmware_name(value: &String) -> bool { value == DEFAULT_FIRMWARE_NAME } -pub fn is_default_firmware_version(value: &String) -> bool { value == DEFAULT_FIRMWARE_VERSION } -pub fn is_default_device_type(value: &String) -> bool { value == DEFAULT_DEVICE_TYPE } -pub fn is_default_device_udn(value: &String) -> bool { value == DEFAULT_DEVICE_UDN } +const DEFAULT_DEVICE_UDN: &str = + "uuid:12345678-90ab-cdef-1234-567890abcdef::urn:dial-multicast:com.silicondust.hdhomerun"; +pub fn default_friendly_name() -> String { + DEFAULT_FRIENDLY_NAME.into() +} +pub fn default_manufacturer() -> String { + DEFAULT_MANUFACTURER.into() +} +pub fn default_model_name() -> String { + DEFAULT_MODEL_NAME.into() +} +pub fn default_firmware_name() -> String { + DEFAULT_FIRMWARE_NAME.into() +} +pub fn default_firmware_version() -> String { + DEFAULT_FIRMWARE_VERSION.into() +} +pub fn default_device_type() -> String { + DEFAULT_DEVICE_TYPE.into() +} +pub fn default_device_udn() -> String { + DEFAULT_DEVICE_UDN.into() +} +pub fn is_default_friendly_name(value: &String) -> bool { + value == DEFAULT_FRIENDLY_NAME +} +pub fn is_default_manufacturer(value: &String) -> bool { + value == DEFAULT_MANUFACTURER +} +pub fn is_default_model_name(value: &String) -> bool { + value == DEFAULT_MODEL_NAME +} +pub fn is_default_firmware_name(value: &String) -> bool { + value == DEFAULT_FIRMWARE_NAME +} +pub fn is_default_firmware_version(value: &String) -> bool { + value == DEFAULT_FIRMWARE_VERSION +} +pub fn is_default_device_type(value: &String) -> bool { + value == DEFAULT_DEVICE_TYPE +} +pub fn is_default_device_udn(value: &String) -> bool { + value == DEFAULT_DEVICE_UDN +} ////////////////////////// // trakt //////////////////////////// -pub const TRAKT_API_KEY: &str = "0183a05ad97098d87287fe46da4ae286f434f32e8e951caad4cc147c947d79a3"; -pub const TRAKT_API_VERSION: &str = "2"; -pub const TRAKT_API_URL: &str = "https://api.trakt.tv"; +pub const TRAKT_API_KEY: &str = "0183a05ad97098d87287fe46da4ae286f434f32e8e951caad4cc147c947d79a3"; +pub const TRAKT_API_VERSION: &str = "2"; +pub const TRAKT_API_URL: &str = "https://api.trakt.tv"; pub fn default_trakt_api_key() -> String { String::from(TRAKT_API_KEY) diff --git a/shared/src/utils/serde_utils.rs b/shared/src/utils/serde_utils.rs index e4706d9f8..8963e603b 100644 --- a/shared/src/utils/serde_utils.rs +++ b/shared/src/utils/serde_utils.rs @@ -394,6 +394,16 @@ where } } +/// Serialize a Vec as a block sequence where each item is in flow-style (`- { key: value, ... }`). +pub fn serialize_vec_flow_map_items(items: &[T], serializer: S) -> Result +where + T: serde::Serialize, + S: serde::Serializer, +{ + let flow_items: Vec<_> = items.iter().map(serde_saphyr::FlowMap).collect(); + flow_items.serialize(serializer) +} + pub fn serialize_number_as_string(value: &N, serializer: S) -> Result where N: std::fmt::Display, @@ -427,10 +437,11 @@ pub mod xtream_cluster_serde { } } -pub fn serialize_as_base64(value: &String, serializer: S) -> Result +pub fn serialize_as_base64_padded(value: &String, serializer: S) -> Result where S: Serializer, { + // the xtream api uses padding! let encoded = general_purpose::STANDARD.encode(value.as_bytes()); serializer.serialize_str(&encoded) } \ No newline at end of file diff --git a/shared/src/utils/time_utils.rs b/shared/src/utils/time_utils.rs index f4026c139..564151516 100644 --- a/shared/src/utils/time_utils.rs +++ b/shared/src/utils/time_utils.rs @@ -12,18 +12,41 @@ pub fn current_time_secs() -> u64 { } pub fn unix_ts_to_str(ts: i64) -> Option { - unix_ts_to_str_with_format(ts, "%d.%m.%Y") + unix_ts_to_str_with_format(ts, "%Y-%m-%d %H:%M:%S") } -pub fn unix_ts_to_str_with_format(ts: i64, format: &str) -> Option { - if ts > 0 { - let normalized_ts = if ts > 4102444800 { - ts / 1000 +fn normalize_ts(ts: i64) -> Option { + if ts >= 0 { + // Timestamps > Jan 1, 2100 (in seconds) are assumed to be in milliseconds + if ts > 4_102_444_800 { + Some(ts / 1000) } else { - ts - }; - chrono::DateTime::from_timestamp(normalized_ts, 0).map(|dt| dt.format(format).to_string()) + Some(ts) + } } else { None } -} \ No newline at end of file +} + +// Note: On wasm32, the `format` parameter is ignored; output is always `YYYY-MM-DD HH:MM:SS`. +#[cfg(target_arch = "wasm32")] +pub fn unix_ts_to_str_with_format(ts: i64, _format: &str) -> Option { + let normalized_ts = normalize_ts(ts)?; + let date = js_sys::Date::new_0(); + date.set_time(normalized_ts as f64 * 1000.0); + Some(format!( + "{:04}-{:02}-{:02} {:02}:{:02}:{:02}", + date.get_utc_full_year(), + date.get_utc_month() + 1, + date.get_utc_date(), + date.get_utc_hours(), + date.get_utc_minutes(), + date.get_utc_seconds() + )) +} + +#[cfg(not(target_arch = "wasm32"))] +pub fn unix_ts_to_str_with_format(ts: i64, format: &str) -> Option { + let normalized_ts = normalize_ts(ts)?; + chrono::DateTime::from_timestamp(normalized_ts, 0).map(|dt| dt.format(format).to_string()) +}