UNPKG

301 kBSource Map (JSON)View Raw
1{"version":3,"file":"agm-core.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@agm/core/services/maps-api-loader/maps-api-loader.ts","ng://@agm/core/services/google-maps-api-wrapper.ts","ng://@agm/core/services/managers/layer-manager.ts","ng://@agm/core/directives/bicycling-layer.ts","ng://@agm/core/services/managers/circle-manager.ts","ng://@agm/core/directives/circle.ts","ng://@agm/core/services/managers/data-layer-manager.ts","ng://@agm/core/directives/data-layer.ts","ng://@agm/core/services/fit-bounds.ts","ng://@agm/core/directives/fit-bounds.ts","ng://@agm/core/services/managers/marker-manager.ts","ng://@agm/core/services/managers/info-window-manager.ts","ng://@agm/core/directives/info-window.ts","ng://@agm/core/services/managers/kml-layer-manager.ts","ng://@agm/core/directives/kml-layer.ts","ng://@agm/core/utils/mvcarray-utils.ts","ng://@agm/core/services/managers/polygon-manager.ts","ng://@agm/core/services/managers/polyline-manager.ts","ng://@agm/core/services/managers/rectangle-manager.ts","ng://@agm/core/directives/map.ts","ng://@agm/core/directives/marker.ts","ng://@agm/core/directives/polygon.ts","ng://@agm/core/directives/polyline-icon.ts","ng://@agm/core/directives/polyline-point.ts","ng://@agm/core/directives/polyline.ts","ng://@agm/core/directives/rectangle.ts","ng://@agm/core/directives/transit-layer.ts","ng://@agm/core/services/google-maps-types.ts","ng://@agm/core/services/geocoder-service.ts","ng://@agm/core/utils/browser-globals.ts","ng://@agm/core/services/maps-api-loader/lazy-maps-api-loader.ts","ng://@agm/core/services/maps-api-loader/noop-maps-api-loader.ts","ng://@agm/core/map-types.ts","ng://@agm/core/core.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class MapsAPILoader {\n abstract load(): Promise<void>;\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport * as mapTypes from './google-maps-types';\nimport { Polyline, PolylineOptions } from './google-maps-types';\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\n\n// todo: add types for this\ndeclare var google: any;\n\n/**\n * Wrapper class that handles the communication with the Google Maps Javascript\n * API v3\n */\n@Injectable()\nexport class GoogleMapsAPIWrapper {\n private _map: Promise<mapTypes.GoogleMap>;\n private _mapResolver: (value?: mapTypes.GoogleMap) => void;\n\n constructor(private _loader: MapsAPILoader, private _zone: NgZone) {\n this._map =\n new Promise<mapTypes.GoogleMap>((resolve: () => void) => { this._mapResolver = resolve; });\n }\n\n createMap(el: HTMLElement, mapOptions: mapTypes.MapOptions): Promise<void> {\n return this._zone.runOutsideAngular(() => {\n return this._loader.load().then(() => {\n const map = new google.maps.Map(el, mapOptions);\n this._mapResolver(map as mapTypes.GoogleMap);\n return;\n });\n });\n }\n\n setMapOptions(options: mapTypes.MapOptions) {\n return this._zone.runOutsideAngular(() => {\n this._map.then((m: mapTypes.GoogleMap) => { m.setOptions(options); });\n });\n }\n\n /**\n * Creates a google map marker with the map context\n */\n createMarker(options: mapTypes.MarkerOptions = {} as mapTypes.MarkerOptions, addToMap: boolean = true):\n Promise<mapTypes.Marker> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => {\n if (addToMap) {\n options.map = map;\n }\n return new google.maps.Marker(options);\n });\n });\n }\n\n createInfoWindow(options?: mapTypes.InfoWindowOptions): Promise<mapTypes.InfoWindow> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then(() => { return new google.maps.InfoWindow(options); });\n });\n }\n\n /**\n * Creates a google.map.Circle for the current map.\n */\n createCircle(options: mapTypes.CircleOptions): Promise<mapTypes.Circle> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => {\n if (typeof options.strokePosition === 'string') {\n options.strokePosition = google.maps.StrokePosition[options.strokePosition];\n }\n options.map = map;\n return new google.maps.Circle(options);\n });\n });\n }\n\n /**\n * Creates a google.map.Rectangle for the current map.\n */\n createRectangle(options: mapTypes.RectangleOptions): Promise<mapTypes.Rectangle> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => {\n options.map = map;\n return new google.maps.Rectangle(options);\n });\n });\n }\n\n createPolyline(options: PolylineOptions): Promise<Polyline> {\n return this._zone.runOutsideAngular(() => {\n return this.getNativeMap().then((map: mapTypes.GoogleMap) => {\n let line = new google.maps.Polyline(options);\n line.setMap(map);\n return line;\n });\n });\n }\n\n createPolygon(options: mapTypes.PolygonOptions): Promise<mapTypes.Polygon> {\n return this._zone.runOutsideAngular(() => {\n return this.getNativeMap().then((map: mapTypes.GoogleMap) => {\n let polygon = new google.maps.Polygon(options);\n polygon.setMap(map);\n return polygon;\n });\n });\n }\n\n /**\n * Creates a new google.map.Data layer for the current map\n */\n createDataLayer(options?: mapTypes.DataOptions): Promise<mapTypes.Data> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then(m => {\n let data = new google.maps.Data(options);\n data.setMap(m);\n return data;\n });\n });\n }\n\n /**\n * Creates a TransitLayer instance for a map\n * @param {TransitLayerOptions} options - used for setting layer options\n * @returns {Promise<TransitLayer>} a new transit layer object\n */\n createTransitLayer(options: mapTypes.TransitLayerOptions): Promise<mapTypes.TransitLayer>{\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => {\n let newLayer: mapTypes.TransitLayer = new google.maps.TransitLayer();\n newLayer.setMap(options.visible ? map : null);\n return newLayer;\n });\n });\n }\n\n /**\n * Creates a BicyclingLayer instance for a map\n * @param {BicyclingLayerOptions} options - used for setting layer options\n * @returns {Promise<BicyclingLayer>} a new bicycling layer object\n */\n createBicyclingLayer(options: mapTypes.BicyclingLayerOptions): Promise<mapTypes.BicyclingLayer>{\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => {\n let newLayer: mapTypes.BicyclingLayer = new google.maps.BicyclingLayer();\n newLayer.setMap(options.visible ? map : null);\n return newLayer;\n });\n });\n }\n\n /**\n * Determines if given coordinates are insite a Polygon path.\n */\n containsLocation(latLng: mapTypes.LatLngLiteral, polygon: mapTypes.Polygon): Promise<boolean> {\n return google.maps.geometry.poly.containsLocation(latLng, polygon);\n }\n\n subscribeToMapEvent<E>(eventName: string): Observable<E> {\n return new Observable((observer: Observer<E>) => {\n this._map.then((m: mapTypes.GoogleMap) => {\n m.addListener(eventName, (arg: E) => { this._zone.run(() => observer.next(arg)); });\n });\n });\n }\n\n clearInstanceListeners() {\n return this._zone.runOutsideAngular(() => {\n this._map.then((map: mapTypes.GoogleMap) => {\n google.maps.event.clearInstanceListeners(map);\n });\n });\n }\n\n setCenter(latLng: mapTypes.LatLngLiteral): Promise<void> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => map.setCenter(latLng));\n });\n }\n\n getZoom(): Promise<number> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => map.getZoom());\n });\n }\n\n getBounds(): Promise<mapTypes.LatLngBounds> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => map.getBounds());\n });\n }\n\n getMapTypeId(): Promise<mapTypes.MapTypeId> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => map.getMapTypeId());\n });\n }\n\n setZoom(zoom: number): Promise<void> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => map.setZoom(zoom));\n });\n }\n\n getCenter(): Promise<mapTypes.LatLng> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map: mapTypes.GoogleMap) => map.getCenter());\n });\n }\n\n panTo(latLng: mapTypes.LatLng | mapTypes.LatLngLiteral): Promise<void> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.panTo(latLng));\n });\n }\n\n panBy(x: number, y: number): Promise<void> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.panBy(x, y));\n });\n }\n\n fitBounds(latLng: mapTypes.LatLngBounds | mapTypes.LatLngBoundsLiteral, padding?: number | mapTypes.Padding): Promise<void> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.fitBounds(latLng, padding));\n });\n }\n\n panToBounds(latLng: mapTypes.LatLngBounds | mapTypes.LatLngBoundsLiteral, padding?: number | mapTypes.Padding): Promise<void> {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.panToBounds(latLng, padding));\n });\n }\n\n /**\n * Returns the native Google Maps Map instance. Be careful when using this instance directly.\n */\n getNativeMap(): Promise<mapTypes.GoogleMap> { return this._map; }\n\n /**\n * Triggers the given event name on the map instance.\n */\n triggerMapEvent(eventName: string): Promise<void> {\n return this._map.then((m) => google.maps.event.trigger(m, eventName));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AgmBicyclingLayer } from '../../directives/bicycling-layer';\nimport { AgmTransitLayer } from '../../directives/transit-layer';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport { BicyclingLayer, BicyclingLayerOptions, GoogleMap, TransitLayer, TransitLayerOptions } from '../google-maps-types';\n\n/**\n * This class manages Transit and Bicycling Layers for a Google Map instance.\n */\n\n@Injectable()\nexport class LayerManager {\n private _layers: Map<AgmTransitLayer | AgmBicyclingLayer, Promise<TransitLayer | BicyclingLayer>> =\n new Map<AgmTransitLayer | AgmBicyclingLayer, Promise<TransitLayer | BicyclingLayer>>();\n\n constructor(private _wrapper: GoogleMapsAPIWrapper) {}\n\n /**\n * Adds a transit layer to a map instance.\n * @param {AgmTransitLayer} layer - a TransitLayer object\n * @param {TransitLayerOptions} options - TransitLayerOptions options\n * @returns void\n */\n addTransitLayer(layer: AgmTransitLayer, options: TransitLayerOptions): void {\n const newLayer = this._wrapper.createTransitLayer(options);\n this._layers.set(layer, newLayer);\n }\n\n /**\n * Adds a bicycling layer to a map instance.\n * @param {AgmBicyclingLayer} layer - a bicycling layer object\n * @param {BicyclingLayerOptions} options - BicyclingLayer options\n * @returns void\n */\n addBicyclingLayer(layer: AgmBicyclingLayer, options: BicyclingLayerOptions): void {\n const newLayer = this._wrapper.createBicyclingLayer(options);\n this._layers.set(layer, newLayer);\n }\n\n /**\n * Deletes a map layer\n * @param {AgmTransitLayer|AgmBicyclingLayer} layer - the layer to delete\n * @returns Promise<void>\n */\n deleteLayer(layer: AgmTransitLayer | AgmBicyclingLayer): Promise<void> {\n return this._layers.get(layer).then(currentLayer => {\n currentLayer.setMap(null);\n this._layers.delete(layer);\n });\n }\n\n /**\n * Hide/Show a google map layer\n * @param { AgmTransitLayer|AgmBicyclingLayer} layer - the layer to hide/show\n * @param {TransitLayerOptions|BicyclingLayerOptions} options - used to set visibility of the layer\n * @returns Promise<void>\n */\n toggleLayerVisibility(layer: AgmTransitLayer | AgmBicyclingLayer, options: TransitLayerOptions | BicyclingLayerOptions): Promise<void> {\n return this._layers.get(layer).then(currentLayer => {\n if (!options.visible) {\n currentLayer.setMap(null);\n return;\n } else {\n return this._wrapper.getNativeMap().then( (map: GoogleMap) => {\n currentLayer.setMap(map);\n });\n }\n });\n }\n}\n","import { Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { LayerManager } from '../services/managers/layer-manager';\n\nlet layerId = 0;\n\n/*\n * This directive adds a bicycling layer to a google map instance\n * <agm-bicycling-layer [visible]=\"true|false\"> <agm-bicycling-layer>\n * */\n@Directive({\n selector: 'agm-bicycling-layer',\n})\n\nexport class AgmBicyclingLayer implements OnInit, OnChanges, OnDestroy{\n private _addedToManager = false;\n private _id: string = (layerId++).toString();\n\n /**\n * Hide/show bicycling layer\n */\n @Input() visible = true;\n\n constructor( private _manager: LayerManager ) {}\n\n ngOnInit() {\n if (this._addedToManager) {\n return;\n }\n this._manager.addBicyclingLayer(this, {visible: this.visible});\n this._addedToManager = true;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this._addedToManager) {\n return;\n }\n if (changes['visible'] != null) {\n this._manager.toggleLayerVisibility(this, {visible: changes['visible'].currentValue});\n }\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n toString(): string { return `AgmBicyclingLayer-${this._id.toString()}`; }\n\n /** @internal */\n ngOnDestroy() {\n this._manager.deleteLayer(this);\n }\n\n}\n","import { Injectable, NgZone } from '@angular/core';\n\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmCircle } from '../../directives/circle';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport * as mapTypes from '../google-maps-types';\n\ndeclare var google: any;\n\n@Injectable()\nexport class CircleManager {\n private _circles: Map<AgmCircle, Promise<mapTypes.Circle>> =\n new Map<AgmCircle, Promise<mapTypes.Circle>>();\n\n constructor(private _apiWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n addCircle(circle: AgmCircle) {\n this._circles.set(circle, this._apiWrapper.createCircle({\n center: {lat: circle.latitude, lng: circle.longitude},\n clickable: circle.clickable,\n draggable: circle.draggable,\n editable: circle.editable,\n fillColor: circle.fillColor,\n fillOpacity: circle.fillOpacity,\n radius: circle.radius,\n strokeColor: circle.strokeColor,\n strokeOpacity: circle.strokeOpacity,\n strokePosition: circle.strokePosition,\n strokeWeight: circle.strokeWeight,\n visible: circle.visible,\n zIndex: circle.zIndex,\n }));\n }\n\n /**\n * Removes the given circle from the map.\n */\n removeCircle(circle: AgmCircle): Promise<void> {\n return this._circles.get(circle).then((c) => {\n c.setMap(null);\n this._circles.delete(circle);\n });\n }\n\n setOptions(circle: AgmCircle, options: mapTypes.CircleOptions): Promise<void> {\n return this._circles.get(circle).then((c) => {\n if (typeof options.strokePosition === 'string') {\n options.strokePosition = google.maps.StrokePosition[options.strokePosition];\n }\n c.setOptions(options);\n });\n }\n\n getBounds(circle: AgmCircle): Promise<mapTypes.LatLngBounds> {\n return this._circles.get(circle).then((c) => c.getBounds());\n }\n\n getCenter(circle: AgmCircle): Promise<mapTypes.LatLng> {\n return this._circles.get(circle).then((c) => c.getCenter());\n }\n\n getRadius(circle: AgmCircle): Promise<number> {\n return this._circles.get(circle).then((c) => c.getRadius());\n }\n\n setCenter(circle: AgmCircle): Promise<void> {\n return this._circles.get(circle).then(\n (c) => { return c.setCenter({lat: circle.latitude, lng: circle.longitude}); });\n }\n\n setEditable(circle: AgmCircle): Promise<void> {\n return this._circles.get(circle).then((c) => { return c.setEditable(circle.editable); });\n }\n\n setDraggable(circle: AgmCircle): Promise<void> {\n return this._circles.get(circle).then((c) => { return c.setDraggable(circle.draggable); });\n }\n\n setVisible(circle: AgmCircle): Promise<void> {\n return this._circles.get(circle).then((c) => { return c.setVisible(circle.visible); });\n }\n\n setRadius(circle: AgmCircle): Promise<void> {\n return this._circles.get(circle).then((c) => { return c.setRadius(circle.radius); });\n }\n\n getNativeCircle(circle: AgmCircle): Promise<mapTypes.Circle> {\n return this._circles.get(circle);\n }\n\n createEventObservable<T>(eventName: string, circle: AgmCircle): Observable<T> {\n return new Observable((observer: Observer<T>) => {\n let listener: mapTypes.MapsEventListener = null;\n this._circles.get(circle).then((c) => {\n listener = c.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n\n return () => {\n if (listener !== null) {\n listener.remove();\n }\n };\n });\n }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { MouseEvent } from '../map-types';\nimport { LatLng, LatLngBounds, LatLngLiteral, MouseEvent as MapMouseEvent } from '../services/google-maps-types';\nimport { CircleManager } from '../services/managers/circle-manager';\n\n@Directive({\n selector: 'agm-circle',\n})\nexport class AgmCircle implements OnInit, OnChanges, OnDestroy {\n /**\n * The latitude position of the circle (required).\n */\n @Input() latitude: number;\n\n /**\n * The clickable position of the circle (required).\n */\n @Input() longitude: number;\n\n /**\n * Indicates whether this Circle handles mouse events. Defaults to true.\n */\n @Input() clickable = true;\n\n /**\n * If set to true, the user can drag this circle over the map. Defaults to false.\n */\n // tslint:disable-next-line:no-input-rename\n @Input('circleDraggable') draggable = false;\n\n /**\n * If set to true, the user can edit this circle by dragging the control points shown at\n * the center and around the circumference of the circle. Defaults to false.\n */\n @Input() editable = false;\n\n /**\n * The fill color. All CSS3 colors are supported except for extended named colors.\n */\n @Input() fillColor: string;\n\n /**\n * The fill opacity between 0.0 and 1.0.\n */\n @Input() fillOpacity: number;\n\n /**\n * The radius in meters on the Earth's surface.\n */\n @Input() radius = 0;\n\n /**\n * The stroke color. All CSS3 colors are supported except for extended named colors.\n */\n @Input() strokeColor: string;\n\n /**\n * The stroke opacity between 0.0 and 1.0\n */\n @Input() strokeOpacity: number;\n\n /**\n * The stroke position. Defaults to CENTER.\n * This property is not supported on Internet Explorer 8 and earlier.\n */\n @Input() strokePosition: 'CENTER' | 'INSIDE' | 'OUTSIDE' = 'CENTER';\n\n /**\n * The stroke width in pixels.\n */\n @Input() strokeWeight = 0;\n\n /**\n * Whether this circle is visible on the map. Defaults to true.\n */\n @Input() visible = true;\n\n /**\n * The zIndex compared to other polys.\n */\n @Input() zIndex: number;\n\n /**\n * This event is fired when the circle's center is changed.\n */\n @Output() centerChange: EventEmitter<LatLngLiteral> = new EventEmitter<LatLngLiteral>();\n\n /**\n * This event emitter gets emitted when the user clicks on the circle.\n */\n @Output() circleClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event emitter gets emitted when the user clicks on the circle.\n */\n @Output() circleDblClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is repeatedly fired while the user drags the circle.\n */\n @Output() drag: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user stops dragging the circle.\n */\n @Output() dragEnd: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user starts dragging the circle.\n */\n @Output() dragStart: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mousedown event is fired on the circle.\n */\n @Output() mouseDown: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mousemove event is fired on the circle.\n */\n @Output() mouseMove: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired on circle mouseout.\n */\n @Output() mouseOut: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired on circle mouseover.\n */\n @Output() mouseOver: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mouseup event is fired on the circle.\n */\n @Output() mouseUp: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the circle's radius is changed.\n */\n @Output() radiusChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * This event is fired when the circle is right-clicked on.\n */\n @Output() rightClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n private _circleAddedToManager = false;\n\n private static _mapOptions: string[] = [\n 'fillColor', 'fillOpacity', 'strokeColor', 'strokeOpacity', 'strokePosition', 'strokeWeight',\n 'visible', 'zIndex', 'clickable',\n ];\n\n private _eventSubscriptions: Subscription[] = [];\n\n constructor(private _manager: CircleManager) {}\n\n /** @internal */\n ngOnInit() {\n this._manager.addCircle(this);\n this._circleAddedToManager = true;\n this._registerEventListeners();\n }\n\n /** @internal */\n ngOnChanges(changes: {[key: string]: SimpleChange}) {\n if (!this._circleAddedToManager) {\n return;\n }\n if (changes['latitude'] || changes['longitude']) {\n this._manager.setCenter(this);\n }\n if (changes['editable']) {\n this._manager.setEditable(this);\n }\n if (changes['draggable']) {\n this._manager.setDraggable(this);\n }\n if (changes['visible']) {\n this._manager.setVisible(this);\n }\n if (changes['radius']) {\n this._manager.setRadius(this);\n }\n this._updateCircleOptionsChanges(changes);\n }\n\n private _updateCircleOptionsChanges(changes: {[propName: string]: SimpleChange}) {\n let options: {[propName: string]: any} = {};\n let optionKeys =\n Object.keys(changes).filter(k => AgmCircle._mapOptions.indexOf(k) !== -1);\n optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\n if (optionKeys.length > 0) {\n this._manager.setOptions(this, options);\n }\n }\n\n private _registerEventListeners() {\n let events: Map<string, EventEmitter<any>> = new Map<string, EventEmitter<any>>();\n events.set('center_changed', this.centerChange);\n events.set('click', this.circleClick);\n events.set('dblclick', this.circleDblClick);\n events.set('drag', this.drag);\n events.set('dragend', this.dragEnd);\n events.set('dragstart', this.dragStart);\n events.set('mousedown', this.mouseDown);\n events.set('mousemove', this.mouseMove);\n events.set('mouseout', this.mouseOut);\n events.set('mouseover', this.mouseOver);\n events.set('mouseup', this.mouseUp);\n events.set('radius_changed', this.radiusChange);\n events.set('rightclick', this.rightClick);\n\n events.forEach((eventEmitter, eventName) => {\n this._eventSubscriptions.push(\n this._manager.createEventObservable<MapMouseEvent>(eventName, this).subscribe((value) => {\n switch (eventName) {\n case 'radius_changed':\n this._manager.getRadius(this).then((radius) => eventEmitter.emit(radius));\n break;\n case 'center_changed':\n this._manager.getCenter(this).then(\n (center) =>\n eventEmitter.emit({lat: center.lat(), lng: center.lng()} as LatLngLiteral));\n break;\n default:\n eventEmitter.emit(\n {coords: {lat: value.latLng.lat(), lng: value.latLng.lng()}} as MouseEvent);\n }\n }));\n });\n }\n\n /** @internal */\n ngOnDestroy() {\n this._eventSubscriptions.forEach(function(s: Subscription) { s.unsubscribe(); });\n this._eventSubscriptions = null;\n this._manager.removeCircle(this);\n }\n\n /**\n * Gets the LatLngBounds of this Circle.\n */\n getBounds(): Promise<LatLngBounds> { return this._manager.getBounds(this); }\n\n getCenter(): Promise<LatLng> { return this._manager.getCenter(this); }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmDataLayer } from './../../directives/data-layer';\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\nimport { Data, DataOptions, Feature } from './../google-maps-types';\n\n/**\n * Manages all Data Layers for a Google Map instance.\n */\n@Injectable()\nexport class DataLayerManager {\n private _layers: Map<AgmDataLayer, Promise<Data>> =\n new Map<AgmDataLayer, Promise<Data>>();\n\n constructor(private _wrapper: GoogleMapsAPIWrapper, private _zone: NgZone) { }\n\n /**\n * Adds a new Data Layer to the map.\n */\n addDataLayer(layer: AgmDataLayer) {\n const newLayer = this._wrapper.createDataLayer({\n style: layer.style,\n } as DataOptions)\n .then(d => {\n if (layer.geoJson) {\n this.getDataFeatures(d, layer.geoJson).then(features => d.features = features);\n }\n return d;\n });\n this._layers.set(layer, newLayer);\n }\n\n deleteDataLayer(layer: AgmDataLayer) {\n this._layers.get(layer).then(l => {\n l.setMap(null);\n this._layers.delete(layer);\n });\n }\n\n updateGeoJson(layer: AgmDataLayer, geoJson: Object | string) {\n this._layers.get(layer).then(l => {\n l.forEach(function (feature: Feature) {\n l.remove(feature);\n\n var index = l.features.indexOf(feature, 0);\n if (index > -1) {\n l.features.splice(index, 1);\n }\n });\n this.getDataFeatures(l, geoJson).then(features => l.features = features);\n });\n }\n\n setDataOptions(layer: AgmDataLayer, options: DataOptions)\n {\n this._layers.get(layer).then(l => {\n l.setControlPosition(options.controlPosition);\n l.setControls(options.controls);\n l.setDrawingMode(options.drawingMode);\n l.setStyle(options.style);\n });\n }\n\n /**\n * Creates a Google Maps event listener for the given DataLayer as an Observable\n */\n createEventObservable<T>(eventName: string, layer: AgmDataLayer): Observable<T> {\n return new Observable((observer: Observer<T>) => {\n this._layers.get(layer).then((d: Data) => {\n d.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n\n /**\n * Extract features from a geoJson using google.maps Data Class\n * @param d : google.maps.Data class instance\n * @param geoJson : url or geojson object\n */\n getDataFeatures(d: Data, geoJson: Object | string): Promise<Feature[]> {\n return new Promise<Feature[]>((resolve, reject) => {\n if (typeof geoJson === 'object') {\n try {\n const features = d.addGeoJson(geoJson);\n resolve(features);\n } catch (e) {\n reject(e);\n }\n } else if (typeof geoJson === 'string') {\n d.loadGeoJson(geoJson, null, resolve);\n } else {\n reject(`Impossible to extract features from geoJson: wrong argument type`);\n }\n });\n }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DataMouseEvent, DataOptions } from './../services/google-maps-types';\nimport { DataLayerManager } from './../services/managers/data-layer-manager';\n\nlet layerId = 0;\n\n/**\n * AgmDataLayer enables the user to add data layers to the map.\n *\n * ### Example\n * ```typescript\n * import { Component } from 'angular2/core';\n * import { AgmMap, AgmDataLayer } from\n * 'angular-google-maps/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * directives: [AgmMap, AgmDataLayer],\n * styles: [`\n * .agm-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * \t <agm-data-layer [geoJson]=\"geoJsonObject\" (layerClick)=\"clicked($event)\" [style]=\"styleFunc\">\n * \t </agm-data-layer>\n * </agm-map>\n * `\n * })\n * export class MyMapCmp {\n * lat: number = -25.274449;\n * lng: number = 133.775060;\n * zoom: number = 5;\n *\n * clicked(clickEvent) {\n * console.log(clickEvent);\n * }\n *\n * styleFunc(feature) {\n * return ({\n * clickable: false,\n * fillColor: feature.getProperty('color'),\n * strokeWeight: 1\n * });\n * }\n *\n * geoJsonObject: Object = {\n * \"type\": \"FeatureCollection\",\n * \"features\": [\n * {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"letter\": \"G\",\n * \"color\": \"blue\",\n * \"rank\": \"7\",\n * \"ascii\": \"71\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [\n * [\n * [123.61, -22.14], [122.38, -21.73], [121.06, -21.69], [119.66, -22.22], [119.00, -23.40],\n * [118.65, -24.76], [118.43, -26.07], [118.78, -27.56], [119.22, -28.57], [120.23, -29.49],\n * [121.77, -29.87], [123.57, -29.64], [124.45, -29.03], [124.71, -27.95], [124.80, -26.70],\n * [124.80, -25.60], [123.61, -25.64], [122.56, -25.64], [121.72, -25.72], [121.81, -26.62],\n * [121.86, -26.98], [122.60, -26.90], [123.57, -27.05], [123.57, -27.68], [123.35, -28.18],\n * [122.51, -28.38], [121.77, -28.26], [121.02, -27.91], [120.49, -27.21], [120.14, -26.50],\n * [120.10, -25.64], [120.27, -24.52], [120.67, -23.68], [121.72, -23.32], [122.43, -23.48],\n * [123.04, -24.04], [124.54, -24.28], [124.58, -23.20], [123.61, -22.14]\n * ]\n * ]\n * }\n * },\n * {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"letter\": \"o\",\n * \"color\": \"red\",\n * \"rank\": \"15\",\n * \"ascii\": \"111\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [\n * [\n * [128.84, -25.76], [128.18, -25.60], [127.96, -25.52], [127.88, -25.52], [127.70, -25.60],\n * [127.26, -25.79], [126.60, -26.11], [126.16, -26.78], [126.12, -27.68], [126.21, -28.42],\n * [126.69, -29.49], [127.74, -29.80], [128.80, -29.72], [129.41, -29.03], [129.72, -27.95],\n * [129.68, -27.21], [129.33, -26.23], [128.84, -25.76]\n * ],\n * [\n * [128.45, -27.44], [128.32, -26.94], [127.70, -26.82], [127.35, -27.05], [127.17, -27.80],\n * [127.57, -28.22], [128.10, -28.42], [128.49, -27.80], [128.45, -27.44]\n * ]\n * ]\n * }\n * },\n * {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"letter\": \"o\",\n * \"color\": \"yellow\",\n * \"rank\": \"15\",\n * \"ascii\": \"111\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [\n * [\n * [131.87, -25.76], [131.35, -26.07], [130.95, -26.78], [130.82, -27.64], [130.86, -28.53],\n * [131.26, -29.22], [131.92, -29.76], [132.45, -29.87], [133.06, -29.76], [133.72, -29.34],\n * [134.07, -28.80], [134.20, -27.91], [134.07, -27.21], [133.81, -26.31], [133.37, -25.83],\n * [132.71, -25.64], [131.87, -25.76]\n * ],\n * [\n * [133.15, -27.17], [132.71, -26.86], [132.09, -26.90], [131.74, -27.56], [131.79, -28.26],\n * [132.36, -28.45], [132.93, -28.34], [133.15, -27.76], [133.15, -27.17]\n * ]\n * ]\n * }\n * },\n * {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"letter\": \"g\",\n * \"color\": \"blue\",\n * \"rank\": \"7\",\n * \"ascii\": \"103\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [\n * [\n * [138.12, -25.04], [136.84, -25.16], [135.96, -25.36], [135.26, -25.99], [135, -26.90],\n * [135.04, -27.91], [135.26, -28.88], [136.05, -29.45], [137.02, -29.49], [137.81, -29.49],\n * [137.94, -29.99], [137.90, -31.20], [137.85, -32.24], [136.88, -32.69], [136.45, -32.36],\n * [136.27, -31.80], [134.95, -31.84], [135.17, -32.99], [135.52, -33.43], [136.14, -33.76],\n * [137.06, -33.83], [138.12, -33.65], [138.86, -33.21], [139.30, -32.28], [139.30, -31.24],\n * [139.30, -30.14], [139.21, -28.96], [139.17, -28.22], [139.08, -27.41], [139.08, -26.47],\n * [138.99, -25.40], [138.73, -25.00], [138.12, -25.04]\n * ],\n * [\n * [137.50, -26.54], [136.97, -26.47], [136.49, -26.58], [136.31, -27.13], [136.31, -27.72],\n * [136.58, -27.99], [137.50, -28.03], [137.68, -27.68], [137.59, -26.78], [137.50, -26.54]\n * ]\n * ]\n * }\n * },\n * {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"letter\": \"l\",\n * \"color\": \"green\",\n * \"rank\": \"12\",\n * \"ascii\": \"108\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [\n * [\n * [140.14, -21.04], [140.31, -29.42], [141.67, -29.49], [141.59, -20.92], [140.14, -21.04]\n * ]\n * ]\n * }\n * },\n * {\n * \"type\": \"Feature\",\n * \"properties\": {\n * \"letter\": \"e\",\n * \"color\": \"red\",\n * \"rank\": \"5\",\n * \"ascii\": \"101\"\n * },\n * \"geometry\": {\n * \"type\": \"Polygon\",\n * \"coordinates\": [\n * [\n * [144.14, -27.41], [145.67, -27.52], [146.86, -27.09], [146.82, -25.64], [146.25, -25.04],\n * [145.45, -24.68], [144.66, -24.60], [144.09, -24.76], [143.43, -25.08], [142.99, -25.40],\n * [142.64, -26.03], [142.64, -27.05], [142.64, -28.26], [143.30, -29.11], [144.18, -29.57],\n * [145.41, -29.64], [146.46, -29.19], [146.64, -28.72], [146.82, -28.14], [144.84, -28.42],\n * [144.31, -28.26], [144.14, -27.41]\n * ],\n * [\n * [144.18, -26.39], [144.53, -26.58], [145.19, -26.62], [145.72, -26.35], [145.81, -25.91],\n * [145.41, -25.68], [144.97, -25.68], [144.49, -25.64], [144, -25.99], [144.18, -26.39]\n * ]\n * ]\n * }\n * }\n * ]\n * };\n * }\n * ```\n */\n@Directive({\n selector: 'agm-data-layer',\n})\nexport class AgmDataLayer implements OnInit, OnDestroy, OnChanges {\n private static _dataOptionsAttributes: Array<string> = ['style'];\n\n private _addedToManager = false;\n private _id: string = (layerId++).toString();\n private _subscriptions: Subscription[] = [];\n\n /**\n * This event is fired when a feature in the layer is clicked.\n */\n @Output() layerClick: EventEmitter<DataMouseEvent> = new EventEmitter<DataMouseEvent>();\n\n /**\n * The geoJson to be displayed\n */\n @Input() geoJson: Object | string | null = null;\n\n /**\n * The layer's style function.\n */\n @Input() style: () => void;\n\n constructor(private _manager: DataLayerManager) { }\n\n ngOnInit() {\n if (this._addedToManager) {\n return;\n }\n this._manager.addDataLayer(this);\n this._addedToManager = true;\n this._addEventListeners();\n }\n\n private _addEventListeners() {\n const listeners = [\n { name: 'click', handler: (ev: DataMouseEvent) => this.layerClick.emit(ev) },\n ];\n listeners.forEach((obj) => {\n const os = this._manager.createEventObservable(obj.name, this).subscribe(obj.handler);\n this._subscriptions.push(os);\n });\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n toString(): string { return `AgmDataLayer-${this._id.toString()}`; }\n\n /** @internal */\n ngOnDestroy() {\n this._manager.deleteDataLayer(this);\n // unsubscribe all registered observable subscriptions\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n\n /** @internal */\n ngOnChanges(changes: SimpleChanges) {\n if (!this._addedToManager) {\n return;\n }\n\n var geoJsonChange = changes['geoJson'];\n if (geoJsonChange) {\n this._manager.updateGeoJson(this, geoJsonChange.currentValue);\n }\n\n let dataOptions: DataOptions = {};\n\n AgmDataLayer._dataOptionsAttributes.forEach(k => (dataOptions as any)[k] = changes.hasOwnProperty(k) ? changes[k].currentValue : (this as any)[k]);\n\n this._manager.setDataOptions(this, dataOptions);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, from, Observable, timer } from 'rxjs';\nimport {\n flatMap,\n map,\n sample,\n shareReplay,\n switchMap,\n} from 'rxjs/operators';\nimport { LatLng, LatLngBounds, LatLngLiteral } from './google-maps-types';\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\n\ndeclare var google: any;\n\nexport interface FitBoundsDetails {\n latLng: LatLng | LatLngLiteral;\n}\n\n/**\n * @internal\n */\nexport type BoundsMap = Map<string, LatLng | LatLngLiteral>;\n\n/**\n * Class to implement when you what to be able to make it work with the auto fit bounds feature\n * of AGM.\n */\nexport abstract class FitBoundsAccessor {\n abstract getFitBoundsDetails$(): Observable<FitBoundsDetails>;\n}\n\n/**\n * The FitBoundsService is responsible for computing the bounds of the a single map.\n */\n@Injectable()\nexport class FitBoundsService {\n protected readonly bounds$: Observable<LatLngBounds>;\n protected readonly _boundsChangeSampleTime$ = new BehaviorSubject<number>(200);\n protected readonly _includeInBounds$ = new BehaviorSubject<BoundsMap>(new Map<string, LatLng | LatLngLiteral>());\n\n constructor(loader: MapsAPILoader) {\n this.bounds$ = from(loader.load()).pipe(\n flatMap(() => this._includeInBounds$),\n sample(\n this._boundsChangeSampleTime$.pipe(switchMap(time => timer(0, time))),\n ),\n map(includeInBounds => this._generateBounds(includeInBounds)),\n shareReplay(1),\n );\n }\n\n private _generateBounds(\n includeInBounds: Map<string, LatLng | LatLngLiteral>,\n ) {\n const bounds = new google.maps.LatLngBounds() as LatLngBounds;\n includeInBounds.forEach(b => bounds.extend(b));\n return bounds;\n }\n\n addToBounds(latLng: LatLng | LatLngLiteral) {\n const id = this._createIdentifier(latLng);\n if (this._includeInBounds$.value.has(id)) {\n return;\n }\n const map = this._includeInBounds$.value;\n map.set(id, latLng);\n this._includeInBounds$.next(map);\n }\n\n removeFromBounds(latLng: LatLng | LatLngLiteral) {\n const map = this._includeInBounds$.value;\n map.delete(this._createIdentifier(latLng));\n this._includeInBounds$.next(map);\n }\n\n changeFitBoundsChangeSampleTime(timeMs: number) {\n this._boundsChangeSampleTime$.next(timeMs);\n }\n\n getBounds$(): Observable<LatLngBounds> {\n return this.bounds$;\n }\n\n protected _createIdentifier(latLng: LatLng | LatLngLiteral): string {\n return `${latLng.lat}+${latLng.lng}`;\n }\n}\n","import { Directive, Input, OnChanges, OnDestroy, OnInit, Self } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { FitBoundsAccessor, FitBoundsDetails, FitBoundsService } from '../services/fit-bounds';\n\n/**\n * Adds the given directive to the auto fit bounds feature when the value is true.\n * To make it work with you custom AGM component, you also have to implement the {@link FitBoundsAccessor} abstract class.\n * @example\n * <agm-marker [agmFitBounds]=\"true\"></agm-marker>\n */\n@Directive({\n selector: '[agmFitBounds]',\n})\nexport class AgmFitBounds implements OnInit, OnDestroy, OnChanges {\n /**\n * If the value is true, the element gets added to the bounds of the map.\n * Default: true.\n */\n @Input() agmFitBounds = true;\n\n private _destroyed$: Subject<void> = new Subject<void>();\n private _latestFitBoundsDetails: FitBoundsDetails | null = null;\n\n constructor(\n @Self() private readonly _fitBoundsAccessor: FitBoundsAccessor,\n private readonly _fitBoundsService: FitBoundsService,\n ) {}\n\n /**\n * @internal\n */\n ngOnChanges() {\n this._updateBounds();\n }\n\n /**\n * @internal\n */\n ngOnInit() {\n this._fitBoundsAccessor\n .getFitBoundsDetails$()\n .pipe(\n distinctUntilChanged(\n (x: FitBoundsDetails, y: FitBoundsDetails) =>\n x.latLng.lat === y.latLng.lat && x.latLng.lng === y.latLng.lng,\n ),\n takeUntil(this._destroyed$),\n )\n .subscribe(details => this._updateBounds(details));\n }\n\n /*\n Either the location changed, or visible status changed.\n Possible state changes are\n invisible -> visible\n visible -> invisible\n visible -> visible (new location)\n */\n private _updateBounds(newFitBoundsDetails?: FitBoundsDetails) {\n // either visibility will change, or location, so remove the old one anyway\n if (this._latestFitBoundsDetails) {\n this._fitBoundsService.removeFromBounds(this._latestFitBoundsDetails.latLng);\n // don't set latestFitBoundsDetails to null, because we can toggle visibility from\n // true -> false -> true, in which case we still need old value cached here\n }\n\n if (newFitBoundsDetails) {\n this._latestFitBoundsDetails = newFitBoundsDetails;\n }\n if (!this._latestFitBoundsDetails) {\n return;\n }\n if (this.agmFitBounds === true) {\n this._fitBoundsService.addToBounds(this._latestFitBoundsDetails.latLng);\n }\n }\n\n /**\n * @internal\n */\n ngOnDestroy() {\n this._destroyed$.next();\n this._destroyed$.complete();\n if (this._latestFitBoundsDetails !== null) {\n this._fitBoundsService.removeFromBounds(this._latestFitBoundsDetails.latLng);\n }\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmMarker } from './../../directives/marker';\n\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\nimport { Marker } from './../google-maps-types';\n\ndeclare var google: any;\n\n@Injectable()\nexport class MarkerManager {\n protected _markers: Map<AgmMarker, Promise<Marker>> =\n new Map<AgmMarker, Promise<Marker>>();\n\n constructor(protected _mapsWrapper: GoogleMapsAPIWrapper, protected _zone: NgZone) {}\n\n async convertAnimation(uiAnim: 'BOUNCE' | 'DROP' | null): Promise<any>{\n if (uiAnim === null) {\n return null;\n } else {\n return this._mapsWrapper.getNativeMap().then(() => google.maps.Animation[uiAnim]);\n }\n }\n\n deleteMarker(marker: AgmMarker): Promise<void> {\n const m = this._markers.get(marker);\n if (m == null) {\n // marker already deleted\n return Promise.resolve();\n }\n return m.then((m: Marker) => {\n return this._zone.run(() => {\n m.setMap(null);\n this._markers.delete(marker);\n });\n });\n }\n\n updateMarkerPosition(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then(\n (m: Marker) => m.setPosition({lat: marker.latitude, lng: marker.longitude}));\n }\n\n updateTitle(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => m.setTitle(marker.title));\n }\n\n updateLabel(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => { m.setLabel(marker.label); });\n }\n\n updateDraggable(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => m.setDraggable(marker.draggable));\n }\n\n updateIcon(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => m.setIcon(marker.iconUrl));\n }\n\n updateOpacity(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => m.setOpacity(marker.opacity));\n }\n\n updateVisible(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => m.setVisible(marker.visible));\n }\n\n updateZIndex(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => m.setZIndex(marker.zIndex));\n }\n\n updateClickable(marker: AgmMarker): Promise<void> {\n return this._markers.get(marker).then((m: Marker) => m.setClickable(marker.clickable));\n }\n\n async updateAnimation(marker: AgmMarker) {\n const m = await this._markers.get(marker);\n m.setAnimation(await this.convertAnimation(marker.animation));\n }\n\n addMarker(marker: AgmMarker) {\n const markerPromise = new Promise<Marker>(async (resolve) =>\n this._mapsWrapper.createMarker({\n position: {lat: marker.latitude, lng: marker.longitude},\n label: marker.label,\n draggable: marker.draggable,\n icon: marker.iconUrl,\n opacity: marker.opacity,\n visible: marker.visible,\n zIndex: marker.zIndex,\n title: marker.title,\n clickable: marker.clickable,\n animation: await this.convertAnimation(marker.animation),\n }).then(resolve));\n this._markers.set(marker, markerPromise);\n }\n\n getNativeMarker(marker: AgmMarker): Promise<Marker> {\n return this._markers.get(marker);\n }\n\n createEventObservable<T>(eventName: string, marker: AgmMarker): Observable<T> {\n return new Observable((observer: Observer<T>) => {\n this._markers.get(marker).then((m: Marker) => {\n m.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmInfoWindow } from '../../directives/info-window';\n\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport { InfoWindow, InfoWindowOptions } from '../google-maps-types';\nimport { MarkerManager } from './marker-manager';\n\n@Injectable()\nexport class InfoWindowManager {\n private _infoWindows: Map<AgmInfoWindow, Promise<InfoWindow>> =\n new Map<AgmInfoWindow, Promise<InfoWindow>>();\n\n constructor(\n private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone,\n private _markerManager: MarkerManager) {}\n\n deleteInfoWindow(infoWindow: AgmInfoWindow): Promise<void> {\n const iWindow = this._infoWindows.get(infoWindow);\n if (iWindow == null) {\n // info window already deleted\n return Promise.resolve();\n }\n return iWindow.then((i: InfoWindow) => {\n return this._zone.run(() => {\n i.close();\n this._infoWindows.delete(infoWindow);\n });\n });\n }\n\n setPosition(infoWindow: AgmInfoWindow): Promise<void> {\n return this._infoWindows.get(infoWindow).then((i: InfoWindow) => i.setPosition({\n lat: infoWindow.latitude,\n lng: infoWindow.longitude,\n }));\n }\n\n setZIndex(infoWindow: AgmInfoWindow): Promise<void> {\n return this._infoWindows.get(infoWindow)\n .then((i: InfoWindow) => i.setZIndex(infoWindow.zIndex));\n }\n\n open(infoWindow: AgmInfoWindow): Promise<void> {\n return this._infoWindows.get(infoWindow).then((w) => {\n if (infoWindow.hostMarker != null) {\n return this._markerManager.getNativeMarker(infoWindow.hostMarker).then((marker) => {\n return this._mapsWrapper.getNativeMap().then((map) => w.open(map, marker));\n });\n }\n return this._mapsWrapper.getNativeMap().then((map) => w.open(map));\n });\n }\n\n close(infoWindow: AgmInfoWindow): Promise<void> {\n return this._infoWindows.get(infoWindow).then((w) => w.close());\n }\n\n setOptions(infoWindow: AgmInfoWindow, options: InfoWindowOptions) {\n return this._infoWindows.get(infoWindow).then((i: InfoWindow) => i.setOptions(options));\n }\n\n addInfoWindow(infoWindow: AgmInfoWindow) {\n const options: InfoWindowOptions = {\n content: infoWindow.content,\n maxWidth: infoWindow.maxWidth,\n zIndex: infoWindow.zIndex,\n disableAutoPan: infoWindow.disableAutoPan,\n };\n if (typeof infoWindow.latitude === 'number' && typeof infoWindow.longitude === 'number') {\n options.position = {lat: infoWindow.latitude, lng: infoWindow.longitude};\n }\n const infoWindowPromise = this._mapsWrapper.createInfoWindow(options);\n this._infoWindows.set(infoWindow, infoWindowPromise);\n }\n\n /**\n * Creates a Google Maps event listener for the given InfoWindow as an Observable\n */\n createEventObservable<T>(eventName: string, infoWindow: AgmInfoWindow): Observable<T> {\n return new Observable((observer: Observer<T>) => {\n this._infoWindows.get(infoWindow).then((i: InfoWindow) => {\n i.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n}\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChange } from '@angular/core';\n\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\n\nimport { AgmMarker } from './marker';\n\nlet infoWindowId = 0;\n\n/**\n * AgmInfoWindow renders a info window inside a {@link AgmMarker} or standalone.\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * styles: [`\n * .agm-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <agm-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\n * <agm-info-window [disableAutoPan]=\"true\">\n * Hi, this is the content of the <strong>info window</strong>\n * </agm-info-window>\n * </agm-marker>\n * </agm-map>\n * `\n * })\n * ```\n */\n@Component({\n selector: 'agm-info-window',\n template: `<div class='agm-info-window-content'>\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class AgmInfoWindow implements OnDestroy, OnChanges, OnInit {\n /**\n * The latitude position of the info window (only usefull if you use it ouside of a {@link\n * AgmMarker}).\n */\n @Input() latitude: number;\n\n /**\n * The longitude position of the info window (only usefull if you use it ouside of a {@link\n * AgmMarker}).\n */\n @Input() longitude: number;\n\n /**\n * Disable auto-pan on open. By default, the info window will pan the map so that it is fully\n * visible when it opens.\n */\n @Input() disableAutoPan: boolean;\n\n /**\n * All InfoWindows are displayed on the map in order of their zIndex, with higher values\n * displaying in front of InfoWindows with lower values. By default, InfoWindows are displayed\n * according to their latitude, with InfoWindows of lower latitudes appearing in front of\n * InfoWindows at higher latitudes. InfoWindows are always displayed in front of markers.\n */\n @Input() zIndex: number;\n\n /**\n * Maximum width of the infowindow, regardless of content's width. This value is only considered\n * if it is set before a call to open. To change the maximum width when changing content, call\n * close, update maxWidth, and then open.\n */\n @Input() maxWidth: number;\n\n /**\n * Holds the marker that is the host of the info window (if available)\n */\n hostMarker: AgmMarker;\n\n /**\n * Holds the native element that is used for the info window content.\n */\n content: Node;\n\n /**\n * Sets the open state for the InfoWindow. You can also call the open() and close() methods.\n */\n @Input() isOpen = false;\n\n /**\n * Emits an event when the info window is closed.\n */\n @Output() infoWindowClose: EventEmitter<void> = new EventEmitter<void>();\n\n private static _infoWindowOptionsInputs: string[] = ['disableAutoPan', 'maxWidth'];\n private _infoWindowAddedToManager = false;\n private _id: string = (infoWindowId++).toString();\n\n constructor(private _infoWindowManager: InfoWindowManager, private _el: ElementRef) {}\n\n ngOnInit() {\n this.content = this._el.nativeElement.querySelector('.agm-info-window-content');\n this._infoWindowManager.addInfoWindow(this);\n this._infoWindowAddedToManager = true;\n this._updateOpenState();\n this._registerEventListeners();\n }\n\n /** @internal */\n ngOnChanges(changes: {[key: string]: SimpleChange}) {\n if (!this._infoWindowAddedToManager) {\n return;\n }\n if ((changes['latitude'] || changes['longitude']) && typeof this.latitude === 'number' &&\n typeof this.longitude === 'number') {\n this._infoWindowManager.setPosition(this);\n }\n if (changes['zIndex']) {\n this._infoWindowManager.setZIndex(this);\n }\n if (changes['isOpen']) {\n this._updateOpenState();\n }\n this._setInfoWindowOptions(changes);\n }\n\n private _registerEventListeners() {\n this._infoWindowManager.createEventObservable('closeclick', this).subscribe(() => {\n this.isOpen = false;\n this.infoWindowClose.emit();\n });\n }\n\n private _updateOpenState() {\n this.isOpen ? this.open() : this.close();\n }\n\n private _setInfoWindowOptions(changes: {[key: string]: SimpleChange}) {\n let options: {[propName: string]: any} = {};\n let optionKeys = Object.keys(changes).filter(\n k => AgmInfoWindow._infoWindowOptionsInputs.indexOf(k) !== -1);\n optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\n this._infoWindowManager.setOptions(this, options);\n }\n\n /**\n * Opens the info window.\n */\n open(): Promise<void> { return this._infoWindowManager.open(this); }\n\n /**\n * Closes the info window.\n */\n close(): Promise<void> {\n return this._infoWindowManager.close(this).then(() => { this.infoWindowClose.emit(); });\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n toString(): string { return 'AgmInfoWindow-' + this._id.toString(); }\n\n /** @internal */\n ngOnDestroy() { this._infoWindowManager.deleteInfoWindow(this); }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmKmlLayer } from './../../directives/kml-layer';\nimport { GoogleMapsAPIWrapper } from './../google-maps-api-wrapper';\nimport { KmlLayer, KmlLayerOptions } from './../google-maps-types';\n\ndeclare var google: any;\n\n/**\n * Manages all KML Layers for a Google Map instance.\n */\n@Injectable()\nexport class KmlLayerManager {\n private _layers: Map<AgmKmlLayer, Promise<KmlLayer>> =\n new Map<AgmKmlLayer, Promise<KmlLayer>>();\n\n constructor(private _wrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n /**\n * Adds a new KML Layer to the map.\n */\n addKmlLayer(layer: AgmKmlLayer) {\n const newLayer = this._wrapper.getNativeMap().then(m => {\n return new google.maps.KmlLayer({\n clickable: layer.clickable,\n map: m,\n preserveViewport: layer.preserveViewport,\n screenOverlays: layer.screenOverlays,\n suppressInfoWindows: layer.suppressInfoWindows,\n url: layer.url,\n zIndex: layer.zIndex,\n } as KmlLayerOptions);\n });\n this._layers.set(layer, newLayer);\n }\n\n setOptions(layer: AgmKmlLayer, options: KmlLayerOptions) {\n this._layers.get(layer).then(l => l.setOptions(options));\n }\n\n deleteKmlLayer(layer: AgmKmlLayer) {\n this._layers.get(layer).then(l => {\n l.setMap(null);\n this._layers.delete(layer);\n });\n }\n\n /**\n * Creates a Google Maps event listener for the given KmlLayer as an Observable\n */\n createEventObservable<T>(eventName: string, layer: AgmKmlLayer): Observable<T> {\n return new Observable((observer: Observer<T>) => {\n this._layers.get(layer).then((m: KmlLayer) => {\n m.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { KmlMouseEvent } from './../services/google-maps-types';\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\n\nlet layerId = 0;\n\n@Directive({\n selector: 'agm-kml-layer',\n})\nexport class AgmKmlLayer implements OnInit, OnDestroy, OnChanges {\n private _addedToManager = false;\n private _id: string = (layerId++).toString();\n private _subscriptions: Subscription[] = [];\n private static _kmlLayerOptions: string[] =\n ['clickable', 'preserveViewport', 'screenOverlays', 'suppressInfoWindows', 'url', 'zIndex'];\n\n /**\n * If true, the layer receives mouse events. Default value is true.\n */\n @Input() clickable = true;\n\n /**\n * By default, the input map is centered and zoomed to the bounding box of the contents of the\n * layer.\n * If this option is set to true, the viewport is left unchanged, unless the map's center and zoom\n * were never set.\n */\n @Input() preserveViewport = false;\n\n /**\n * Whether to render the screen overlays. Default true.\n */\n @Input() screenOverlays = true;\n\n /**\n * Suppress the rendering of info windows when layer features are clicked.\n */\n @Input() suppressInfoWindows = false;\n\n /**\n * The URL of the KML document to display.\n */\n @Input() url: string = null;\n\n /**\n * The z-index of the layer.\n */\n @Input() zIndex: number | null = null;\n\n /**\n * This event is fired when a feature in the layer is clicked.\n */\n @Output() layerClick: EventEmitter<KmlMouseEvent> = new EventEmitter<KmlMouseEvent>();\n\n /**\n * This event is fired when the KML layers default viewport has changed.\n */\n @Output() defaultViewportChange: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * This event is fired when the KML layer has finished loading.\n * At this point it is safe to read the status property to determine if the layer loaded\n * successfully.\n */\n @Output() statusChange: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _manager: KmlLayerManager) {}\n\n ngOnInit() {\n if (this._addedToManager) {\n return;\n }\n this._manager.addKmlLayer(this);\n this._addedToManager = true;\n this._addEventListeners();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this._addedToManager) {\n return;\n }\n this._updatePolygonOptions(changes);\n }\n\n private _updatePolygonOptions(changes: SimpleChanges) {\n const options = Object.keys(changes)\n .filter(k => AgmKmlLayer._kmlLayerOptions.indexOf(k) !== -1)\n .reduce((obj: any, k: string) => {\n obj[k] = changes[k].currentValue;\n return obj;\n }, {});\n if (Object.keys(options).length > 0) {\n this._manager.setOptions(this, options);\n }\n }\n\n private _addEventListeners() {\n const listeners = [\n {name: 'click', handler: (ev: KmlMouseEvent) => this.layerClick.emit(ev)},\n {name: 'defaultviewport_changed', handler: () => this.defaultViewportChange.emit()},\n {name: 'status_changed', handler: () => this.statusChange.emit()},\n ];\n listeners.forEach((obj) => {\n const os = this._manager.createEventObservable(obj.name, this).subscribe(obj.handler);\n this._subscriptions.push(os);\n });\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n toString(): string { return `AgmKmlLayer-${this._id.toString()}`; }\n\n /** @internal */\n ngOnDestroy() {\n this._manager.deleteKmlLayer(this);\n // unsubscribe all registered observable subscriptions\n this._subscriptions.forEach(s => s.unsubscribe());\n }\n}\n","import { fromEventPattern, Observable } from 'rxjs';\nimport { MapsEventListener, MVCArray } from '../services/google-maps-types';\n\nexport function createMVCEventObservable<T>(array: MVCArray<T>): Observable<MVCEvent<T>>{\n const eventNames = ['insert_at', 'remove_at', 'set_at'];\n return fromEventPattern(\n (handler: Function) => eventNames.map(evName => array.addListener(evName,\n (index: number, previous?: T) => handler.apply(array, [ {'newArr': array.getArray(), evName, index, previous} as MVCEvent<T>]))),\n (_handler: Function, evListeners: MapsEventListener[]) => evListeners.forEach(evListener => evListener.remove()));\n}\n\nexport interface MVCEvent<T> {\n newArr: T[];\n evName: MvcEventType;\n index: number;\n previous?: T;\n}\n\nexport type MvcEventType = 'insert_at' | 'remove_at' | 'set_at';\n\nexport class MvcArrayMock<T> implements MVCArray<T> {\n private vals: T[] = [];\n private listeners: {\n 'remove_at': Function[];\n 'insert_at': Function[];\n 'set_at': Function[];\n [key: string]: Function[];\n } = {\n 'remove_at': [] as Function[],\n 'insert_at': [] as Function[],\n 'set_at': [] as Function[],\n };\n clear(): void {\n for (let i = this.vals.length - 1; i >= 0; i--) {\n this.removeAt(i);\n }\n }\n getArray(): T[] {\n return [...this.vals];\n }\n getAt(i: number): T {\n return this.vals[i];\n }\n getLength(): number {\n return this.vals.length;\n }\n insertAt(i: number, elem: T): void {\n this.vals.splice(i, 0, elem);\n this.listeners.insert_at.map(listener => listener(i));\n }\n pop(): T {\n const deleted = this.vals.pop();\n this.listeners.remove_at.map(listener => listener(this.vals.length, deleted));\n return deleted;\n }\n push(elem: T): number {\n this.vals.push(elem);\n this.listeners.insert_at.map(listener => listener(this.vals.length - 1));\n return this.vals.length;\n }\n removeAt(i: number): T {\n const deleted = this.vals.splice(i, 1)[0];\n this.listeners.remove_at.map(listener => listener(i, deleted));\n return deleted;\n }\n setAt(i: number, elem: T): void {\n const deleted = this.vals[i];\n this.vals[i] = elem;\n this.listeners.set_at.map(listener => listener(i, deleted));\n }\n forEach(callback: (elem: T, i: number) => void): void {\n this.vals.forEach(callback);\n }\n addListener(eventName: string, handler: Function): MapsEventListener {\n const listenerArr = this.listeners[eventName];\n listenerArr.push(handler);\n return {\n remove: () => {\n listenerArr.splice(listenerArr.indexOf(handler), 1);\n },\n };\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { merge, Observable, Observer } from 'rxjs';\nimport { map, skip, startWith, switchMap } from 'rxjs/operators';\n\nimport { AgmPolygon, PathChangePolygonPathEvent, PathCollectionChangePolygonPathEvent, PolygonPathEvent } from '../../directives/polygon';\nimport { createMVCEventObservable, MVCEvent } from '../../utils/mvcarray-utils';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport { LatLng, MVCArray, Polygon } from '../google-maps-types';\n\n@Injectable()\nexport class PolygonManager {\n private _polygons: Map<AgmPolygon, Promise<Polygon>> =\n new Map<AgmPolygon, Promise<Polygon>>();\n\n constructor(private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) { }\n\n addPolygon(path: AgmPolygon) {\n const polygonPromise = this._mapsWrapper.createPolygon({\n clickable: path.clickable,\n draggable: path.draggable,\n editable: path.editable,\n fillColor: path.fillColor,\n fillOpacity: path.fillOpacity,\n geodesic: path.geodesic,\n paths: path.paths,\n strokeColor: path.strokeColor,\n strokeOpacity: path.strokeOpacity,\n strokeWeight: path.strokeWeight,\n visible: path.visible,\n zIndex: path.zIndex,\n });\n this._polygons.set(path, polygonPromise);\n }\n\n updatePolygon(polygon: AgmPolygon): Promise<void> {\n const m = this._polygons.get(polygon);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then((l: Polygon) => this._zone.run(() => { l.setPaths(polygon.paths); }));\n }\n\n setPolygonOptions(path: AgmPolygon, options: { [propName: string]: any }): Promise<void> {\n return this._polygons.get(path).then((l: Polygon) => { l.setOptions(options); });\n }\n\n deletePolygon(paths: AgmPolygon): Promise<void> {\n const m = this._polygons.get(paths);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then((l: Polygon) => {\n return this._zone.run(() => {\n l.setMap(null);\n this._polygons.delete(paths);\n });\n });\n }\n\n getPath(polygon: AgmPolygon): Promise<Array<LatLng>> {\n return this._polygons.get(polygon)\n .then((polygon) => polygon.getPath().getArray());\n }\n\n getPaths(polygon: AgmPolygon): Promise<Array<Array<LatLng>>> {\n return this._polygons.get(polygon)\n .then((polygon) => polygon.getPaths().getArray().map((p) => p.getArray()));\n }\n\n createEventObservable<T>(eventName: string, path: AgmPolygon): Observable<T> {\n return new Observable((observer: Observer<T>) => {\n this._polygons.get(path).then((l: Polygon) => {\n l.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n\n async createPathEventObservable(agmPolygon: AgmPolygon): Promise<Observable<PolygonPathEvent<any>>> {\n const polygon = await this._polygons.get(agmPolygon);\n const paths = polygon.getPaths();\n const pathsChanges$ = createMVCEventObservable(paths);\n return pathsChanges$.pipe(startWith(({ newArr: paths.getArray() } as MVCEvent<MVCArray<LatLng>>)), // in order to subscribe to them all\n switchMap(parentMVEvent => merge(...// rest parameter\n parentMVEvent.newArr.map((chMVC, index) =>\n createMVCEventObservable(chMVC)\n .pipe(map(chMVCEvent => ({ parentMVEvent, chMVCEvent, pathIndex: index })))))\n .pipe(startWith({ parentMVEvent, chMVCEvent: null, pathIndex: null }))), // start the merged ob with an event signinifing change to parent\n skip(1), // skip the manually added event\n map(({ parentMVEvent, chMVCEvent, pathIndex }) => {\n let retVal;\n if (!chMVCEvent) {\n retVal = {\n newArr: parentMVEvent.newArr.map(subArr => subArr.getArray().map(latLng => latLng.toJSON())),\n eventName: parentMVEvent.evName,\n index: parentMVEvent.index,\n } as PathCollectionChangePolygonPathEvent;\n if (parentMVEvent.previous) {\n retVal.previous = parentMVEvent.previous.getArray();\n }\n } else {\n retVal = {\n newArr: parentMVEvent.newArr.map(subArr => subArr.getArray().map(latLng => latLng.toJSON())),\n pathIndex,\n eventName: chMVCEvent.evName,\n index: chMVCEvent.index,\n } as PathChangePolygonPathEvent;\n if (chMVCEvent.previous) {\n retVal.previous = chMVCEvent.previous;\n }\n }\n return retVal;\n }));\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmPolyline, PathEvent } from '../../directives/polyline';\nimport { AgmPolylinePoint } from '../../directives/polyline-point';\nimport { createMVCEventObservable } from '../../utils/mvcarray-utils';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport { IconSequence, LatLng, LatLngLiteral, MVCArray, Polyline } from '../google-maps-types';\n\ndeclare var google: any;\n\n@Injectable()\nexport class PolylineManager {\n private _polylines: Map<AgmPolyline, Promise<Polyline>> =\n new Map<AgmPolyline, Promise<Polyline>>();\n\n constructor(private _mapsWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n private static _convertPoints(line: AgmPolyline): Array<LatLngLiteral> {\n const path = line._getPoints().map((point: AgmPolylinePoint) => {\n return {lat: point.latitude, lng: point.longitude} as LatLngLiteral;\n });\n return path;\n }\n\n private static _convertPath(path: 'CIRCLE' | 'BACKWARD_CLOSED_ARROW' | 'BACKWARD_OPEN_ARROW' | 'FORWARD_CLOSED_ARROW' |\n 'FORWARD_CLOSED_ARROW' | string): number | string{\n const symbolPath = google.maps.SymbolPath[path];\n if (typeof symbolPath === 'number') {\n return symbolPath;\n } else{\n return path;\n }\n }\n\n private static _convertIcons(line: AgmPolyline): Array<IconSequence> {\n const icons = line._getIcons().map(agmIcon => ({\n fixedRotation: agmIcon.fixedRotation,\n offset: agmIcon.offset,\n repeat: agmIcon.repeat,\n icon: {\n anchor: new google.maps.Point(agmIcon.anchorX, agmIcon.anchorY),\n fillColor: agmIcon.fillColor,\n fillOpacity: agmIcon.fillOpacity,\n path: PolylineManager._convertPath(agmIcon.path),\n rotation: agmIcon.rotation,\n scale: agmIcon.scale,\n strokeColor: agmIcon.strokeColor,\n strokeOpacity: agmIcon.strokeOpacity,\n strokeWeight: agmIcon.strokeWeight,\n },\n } as IconSequence));\n // prune undefineds;\n icons.forEach(icon => {\n Object.entries(icon).forEach(([key, val]) => {\n if (typeof val === 'undefined') {\n delete (icon as any)[key];\n }\n });\n if (typeof icon.icon.anchor.x === 'undefined' ||\n typeof icon.icon.anchor.y === 'undefined') {\n delete icon.icon.anchor;\n }\n });\n return icons;\n }\n\n addPolyline(line: AgmPolyline) {\n const polylinePromise = this._mapsWrapper.getNativeMap()\n .then(() => [ PolylineManager._convertPoints(line),\n PolylineManager._convertIcons(line)])\n .then(([path, icons]: [LatLngLiteral[], IconSequence[]]) =>\n this._mapsWrapper.createPolyline({\n clickable: line.clickable,\n draggable: line.draggable,\n editable: line.editable,\n geodesic: line.geodesic,\n strokeColor: line.strokeColor,\n strokeOpacity: line.strokeOpacity,\n strokeWeight: line.strokeWeight,\n visible: line.visible,\n zIndex: line.zIndex,\n path: path,\n icons: icons,\n }));\n this._polylines.set(line, polylinePromise);\n }\n\n updatePolylinePoints(line: AgmPolyline): Promise<void> {\n const path = PolylineManager._convertPoints(line);\n const m = this._polylines.get(line);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then((l: Polyline) => { return this._zone.run(() => { l.setPath(path); }); });\n }\n\n async updateIconSequences(line: AgmPolyline): Promise<void> {\n await this._mapsWrapper.getNativeMap();\n const icons = PolylineManager._convertIcons(line);\n const m = this._polylines.get(line);\n if (m == null) {\n return;\n }\n return m.then(l => this._zone.run(() => l.setOptions({icons: icons}) ) );\n }\n\n setPolylineOptions(line: AgmPolyline, options: {[propName: string]: any}):\n Promise<void> {\n return this._polylines.get(line).then((l: Polyline) => { l.setOptions(options); });\n }\n\n deletePolyline(line: AgmPolyline): Promise<void> {\n const m = this._polylines.get(line);\n if (m == null) {\n return Promise.resolve();\n }\n return m.then((l: Polyline) => {\n return this._zone.run(() => {\n l.setMap(null);\n this._polylines.delete(line);\n });\n });\n }\n\n private async getMVCPath(agmPolyline: AgmPolyline): Promise<MVCArray<LatLng>> {\n const polyline = await this._polylines.get(agmPolyline);\n return polyline.getPath();\n }\n\n async getPath(agmPolyline: AgmPolyline): Promise<Array<LatLng>> {\n return (await this.getMVCPath(agmPolyline)).getArray();\n }\n\n createEventObservable<T>(eventName: string, line: AgmPolyline): Observable<T> {\n return new Observable((observer: Observer<T>) => {\n this._polylines.get(line).then((l: Polyline) => {\n l.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n\n async createPathEventObservable(line: AgmPolyline): Promise<Observable<PathEvent>> {\n const mvcPath = await this.getMVCPath(line);\n return createMVCEventObservable(mvcPath);\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\nimport { Observable, Observer } from 'rxjs';\n\nimport { AgmRectangle } from '../../directives/rectangle';\nimport { GoogleMapsAPIWrapper } from '../google-maps-api-wrapper';\nimport * as mapTypes from '../google-maps-types';\n\n@Injectable()\nexport class RectangleManager {\n private _rectangles: Map<AgmRectangle, Promise<mapTypes.Rectangle>> =\n new Map<AgmRectangle, Promise<mapTypes.Rectangle>>();\n\n constructor(private _apiWrapper: GoogleMapsAPIWrapper, private _zone: NgZone) {}\n\n addRectangle(rectangle: AgmRectangle) {\n this._rectangles.set(rectangle, this._apiWrapper.createRectangle({\n bounds: {\n north: rectangle.north,\n east: rectangle.east,\n south: rectangle.south,\n west: rectangle.west,\n },\n clickable: rectangle.clickable,\n draggable: rectangle.draggable,\n editable: rectangle.editable,\n fillColor: rectangle.fillColor,\n fillOpacity: rectangle.fillOpacity,\n strokeColor: rectangle.strokeColor,\n strokeOpacity: rectangle.strokeOpacity,\n strokePosition: rectangle.strokePosition,\n strokeWeight: rectangle.strokeWeight,\n visible: rectangle.visible,\n zIndex: rectangle.zIndex,\n }));\n }\n\n /**\n * Removes the given rectangle from the map.\n */\n removeRectangle(rectangle: AgmRectangle): Promise<void> {\n return this._rectangles.get(rectangle).then((r) => {\n r.setMap(null);\n this._rectangles.delete(rectangle);\n });\n }\n\n setOptions(rectangle: AgmRectangle, options: mapTypes.RectangleOptions): Promise<void> {\n return this._rectangles.get(rectangle).then((r) => r.setOptions(options));\n }\n\n getBounds(rectangle: AgmRectangle): Promise<mapTypes.LatLngBounds> {\n return this._rectangles.get(rectangle).then((r) => r.getBounds());\n }\n\n setBounds(rectangle: AgmRectangle): Promise<void> {\n return this._rectangles.get(rectangle).then((r) => {\n return r.setBounds({\n north: rectangle.north,\n east: rectangle.east,\n south: rectangle.south,\n west: rectangle.west,\n });\n });\n }\n\n setEditable(rectangle: AgmRectangle): Promise<void> {\n return this._rectangles.get(rectangle).then((r) => {\n return r.setEditable(rectangle.editable);\n });\n }\n\n setDraggable(rectangle: AgmRectangle): Promise<void> {\n return this._rectangles.get(rectangle).then((r) => {\n return r.setDraggable(rectangle.draggable);\n });\n }\n\n setVisible(rectangle: AgmRectangle): Promise<void> {\n return this._rectangles.get(rectangle).then((r) => {\n return r.setVisible(rectangle.visible);\n });\n }\n\n createEventObservable<T>(eventName: string, rectangle: AgmRectangle): Observable<T> {\n return Observable.create((observer: Observer<T>) => {\n let listener: mapTypes.MapsEventListener = null;\n this._rectangles.get(rectangle).then((r) => {\n listener = r.addListener(eventName, (e: T) => this._zone.run(() => observer.next(e)));\n });\n\n return () => {\n if (listener !== null) {\n listener.remove();\n }\n };\n });\n }\n}\n","import { isPlatformServer } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Inject, Input, NgZone, OnChanges, OnDestroy, OnInit, Output, PLATFORM_ID, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { MouseEvent } from '../map-types';\nimport { FitBoundsService } from '../services/fit-bounds';\nimport { GoogleMapsAPIWrapper } from '../services/google-maps-api-wrapper';\nimport {\n FullscreenControlOptions, LatLng, LatLngBounds, LatLngBoundsLiteral, LatLngLiteral,\n MapRestriction, MapTypeControlOptions, MapTypeId, MapTypeStyle, Padding, PanControlOptions,\n RotateControlOptions, ScaleControlOptions, StreetViewControlOptions, ZoomControlOptions,\n} from '../services/google-maps-types';\nimport { CircleManager } from '../services/managers/circle-manager';\nimport { InfoWindowManager } from '../services/managers/info-window-manager';\nimport { LayerManager } from '../services/managers/layer-manager';\nimport { MarkerManager } from '../services/managers/marker-manager';\nimport { PolygonManager } from '../services/managers/polygon-manager';\nimport { PolylineManager } from '../services/managers/polyline-manager';\nimport { RectangleManager } from '../services/managers/rectangle-manager';\nimport { DataLayerManager } from './../services/managers/data-layer-manager';\nimport { KmlLayerManager } from './../services/managers/kml-layer-manager';\n\ndeclare var google: any;\n\n/**\n * AgmMap renders a Google Map.\n * **Important note**: To be able see a map in the browser, you have to define a height for the\n * element `agm-map`.\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * styles: [`\n * agm-map {\n * height: 300px;\n * }\n * `],\n * template: `\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * </agm-map>\n * `\n * })\n * ```\n */\n@Component({\n selector: 'agm-map',\n providers: [\n CircleManager,\n DataLayerManager,\n DataLayerManager,\n FitBoundsService,\n GoogleMapsAPIWrapper,\n InfoWindowManager,\n KmlLayerManager,\n LayerManager,\n MarkerManager,\n PolygonManager,\n PolylineManager,\n RectangleManager,\n ],\n host: {\n // todo: deprecated - we will remove it with the next version\n '[class.sebm-google-map-container]': 'true',\n },\n styles: [`\n .agm-map-container-inner {\n width: inherit;\n height: inherit;\n }\n .agm-map-content {\n display:none;\n }\n `],\n template: `\n <div class='agm-map-container-inner sebm-google-map-container-inner'></div>\n <div class='agm-map-content'>\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class AgmMap implements OnChanges, OnInit, OnDestroy {\n /**\n * The longitude that defines the center of the map.\n */\n @Input() longitude = 0;\n\n /**\n * The latitude that defines the center of the map.\n */\n @Input() latitude = 0;\n\n /**\n * The zoom level of the map. The default zoom level is 8.\n */\n @Input() zoom = 8;\n\n /**\n * The minimal zoom level of the map allowed. When not provided, no restrictions to the zoom level\n * are enforced.\n */\n @Input() minZoom: number;\n\n /**\n * The maximal zoom level of the map allowed. When not provided, no restrictions to the zoom level\n * are enforced.\n */\n @Input() maxZoom: number;\n\n /**\n * The control size for the default map controls. Only governs the controls made by the Maps API itself\n */\n @Input() controlSize: number;\n\n /**\n * Enables/disables if map is draggable.\n */\n // tslint:disable-next-line:no-input-rename\n @Input('mapDraggable') draggable = true;\n\n /**\n * Enables/disables zoom and center on double click. Enabled by default.\n */\n @Input() disableDoubleClickZoom = false;\n\n /**\n * Enables/disables all default UI of the Google map. Please note: When the map is created, this\n * value cannot get updated.\n */\n @Input() disableDefaultUI = false;\n\n /**\n * If false, disables scrollwheel zooming on the map. The scrollwheel is enabled by default.\n */\n @Input() scrollwheel = true;\n\n /**\n * Color used for the background of the Map div. This color will be visible when tiles have not\n * yet loaded as the user pans. This option can only be set when the map is initialized.\n */\n @Input() backgroundColor: string;\n\n /**\n * The name or url of the cursor to display when mousing over a draggable map. This property uses\n * the css * cursor attribute to change the icon. As with the css property, you must specify at\n * least one fallback cursor that is not a URL. For example:\n * [draggableCursor]=\"'url(http://www.example.com/icon.png), auto;'\"\n */\n @Input() draggableCursor: string;\n\n /**\n * The name or url of the cursor to display when the map is being dragged. This property uses the\n * css cursor attribute to change the icon. As with the css property, you must specify at least\n * one fallback cursor that is not a URL. For example:\n * [draggingCursor]=\"'url(http://www.example.com/icon.png), auto;'\"\n */\n @Input() draggingCursor: string;\n\n /**\n * If false, prevents the map from being controlled by the keyboard. Keyboard shortcuts are\n * enabled by default.\n */\n @Input() keyboardShortcuts = true;\n\n /**\n * The enabled/disabled state of the Zoom control.\n */\n @Input() zoomControl: boolean;\n\n /**\n * Options for the Zoom control.\n */\n @Input() zoomControlOptions: ZoomControlOptions;\n\n /**\n * Styles to apply to each of the default map types. Note that for Satellite/Hybrid and Terrain\n * modes, these styles will only apply to labels and geometry.\n */\n @Input() styles: MapTypeStyle[] = [];\n\n /**\n * When true and the latitude and/or longitude values changes, the Google Maps panTo method is\n * used to\n * center the map. See: https://developers.google.com/maps/documentation/javascript/reference#Map\n */\n @Input() usePanning = false;\n\n /**\n * The initial enabled/disabled state of the Street View Pegman control.\n * This control is part of the default UI, and should be set to false when displaying a map type\n * on which the Street View road overlay should not appear (e.g. a non-Earth map type).\n */\n @Input() streetViewControl: boolean;\n\n /**\n * Options for the Street View control.\n */\n @Input() streetViewControlOptions: StreetViewControlOptions;\n\n /**\n * Sets the viewport to contain the given bounds.\n * If this option to `true`, the bounds get automatically computed from all elements that use the {@link AgmFitBounds} directive.\n */\n @Input() fitBounds: LatLngBoundsLiteral | LatLngBounds | boolean = false;\n\n /**\n * Padding amount for the bounds.\n */\n @Input() fitBoundsPadding: number | Padding;\n\n /**\n * The initial enabled/disabled state of the Scale control. This is disabled by default.\n */\n @Input() scaleControl = false;\n\n /**\n * Options for the scale control.\n */\n @Input() scaleControlOptions: ScaleControlOptions;\n\n /**\n * The initial enabled/disabled state of the Map type control.\n */\n @Input() mapTypeControl = false;\n\n /**\n * Options for the Map type control.\n */\n @Input() mapTypeControlOptions: MapTypeControlOptions;\n\n /**\n * The initial enabled/disabled state of the Pan control.\n */\n @Input() panControl = false;\n\n /**\n * Options for the Pan control.\n */\n @Input() panControlOptions: PanControlOptions;\n\n /**\n * The initial enabled/disabled state of the Rotate control.\n */\n @Input() rotateControl = false;\n\n /**\n * Options for the Rotate control.\n */\n @Input() rotateControlOptions: RotateControlOptions;\n\n /**\n * The initial enabled/disabled state of the Fullscreen control.\n */\n @Input() fullscreenControl = false;\n\n /**\n * Options for the Fullscreen control.\n */\n @Input() fullscreenControlOptions: FullscreenControlOptions;\n\n /**\n * The map mapTypeId. Defaults to 'roadmap'.\n */\n @Input() mapTypeId: 'roadmap' | 'hybrid' | 'satellite' | 'terrain' | string = 'roadmap';\n\n /**\n * When false, map icons are not clickable. A map icon represents a point of interest,\n * also known as a POI. By default map icons are clickable.\n */\n @Input() clickableIcons = true;\n\n /**\n * A map icon represents a point of interest, also known as a POI.\n * When map icons are clickable by default, an info window is displayed.\n * When this property is set to false, the info window will not be shown but the click event\n * will still fire\n */\n @Input() showDefaultInfoWindow = true;\n\n /**\n * This setting controls how gestures on the map are handled.\n * Allowed values:\n * - 'cooperative' (Two-finger touch gestures pan and zoom the map. One-finger touch gestures are not handled by the map.)\n * - 'greedy' (All touch gestures pan or zoom the map.)\n * - 'none' (The map cannot be panned or zoomed by user gestures.)\n * - 'auto' [default] (Gesture handling is either cooperative or greedy, depending on whether the page is scrollable or not.\n */\n @Input() gestureHandling: 'cooperative' | 'greedy' | 'none' | 'auto' = 'auto';\n\n /**\n * Controls the automatic switching behavior for the angle of incidence of\n * the map. The only allowed values are 0 and 45. The value 0 causes the map\n * to always use a 0° overhead view regardless of the zoom level and\n * viewport. The value 45 causes the tilt angle to automatically switch to\n * 45 whenever 45° imagery is available for the current zoom level and\n * viewport, and switch back to 0 whenever 45° imagery is not available\n * (this is the default behavior). 45° imagery is only available for\n * satellite and hybrid map types, within some locations, and at some zoom\n * levels. Note: getTilt returns the current tilt angle, not the value\n * specified by this option. Because getTilt and this option refer to\n * different things, do not bind() the tilt property; doing so may yield\n * unpredictable effects. (Default of AGM is 0 (disabled). Enable it with value 45.)\n */\n @Input() tilt = 0;\n\n /**\n * Options for restricting the bounds of the map.\n * User cannot pan or zoom away from restricted area.\n */\n @Input() restriction: MapRestriction;\n /**\n * Map option attributes that can change over time\n */\n private static _mapOptionsAttributes: string[] = [\n 'disableDoubleClickZoom', 'scrollwheel', 'draggable', 'draggableCursor', 'draggingCursor',\n 'keyboardShortcuts', 'zoomControl', 'zoomControlOptions', 'styles', 'streetViewControl',\n 'streetViewControlOptions', 'zoom', 'mapTypeControl', 'mapTypeControlOptions', 'minZoom',\n 'maxZoom', 'panControl', 'panControlOptions', 'rotateControl', 'rotateControlOptions',\n 'fullscreenControl', 'fullscreenControlOptions', 'scaleControl', 'scaleControlOptions',\n 'mapTypeId', 'clickableIcons', 'gestureHandling', 'tilt', 'restriction',\n ];\n\n private _observableSubscriptions: Subscription[] = [];\n private _fitBoundsSubscription: Subscription;\n\n /**\n * This event emitter gets emitted when the user clicks on the map (but not when they click on a\n * marker or infoWindow).\n */\n @Output() mapClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event emitter gets emitted when the user right-clicks on the map (but not when they click\n * on a marker or infoWindow).\n */\n @Output() mapRightClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event emitter gets emitted when the user double-clicks on the map (but not when they click\n * on a marker or infoWindow).\n */\n @Output() mapDblClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event emitter is fired when the map center changes.\n */\n @Output() centerChange: EventEmitter<LatLngLiteral> = new EventEmitter<LatLngLiteral>();\n\n /**\n * This event is fired when the viewport bounds have changed.\n */\n @Output() boundsChange: EventEmitter<LatLngBounds> = new EventEmitter<LatLngBounds>();\n\n /**\n * This event is fired when the mapTypeId property changes.\n */\n @Output() mapTypeIdChange: EventEmitter<MapTypeId> = new EventEmitter<MapTypeId>();\n\n /**\n * This event is fired when the map becomes idle after panning or zooming.\n */\n @Output() idle: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * This event is fired when the zoom level has changed.\n */\n @Output() zoomChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * This event is fired when the google map is fully initialized.\n * You get the google.maps.Map instance as a result of this EventEmitter.\n */\n @Output() mapReady: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * This event is fired when the visible tiles have finished loading.\n */\n @Output() tilesLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _elem: ElementRef,\n private _mapsWrapper: GoogleMapsAPIWrapper,\n @Inject(PLATFORM_ID) private _platformId: Object,\n protected _fitBoundsService: FitBoundsService,\n private _zone: NgZone\n ) {}\n\n /** @internal */\n ngOnInit() {\n if (isPlatformServer(this._platformId)) {\n // The code is running on the server, do nothing\n return;\n }\n // todo: this should be solved with a new component and a viewChild decorator\n const container = this._elem.nativeElement.querySelector('.agm-map-container-inner');\n this._initMapInstance(container);\n }\n\n private _initMapInstance(el: HTMLElement) {\n this._mapsWrapper.createMap(el, {\n center: {lat: this.latitude || 0, lng: this.longitude || 0},\n zoom: this.zoom,\n minZoom: this.minZoom,\n maxZoom: this.maxZoom,\n controlSize: this.controlSize,\n disableDefaultUI: this.disableDefaultUI,\n disableDoubleClickZoom: this.disableDoubleClickZoom,\n scrollwheel: this.scrollwheel,\n backgroundColor: this.backgroundColor,\n draggable: this.draggable,\n draggableCursor: this.draggableCursor,\n draggingCursor: this.draggingCursor,\n keyboardShortcuts: this.keyboardShortcuts,\n styles: this.styles,\n zoomControl: this.zoomControl,\n zoomControlOptions: this.zoomControlOptions,\n streetViewControl: this.streetViewControl,\n streetViewControlOptions: this.streetViewControlOptions,\n scaleControl: this.scaleControl,\n scaleControlOptions: this.scaleControlOptions,\n mapTypeControl: this.mapTypeControl,\n mapTypeControlOptions: this.mapTypeControlOptions,\n panControl: this.panControl,\n panControlOptions: this.panControlOptions,\n rotateControl: this.rotateControl,\n rotateControlOptions: this.rotateControlOptions,\n fullscreenControl: this.fullscreenControl,\n fullscreenControlOptions: this.fullscreenControlOptions,\n mapTypeId: this.mapTypeId,\n clickableIcons: this.clickableIcons,\n gestureHandling: this.gestureHandling,\n tilt: this.tilt,\n restriction: this.restriction,\n })\n .then(() => this._mapsWrapper.getNativeMap())\n .then(map => this.mapReady.emit(map));\n\n // register event listeners\n this._handleMapCenterChange();\n this._handleMapZoomChange();\n this._handleMapMouseEvents();\n this._handleBoundsChange();\n this._handleMapTypeIdChange();\n this._handleTilesLoadedEvent();\n this._handleIdleEvent();\n }\n\n /** @internal */\n ngOnDestroy() {\n // unsubscribe all registered observable subscriptions\n this._observableSubscriptions.forEach((s) => s.unsubscribe());\n\n // remove all listeners from the map instance\n this._mapsWrapper.clearInstanceListeners();\n if (this._fitBoundsSubscription) {\n this._fitBoundsSubscription.unsubscribe();\n }\n }\n\n /* @internal */\n ngOnChanges(changes: SimpleChanges) {\n this._updateMapOptionsChanges(changes);\n this._updatePosition(changes);\n }\n\n private _updateMapOptionsChanges(changes: SimpleChanges) {\n let options: {[propName: string]: any} = {};\n let optionKeys =\n Object.keys(changes).filter(k => AgmMap._mapOptionsAttributes.indexOf(k) !== -1);\n optionKeys.forEach((k) => { options[k] = changes[k].currentValue; });\n this._mapsWrapper.setMapOptions(options);\n }\n\n /**\n * Triggers a resize event on the google map instance.\n * When recenter is true, the of the google map gets called with the current lat/lng values or fitBounds value to recenter the map.\n * Returns a promise that gets resolved after the event was triggered.\n */\n triggerResize(recenter: boolean = true): Promise<void> {\n // Note: When we would trigger the resize event and show the map in the same turn (which is a\n // common case for triggering a resize event), then the resize event would not\n // work (to show the map), so we trigger the event in a timeout.\n return new Promise<void>((resolve) => {\n setTimeout(() => {\n return this._mapsWrapper.triggerMapEvent('resize').then(() => {\n if (recenter) {\n this.fitBounds != null ? this._fitBounds() : this._setCenter();\n }\n resolve();\n });\n });\n });\n }\n\n private _updatePosition(changes: SimpleChanges) {\n if (changes['latitude'] == null && changes['longitude'] == null &&\n !changes['fitBounds']) {\n // no position update needed\n return;\n }\n\n // we prefer fitBounds in changes\n if ('fitBounds' in changes) {\n this._fitBounds();\n return;\n }\n\n if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\n return;\n }\n this._setCenter();\n }\n\n private _setCenter() {\n let newCenter = {\n lat: this.latitude,\n lng: this.longitude,\n };\n if (this.usePanning) {\n this._mapsWrapper.panTo(newCenter);\n } else {\n this._mapsWrapper.setCenter(newCenter);\n }\n }\n\n private _fitBounds() {\n switch (this.fitBounds) {\n case true:\n this._subscribeToFitBoundsUpdates();\n break;\n case false:\n if (this._fitBoundsSubscription) {\n this._fitBoundsSubscription.unsubscribe();\n }\n break;\n default:\n this._updateBounds(this.fitBounds, this.fitBoundsPadding);\n }\n }\n\n private _subscribeToFitBoundsUpdates() {\n this._zone.runOutsideAngular(() => {\n this._fitBoundsSubscription = this._fitBoundsService.getBounds$().subscribe(b => {\n this._zone.run(() => this._updateBounds(b, this.fitBoundsPadding));\n });\n });\n }\n\n protected _updateBounds(bounds: LatLngBounds | LatLngBoundsLiteral, padding?: number | Padding) {\n if (!bounds) {\n return;\n }\n if (this._isLatLngBoundsLiteral(bounds) && typeof google !== 'undefined' && google && google.maps && google.maps.LatLngBounds) {\n const newBounds = new google.maps.LatLngBounds();\n newBounds.union(bounds);\n bounds = newBounds;\n }\n if (this.usePanning) {\n this._mapsWrapper.panToBounds(bounds, padding);\n return;\n }\n this._mapsWrapper.fitBounds(bounds, padding);\n }\n\n private _isLatLngBoundsLiteral(bounds: LatLngBounds | LatLngBoundsLiteral): bounds is LatLngBoundsLiteral {\n return bounds != null && (bounds as any).extend === undefined;\n }\n\n private _handleMapCenterChange() {\n const s = this._mapsWrapper.subscribeToMapEvent<void>('center_changed').subscribe(() => {\n this._mapsWrapper.getCenter().then((center: LatLng) => {\n this.latitude = center.lat();\n this.longitude = center.lng();\n this.centerChange.emit({lat: this.latitude, lng: this.longitude} as LatLngLiteral);\n });\n });\n this._observableSubscriptions.push(s);\n }\n\n private _handleBoundsChange() {\n const s = this._mapsWrapper.subscribeToMapEvent<void>('bounds_changed').subscribe(() => {\n this._mapsWrapper.getBounds().then(\n (bounds: LatLngBounds) => { this.boundsChange.emit(bounds); });\n });\n this._observableSubscriptions.push(s);\n }\n\n private _handleMapTypeIdChange() {\n const s = this._mapsWrapper.subscribeToMapEvent<void>('maptypeid_changed').subscribe(() => {\n this._mapsWrapper.getMapTypeId().then(\n (mapTypeId: MapTypeId) => { this.mapTypeIdChange.emit(mapTypeId); });\n });\n this._observableSubscriptions.push(s);\n }\n\n private _handleMapZoomChange() {\n const s = this._mapsWrapper.subscribeToMapEvent<void>('zoom_changed').subscribe(() => {\n this._mapsWrapper.getZoom().then((z: number) => {\n this.zoom = z;\n this.zoomChange.emit(z);\n });\n });\n this._observableSubscriptions.push(s);\n }\n\n private _handleIdleEvent() {\n const s = this._mapsWrapper.subscribeToMapEvent<void>('idle').subscribe(\n () => { this.idle.emit(void 0); });\n this._observableSubscriptions.push(s);\n }\n\n private _handleTilesLoadedEvent() {\n const s = this._mapsWrapper.subscribeToMapEvent<void>('tilesloaded').subscribe(\n () => this.tilesLoaded.emit(void 0),\n );\n this._observableSubscriptions.push(s);\n }\n\n private _handleMapMouseEvents() {\n interface Emitter {\n emit(value: any): void;\n }\n\n type Event = { name: string, emitter: Emitter };\n\n const events: Event[] = [\n {name: 'click', emitter: this.mapClick},\n {name: 'rightclick', emitter: this.mapRightClick},\n {name: 'dblclick', emitter: this.mapDblClick},\n ];\n\n events.forEach((e: Event) => {\n const s = this._mapsWrapper.subscribeToMapEvent<{latLng: LatLng}>(e.name).subscribe(\n (event: {latLng: LatLng}) => {\n let value: MouseEvent = {\n coords: {\n lat: event.latLng.lat(),\n lng: event.latLng.lng(),\n },\n placeId: (event as {latLng: LatLng, placeId: string}).placeId,\n };\n // the placeId will be undefined in case the event was not an IconMouseEvent (google types)\n if (value.placeId && !this.showDefaultInfoWindow) {\n (event as any).stop();\n }\n e.emitter.emit(value);\n });\n this._observableSubscriptions.push(s);\n });\n }\n}\n","import { AfterContentInit, ContentChildren, Directive, EventEmitter, forwardRef, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChange } from '@angular/core';\nimport { Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { MouseEvent } from '../map-types';\nimport { FitBoundsAccessor, FitBoundsDetails } from '../services/fit-bounds';\nimport * as mapTypes from '../services/google-maps-types';\nimport { MarkerManager } from '../services/managers/marker-manager';\nimport { AgmInfoWindow } from './info-window';\n\nlet markerId = 0;\n\n/**\n * AgmMarker renders a map marker inside a {@link AgmMap}.\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * styles: [`\n * .agm-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <agm-marker [latitude]=\"lat\" [longitude]=\"lng\" [label]=\"'M'\">\n * </agm-marker>\n * </agm-map>\n * `\n * })\n * ```\n */\n@Directive({\n selector: 'agm-marker',\n providers: [\n { provide: FitBoundsAccessor, useExisting: forwardRef(() => AgmMarker) },\n ],\n inputs: [\n 'latitude', 'longitude', 'title', 'label', 'draggable: markerDraggable', 'iconUrl',\n 'openInfoWindow', 'opacity', 'visible', 'zIndex', 'animation',\n ],\n outputs: ['markerClick', 'dragStart', 'drag', 'dragEnd', 'mouseOver', 'mouseOut'],\n})\nexport class AgmMarker implements OnDestroy, OnChanges, AfterContentInit, FitBoundsAccessor {\n /**\n * The latitude position of the marker.\n */\n @Input() latitude: number;\n\n /**\n * The longitude position of the marker.\n */\n @Input() longitude: number;\n\n /**\n * The title of the marker.\n */\n @Input() title: string;\n\n /**\n * The label (a single uppercase character) for the marker.\n */\n @Input() label: string | mapTypes.MarkerLabel;\n\n /**\n * If true, the marker can be dragged. Default value is false.\n */\n // tslint:disable-next-line:no-input-rename\n @Input('markerDraggable') draggable = false;\n\n /**\n * Icon (the URL of the image) for the foreground.\n */\n @Input() iconUrl: string;\n\n /**\n * If true, the marker is visible\n */\n @Input() visible = true;\n\n /**\n * Whether to automatically open the child info window when the marker is clicked.\n */\n @Input() openInfoWindow = true;\n\n /**\n * The marker's opacity between 0.0 and 1.0.\n */\n @Input() opacity = 1;\n\n /**\n * All markers are displayed on the map in order of their zIndex, with higher values displaying in\n * front of markers with lower values. By default, markers are displayed according to their\n * vertical position on screen, with lower markers appearing in front of markers further up the\n * screen.\n */\n @Input() zIndex = 1;\n\n /**\n * If true, the marker can be clicked. Default value is true.\n */\n // tslint:disable-next-line:no-input-rename\n @Input('markerClickable') clickable = true;\n\n /**\n * Which animation to play when marker is added to a map.\n * This can be 'BOUNCE' or 'DROP'\n */\n @Input() animation: Animation;\n\n /**\n * This event is fired when the marker's animation property changes.\n *\n * @memberof AgmMarker\n */\n @Output() animationChange = new EventEmitter<Animation>();\n\n /**\n * This event emitter gets emitted when the user clicks on the marker.\n */\n @Output() markerClick: EventEmitter<AgmMarker> = new EventEmitter<AgmMarker>();\n\n /**\n * This event emitter gets emitted when the user clicks twice on the marker.\n */\n @Output() markerDblClick: EventEmitter<AgmMarker> = new EventEmitter<AgmMarker>();\n\n /**\n * This event is fired when the user rightclicks on the marker.\n */\n @Output() markerRightClick: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * This event is fired when the user starts dragging the marker.\n */\n @Output() dragStart: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is repeatedly fired while the user drags the marker.\n */\n @Output() drag: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user stops dragging the marker.\n */\n @Output() dragEnd: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user mouses over the marker.\n */\n @Output() mouseOver: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user mouses outside the marker.\n */\n @Output() mouseOut: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /** @internal */\n @ContentChildren(AgmInfoWindow) infoWindow: QueryList<AgmInfoWindow> = new QueryList<AgmInfoWindow>();\n\n private _markerAddedToManger = false;\n private _id: string;\n private _observableSubscriptions: Subscription[] = [];\n\n protected readonly _fitBoundsDetails$: ReplaySubject<FitBoundsDetails> = new ReplaySubject<FitBoundsDetails>(1);\n\n constructor(private _markerManager: MarkerManager) { this._id = (markerId++).toString(); }\n\n /* @internal */\n ngAfterContentInit() {\n this.handleInfoWindowUpdate();\n this.infoWindow.changes.subscribe(() => this.handleInfoWindowUpdate());\n }\n\n private handleInfoWindowUpdate() {\n if (this.infoWindow.length > 1) {\n throw new Error('Expected no more than one info window.');\n }\n this.infoWindow.forEach(marker => {\n marker.hostMarker = this;\n });\n }\n\n /** @internal */\n ngOnChanges(changes: { [key: string]: SimpleChange }) {\n if (typeof this.latitude === 'string') {\n this.latitude = Number(this.latitude);\n }\n if (typeof this.longitude === 'string') {\n this.longitude = Number(this.longitude);\n }\n if (typeof this.latitude !== 'number' || typeof this.longitude !== 'number') {\n return;\n }\n if (!this._markerAddedToManger) {\n this._markerManager.addMarker(this);\n this._updateFitBoundsDetails();\n this._markerAddedToManger = true;\n this._addEventListeners();\n return;\n }\n if (changes['latitude'] || changes['longitude']) {\n this._markerManager.updateMarkerPosition(this);\n this._updateFitBoundsDetails();\n }\n if (changes['title']) {\n this._markerManager.updateTitle(this);\n }\n if (changes['label']) {\n this._markerManager.updateLabel(this);\n }\n if (changes['draggable']) {\n this._markerManager.updateDraggable(this);\n }\n if (changes['iconUrl']) {\n this._markerManager.updateIcon(this);\n }\n if (changes['opacity']) {\n this._markerManager.updateOpacity(this);\n }\n if (changes['visible']) {\n this._markerManager.updateVisible(this);\n }\n if (changes['zIndex']) {\n this._markerManager.updateZIndex(this);\n }\n if (changes['clickable']) {\n this._markerManager.updateClickable(this);\n }\n if (changes['animation']) {\n this._markerManager.updateAnimation(this);\n }\n }\n\n /** @internal */\n getFitBoundsDetails$(): Observable<FitBoundsDetails> {\n return this._fitBoundsDetails$.asObservable();\n }\n\n protected _updateFitBoundsDetails() {\n this._fitBoundsDetails$.next({ latLng: { lat: this.latitude, lng: this.longitude } });\n }\n\n private _addEventListeners() {\n const cs = this._markerManager.createEventObservable('click', this).subscribe(() => {\n if (this.openInfoWindow) {\n this.infoWindow.forEach(infoWindow => infoWindow.open());\n }\n this.markerClick.emit(this);\n });\n this._observableSubscriptions.push(cs);\n\n const dcs = this._markerManager.createEventObservable('dblclick', this).subscribe(() => {\n this.markerDblClick.emit(null);\n });\n this._observableSubscriptions.push(dcs);\n\n const rc = this._markerManager.createEventObservable('rightclick', this).subscribe(() => {\n this.markerRightClick.emit(null);\n });\n this._observableSubscriptions.push(rc);\n\n const ds =\n this._markerManager.createEventObservable<mapTypes.MouseEvent>('dragstart', this)\n .subscribe((e: mapTypes.MouseEvent) => {\n this.dragStart.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } } as MouseEvent);\n });\n this._observableSubscriptions.push(ds);\n\n const d =\n this._markerManager.createEventObservable<mapTypes.MouseEvent>('drag', this)\n .subscribe((e: mapTypes.MouseEvent) => {\n this.drag.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } } as MouseEvent);\n });\n this._observableSubscriptions.push(d);\n\n const de =\n this._markerManager.createEventObservable<mapTypes.MouseEvent>('dragend', this)\n .subscribe((e: mapTypes.MouseEvent) => {\n this.dragEnd.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } } as MouseEvent);\n });\n this._observableSubscriptions.push(de);\n\n const mover =\n this._markerManager.createEventObservable<mapTypes.MouseEvent>('mouseover', this)\n .subscribe((e: mapTypes.MouseEvent) => {\n this.mouseOver.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } } as MouseEvent);\n });\n this._observableSubscriptions.push(mover);\n\n const mout =\n this._markerManager.createEventObservable<mapTypes.MouseEvent>('mouseout', this)\n .subscribe((e: mapTypes.MouseEvent) => {\n this.mouseOut.emit({ coords: { lat: e.latLng.lat(), lng: e.latLng.lng() } } as MouseEvent);\n });\n this._observableSubscriptions.push(mout);\n\n const anChng =\n this._markerManager.createEventObservable<void>('animation_changed', this)\n .subscribe(() => {\n this.animationChange.emit(this.animation);\n });\n this._observableSubscriptions.push(anChng);\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n toString(): string { return 'AgmMarker-' + this._id.toString(); }\n\n /** @internal */\n ngOnDestroy() {\n this._markerManager.deleteMarker(this);\n // unsubscribe all registered observable subscriptions\n this._observableSubscriptions.forEach((s) => s.unsubscribe());\n }\n}\n\nexport type Animation = 'BOUNCE' | 'DROP' | null;\n","import { AfterContentInit, Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { LatLng, LatLngLiteral, PolygonOptions, PolyMouseEvent } from '../services/google-maps-types';\nimport { PolygonManager } from '../services/managers/polygon-manager';\nimport { MvcEventType } from '../utils/mvcarray-utils';\n\n/**\n * AgmPolygon renders a polygon on a {@link AgmMap}\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * styles: [`\n * agm-map {\n * height: 300px;\n * }\n * `],\n * template: `\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <agm-polygon [paths]=\"paths\">\n * </agm-polygon>\n * </agm-map>\n * `\n * })\n * export class MyMapCmp {\n * lat: number = 0;\n * lng: number = 0;\n * zoom: number = 10;\n * paths: Array<LatLngLiteral> = [\n * { lat: 0, lng: 10 },\n * { lat: 0, lng: 20 },\n * { lat: 10, lng: 20 },\n * { lat: 10, lng: 10 },\n * { lat: 0, lng: 10 }\n * ]\n * // Nesting paths will create a hole where they overlap;\n * nestedPaths: Array<Array<LatLngLiteral>> = [[\n * { lat: 0, lng: 10 },\n * { lat: 0, lng: 20 },\n * { lat: 10, lng: 20 },\n * { lat: 10, lng: 10 },\n * { lat: 0, lng: 10 }\n * ], [\n * { lat: 0, lng: 15 },\n * { lat: 0, lng: 20 },\n * { lat: 5, lng: 20 },\n * { lat: 5, lng: 15 },\n * { lat: 0, lng: 15 }\n * ]]\n * }\n * ```\n */\n@Directive({\n selector: 'agm-polygon',\n})\nexport class AgmPolygon implements OnDestroy, OnChanges, AfterContentInit {\n /**\n * Indicates whether this Polygon handles mouse events. Defaults to true.\n */\n @Input() clickable = true;\n\n /**\n * If set to true, the user can drag this shape over the map. The geodesic\n * property defines the mode of dragging. Defaults to false.\n */\n // tslint:disable-next-line:no-input-rename\n @Input('polyDraggable') draggable = false;\n\n /**\n * If set to true, the user can edit this shape by dragging the control\n * points shown at the vertices and on each segment. Defaults to false.\n */\n @Input() editable = false;\n\n /**\n * The fill color. All CSS3 colors are supported except for extended\n * named colors.\n */\n @Input() fillColor: string;\n\n /**\n * The fill opacity between 0.0 and 1.0\n */\n @Input() fillOpacity: number;\n\n /**\n * When true, edges of the polygon are interpreted as geodesic and will\n * follow the curvature of the Earth. When false, edges of the polygon are\n * rendered as straight lines in screen space. Note that the shape of a\n * geodesic polygon may appear to change when dragged, as the dimensions\n * are maintained relative to the surface of the earth. Defaults to false.\n */\n @Input() geodesic = false;\n\n /**\n * The ordered sequence of coordinates that designates a closed loop.\n * Unlike polylines, a polygon may consist of one or more paths.\n * As a result, the paths property may specify one or more arrays of\n * LatLng coordinates. Paths are closed automatically; do not repeat the\n * first vertex of the path as the last vertex. Simple polygons may be\n * defined using a single array of LatLngs. More complex polygons may\n * specify an array of arrays. Any simple arrays are converted into Arrays.\n * Inserting or removing LatLngs from the Array will automatically update\n * the polygon on the map.\n */\n @Input() paths: Array<LatLng | LatLngLiteral> | Array<Array<LatLng | LatLngLiteral>> = [];\n\n /**\n * The stroke color. All CSS3 colors are supported except for extended\n * named colors.\n */\n @Input() strokeColor: string;\n\n /**\n * The stroke opacity between 0.0 and 1.0\n */\n @Input() strokeOpacity: number;\n\n /**\n * The stroke width in pixels.\n */\n @Input() strokeWeight: number;\n\n /**\n * Whether this polygon is visible on the map. Defaults to true.\n */\n @Input() visible: boolean;\n\n /**\n * The zIndex compared to other polys.\n */\n @Input() zIndex: number;\n\n /**\n * This event is fired when the DOM click event is fired on the Polygon.\n */\n @Output() polyClick: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired when the DOM dblclick event is fired on the Polygon.\n */\n @Output() polyDblClick: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is repeatedly fired while the user drags the polygon.\n */\n @Output() polyDrag: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user stops dragging the polygon.\n */\n @Output() polyDragEnd: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user starts dragging the polygon.\n */\n @Output() polyDragStart: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mousedown event is fired on the Polygon.\n */\n @Output() polyMouseDown: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired when the DOM mousemove event is fired on the Polygon.\n */\n @Output() polyMouseMove: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired on Polygon mouseout.\n */\n @Output() polyMouseOut: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired on Polygon mouseover.\n */\n @Output() polyMouseOver: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired whe the DOM mouseup event is fired on the Polygon\n */\n @Output() polyMouseUp: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired when the Polygon is right-clicked on.\n */\n @Output() polyRightClick: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired after Polygon first path changes.\n */\n @Output() polyPathsChange = new EventEmitter<PolygonPathEvent<any>>();\n\n private static _polygonOptionsAttributes: Array<string> = [\n 'clickable', 'draggable', 'editable', 'fillColor', 'fillOpacity', 'geodesic', 'icon', 'map',\n 'paths', 'strokeColor', 'strokeOpacity', 'strokeWeight', 'visible', 'zIndex', 'draggable',\n 'editable', 'visible',\n ];\n\n private _id: string;\n private _polygonAddedToManager = false;\n private _subscriptions: Subscription[] = [];\n\n constructor(private _polygonManager: PolygonManager) { }\n\n /** @internal */\n ngAfterContentInit() {\n if (!this._polygonAddedToManager) {\n this._init();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): any {\n if (!this._polygonAddedToManager) {\n this._init();\n return;\n }\n\n this._polygonManager.setPolygonOptions(this, this._updatePolygonOptions(changes));\n }\n\n private _init() {\n this._polygonManager.addPolygon(this);\n this._polygonAddedToManager = true;\n this._addEventListeners();\n }\n\n private _addEventListeners() {\n const handlers = [\n { name: 'click', handler: (ev: PolyMouseEvent) => this.polyClick.emit(ev) },\n { name: 'dblclick', handler: (ev: PolyMouseEvent) => this.polyDblClick.emit(ev) },\n { name: 'drag', handler: (ev: MouseEvent) => this.polyDrag.emit(ev) },\n { name: 'dragend', handler: (ev: MouseEvent) => this.polyDragEnd.emit(ev) },\n { name: 'dragstart', handler: (ev: MouseEvent) => this.polyDragStart.emit(ev) },\n { name: 'mousedown', handler: (ev: PolyMouseEvent) => this.polyMouseDown.emit(ev) },\n { name: 'mousemove', handler: (ev: PolyMouseEvent) => this.polyMouseMove.emit(ev) },\n { name: 'mouseout', handler: (ev: PolyMouseEvent) => this.polyMouseOut.emit(ev) },\n { name: 'mouseover', handler: (ev: PolyMouseEvent) => this.polyMouseOver.emit(ev) },\n { name: 'mouseup', handler: (ev: PolyMouseEvent) => this.polyMouseUp.emit(ev) },\n { name: 'rightclick', handler: (ev: PolyMouseEvent) => this.polyRightClick.emit(ev) },\n ];\n handlers.forEach((obj) => {\n const os = this._polygonManager.createEventObservable(obj.name, this).subscribe(obj.handler);\n this._subscriptions.push(os);\n });\n\n this._polygonManager.createPathEventObservable(this)\n .then(paths$ => {\n const os = paths$.subscribe(pathEvent => this.polyPathsChange.emit(pathEvent));\n this._subscriptions.push(os);\n });\n }\n\n private _updatePolygonOptions(changes: SimpleChanges): PolygonOptions {\n return Object.keys(changes)\n .filter(k => AgmPolygon._polygonOptionsAttributes.indexOf(k) !== -1)\n .reduce((obj: any, k: string) => {\n obj[k] = changes[k].currentValue;\n return obj;\n }, {});\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n ngOnDestroy() {\n this._polygonManager.deletePolygon(this);\n // unsubscribe all registered observable subscriptions\n this._subscriptions.forEach((s) => s.unsubscribe());\n }\n\n getPath(): Promise<Array<LatLng>> {\n return this._polygonManager.getPath(this);\n }\n\n getPaths(): Promise<Array<Array<LatLng>>> {\n return this._polygonManager.getPaths(this);\n }\n}\n\nexport interface PolygonPathEvent<T extends (LatLng | Array<LatLng>)> {\n newArr: LatLng[][];\n eventName: MvcEventType;\n index: number;\n previous?: T;\n}\n\nexport interface PathCollectionChangePolygonPathEvent extends PolygonPathEvent <Array<LatLng>>{\n}\n\nexport interface PathChangePolygonPathEvent extends PolygonPathEvent<LatLng> {\n pathIndex: number;\n}\n","import { Directive, Input, OnInit } from '@angular/core';\n\n/**\n * AgmPolylineIcon enables to add polyline sequences to add arrows, circle,\n * or custom icons either along the entire line, or in a specific part of it.\n * See https://developers.google.com/maps/documentation/javascript/shapes#polyline_customize\n *\n * ### Example\n * ```html\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <agm-polyline>\n * <agm-icon-sequence [fixedRotation]=\"true\" [path]=\"'FORWARD_OPEN_ARROW'\">\n * </agm-icon-sequence>\n * </agm-polyline>\n * </agm-map>\n * ```\n *\n * @export\n * @class AgmPolylineIcon\n */\n@Directive({selector: 'agm-polyline agm-icon-sequence'})\nexport class AgmPolylineIcon implements OnInit{\n\n /**\n * If `true`, each icon in the sequence has the same fixed rotation regardless of the\n * angle of the edge on which it lies. Defaults to `false`, in which case each icon\n * in the sequence is rotated to align with its edge.\n *\n * @type {boolean}\n * @memberof AgmPolylineIcon\n */\n @Input() fixedRotation: boolean;\n\n /**\n * The distance from the start of the line at which an icon is to be rendered. This\n * distance may be expressed as a percentage of line's length (e.g. '50%') or in pixels\n * (e.g. '50px'). Defaults to '100%'.\n *\n * @type {string}\n * @memberof AgmPolylineIcon\n */\n @Input() offset: string;\n\n /**\n * The distance between consecutive icons on the line. This distance may be expressed as\n * a percentage of the line's length (e.g. '50%') or in pixels (e.g. '50px'). To disable\n * repeating of the icon, specify '0'. Defaults to '0'.\n *\n * @type {string}\n * @memberof AgmPolylineIcon\n */\n @Input() repeat: string;\n\n /**\n * The x coordinate of the position of the symbol relative to the polyline. The coordinate\n * of the symbol's path is translated _left_ by the anchor's x coordinate. By default, a\n * symbol is anchored at (0, 0). The position is expressed in the same coordinate system as the\n * symbol's path.\n *\n * @type {number}\n * @memberof AgmPolylineIcon\n */\n @Input() anchorX: number;\n\n /**\n * The y coordinate of the position of the symbol relative to the polyline. The coordinate\n * of the symbol's path is translated _up_ by the anchor's y coordinate. By default, a\n * symbol is anchored at (0, 0). The position is expressed in the same coordinate system as the\n * symbol's path.\n *\n * @type {number}\n * @memberof AgmPolylineIcon\n */\n @Input() anchorY: number;\n\n /**\n * The symbol's fill color. All CSS3 colors are supported except for extended named\n * colors. Defaults to the stroke color of the corresponding polyline.\n *\n * @type {string}\n * @memberof AgmPolylineIcon\n */\n @Input() fillColor: string;\n\n /**\n * The symbol's fill opacity. Defaults to 0.\n */\n @Input() fillOpacity: number;\n\n /**\n * The symbol's path, which is a built-in symbol path, or a custom path expressed using\n * SVG path notation. Required.\n *\n * @type {SymbolPath}\n * @memberof AgmPolylineIcon\n */\n @Input() path: 'CIRCLE' | 'BACKWARD_CLOSED_ARROW' | 'BACKWARD_OPEN_ARROW' | 'FORWARD_CLOSED_ARROW' |\n 'FORWARD_OPEN_ARROW' | string;\n\n /**\n * The angle by which to rotate the symbol, expressed clockwise in degrees.\n * Defaults to 0. A symbol where `fixedRotation` is `false` is rotated relative to\n * the angle of the edge on which it lies.\n *\n * @type {number}\n * @memberof AgmPolylineIcon\n */\n @Input() rotation: number;\n\n /**\n * The amount by which the symbol is scaled in size. Defaults to the stroke weight\n * of the polyline; after scaling, the symbol must lie inside a square 22 pixels in\n * size centered at the symbol's anchor.\n *\n * @type {number}\n * @memberof AgmPolylineIcon\n */\n @Input() scale: number;\n\n /**\n * The symbol's stroke color. All CSS3 colors are supported except for extended named\n * colors. Defaults to the stroke color of the polyline.\n *\n * @type {string}\n * @memberof AgmPolylineIcon\n */\n @Input() strokeColor: string;\n\n /**\n * The symbol's stroke opacity. Defaults to the stroke opacity of the polyline.\n *\n * @type {number}\n * @memberof AgmPolylineIcon\n */\n @Input() strokeOpacity: number;\n\n /**\n * The symbol's stroke weight. Defaults to the scale of the symbol.\n *\n * @type {number}\n * @memberof AgmPolylineIcon\n */\n @Input() strokeWeight: number;\n\n ngOnInit(): void {\n if (this.path == null) {\n throw new Error('Icon Sequence path is required');\n }\n }\n}\n","import { Directive, EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { LatLngLiteral } from '../../core/services/google-maps-types';\nimport { FitBoundsAccessor, FitBoundsDetails } from '../services/fit-bounds';\n\n/**\n * AgmPolylinePoint represents one element of a polyline within a {@link\n * AgmPolyline}\n */\n@Directive({\n selector: 'agm-polyline-point',\n providers: [\n {provide: FitBoundsAccessor, useExisting: forwardRef(() => AgmPolylinePoint)},\n ],\n})\nexport class AgmPolylinePoint implements OnChanges, FitBoundsAccessor {\n /**\n * The latitude position of the point.\n */\n @Input() public latitude: number;\n\n /**\n * The longitude position of the point;\n */\n @Input() public longitude: number;\n\n /**\n * This event emitter gets emitted when the position of the point changed.\n */\n @Output() positionChanged: EventEmitter<LatLngLiteral> = new EventEmitter<LatLngLiteral>();\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges): any {\n if (changes['latitude'] || changes['longitude']) {\n const position: LatLngLiteral = {\n lat: changes['latitude'] ? changes['latitude'].currentValue : this.latitude,\n lng: changes['longitude'] ? changes['longitude'].currentValue : this.longitude,\n } as LatLngLiteral;\n this.positionChanged.emit(position);\n }\n }\n\n /** @internal */\n getFitBoundsDetails$(): Observable<FitBoundsDetails> {\n return this.positionChanged.pipe(\n startWith({lat: this.latitude, lng: this.longitude}),\n map(position => ({latLng: position}))\n );\n }\n}\n","import { AfterContentInit, ContentChildren, Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChanges } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { LatLng, PolyMouseEvent } from '../services/google-maps-types';\nimport { PolylineManager } from '../services/managers/polyline-manager';\nimport { AgmPolylineIcon } from './polyline-icon';\nimport { AgmPolylinePoint } from './polyline-point';\n\nlet polylineId = 0;\n/**\n * AgmPolyline renders a polyline on a {@link AgmMap}\n *\n * ### Example\n * ```typescript\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-map-cmp',\n * styles: [`\n * .agm-map-container {\n * height: 300px;\n * }\n * `],\n * template: `\n * <agm-map [latitude]=\"lat\" [longitude]=\"lng\" [zoom]=\"zoom\">\n * <agm-polyline>\n * <agm-polyline-point [latitude]=\"latA\" [longitude]=\"lngA\">\n * </agm-polyline-point>\n * <agm-polyline-point [latitude]=\"latB\" [longitude]=\"lngB\">\n * </agm-polyline-point>\n * </agm-polyline>\n * </agm-map>\n * `\n * })\n * ```\n */\n@Directive({\n selector: 'agm-polyline',\n})\nexport class AgmPolyline implements OnDestroy, OnChanges, AfterContentInit {\n /**\n * Indicates whether this Polyline handles mouse events. Defaults to true.\n */\n @Input() clickable = true;\n\n /**\n * If set to true, the user can drag this shape over the map. The geodesic property defines the\n * mode of dragging. Defaults to false.\n */\n // tslint:disable-next-line:no-input-rename\n @Input('polylineDraggable') draggable = false;\n\n /**\n * If set to true, the user can edit this shape by dragging the control points shown at the\n * vertices and on each segment. Defaults to false.\n */\n @Input() editable = false;\n\n /**\n * When true, edges of the polygon are interpreted as geodesic and will follow the curvature of\n * the Earth. When false, edges of the polygon are rendered as straight lines in screen space.\n * Note that the shape of a geodesic polygon may appear to change when dragged, as the dimensions\n * are maintained relative to the surface of the earth. Defaults to false.\n */\n @Input() geodesic = false;\n\n /**\n * The stroke color. All CSS3 colors are supported except for extended named colors.\n */\n @Input() strokeColor: string;\n\n /**\n * The stroke opacity between 0.0 and 1.0.\n */\n @Input() strokeOpacity: number;\n\n /**\n * The stroke width in pixels.\n */\n @Input() strokeWeight: number;\n\n /**\n * Whether this polyline is visible on the map. Defaults to true.\n */\n @Input() visible = true;\n\n /**\n * The zIndex compared to other polys.\n */\n @Input() zIndex: number;\n\n /**\n * This event is fired when the DOM click event is fired on the Polyline.\n */\n @Output() lineClick: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired when the DOM dblclick event is fired on the Polyline.\n */\n @Output() lineDblClick: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is repeatedly fired while the user drags the polyline.\n */\n @Output() lineDrag: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user stops dragging the polyline.\n */\n @Output() lineDragEnd: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user starts dragging the polyline.\n */\n @Output() lineDragStart: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mousedown event is fired on the Polyline.\n */\n @Output() lineMouseDown: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired when the DOM mousemove event is fired on the Polyline.\n */\n @Output() lineMouseMove: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired on Polyline mouseout.\n */\n @Output() lineMouseOut: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired on Polyline mouseover.\n */\n @Output() lineMouseOver: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired whe the DOM mouseup event is fired on the Polyline\n */\n @Output() lineMouseUp: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired when the Polyline is right-clicked on.\n */\n @Output() lineRightClick: EventEmitter<PolyMouseEvent> = new EventEmitter<PolyMouseEvent>();\n\n /**\n * This event is fired after Polyline's path changes.\n */\n @Output() polyPathChange = new EventEmitter<PathEvent>();\n\n /**\n * @internal\n */\n @ContentChildren(AgmPolylinePoint) points: QueryList<AgmPolylinePoint>;\n\n @ContentChildren(AgmPolylineIcon) iconSequences: QueryList<AgmPolylineIcon>;\n\n private static _polylineOptionsAttributes: Array<string> = [\n 'draggable', 'editable', 'visible', 'geodesic', 'strokeColor', 'strokeOpacity', 'strokeWeight',\n 'zIndex',\n ];\n\n private _id: string;\n private _polylineAddedToManager = false;\n private _subscriptions: Subscription[] = [];\n\n constructor(private _polylineManager: PolylineManager) { this._id = (polylineId++).toString(); }\n\n /** @internal */\n ngAfterContentInit() {\n if (this.points.length) {\n this.points.forEach((point: AgmPolylinePoint) => {\n const s = point.positionChanged.subscribe(\n () => { this._polylineManager.updatePolylinePoints(this); });\n this._subscriptions.push(s);\n });\n }\n if (!this._polylineAddedToManager) {\n this._init();\n }\n const pointSub = this.points.changes.subscribe(() => this._polylineManager.updatePolylinePoints(this));\n this._subscriptions.push(pointSub);\n this._polylineManager.updatePolylinePoints(this);\n\n const iconSub = this.iconSequences.changes.subscribe(() => this._polylineManager.updateIconSequences(this));\n this._subscriptions.push(iconSub);\n }\n\n ngOnChanges(changes: SimpleChanges): any {\n if (!this._polylineAddedToManager) {\n this._init();\n return;\n }\n\n let options: {[propName: string]: any} = {};\n const optionKeys = Object.keys(changes).filter(\n k => AgmPolyline._polylineOptionsAttributes.indexOf(k) !== -1);\n optionKeys.forEach(k => options[k] = changes[k].currentValue);\n this._polylineManager.setPolylineOptions(this, options);\n }\n\n getPath(): Promise<Array<LatLng>> {\n return this._polylineManager.getPath(this);\n }\n\n private _init() {\n this._polylineManager.addPolyline(this);\n this._polylineAddedToManager = true;\n this._addEventListeners();\n }\n\n private _addEventListeners() {\n const handlers = [\n {name: 'click', handler: (ev: PolyMouseEvent) => this.lineClick.emit(ev)},\n {name: 'dblclick', handler: (ev: PolyMouseEvent) => this.lineDblClick.emit(ev)},\n {name: 'drag', handler: (ev: MouseEvent) => this.lineDrag.emit(ev)},\n {name: 'dragend', handler: (ev: MouseEvent) => this.lineDragEnd.emit(ev)},\n {name: 'dragstart', handler: (ev: MouseEvent) => this.lineDragStart.emit(ev)},\n {name: 'mousedown', handler: (ev: PolyMouseEvent) => this.lineMouseDown.emit(ev)},\n {name: 'mousemove', handler: (ev: PolyMouseEvent) => this.lineMouseMove.emit(ev)},\n {name: 'mouseout', handler: (ev: PolyMouseEvent) => this.lineMouseOut.emit(ev)},\n {name: 'mouseover', handler: (ev: PolyMouseEvent) => this.lineMouseOver.emit(ev)},\n {name: 'mouseup', handler: (ev: PolyMouseEvent) => this.lineMouseUp.emit(ev)},\n {name: 'rightclick', handler: (ev: PolyMouseEvent) => this.lineRightClick.emit(ev)},\n ];\n handlers.forEach((obj) => {\n const os = this._polylineManager.createEventObservable(obj.name, this).subscribe(obj.handler);\n this._subscriptions.push(os);\n });\n\n this._polylineManager.createPathEventObservable(this).then((ob$) => {\n const os = ob$.subscribe(pathEvent => this.polyPathChange.emit(pathEvent));\n this._subscriptions.push(os);\n });\n }\n\n /** @internal */\n _getPoints(): Array<AgmPolylinePoint> {\n if (this.points) {\n return this.points.toArray();\n }\n return [];\n }\n\n _getIcons(): Array<AgmPolylineIcon> {\n if (this.iconSequences) {\n return this.iconSequences.toArray();\n }\n return [];\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n ngOnDestroy() {\n this._polylineManager.deletePolyline(this);\n // unsubscribe all registered observable subscriptions\n this._subscriptions.forEach((s) => s.unsubscribe());\n }\n}\n\nexport interface PathEvent {\n newArr: LatLng[];\n evName: 'insert_at' | 'remove_at' | 'set_at';\n index: number;\n previous?: LatLng;\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { MouseEvent } from '../map-types';\nimport {\n LatLngBounds,\n LatLngBoundsLiteral,\n MouseEvent as MapMouseEvent,\n} from '../services/google-maps-types';\nimport { RectangleManager } from '../services/managers/rectangle-manager';\n\n@Directive({\n selector: 'agm-rectangle',\n})\nexport class AgmRectangle implements OnInit, OnChanges, OnDestroy {\n /**\n * The north position of the rectangle (required).\n */\n @Input() north: number;\n\n /**\n * The east position of the rectangle (required).\n */\n @Input() east: number;\n\n /**\n * The south position of the rectangle (required).\n */\n @Input() south: number;\n\n /**\n * The west position of the rectangle (required).\n */\n @Input() west: number;\n\n /**\n * Indicates whether this Rectangle handles mouse events. Defaults to true.\n */\n @Input() clickable = true;\n\n /**\n * If set to true, the user can drag this rectangle over the map. Defaults to false.\n */\n // tslint:disable-next-line:no-input-rename\n @Input('rectangleDraggable') draggable = false;\n\n /**\n * If set to true, the user can edit this rectangle by dragging the control points shown at\n * the center and around the circumference of the rectangle. Defaults to false.\n */\n @Input() editable = false;\n\n /**\n * The fill color. All CSS3 colors are supported except for extended named colors.\n */\n @Input() fillColor: string;\n\n /**\n * The fill opacity between 0.0 and 1.0.\n */\n @Input() fillOpacity: number;\n\n /**\n * The stroke color. All CSS3 colors are supported except for extended named colors.\n */\n @Input() strokeColor: string;\n\n /**\n * The stroke opacity between 0.0 and 1.0\n */\n @Input() strokeOpacity: number;\n\n /**\n * The stroke position. Defaults to CENTER.\n * This property is not supported on Internet Explorer 8 and earlier.\n */\n @Input() strokePosition: 'CENTER' | 'INSIDE' | 'OUTSIDE' = 'CENTER';\n\n /**\n * The stroke width in pixels.\n */\n @Input() strokeWeight = 0;\n\n /**\n * Whether this rectangle is visible on the map. Defaults to true.\n */\n @Input() visible = true;\n\n /**\n * The zIndex compared to other polys.\n */\n @Input() zIndex: number;\n\n /**\n * This event is fired when the rectangle's is changed.\n */\n @Output()\n boundsChange: EventEmitter<LatLngBoundsLiteral> = new EventEmitter<\n LatLngBoundsLiteral\n >();\n\n /**\n * This event emitter gets emitted when the user clicks on the rectangle.\n */\n @Output()\n rectangleClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event emitter gets emitted when the user clicks on the rectangle.\n */\n @Output()\n rectangleDblClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is repeatedly fired while the user drags the rectangle.\n */\n @Output() drag: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user stops dragging the rectangle.\n */\n @Output() dragEnd: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the user starts dragging the rectangle.\n */\n @Output()\n dragStart: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mousedown event is fired on the rectangle.\n */\n @Output()\n mouseDown: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mousemove event is fired on the rectangle.\n */\n @Output()\n mouseMove: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired on rectangle mouseout.\n */\n @Output() mouseOut: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired on rectangle mouseover.\n */\n @Output()\n mouseOver: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the DOM mouseup event is fired on the rectangle.\n */\n @Output() mouseUp: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /**\n * This event is fired when the rectangle is right-clicked on.\n */\n @Output()\n rightClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n private _rectangleAddedToManager = false;\n\n private static _mapOptions: string[] = [\n 'fillColor',\n 'fillOpacity',\n 'strokeColor',\n 'strokeOpacity',\n 'strokePosition',\n 'strokeWeight',\n 'visible',\n 'zIndex',\n 'clickable',\n ];\n\n private _eventSubscriptions: Subscription[] = [];\n\n constructor(private _manager: RectangleManager) {}\n\n /** @internal */\n ngOnInit() {\n this._manager.addRectangle(this);\n this._rectangleAddedToManager = true;\n this._registerEventListeners();\n }\n\n /** @internal */\n ngOnChanges(changes: { [key: string]: SimpleChange }) {\n if (!this._rectangleAddedToManager) {\n return;\n }\n if (\n changes['north'] ||\n changes['east'] ||\n changes['south'] ||\n changes['west']\n ) {\n this._manager.setBounds(this);\n }\n if (changes['editable']) {\n this._manager.setEditable(this);\n }\n if (changes['draggable']) {\n this._manager.setDraggable(this);\n }\n if (changes['visible']) {\n this._manager.setVisible(this);\n }\n this._updateRectangleOptionsChanges(changes);\n }\n\n private _updateRectangleOptionsChanges(changes: {\n [propName: string]: SimpleChange;\n }) {\n let options: { [propName: string]: any } = {};\n let optionKeys = Object.keys(changes).filter(\n k => AgmRectangle._mapOptions.indexOf(k) !== -1,\n );\n optionKeys.forEach(k => {\n options[k] = changes[k].currentValue;\n });\n if (optionKeys.length > 0) {\n this._manager.setOptions(this, options);\n }\n }\n\n private _registerEventListeners() {\n let events: Map<string, EventEmitter<any>> = new Map<\n string,\n EventEmitter<any>\n >();\n events.set('bounds_changed', this.boundsChange);\n events.set('click', this.rectangleClick);\n events.set('dblclick', this.rectangleDblClick);\n events.set('drag', this.drag);\n events.set('dragend', this.dragEnd);\n events.set('dragStart', this.dragStart);\n events.set('mousedown', this.mouseDown);\n events.set('mousemove', this.mouseMove);\n events.set('mouseout', this.mouseOut);\n events.set('mouseover', this.mouseOver);\n events.set('mouseup', this.mouseUp);\n events.set('rightclick', this.rightClick);\n\n events.forEach((eventEmitter, eventName) => {\n this._eventSubscriptions.push(\n this._manager\n .createEventObservable<MapMouseEvent>(eventName, this)\n .subscribe(value => {\n switch (eventName) {\n case 'bounds_changed':\n this._manager.getBounds(this).then(bounds =>\n eventEmitter.emit({\n north: bounds.getNorthEast().lat(),\n east: bounds.getNorthEast().lng(),\n south: bounds.getSouthWest().lat(),\n west: bounds.getSouthWest().lng(),\n } as LatLngBoundsLiteral),\n );\n break;\n default:\n eventEmitter.emit({\n coords: { lat: value.latLng.lat(), lng: value.latLng.lng() },\n } as MouseEvent);\n }\n }),\n );\n });\n }\n\n /** @internal */\n ngOnDestroy() {\n this._eventSubscriptions.forEach(function(s: Subscription) {\n s.unsubscribe();\n });\n this._eventSubscriptions = null;\n this._manager.removeRectangle(this);\n }\n\n /**\n * Gets the LatLngBounds of this Rectangle.\n */\n getBounds(): Promise<LatLngBounds> {\n return this._manager.getBounds(this);\n }\n}\n","import { Directive, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { LayerManager } from '../services/managers/layer-manager';\n\nlet layerId = 0;\n\n/*\n * This directive adds a transit layer to a google map instance\n * <agm-transit-layer [visible]=\"true|false\"> <agm-transit-layer>\n * */\n@Directive({\n selector: 'agm-transit-layer',\n})\n\nexport class AgmTransitLayer implements OnInit, OnChanges, OnDestroy{\n private _addedToManager = false;\n private _id: string = (layerId++).toString();\n\n /**\n * Hide/show transit layer\n */\n @Input() visible = true;\n\n constructor( private _manager: LayerManager ) {}\n\n ngOnInit() {\n if (this._addedToManager) {\n return;\n }\n this._manager.addTransitLayer(this, {visible: this.visible});\n this._addedToManager = true;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this._addedToManager) {\n return;\n }\n if (changes['visible'] != null) {\n this._manager.toggleLayerVisibility(this, {visible: changes['visible'].currentValue});\n }\n }\n\n /** @internal */\n id(): string { return this._id; }\n\n /** @internal */\n toString(): string { return `AgmTransitLayer-${this._id.toString()}`; }\n\n /** @internal */\n ngOnDestroy() {\n this._manager.deleteLayer(this);\n }\n\n}\n","export var google: any;\n\nexport interface MVCObject {\n addListener(eventName: string, handler: Function): MapsEventListener;\n}\n\nexport interface MVCArray<T> extends MVCObject {\n clear(): void;\n getArray(): Array<T>;\n getAt(i: number): T;\n getLength(): number;\n insertAt(i: number, elem: T): void;\n pop(): T;\n push(elem: T): number;\n removeAt(i: number): T;\n setAt(i: number, elem: T): void;\n /* tslint:disable */\n /*\n * Tslint configuration check-parameters will prompt errors for these lines of code.\n * https://palantir.github.io/tslint/rules/no-unused-variable/\n */\n forEach(callback: (elem: T, i: number) => void): void;\n /* tslint:enable */\n}\n\nexport interface GoogleMap extends MVCObject {\n data?: Data;\n panTo(latLng: LatLng | LatLngLiteral): void;\n panBy(x: number, y: number): void;\n setZoom(zoom: number): void;\n getCenter(): LatLng;\n setCenter(latLng: LatLng | LatLngLiteral): void;\n getBounds(): LatLngBounds;\n getMapTypeId(): MapTypeId;\n getZoom(): number;\n setOptions(options: MapOptions): void;\n panToBounds(latLngBounds: LatLngBounds | LatLngBoundsLiteral, padding?: number | Padding): void;\n fitBounds(bounds: LatLngBounds | LatLngBoundsLiteral, padding?: number | Padding): void;\n}\n\nexport interface LatLng {\n lat(): number;\n lng(): number;\n toJSON(): any;\n toString(): string;\n}\n\nexport interface Marker extends MVCObject {\n setMap(map: GoogleMap): void;\n setPosition(latLng: LatLng | LatLngLiteral): void;\n setTitle(title: string): void;\n setLabel(label: string | MarkerLabel): void;\n setDraggable(draggable: boolean): void;\n setIcon(icon: string): void;\n setOpacity(opacity: number): void;\n setVisible(visible: boolean): void;\n setZIndex(zIndex: number): void;\n setAnimation(animation: any): void;\n getLabel(): MarkerLabel;\n setClickable(clickable: boolean): void;\n}\n\nexport interface MarkerOptions {\n position: LatLng | LatLngLiteral;\n title?: string;\n map?: GoogleMap;\n label?: string | MarkerLabel;\n draggable?: boolean;\n icon?: string;\n opacity?: number;\n visible?: boolean;\n zIndex?: number;\n clickable: boolean;\n animation?: any;\n}\n\nexport interface MarkerLabel {\n color: string;\n fontFamily: string;\n fontSize: string;\n fontWeight: string;\n text: string;\n}\n\nexport interface Circle extends MVCObject {\n getBounds(): LatLngBounds;\n getCenter(): LatLng;\n getDraggable(): boolean;\n getEditable(): boolean;\n getMap(): GoogleMap;\n getRadius(): number;\n getVisible(): boolean;\n setCenter(center: LatLng | LatLngLiteral): void;\n setDraggable(draggable: boolean): void;\n setEditable(editable: boolean): void;\n setMap(map: GoogleMap): void;\n setOptions(options: CircleOptions): void;\n setRadius(radius: number): void;\n setVisible(visible: boolean): void;\n}\n\nexport interface CircleOptions {\n center?: LatLng | LatLngLiteral;\n clickable?: boolean;\n draggable?: boolean;\n editable?: boolean;\n fillColor?: string;\n fillOpacity?: number;\n map?: GoogleMap;\n radius?: number;\n strokeColor?: string;\n strokeOpacity?: number;\n strokePosition?: 'CENTER' | 'INSIDE' | 'OUTSIDE';\n strokeWeight?: number;\n visible?: boolean;\n zIndex?: number;\n}\n\nexport interface Rectangle extends MVCObject {\n getBounds(): LatLngBounds;\n getDraggable(): boolean;\n getEditable(): boolean;\n getMap(): GoogleMap;\n getVisible(): boolean;\n setBounds(bounds: LatLngBounds | LatLngBoundsLiteral): void;\n setDraggable(draggable: boolean): void;\n setEditable(editable: boolean): void;\n setMap(map: GoogleMap): void;\n setOptions(options: RectangleOptions): void;\n setVisible(visible: boolean): void;\n}\n\nexport interface RectangleOptions {\n bounds?: LatLngBounds | LatLngBoundsLiteral;\n clickable?: boolean;\n draggable?: boolean;\n editable?: boolean;\n fillColor?: string;\n fillOpacity?: number;\n map?: GoogleMap;\n strokeColor?: string;\n strokeOpacity?: number;\n strokePosition?: 'CENTER' | 'INSIDE' | 'OUTSIDE';\n strokeWeight?: number;\n visible?: boolean;\n zIndex?: number;\n}\n\nexport interface LatLngBounds {\n contains(latLng: LatLng): boolean;\n equals(other: LatLngBounds | LatLngBoundsLiteral): boolean;\n extend(point: LatLng | LatLngLiteral): void;\n getCenter(): LatLng;\n getNorthEast(): LatLng;\n getSouthWest(): LatLng;\n intersects(other: LatLngBounds | LatLngBoundsLiteral): boolean;\n isEmpty(): boolean;\n toJSON(): LatLngBoundsLiteral;\n toSpan(): LatLng;\n toString(): string;\n toUrlValue(precision?: number): string;\n union(other: LatLngBounds | LatLngBoundsLiteral): LatLngBounds;\n}\n\nexport interface Padding {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}\n\nexport interface LatLngBoundsLiteral {\n east: number;\n north: number;\n south: number;\n west: number;\n}\n\nexport interface LatLngLiteral {\n lat: number;\n lng: number;\n}\n\nexport interface MouseEvent { latLng: LatLng; }\n\nexport interface MapOptions {\n center?: LatLng | LatLngLiteral;\n zoom?: number;\n minZoom?: number;\n maxZoom?: number;\n controlSize?: number;\n disableDoubleClickZoom?: boolean;\n disableDefaultUI?: boolean;\n scrollwheel?: boolean;\n backgroundColor?: string;\n draggable?: boolean;\n draggableCursor?: string;\n draggingCursor?: string;\n keyboardShortcuts?: boolean;\n styles?: MapTypeStyle[];\n zoomControl?: boolean;\n zoomControlOptions?: ZoomControlOptions;\n streetViewControl?: boolean;\n streetViewControlOptions?: StreetViewControlOptions;\n scaleControl?: boolean;\n scaleControlOptions?: ScaleControlOptions;\n mapTypeControl?: boolean;\n mapTypeControlOptions?: MapTypeControlOptions;\n panControl?: boolean;\n panControlOptions?: PanControlOptions;\n rotateControl?: boolean;\n rotateControlOptions?: RotateControlOptions;\n fullscreenControl?: boolean;\n fullscreenControlOptions?: FullscreenControlOptions;\n mapTypeId?: string | MapTypeId;\n clickableIcons?: boolean;\n gestureHandling?: 'cooperative' | 'greedy' | 'none' | 'auto';\n tilt?: number;\n restriction?: MapRestriction;\n}\n\nexport interface MapTypeStyle {\n elementType?: 'all' | 'geometry' | 'geometry.fill' | 'geometry.stroke' | 'labels' | 'labels.icon' |\n 'labels.text' | 'labels.text.fill' | 'labels.text.stroke';\n featureType?: 'administrative' | 'administrative.country' | 'administrative.land_parcel' |\n 'administrative.locality' | 'administrative.neighborhood' | 'administrative.province' | 'all' |\n 'landscape' | 'landscape.man_made' | 'landscape.natural' | 'landscape.natural.landcover' |\n 'landscape.natural.terrain' | 'poi' | 'poi.attraction' | 'poi.business' | 'poi.government' |\n 'poi.medical' | 'poi.park' | 'poi.place_of_worship' | 'poi.school' | 'poi.sports_complex' | 'road' |\n 'road.arterial' | 'road.highway' | 'road.highway.controlled_access' | 'road.local' | 'transit' |\n 'transit.line' | 'transit.station' | 'transit.station.airport' | 'transit.station.bus' |\n 'transit.station.rail' | 'water';\n stylers: MapTypeStyler[];\n}\n\n/**\n * If more than one key is specified in a single MapTypeStyler, all but one will be ignored.\n */\nexport interface MapTypeStyler {\n color?: string;\n gamma?: number;\n hue?: string;\n invert_lightness?: boolean;\n lightness?: number;\n saturation?: number;\n visibility?: string;\n weight?: number;\n}\n\nexport interface InfoWindow extends MVCObject {\n close(): void;\n getContent(): string | Node;\n getPosition(): LatLng;\n getZIndex(): number;\n open(map?: GoogleMap, anchor?: MVCObject): void;\n setContent(content: string | Node): void;\n setOptions(options: InfoWindowOptions): void;\n setPosition(position: LatLng | LatLngLiteral): void;\n setZIndex(zIndex: number): void;\n}\n\nexport interface MapsEventListener { remove(): void; }\n\nexport interface Size {\n height: number;\n width: number;\n equals(other: Size): boolean;\n toString(): string;\n}\n\nexport interface InfoWindowOptions {\n content?: string | Node;\n disableAutoPan?: boolean;\n maxWidth?: number;\n pixelOffset?: Size;\n position?: LatLng | LatLngLiteral;\n zIndex?: number;\n}\n\nexport interface Point {\n x: number;\n y: number;\n equals(other: Point): boolean;\n toString(): string;\n}\n\nexport interface GoogleSymbol {\n anchor?: Point;\n fillColor?: string;\n fillOpacity?: number;\n labelOrigin?: Point;\n path?: string | SymbolPath;\n rotation?: number;\n scale?: number;\n strokeColor?: string;\n strokeOpacity?: number;\n strokeWeight?: number;\n}\n\nexport interface IconSequence {\n fixedRotation?: boolean;\n icon?: GoogleSymbol;\n offset?: string;\n repeat?: string;\n}\n\nexport enum SymbolPath {\n BACKWARD_CLOSED_ARROW = 3,\n BACKWARD_OPEN_ARROW = 4,\n CIRCLE = 0,\n FORWARD_CLOSED_ARROW = 1,\n FORWARD_OPEN_ARROW = 2,\n}\n\nexport interface PolylineOptions {\n clickable?: boolean;\n draggable?: boolean;\n editable?: boolean;\n geodesic?: boolean;\n icons?: Array<IconSequence>;\n map?: GoogleMap;\n path?: Array<LatLng> | Array<LatLng | LatLngLiteral>;\n strokeColor?: string;\n strokeOpacity?: number;\n strokeWeight?: number;\n visible?: boolean;\n zIndex?: number;\n}\n\nexport interface Polyline extends MVCObject {\n getDraggable(): boolean;\n getEditable(): boolean;\n getMap(): GoogleMap;\n getPath(): MVCArray<LatLng>;\n getVisible(): boolean;\n setDraggable(draggable: boolean): void;\n setEditable(editable: boolean): void;\n setMap(map: GoogleMap): void;\n setOptions(options: PolylineOptions): void;\n setPath(path: Array<LatLng | LatLngLiteral>): void;\n setVisible(visible: boolean): void;\n}\n\n/**\n * PolyMouseEvent gets emitted when the user triggers mouse events on a polyline.\n */\nexport interface PolyMouseEvent extends MouseEvent {\n edge: number;\n path: number;\n vertex: number;\n}\n\nexport interface PolygonOptions {\n clickable?: boolean;\n draggable?: boolean;\n editable?: boolean;\n fillColor?: string;\n fillOpacity?: number;\n geodesic?: boolean;\n icon?: Array<IconSequence>;\n map?: GoogleMap;\n paths?: Array<LatLng | LatLngLiteral> | Array<Array<LatLng | LatLngLiteral>>;\n strokeColor?: string;\n strokeOpacity?: number;\n strokeWeight?: number;\n visible?: boolean;\n zIndex?: number;\n}\n\nexport interface Polygon extends MVCObject {\n getDraggable(): boolean;\n getEditable(): boolean;\n getMap(): GoogleMap;\n getPath(): MVCArray<LatLng>;\n getPaths(): MVCArray<MVCArray<LatLng>>;\n getVisible(): boolean;\n setDraggable(draggable: boolean): void;\n setEditable(editable: boolean): void;\n setMap(map: GoogleMap): void;\n setPath(path: Array<LatLng> | Array<LatLng | LatLngLiteral>): void;\n setOptions(options: PolygonOptions): void;\n setPaths(paths: Array<Array<LatLng | LatLngLiteral>> | Array<LatLng | LatLngLiteral>): void;\n setVisible(visible: boolean): void;\n}\n\nexport interface KmlLayer extends MVCObject {\n getDefaultViewport(): LatLngBounds;\n getMap(): GoogleMap;\n getMetadata(): KmlLayerMetadata;\n getStatus(): KmlLayerStatus;\n getUrl(): string;\n getZIndex(): number;\n setMap(map: GoogleMap): void;\n setOptions(options: KmlLayerOptions): void;\n setUrl(url: string): void;\n setZIndex(zIndex: number): void;\n}\n\n/**\n * See: https://developers.google.com/maps/documentation/javascript/reference?hl=de#KmlLayerStatus\n */\nexport type KmlLayerStatus = 'DOCUMENT_NOT_FOUND' |\n 'DOCUMENT_TOO_LARGE' | 'FETCH_ERROR' | 'INVALID_DOCUMENT' | 'INVALID_REQUEST' |\n 'LIMITS_EXCEEDED' | 'OK' | 'TIMED_OUT' | 'UNKNOWN';\n\n/**\n * See: https://developers.google.com/maps/documentation/javascript/reference?hl=de#KmlLayerMetadata\n */\nexport interface KmlLayerMetadata {\n author: KmlAuthor;\n description: string;\n hasScreenOverlays: boolean;\n name: string;\n snippet: string;\n}\n\nexport interface KmlAuthor {\n email: string;\n name: string;\n uri: string;\n}\n\nexport interface KmlLayerOptions {\n clickable?: boolean;\n map?: GoogleMap;\n preserveViewport?: boolean;\n screenOverlays?: boolean;\n suppressInfoWindows?: boolean;\n url?: string;\n zIndex?: number;\n}\n\nexport interface KmlFeatureData {\n author: KmlAuthor;\n description: string;\n id: string;\n infoWindowHtml: string;\n name: string;\n snippet: string;\n}\n\nexport interface KmlMouseEvent extends MouseEvent {\n featureData: KmlFeatureData;\n pixelOffset: Size;\n}\n\nexport interface TransitLayer extends MVCObject {\n getMap(): GoogleMap;\n setMap(map: GoogleMap): void;\n}\n\nexport interface TransitLayerOptions {\n visible: boolean;\n}\n\nexport interface BicyclingLayer extends MVCObject {\n getMap(): GoogleMap;\n setMap(map: GoogleMap): void;\n}\n\nexport interface BicyclingLayerOptions {\n visible: boolean;\n}\n\nexport interface Data extends MVCObject {\n features: Feature[];\n addGeoJson(geoJson: Object, options?: GeoJsonOptions): Feature[];\n remove(feature: Feature): void;\n setControlPosition(controlPosition: ControlPosition): void;\n setControls(controls: string[]): void;\n setDrawingMode(drawingMode: string): void;\n setMap(map: GoogleMap): void;\n /* tslint:disable */\n /*\n * Tslint configuration check-parameters will prompt errors for these lines of code.\n * https://palantir.github.io/tslint/rules/no-unused-variable/\n */\n setStyle(style: () => void): void;\n forEach(callback: (feature: Feature) => void): void;\n loadGeoJson(url: string, options?: GeoJsonOptions, callback?: (feats: Feature[]) => void): void;\n /* tslint:enable */\n}\n\nexport interface Feature extends MVCObject {\n id?: number | string | undefined;\n geometry: Geometry;\n properties: any;\n}\n\nexport interface DataOptions {\n controlPosition?: ControlPosition;\n controls?: string[];\n drawingMode?: string;\n featureFactory?: (geometry: Geometry) => Feature;\n map?: GoogleMap;\n style?: () => void;\n}\n\nexport interface DataMouseEvent extends MouseEvent {\n feature: Feature;\n}\n\nexport interface GeoJsonOptions {\n idPropertyName: string;\n}\n\nexport interface Geometry {\n type: string;\n}\n\n/**\n * Identifiers used to specify the placement of controls on the map. Controls are\n * positioned relative to other controls in the same layout position. Controls that\n * are added first are positioned closer to the edge of the map.\n */\nexport enum ControlPosition {\n RIGHT_BOTTOM,\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n LEFT_CENTER,\n LEFT_TOP,\n LEFT_BOTTOM,\n RIGHT_TOP,\n RIGHT_CENTER,\n BOTTOM_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n}\n\nexport enum MapTypeId {\n /** This map type displays a transparent layer of major streets on satellite images. */\n HYBRID,\n /** This map type displays a normal street map. */\n ROADMAP,\n /** This map type displays satellite images. */\n SATELLITE,\n /** This map type displays maps with physical features such as terrain and vegetation. */\n TERRAIN,\n}\n\n/***** Controls *****/\n/** Options for the rendering of the map type control. */\nexport interface MapTypeControlOptions {\n /** IDs of map types to show in the control. */\n mapTypeIds?: (MapTypeId | string)[];\n /**\n * Position id. Used to specify the position of the control on the map.\n * The default position is TOP_RIGHT.\n */\n position?: ControlPosition;\n /** Style id. Used to select what style of map type control to display. */\n style?: MapTypeControlStyle;\n}\n\nexport enum MapTypeControlStyle {\n DEFAULT = 0,\n DROPDOWN_MENU = 2,\n HORIZONTAL_BAR = 1,\n}\n\nexport interface OverviewMapControlOptions {\n opened?: boolean;\n}\n\n/** Options for the rendering of the pan control. */\nexport interface PanControlOptions {\n /**\n * Position id. Used to specify the position of the control on the map.\n * The default position is TOP_LEFT.\n */\n position?: ControlPosition;\n}\n\n/** Options for the rendering of the rotate control. */\nexport interface RotateControlOptions {\n /**\n * Position id. Used to specify the position of the control on the map.\n * The default position is TOP_LEFT.\n */\n position?: ControlPosition;\n}\n\n/** Options for the rendering of the scale control. */\nexport interface ScaleControlOptions {\n /** Style id. Used to select what style of scale control to display. */\n style?: ScaleControlStyle;\n}\n\nexport enum ScaleControlStyle {\n DEFAULT,\n}\n\n/** Options for the rendering of the Street View pegman control on the map. */\nexport interface StreetViewControlOptions {\n /**\n * Position id. Used to specify the position of the control on the map. The\n * default position is embedded within the navigation (zoom and pan) controls.\n * If this position is empty or the same as that specified in the\n * zoomControlOptions or panControlOptions, the Street View control will be\n * displayed as part of the navigation controls. Otherwise, it will be displayed\n * separately.\n */\n position?: ControlPosition;\n}\n\n/** Options for the rendering of the zoom control. */\nexport interface ZoomControlOptions {\n /**\n * Position id. Used to specify the position of the control on the map.\n * The default position is TOP_LEFT.\n */\n position?: ControlPosition;\n style?: ZoomControlStyle;\n}\n\nexport enum ZoomControlStyle {\n DEFAULT,\n LARGE,\n SMALL,\n}\n\n/** Options for the rendering of the fullscreen control. */\nexport interface FullscreenControlOptions {\n /**\n * Position id. Used to specify the position of the control on the map.\n * The default position is RIGHT_TOP.\n */\n position?: ControlPosition;\n}\n\n/** Options for the restricting the bounds of the map. */\nexport interface MapRestriction {\n latLngBounds: LatLngBounds | LatLngBoundsLiteral;\n strictBounds?: boolean;\n}\n\nexport interface Geocoder {\n geocode: (request: GeocoderRequest, googleCallback: (results: GeocoderResult[], status: GeocoderStatus) => void) => void;\n}\n\nexport interface GeocoderAddressComponent {\n long_name: string;\n short_name: string;\n types: string[];\n}\n\n/** Options for restricting the geocoder results */\nexport interface GeocoderComponentRestrictions {\n administrativeArea?: string;\n country?: string;\n locality?: string;\n postalCode?: string;\n route?: string;\n}\n\nexport interface GeocoderGeometry {\n bounds: LatLngBounds;\n location: LatLng;\n location_type: GeocoderLocationType;\n viewport: LatLngBounds;\n}\n\nexport enum GeocoderLocationType {\n APPROXIMATE = 'APPROXIMATE',\n GEOMETRIC_CENTER = 'GEOMETRIC_CENTER',\n RANGE_INTERPOLATED = 'RANGE_INTERPOLATED',\n ROOFTOP = 'ROOFTOP',\n}\n\nexport interface GeocoderRequest {\n address?: string;\n bounds?: LatLngBounds | LatLngBoundsLiteral;\n componentRestrictions?: GeocoderComponentRestrictions;\n location?: LatLng | LatLngLiteral;\n placeId?: string;\n region?: string;\n}\n\nexport interface GeocoderResult {\n address_components: GeocoderAddressComponent[];\n formatted_address: string;\n geometry: GeocoderGeometry;\n partial_match: boolean;\n place_id: string;\n postcode_localities: string[];\n types: string[];\n}\n\nexport enum GeocoderStatus {\n ERROR = 'ERROR',\n INVALID_REQUEST = 'INVALID_REQUEST',\n OK = 'OK',\n OVER_QUERY_LIMIT = 'OVER_QUERY_LIMIT',\n REQUEST_DENIED = 'REQUEST_DENIED',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n ZERO_RESULTS = 'ZERO_RESULTS',\n}\n","import { Injectable } from '@angular/core';\nimport { bindCallback, ConnectableObservable, Observable, of, ReplaySubject, throwError } from 'rxjs';\nimport { map, multicast, switchMap } from 'rxjs/operators';\nimport { Geocoder, GeocoderRequest, GeocoderResult, GeocoderStatus } from './google-maps-types';\nimport { MapsAPILoader } from './maps-api-loader/maps-api-loader';\n\ndeclare var google: any;\n\n@Injectable({ providedIn: 'root' })\nexport class AgmGeocoder {\n protected readonly geocoder$: Observable<Geocoder>;\n\n constructor(loader: MapsAPILoader) {\n const connectableGeocoder$ = new Observable(subscriber => {\n loader.load().then(() => subscriber.next());\n })\n .pipe(\n map(() => this._createGeocoder()),\n multicast(new ReplaySubject(1)),\n ) as ConnectableObservable<Geocoder>;\n\n connectableGeocoder$.connect(); // ignore the subscription\n // since we will remain subscribed till application exits\n\n this.geocoder$ = connectableGeocoder$;\n }\n\n geocode(request: GeocoderRequest): Observable<GeocoderResult[]> {\n return this.geocoder$.pipe(\n switchMap((geocoder) => this._getGoogleResults(geocoder, request))\n );\n }\n\n private _getGoogleResults(geocoder: Geocoder, request: GeocoderRequest): Observable<GeocoderResult[]> {\n const geocodeObservable = bindCallback(geocoder.geocode);\n return geocodeObservable(request).pipe(\n switchMap(([results, status]) => {\n if (status === GeocoderStatus.OK) {\n return of(results);\n }\n\n return throwError(status);\n })\n );\n }\n\n private _createGeocoder(): Geocoder {\n return new google.maps.Geocoder() as Geocoder;\n }\n}\n","import { Provider } from '@angular/core';\n\nexport class WindowRef {\n getNativeWindow(): any { return window; }\n}\n\nexport class DocumentRef {\n getNativeDocument(): any { return document; }\n}\n\nexport const BROWSER_GLOBALS_PROVIDERS: Provider[] = [WindowRef, DocumentRef];\n","import { Inject, Injectable, InjectionToken, LOCALE_ID, Optional } from '@angular/core';\n\nimport { DocumentRef, WindowRef } from '../../utils/browser-globals';\n\nimport { MapsAPILoader } from './maps-api-loader';\n\nexport enum GoogleMapsScriptProtocol {\n HTTP = 1,\n HTTPS = 2,\n AUTO = 3,\n}\n\n/**\n * Token for the config of the LazyMapsAPILoader. Please provide an object of type {@link\n * LazyMapsAPILoaderConfig}.\n */\nexport const LAZY_MAPS_API_CONFIG = new InjectionToken<LazyMapsAPILoaderConfigLiteral>('angular-google-maps LAZY_MAPS_API_CONFIG');\n\n/**\n * Configuration for the {@link LazyMapsAPILoader}.\n */\nexport interface LazyMapsAPILoaderConfigLiteral {\n /**\n * The Google Maps API Key (see:\n * https://developers.google.com/maps/documentation/javascript/get-api-key)\n */\n apiKey?: string;\n\n /**\n * The Google Maps client ID (for premium plans).\n * When you have a Google Maps APIs Premium Plan license, you must authenticate\n * your application with either an API key or a client ID.\n * The Google Maps API will fail to load if both a client ID and an API key are included.\n */\n clientId?: string;\n\n /**\n * The Google Maps channel name (for premium plans).\n * A channel parameter is an optional parameter that allows you to track usage under your client\n * ID by assigning a distinct channel to each of your applications.\n */\n channel?: string;\n\n /**\n * Google Maps API version.\n */\n apiVersion?: string;\n\n /**\n * Host and Path used for the `<script>` tag.\n */\n hostAndPath?: string;\n\n /**\n * Protocol used for the `<script>` tag.\n */\n protocol?: GoogleMapsScriptProtocol;\n\n /**\n * Defines which Google Maps libraries should get loaded.\n */\n libraries?: string[];\n\n /**\n * The default bias for the map behavior is US.\n * If you wish to alter your application to serve different map tiles or bias the\n * application, you can overwrite the default behavior (US) by defining a `region`.\n * See https://developers.google.com/maps/documentation/javascript/basics#Region\n */\n region?: string;\n\n /**\n * The Google Maps API uses the browser's preferred language when displaying\n * textual information. If you wish to overwrite this behavior and force the API\n * to use a given language, you can use this setting.\n * See https://developers.google.com/maps/documentation/javascript/basics#Language\n */\n language?: string;\n}\n\n@Injectable()\nexport class LazyMapsAPILoader extends MapsAPILoader {\n protected _scriptLoadingPromise: Promise<void>;\n protected _config: LazyMapsAPILoaderConfigLiteral;\n protected _windowRef: WindowRef;\n protected _documentRef: DocumentRef;\n protected readonly _SCRIPT_ID: string = 'agmGoogleMapsApiScript';\n protected readonly callbackName: string = `agmLazyMapsAPILoader`;\n\n constructor(@Optional() @Inject(LAZY_MAPS_API_CONFIG) config: any = null, w: WindowRef, d: DocumentRef,\n @Inject(LOCALE_ID) private localeId: string) {\n super();\n this._config = config || {};\n this._windowRef = w;\n this._documentRef = d;\n }\n\n load(): Promise<void> {\n const window = this._windowRef.getNativeWindow() as any;\n if (window.google && window.google.maps) {\n // Google maps already loaded on the page.\n return Promise.resolve();\n }\n\n if (this._scriptLoadingPromise) {\n return this._scriptLoadingPromise;\n }\n\n // this can happen in HMR situations or Stackblitz.io editors.\n const scriptOnPage = this._documentRef.getNativeDocument().getElementById(this._SCRIPT_ID);\n if (scriptOnPage) {\n this._assignScriptLoadingPromise(scriptOnPage);\n return this._scriptLoadingPromise;\n }\n\n const script = this._documentRef.getNativeDocument().createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.id = this._SCRIPT_ID;\n script.src = this._getScriptSrc(this.callbackName);\n this._assignScriptLoadingPromise(script);\n this._documentRef.getNativeDocument().body.appendChild(script);\n return this._scriptLoadingPromise;\n }\n\n private _assignScriptLoadingPromise(scriptElem: HTMLElement) {\n this._scriptLoadingPromise = new Promise<void>((resolve: Function, reject: Function) => {\n (this._windowRef.getNativeWindow() as any)[this.callbackName] = () => {\n resolve();\n };\n\n scriptElem.onerror = (error: Event) => {\n reject(error);\n };\n });\n }\n\n protected _getScriptSrc(callbackName: string): string {\n let protocolType: GoogleMapsScriptProtocol =\n (this._config && this._config.protocol) || GoogleMapsScriptProtocol.HTTPS;\n let protocol: string;\n\n switch (protocolType) {\n case GoogleMapsScriptProtocol.AUTO:\n protocol = '';\n break;\n case GoogleMapsScriptProtocol.HTTP:\n protocol = 'http:';\n break;\n case GoogleMapsScriptProtocol.HTTPS:\n protocol = 'https:';\n break;\n }\n\n const hostAndPath: string = this._config.hostAndPath || 'maps.googleapis.com/maps/api/js';\n const queryParams: {[key: string]: string | Array<string>} = {\n v: this._config.apiVersion || 'quarterly',\n callback: callbackName,\n key: this._config.apiKey,\n client: this._config.clientId,\n channel: this._config.channel,\n libraries: this._config.libraries,\n region: this._config.region,\n language: this._config.language || this.localeId !== 'en-US' ? this.localeId : null,\n };\n const params: string = Object.keys(queryParams)\n .filter((k: string) => queryParams[k] != null)\n .filter((k: string) => {\n // remove empty arrays\n return !Array.isArray(queryParams[k]) ||\n (Array.isArray(queryParams[k]) && queryParams[k].length > 0);\n })\n .map((k: string) => {\n // join arrays as comma seperated strings\n let i = queryParams[k];\n if (Array.isArray(i)) {\n return {key: k, value: i.join(',')};\n }\n return {key: k, value: queryParams[k]};\n })\n .map((entry: {key: string, value: string}) => {\n return `${entry.key}=${entry.value}`;\n })\n .join('&');\n return `${protocol}//${hostAndPath}?${params}`;\n }\n}\n","import { MapsAPILoader } from './maps-api-loader';\n\n/**\n * When using the NoOpMapsAPILoader, the Google Maps API must be added to the page via a `<script>`\n * Tag.\n * It's important that the Google Maps API script gets loaded first on the page.\n */\nexport class NoOpMapsAPILoader implements MapsAPILoader {\n load(): Promise<void> {\n if (!(window as any).google || !(window as any).google.maps) {\n throw new Error(\n 'Google Maps API not loaded on page. Make sure window.google.maps is available!');\n }\n return Promise.resolve();\n }\n}\n","import { LatLngLiteral } from './services/google-maps-types';\n\n// exported map types\nexport {\n KmlMouseEvent,\n DataMouseEvent,\n LatLngBounds,\n LatLngBoundsLiteral,\n LatLng,\n LatLngLiteral,\n PolyMouseEvent,\n MarkerLabel,\n Geocoder,\n GeocoderAddressComponent,\n GeocoderComponentRestrictions,\n GeocoderGeometry,\n GeocoderLocationType,\n GeocoderRequest,\n GeocoderResult,\n GeocoderStatus,\n MapTypeStyle,\n Padding,\n ControlPosition,\n OverviewMapControlOptions,\n PanControlOptions,\n RotateControlOptions,\n MapTypeControlOptions,\n MapTypeId,\n ScaleControlOptions,\n ScaleControlStyle,\n StreetViewControlOptions,\n ZoomControlOptions,\n ZoomControlStyle,\n FullscreenControlOptions,\n CircleOptions,\n Circle,\n Polyline,\n PolylineOptions,\n Polygon,\n PolygonOptions,\n Rectangle,\n RectangleOptions,\n Marker,\n MarkerOptions,\n} from './services/google-maps-types';\n\n/**\n * MouseEvent gets emitted when the user triggers mouse events on the map.\n */\nexport interface MouseEvent {\n coords: LatLngLiteral;\n placeId?: string;\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { AgmBicyclingLayer } from './directives/bicycling-layer';\nimport { AgmCircle } from './directives/circle';\nimport { AgmDataLayer } from './directives/data-layer';\nimport { AgmFitBounds } from './directives/fit-bounds';\nimport { AgmInfoWindow } from './directives/info-window';\nimport { AgmKmlLayer } from './directives/kml-layer';\nimport { AgmMap } from './directives/map';\nimport { AgmMarker } from './directives/marker';\nimport { AgmPolygon } from './directives/polygon';\nimport { AgmPolyline } from './directives/polyline';\nimport { AgmPolylineIcon } from './directives/polyline-icon';\nimport { AgmPolylinePoint } from './directives/polyline-point';\nimport { AgmRectangle } from './directives/rectangle';\nimport { AgmTransitLayer } from './directives/transit-layer';\n\nimport { LAZY_MAPS_API_CONFIG, LazyMapsAPILoader, LazyMapsAPILoaderConfigLiteral } from './services/maps-api-loader/lazy-maps-api-loader';\nimport { MapsAPILoader } from './services/maps-api-loader/maps-api-loader';\n\nimport { BROWSER_GLOBALS_PROVIDERS } from './utils/browser-globals';\n\n/**\n * @internal\n */\nexport function coreDirectives() {\n return [\n AgmBicyclingLayer,\n AgmCircle,\n AgmDataLayer,\n AgmFitBounds,\n AgmInfoWindow,\n AgmKmlLayer,\n AgmMap,\n AgmMarker,\n AgmPolygon,\n AgmPolyline,\n AgmPolylineIcon,\n AgmPolylinePoint,\n AgmRectangle,\n AgmTransitLayer,\n ];\n}\n\n/**\n * The angular-google-maps core module. Contains all Directives/Services/Pipes\n * of the core module. Please use `AgmCoreModule.forRoot()` in your app module.\n */\n@NgModule({declarations: coreDirectives(), exports: coreDirectives()})\nexport class AgmCoreModule {\n /**\n * Please use this method when you register the module at the root level.\n */\n static forRoot(lazyMapsAPILoaderConfig?: LazyMapsAPILoaderConfigLiteral): ModuleWithProviders {\n return {\n ngModule: AgmCoreModule,\n providers: [\n ...BROWSER_GLOBALS_PROVIDERS, {provide: MapsAPILoader, useClass: LazyMapsAPILoader},\n {provide: LAZY_MAPS_API_CONFIG, useValue: lazyMapsAPILoaderConfig},\n ],\n };\n }\n}\n"],"names":["Injectable","Observable","NgZone","tslib_1.__decorate","Input","Directive","EventEmitter","Output","layerId","BehaviorSubject","from","flatMap","sample","switchMap","timer","map","shareReplay","Subject","distinctUntilChanged","takeUntil","Self","tslib_1.__param","ElementRef","Component","fromEventPattern","startWith","merge","skip","isPlatformServer","Inject","PLATFORM_ID","QueryList","ReplaySubject","ContentChildren","forwardRef","google","ControlPosition","MapTypeId","ScaleControlStyle","ZoomControlStyle","GeocoderLocationType","GeocoderStatus","multicast","bindCallback","of","throwError","GoogleMapsScriptProtocol","InjectionToken","tslib_1.__extends","Optional","LOCALE_ID","NgModule"],"mappings":";;;;;;IAAA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;;AAEF,IAAO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;;AAED,IAAO,IAAI,QAAQ,GAAG,WAAW;IACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,SAAS;IACT,QAAQ,OAAO,CAAC,CAAC;IACjB,MAAK;IACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,EAAC;;AAED,IAAO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;IACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,SAAS;IACT,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;;AAED,IAAO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IAC1D,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;;AAED,IAAO,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;IAC/C,IAAI,OAAO,UAAU,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE;IACzE,CAAC;;AAED,IAAO,SAAS,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE;IACvD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;;AAED,IAAO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IAC7D,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;IAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IACvJ,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC;IACP,CAAC;;AAED,IAAO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;IACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;IACtB,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;IAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IACjE,gBAAgB;IAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;IAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAC3C,aAAa;IACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,KAAK;IACL,CAAC;;AAED,IAAO,SAAS,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE;IACzC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;;AAED,IAAO,SAAS,QAAQ,CAAC,CAAC,EAAE;IAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,OAAO;IACX,QAAQ,IAAI,EAAE,YAAY;IAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACpD,SAAS;IACT,KAAK,CAAC;IACN,CAAC;;AAED,IAAO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,IAAI;IACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnF,KAAK;IACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IAC3C,YAAY;IACZ,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,SAAS;IACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;IACzC,KAAK;IACL,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;;AAED,IAAO,SAAS,QAAQ,GAAG;IAC3B,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;IACtD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;;AAED,IAAO,SAAS,cAAc,GAAG;IACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxF,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;IACzE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;;AAEF,IAAO,SAAS,OAAO,CAAC,CAAC,EAAE;IAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;;AAED,IAAO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;IACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;;AAED,IAAO,SAAS,gBAAgB,CAAC,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChJ,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;;AAED,IAAO,SAAS,aAAa,CAAC,CAAC,EAAE;IACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;;AAED,IAAO,SAAS,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE;IAClD,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;IACnH,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;;AAEF,IAAO,SAAS,YAAY,CAAC,GAAG,EAAE;IAClC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACnG,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;IACzB,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;;AAED,IAAO,SAAS,eAAe,CAAC,GAAG,EAAE;IACrC,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;;;QChMD;SAEC;QAFqB,aAAa;YADlCA,eAAU,EAAE;WACS,aAAa,CAElC;QAAD,oBAAC;KAFD;;ICOA;;;;AAKA;QAIE,8BAAoB,OAAsB,EAAU,KAAa;YAAjE,iBAGC;YAHmB,YAAO,GAAP,OAAO,CAAe;YAAU,UAAK,GAAL,KAAK,CAAQ;YAC/D,IAAI,CAAC,IAAI;gBACL,IAAI,OAAO,CAAqB,UAAC,OAAmB,IAAO,KAAI,CAAC,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;SAChG;QAED,wCAAS,GAAT,UAAU,EAAe,EAAE,UAA+B;YAA1D,iBAQC;YAPC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;oBAC9B,IAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;oBAChD,KAAI,CAAC,YAAY,CAAC,GAAyB,CAAC,CAAC;oBAC7C,OAAO;iBACR,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,4CAAa,GAAb,UAAc,OAA4B;YAA1C,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,CAAqB,IAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;aACvE,CAAC,CAAC;SACJ;;;;QAKD,2CAAY,GAAZ,UAAa,OAA8D,EAAE,QAAwB;YAArG,iBAUC;YAVY,wBAAA,EAAA,UAAkC,EAA4B;YAAE,yBAAA,EAAA,eAAwB;YAEnG,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB;oBAC5C,IAAI,QAAQ,EAAE;wBACZ,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;qBACnB;oBACD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBACxC,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,+CAAgB,GAAhB,UAAiB,OAAoC;YAArD,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;aAC9E,CAAC,CAAC;SACJ;;;;QAKD,2CAAY,GAAZ,UAAa,OAA+B;YAA5C,iBAUC;YATC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB;oBAC5C,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE;wBAC9C,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;qBAC7E;oBACD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;oBAClB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBACxC,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;;;QAKD,8CAAe,GAAf,UAAgB,OAAkC;YAAlD,iBAOC;YANC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB;oBAC5C,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;oBAClB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBAC3C,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,6CAAc,GAAd,UAAe,OAAwB;YAAvC,iBAQC;YAPC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,UAAC,GAAuB;oBACtD,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjB,OAAO,IAAI,CAAC;iBACb,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,4CAAa,GAAb,UAAc,OAAgC;YAA9C,iBAQC;YAPC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,UAAC,GAAuB;oBACtD,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC/C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO,OAAO,CAAC;iBAChB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;;;QAKD,8CAAe,GAAf,UAAgB,OAA8B;YAA9C,iBAQC;YAPC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAA,CAAC;oBACrB,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACf,OAAO,IAAI,CAAC;iBACb,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;;;;;QAOD,iDAAkB,GAAlB,UAAmB,OAAqC;YAAxD,iBAQC;YAPC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB;oBAC5C,IAAI,QAAQ,GAA0B,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;oBAC9C,OAAO,QAAQ,CAAC;iBACjB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;;;;;QAOD,mDAAoB,GAApB,UAAqB,OAAuC;YAA5D,iBAQC;YAPC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB;oBAC5C,IAAI,QAAQ,GAA4B,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACzE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;oBAC9C,OAAO,QAAQ,CAAC;iBACjB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;;;QAKD,+CAAgB,GAAhB,UAAiB,MAA8B,EAAE,OAAyB;YACxE,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACpE;QAED,kDAAmB,GAAnB,UAAuB,SAAiB;YAAxC,iBAMC;YALC,OAAO,IAAIC,eAAU,CAAC,UAAC,QAAqB;gBAC1C,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,CAAqB;oBACnC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,GAAM,IAAO,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC,EAAE,CAAC,CAAC;iBACrF,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,qDAAsB,GAAtB;YAAA,iBAMC;YALC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB;oBACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;iBAC/C,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,wCAAS,GAAT,UAAU,MAA8B;YAAxC,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB,IAAK,OAAA,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC;aAC3E,CAAC,CAAC;SACJ;QAED,sCAAO,GAAP;YAAA,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB,IAAK,OAAA,GAAG,CAAC,OAAO,EAAE,GAAA,CAAC,CAAC;aACnE,CAAC,CAAC;SACJ;QAED,wCAAS,GAAT;YAAA,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB,IAAK,OAAA,GAAG,CAAC,SAAS,EAAE,GAAA,CAAC,CAAC;aACrE,CAAC,CAAC;SACJ;QAED,2CAAY,GAAZ;YAAA,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB,IAAK,OAAA,GAAG,CAAC,YAAY,EAAE,GAAA,CAAC,CAAC;aACxE,CAAC,CAAC;SACJ;QAED,sCAAO,GAAP,UAAQ,IAAY;YAApB,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB,IAAK,OAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;aACvE,CAAC,CAAC;SACJ;QAED,wCAAS,GAAT;YAAA,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAuB,IAAK,OAAA,GAAG,CAAC,SAAS,EAAE,GAAA,CAAC,CAAC;aACrE,CAAC,CAAC;SACJ;QAED,oCAAK,GAAL,UAAM,MAAgD;YAAtD,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC;aACnD,CAAC,CAAC;SACJ;QAED,oCAAK,GAAL,UAAM,CAAS,EAAE,CAAS;YAA1B,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAA,CAAC,CAAC;aACjD,CAAC,CAAC;SACJ;QAED,wCAAS,GAAT,UAAU,MAA4D,EAAE,OAAmC;YAA3G,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAA,CAAC,CAAC;aAChE,CAAC,CAAC;SACJ;QAED,0CAAW,GAAX,UAAY,MAA4D,EAAE,OAAmC;YAA7G,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClC,OAAO,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAA,CAAC,CAAC;aAClE,CAAC,CAAC;SACJ;;;;QAKD,2CAAY,GAAZ,cAA8C,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;;;;QAKjE,8CAAe,GAAf,UAAgB,SAAiB;YAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,GAAA,CAAC,CAAC;SACvE;;oBAjO4B,aAAa;oBAAiBC,WAAM;;QAJtD,oBAAoB;YADhCF,eAAU,EAAE;6CAKkB,aAAa,EAAiBE,WAAM;WAJtD,oBAAoB,CAsOhC;QAAD,2BAAC;KAtOD;;ICTA;;;AAKA;QAII,sBAAoB,QAA8B;YAA9B,aAAQ,GAAR,QAAQ,CAAsB;YAH1C,YAAO,GACX,IAAI,GAAG,EAA+E,CAAC;SAErC;;;;;;;QAQtD,sCAAe,GAAf,UAAgB,KAAsB,EAAE,OAA4B;YAChE,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACrC;;;;;;;QAQD,wCAAiB,GAAjB,UAAkB,KAAwB,EAAE,OAA8B;YACtE,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACrC;;;;;;QAOD,kCAAW,GAAX,UAAY,KAA0C;YAAtD,iBAKC;YAJG,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,YAAY;gBAC5C,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC1B,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC9B,CAAC,CAAC;SACN;;;;;;;QAQD,4CAAqB,GAArB,UAAsB,KAA0C,EAAE,OAAoD;YAAtH,iBAWC;YAVG,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,YAAY;gBAC5C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;oBAClB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC1B,OAAO;iBACV;qBAAM;oBACJ,OAAO,KAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAE,UAAC,GAAc;wBACrD,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qBAC3B,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN;;oBArD6B,oBAAoB;;QAJzC,YAAY;YADxBF,eAAU,EAAE;6CAKqB,oBAAoB;WAJzC,YAAY,CA0DxB;QAAD,mBAAC;KA1DD;;ICRA,IAAI,OAAO,GAAG,CAAC,CAAC;;;;;AAUhB;QASI,2BAAqB,QAAsB;YAAtB,aAAQ,GAAR,QAAQ,CAAc;YARnC,oBAAe,GAAG,KAAK,CAAC;YACxB,QAAG,GAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;;;;YAKpC,YAAO,GAAG,IAAI,CAAC;SAEwB;QAEhD,oCAAQ,GAAR;YACI,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,OAAO;aACV;YACD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QAED,uCAAW,GAAX,UAAY,OAAsB;YAC9B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,OAAO;aACV;YACD,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,EAAC,CAAC,CAAC;aACzF;SACJ;;QAGD,8BAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,oCAAQ,GAAR,cAAqB,OAAO,uBAAqB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAI,CAAC,EAAE;;QAGzE,uCAAW,GAAX;YACI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACnC;;oBA5B8B,YAAY;;QAFlCG;YAARC,UAAK,EAAE;;0DAAgB;QAPf,iBAAiB;YAJ7BC,cAAS,CAAC;gBACP,QAAQ,EAAE,qBAAqB;aAClC,CAAC;6CAWiC,YAAY;WATlC,iBAAiB,CAuC7B;QAAD,wBAAC;KAvCD;;;QCEE,uBAAoB,WAAiC,EAAU,KAAa;YAAxD,gBAAW,GAAX,WAAW,CAAsB;YAAU,UAAK,GAAL,KAAK,CAAQ;YAHpE,aAAQ,GACZ,IAAI,GAAG,EAAuC,CAAC;SAE6B;QAEhF,iCAAS,GAAT,UAAU,MAAiB;YACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;gBACtD,MAAM,EAAE,EAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAC;gBACrD,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC,CAAC;SACL;;;;QAKD,oCAAY,GAAZ,UAAa,MAAiB;YAA9B,iBAKC;YAJC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBACtC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACf,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9B,CAAC,CAAC;SACJ;QAED,kCAAU,GAAV,UAAW,MAAiB,EAAE,OAA+B;YAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBACtC,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE;oBAC9C,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;iBAC7E;gBACD,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;aACvB,CAAC,CAAC;SACJ;QAED,iCAAS,GAAT,UAAU,MAAiB;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,GAAA,CAAC,CAAC;SAC7D;QAED,iCAAS,GAAT,UAAU,MAAiB;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,GAAA,CAAC,CAAC;SAC7D;QAED,iCAAS,GAAT,UAAU,MAAiB;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,GAAA,CAAC,CAAC;SAC7D;QAED,iCAAS,GAAT,UAAU,MAAiB;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CACjC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACpF;QAED,mCAAW,GAAX,UAAY,MAAiB;YAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1F;QAED,oCAAY,GAAZ,UAAa,MAAiB;YAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5F;QAED,kCAAU,GAAV,UAAW,MAAiB;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;SACxF;QAED,iCAAS,GAAT,UAAU,MAAiB;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;SACtF;QAED,uCAAe,GAAf,UAAgB,MAAiB;YAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,6CAAqB,GAArB,UAAyB,SAAiB,EAAE,MAAiB;YAA7D,iBAaC;YAZC,OAAO,IAAIJ,eAAU,CAAC,UAAC,QAAqB;gBAC1C,IAAI,QAAQ,GAA+B,IAAI,CAAC;gBAChD,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;oBAC/B,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBACvF,CAAC,CAAC;gBAEH,OAAO;oBACL,IAAI,QAAQ,KAAK,IAAI,EAAE;wBACrB,QAAQ,CAAC,MAAM,EAAE,CAAC;qBACnB;iBACF,CAAC;aACH,CAAC,CAAC;SACJ;;oBAzFgC,oBAAoB;oBAAiBC,WAAM;;QAJjE,aAAa;YADzBF,eAAU,EAAE;6CAKsB,oBAAoB,EAAiBE,WAAM;WAJjE,aAAa,CA8FzB;QAAD,oBAAC;KA9FD;;;QCmJE,mBAAoB,QAAuB;YAAvB,aAAQ,GAAR,QAAQ,CAAe;;;;YAtIlC,cAAS,GAAG,IAAI,CAAC;;;;;YAMA,cAAS,GAAG,KAAK,CAAC;;;;;YAMnC,aAAQ,GAAG,KAAK,CAAC;;;;YAejB,WAAM,GAAG,CAAC,CAAC;;;;;YAgBX,mBAAc,GAAoC,QAAQ,CAAC;;;;YAK3D,iBAAY,GAAG,CAAC,CAAC;;;;YAKjB,YAAO,GAAG,IAAI,CAAC;;;;YAUd,iBAAY,GAAgC,IAAII,iBAAY,EAAiB,CAAC;;;;YAK9E,gBAAW,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKvE,mBAAc,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAK1E,SAAI,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKhE,YAAO,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKnE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKrE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKrE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKrE,aAAQ,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKpE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKrE,YAAO,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKnE,iBAAY,GAAyB,IAAIA,iBAAY,EAAU,CAAC;;;;YAKhE,eAAU,GAA6B,IAAIA,iBAAY,EAAc,CAAC;YAExE,0BAAqB,GAAG,KAAK,CAAC;YAO9B,wBAAmB,GAAmB,EAAE,CAAC;SAEF;sBApJpC,SAAS;;QAuJpB,4BAAQ,GAAR;YACE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;;QAGD,+BAAW,GAAX,UAAY,OAAsC;YAChD,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAC/B,OAAO;aACR;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC/C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC/B;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACjC;YACD,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAClC;YACD,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAChC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC/B;YACD,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;SAC3C;QAEO,+CAA2B,GAAnC,UAAoC,OAA2C;YAC7E,IAAI,OAAO,GAA8B,EAAE,CAAC;YAC5C,IAAI,UAAU,GACV,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,WAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;YAC9E,UAAU,CAAC,OAAO,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACzC;SACF;QAEO,2CAAuB,GAA/B;YAAA,iBAkCC;YAjCC,IAAI,MAAM,GAAmC,IAAI,GAAG,EAA6B,CAAC;YAClF,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,OAAO,CAAC,UAAC,YAAY,EAAE,SAAS;gBACrC,KAAI,CAAC,mBAAmB,CAAC,IAAI,CACzB,KAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAgB,SAAS,EAAE,KAAI,CAAC,CAAC,SAAS,CAAC,UAAC,KAAK;oBAClF,QAAQ,SAAS;wBACf,KAAK,gBAAgB;4BACnB,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAI,CAAC,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC;4BAC1E,MAAM;wBACR,KAAK,gBAAgB;4BACnB,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAI,CAAC,CAAC,IAAI,CAC9B,UAAC,MAAM;gCACH,OAAA,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAkB,CAAC;6BAAA,CAAC,CAAC;4BACpF,MAAM;wBACR;4BACE,YAAY,CAAC,IAAI,CACb,EAAC,MAAM,EAAE,EAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,EAAe,CAAC,CAAC;qBACnF;iBACF,CAAC,CAAC,CAAC;aACT,CAAC,CAAC;SACJ;;QAGD,+BAAW,GAAX;YACE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAS,CAAe,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAClC;;;;QAKD,6BAAS,GAAT,cAAqC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;QAE5E,6BAAS,GAAT,cAA+B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;;QAjGvD,qBAAW,GAAa;YACrC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc;YAC5F,SAAS,EAAE,QAAQ,EAAE,WAAW;SACjC,CAAC;;oBAI4B,aAAa;;QAhJlCH;YAARC,UAAK,EAAE;;mDAAkB;QAKjBD;YAARC,UAAK,EAAE;;oDAAmB;QAKlBD;YAARC,UAAK,EAAE;;oDAAkB;QAMAD;YAAzBC,UAAK,CAAC,iBAAiB,CAAC;;oDAAmB;QAMnCD;YAARC,UAAK,EAAE;;mDAAkB;QAKjBD;YAARC,UAAK,EAAE;;oDAAmB;QAKlBD;YAARC,UAAK,EAAE;;sDAAqB;QAKpBD;YAARC,UAAK,EAAE;;iDAAY;QAKXD;YAARC,UAAK,EAAE;;sDAAqB;QAKpBD;YAARC,UAAK,EAAE;;wDAAuB;QAMtBD;YAARC,UAAK,EAAE;;yDAA4D;QAK3DD;YAARC,UAAK,EAAE;;uDAAkB;QAKjBD;YAARC,UAAK,EAAE;;kDAAgB;QAKfD;YAARC,UAAK,EAAE;;iDAAgB;QAKdD;YAATI,WAAM,EAAE;sCAAeD,iBAAY;uDAAoD;QAK9EH;YAATI,WAAM,EAAE;sCAAcD,iBAAY;sDAA8C;QAKvEH;YAATI,WAAM,EAAE;sCAAiBD,iBAAY;yDAA8C;QAK1EH;YAATI,WAAM,EAAE;sCAAOD,iBAAY;+CAA8C;QAKhEH;YAATI,WAAM,EAAE;sCAAUD,iBAAY;kDAA8C;QAKnEH;YAATI,WAAM,EAAE;sCAAYD,iBAAY;oDAA8C;QAKrEH;YAATI,WAAM,EAAE;sCAAYD,iBAAY;oDAA8C;QAKrEH;YAATI,WAAM,EAAE;sCAAYD,iBAAY;oDAA8C;QAKrEH;YAATI,WAAM,EAAE;sCAAWD,iBAAY;mDAA8C;QAKpEH;YAATI,WAAM,EAAE;sCAAYD,iBAAY;oDAA8C;QAKrEH;YAATI,WAAM,EAAE;sCAAUD,iBAAY;kDAA8C;QAKnEH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;uDAAsC;QAKhEH;YAATI,WAAM,EAAE;sCAAaD,iBAAY;qDAA8C;QAzIrE,SAAS;YAHrBD,cAAS,CAAC;gBACT,QAAQ,EAAE,YAAY;aACvB,CAAC;6CAqJ8B,aAAa;WApJhC,SAAS,CA+OrB;QAAD,gBAAC;KA/OD;;ICHA;;;AAIA;QAIE,0BAAoB,QAA8B,EAAU,KAAa;YAArD,aAAQ,GAAR,QAAQ,CAAsB;YAAU,UAAK,GAAL,KAAK,CAAQ;YAHjE,YAAO,GACf,IAAI,GAAG,EAA+B,CAAC;SAEuC;;;;QAK9E,uCAAY,GAAZ,UAAa,KAAmB;YAAhC,iBAWC;YAVC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAC7C,KAAK,EAAE,KAAK,CAAC,KAAK;aACJ,CAAC;iBAChB,IAAI,CAAC,UAAA,CAAC;gBACL,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,KAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ,GAAA,CAAC,CAAC;iBAChF;gBACD,OAAO,CAAC,CAAC;aACV,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACnC;QAED,0CAAe,GAAf,UAAgB,KAAmB;YAAnC,iBAKC;YAJC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;gBAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACf,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC5B,CAAC,CAAC;SACJ;QAED,wCAAa,GAAb,UAAc,KAAmB,EAAE,OAAwB;YAA3D,iBAYC;YAXC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;gBAC5B,CAAC,CAAC,OAAO,CAAC,UAAU,OAAgB;oBAClC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAElB,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;wBACd,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;qBAC7B;iBACF,CAAC,CAAC;gBACH,KAAI,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ,GAAA,CAAC,CAAC;aAC1E,CAAC,CAAC;SACJ;QAED,yCAAc,GAAd,UAAe,KAAmB,EAAE,OAAoB;YAEtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;gBAC5B,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAC9C,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACtC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC3B,CAAC,CAAC;SACJ;;;;QAKD,gDAAqB,GAArB,UAAyB,SAAiB,EAAE,KAAmB;YAA/D,iBAMC;YALC,OAAO,IAAIJ,eAAU,CAAC,UAAC,QAAqB;gBAC1C,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAC,CAAO;oBACnC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBAC5E,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;;;;;QAOD,0CAAe,GAAf,UAAgB,CAAO,EAAE,OAAwB;YAC/C,OAAO,IAAI,OAAO,CAAY,UAAC,OAAO,EAAE,MAAM;gBAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBAC/B,IAAI;wBACF,IAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBACvC,OAAO,CAAC,QAAQ,CAAC,CAAC;qBACnB;oBAAC,OAAO,CAAC,EAAE;wBACV,MAAM,CAAC,CAAC,CAAC,CAAC;qBACX;iBACF;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;oBACtC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;iBACvC;qBAAM;oBACL,MAAM,CAAC,kEAAkE,CAAC,CAAC;iBAC5E;aACF,CAAC,CAAC;SACN;;oBAhF6B,oBAAoB;oBAAiBC,WAAM;;QAJ9D,gBAAgB;YAD5BF,eAAU,EAAE;6CAKmB,oBAAoB,EAAiBE,WAAM;WAJ9D,gBAAgB,CAqF5B;QAAD,uBAAC;KArFD;;ICLA,IAAIM,SAAO,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmMhB;QAsBE,sBAAoB,QAA0B;YAA1B,aAAQ,GAAR,QAAQ,CAAkB;YAnBtC,oBAAe,GAAG,KAAK,CAAC;YACxB,QAAG,GAAW,CAACA,SAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;YACrC,mBAAc,GAAmB,EAAE,CAAC;;;;YAKlC,eAAU,GAAiC,IAAIF,iBAAY,EAAkB,CAAC;;;;YAK/E,YAAO,GAA2B,IAAI,CAAC;SAOG;yBAtBxC,YAAY;QAwBvB,+BAAQ,GAAR;YACE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,OAAO;aACR;YACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAEO,yCAAkB,GAA1B;YAAA,iBAQC;YAPC,IAAM,SAAS,GAAG;gBAChB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;aAC7E,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,UAAC,GAAG;gBACpB,IAAM,EAAE,GAAG,KAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtF,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B,CAAC,CAAC;SACJ;;QAGD,yBAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,+BAAQ,GAAR,cAAqB,OAAO,kBAAgB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAI,CAAC,EAAE;;QAGpE,kCAAW,GAAX;YACE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;YAEpC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;SACnD;;QAGD,kCAAW,GAAX,UAAY,OAAsB;YAAlC,iBAeC;YAdC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,OAAO;aACR;YAED,IAAI,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;aAC/D;YAED,IAAI,WAAW,GAAgB,EAAE,CAAC;YAElC,cAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAC,WAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,GAAI,KAAY,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;YAEnJ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SACjD;;QAvEc,mCAAsB,GAAkB,CAAC,OAAO,CAAC,CAAC;;oBAqBnC,gBAAgB;;QAZpCH;YAATI,WAAM,EAAE;sCAAaD,iBAAY;wDAAsD;QAK/EH;YAARC,UAAK,EAAE;sCAAU,MAAM;qDAAwB;QAKvCD;YAARC,UAAK,EAAE;;mDAAmB;QApBhB,YAAY;YAHxBC,cAAS,CAAC;gBACT,QAAQ,EAAE,gBAAgB;aAC3B,CAAC;6CAuB8B,gBAAgB;WAtBnC,YAAY,CAyExB;QAAD,mBAAC;KAzED;;IClLA;;;;AAIA;QAAA;SAEC;QAAD,wBAAC;KAAA,IAAA;IAED;;;AAIA;QAKE,0BAAY,MAAqB;YAAjC,iBASC;YAZkB,6BAAwB,GAAG,IAAII,oBAAe,CAAS,GAAG,CAAC,CAAC;YAC5D,sBAAiB,GAAG,IAAIA,oBAAe,CAAY,IAAI,GAAG,EAAkC,CAAC,CAAC;YAG/G,IAAI,CAAC,OAAO,GAAGC,SAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACrCC,iBAAO,CAAC,cAAM,OAAA,KAAI,CAAC,iBAAiB,GAAA,CAAC,EACrCC,gBAAM,CACJ,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAACC,mBAAS,CAAC,UAAA,IAAI,IAAI,OAAAC,UAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAA,CAAC,CAAC,CACtE,EACDC,aAAG,CAAC,UAAA,eAAe,IAAI,OAAA,KAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAA,CAAC,EAC7DC,qBAAW,CAAC,CAAC,CAAC,CACf,CAAC;SACH;QAEO,0CAAe,GAAvB,UACE,eAAoD;YAEpD,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAkB,CAAC;YAC9D,eAAe,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC;SACf;QAED,sCAAW,GAAX,UAAY,MAA8B;YACxC,IAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBACxC,OAAO;aACR;YACD,IAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACzC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClC;QAED,2CAAgB,GAAhB,UAAiB,MAA8B;YAC7C,IAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClC;QAED,0DAA+B,GAA/B,UAAgC,MAAc;YAC5C,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5C;QAED,qCAAU,GAAV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QAES,4CAAiB,GAA3B,UAA4B,MAA8B;YACxD,OAAU,MAAM,CAAC,GAAG,SAAI,MAAM,CAAC,GAAK,CAAC;SACtC;;oBA7CmB,aAAa;;QALtB,gBAAgB;YAD5BhB,eAAU,EAAE;6CAMS,aAAa;WALtB,gBAAgB,CAmD5B;QAAD,uBAAC;KAnDD;;IC7BA;;;;;;AASA;QAUE,sBAC2B,kBAAqC,EAC7C,iBAAmC;YAD3B,uBAAkB,GAAlB,kBAAkB,CAAmB;YAC7C,sBAAiB,GAAjB,iBAAiB,CAAkB;;;;;YAP7C,iBAAY,GAAG,IAAI,CAAC;YAErB,gBAAW,GAAkB,IAAIiB,YAAO,EAAQ,CAAC;YACjD,4BAAuB,GAA4B,IAAI,CAAC;SAK5D;;;;QAKJ,kCAAW,GAAX;YACE,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;;;;QAKD,+BAAQ,GAAR;YAAA,iBAWC;YAVC,IAAI,CAAC,kBAAkB;iBACpB,oBAAoB,EAAE;iBACtB,IAAI,CACHC,8BAAoB,CAClB,UAAC,CAAmB,EAAE,CAAmB;gBACvC,OAAA,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG;aAAA,CACjE,EACDC,mBAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAC5B;iBACA,SAAS,CAAC,UAAA,OAAO,IAAI,OAAA,KAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;SACtD;;;;;;;;QASO,oCAAa,GAArB,UAAsB,mBAAsC;;YAE1D,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;;;aAG9E;YAED,IAAI,mBAAmB,EAAE;gBACvB,IAAI,CAAC,uBAAuB,GAAG,mBAAmB,CAAC;aACpD;YACD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,OAAO;aACR;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aACzE;SACF;;;;QAKD,kCAAW,GAAX;YACE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,EAAE;gBACzC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aAC9E;SACF;;oBA9D8C,iBAAiB,uBAA7DC,SAAI;oBAC+B,gBAAgB;;QAP7CjB;YAARC,UAAK,EAAE;;0DAAqB;QALlB,YAAY;YAHxBC,cAAS,CAAC;gBACT,QAAQ,EAAE,gBAAgB;aAC3B,CAAC;YAYGgB,WAAAD,SAAI,EAAE,CAAA;6CAAsC,iBAAiB;gBAC1B,gBAAgB;WAZ3C,YAAY,CA0ExB;QAAD,mBAAC;KA1ED;;;QCAE,uBAAsB,YAAkC,EAAY,KAAa;YAA3D,iBAAY,GAAZ,YAAY,CAAsB;YAAY,UAAK,GAAL,KAAK,CAAQ;YAHvE,aAAQ,GACd,IAAI,GAAG,EAA8B,CAAC;SAE2C;QAE/E,wCAAgB,GAAtB,UAAuB,MAAgC;;;oBACrD,IAAI,MAAM,KAAK,IAAI,EAAE;wBACnB,sBAAO,IAAI,EAAC;qBACb;yBAAM;wBACL,sBAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAA,CAAC,EAAC;qBACnF;;;;SACF;QAED,oCAAY,GAAZ,UAAa,MAAiB;YAA9B,iBAYC;YAXC,IAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,IAAI,EAAE;;gBAEb,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS;gBACtB,OAAO,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACf,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC9B,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,4CAAoB,GAApB,UAAqB,MAAiB;YACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CACjC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,WAAW,CAAC,EAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAC,CAAC,GAAA,CAAC,CAAC;SAClF;QAED,mCAAW,GAAX,UAAY,MAAiB;YAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;SAChF;QAED,mCAAW,GAAX,UAAY,MAAiB;YAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACrF;QAED,uCAAe,GAAf,UAAgB,MAAiB;YAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,GAAA,CAAC,CAAC;SACxF;QAED,kCAAU,GAAV,UAAW,MAAiB;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;SACjF;QAED,qCAAa,GAAb,UAAc,MAAiB;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;SACpF;QAED,qCAAa,GAAb,UAAc,MAAiB;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;SACpF;QAED,oCAAY,GAAZ,UAAa,MAAiB;YAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC;SAClF;QAED,uCAAe,GAAf,UAAgB,MAAiB;YAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS,IAAK,OAAA,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,GAAA,CAAC,CAAC;SACxF;QAEK,uCAAe,GAArB,UAAsB,MAAiB;;;;;gCAC3B,qBAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAA;;4BAAnC,CAAC,GAAG,SAA+B;4BACzC,KAAA,CAAA,KAAA,CAAC,EAAC,YAAY,CAAA;4BAAC,qBAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAA;;4BAA5D,cAAe,SAA6C,EAAC,CAAC;;;;;SAC/D;QAED,iCAAS,GAAT,UAAU,MAAiB;YAA3B,iBAeC;YAdC,IAAM,aAAa,GAAG,IAAI,OAAO,CAAS,UAAO,OAAO;;;;;4BACvD,KAAA,CAAA,KAAA,IAAI,CAAC,YAAY,EAAC,YAAY,CAAA;;gCAC3B,QAAQ,EAAE,EAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAC;gCACvD,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gCAC3B,IAAI,EAAE,MAAM,CAAC,OAAO;gCACpB,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,SAAS,EAAE,MAAM,CAAC,SAAS;;4BAChB,qBAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAA;gCAV3D,sBAAA,eAUG,YAAS,GAAE,SAA6C;yCACxD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAA;;;iBAAA,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;SAC1C;QAED,uCAAe,GAAf,UAAgB,MAAiB;YAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,6CAAqB,GAArB,UAAyB,SAAiB,EAAE,MAAiB;YAA7D,iBAMC;YALC,OAAO,IAAInB,eAAU,CAAC,UAAC,QAAqB;gBAC1C,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,CAAS;oBACvC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBAC5E,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;oBA7FmC,oBAAoB;oBAAmBC,WAAM;;QAJtE,aAAa;YADzBF,eAAU,EAAE;6CAKyB,oBAAoB,EAAmBE,WAAM;WAJtE,aAAa,CAkGzB;QAAD,oBAAC;KAlGD;;;QCGE,2BACY,YAAkC,EAAU,KAAa,EACzD,cAA6B;YAD7B,iBAAY,GAAZ,YAAY,CAAsB;YAAU,UAAK,GAAL,KAAK,CAAQ;YACzD,mBAAc,GAAd,cAAc,CAAe;YALjC,iBAAY,GAChB,IAAI,GAAG,EAAsC,CAAC;SAIL;QAE7C,4CAAgB,GAAhB,UAAiB,UAAyB;YAA1C,iBAYC;YAXC,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClD,IAAI,OAAO,IAAI,IAAI,EAAE;;gBAEnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,UAAC,CAAa;gBAChC,OAAO,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpB,CAAC,CAAC,KAAK,EAAE,CAAC;oBACV,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;iBACtC,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,uCAAW,GAAX,UAAY,UAAyB;YACnC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,CAAa,IAAK,OAAA,CAAC,CAAC,WAAW,CAAC;gBAC7E,GAAG,EAAE,UAAU,CAAC,QAAQ;gBACxB,GAAG,EAAE,UAAU,CAAC,SAAS;aAC1B,CAAC,GAAA,CAAC,CAAC;SACL;QAED,qCAAS,GAAT,UAAU,UAAyB;YACjC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;iBACnC,IAAI,CAAC,UAAC,CAAa,IAAK,OAAA,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAA,CAAC,CAAC;SAC9D;QAED,gCAAI,GAAJ,UAAK,UAAyB;YAA9B,iBASC;YARC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC9C,IAAI,UAAU,CAAC,UAAU,IAAI,IAAI,EAAE;oBACjC,OAAO,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,MAAM;wBAC5E,OAAO,KAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAA,CAAC,CAAC;qBAC5E,CAAC,CAAC;iBACJ;gBACD,OAAO,KAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;aACpE,CAAC,CAAC;SACJ;QAED,iCAAK,GAAL,UAAM,UAAyB;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,EAAE,GAAA,CAAC,CAAC;SACjE;QAED,sCAAU,GAAV,UAAW,UAAyB,EAAE,OAA0B;YAC9D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,CAAa,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;SACzF;QAED,yCAAa,GAAb,UAAc,UAAyB;YACrC,IAAM,OAAO,GAAsB;gBACjC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,cAAc,EAAE,UAAU,CAAC,cAAc;aAC1C,CAAC;YACF,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,EAAE;gBACvF,OAAO,CAAC,QAAQ,GAAG,EAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,SAAS,EAAC,CAAC;aAC1E;YACD,IAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACtE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;SACtD;;;;QAKD,iDAAqB,GAArB,UAAyB,SAAiB,EAAE,UAAyB;YAArE,iBAMC;YALC,OAAO,IAAID,eAAU,CAAC,UAAC,QAAqB;gBAC1C,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAC,CAAa;oBACnD,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBAC5E,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;oBAvEyB,oBAAoB;oBAAiBC,WAAM;oBACzC,aAAa;;QAN9B,iBAAiB;YAD7BF,eAAU,EAAE;6CAMe,oBAAoB,EAAiBE,WAAM;gBACzC,aAAa;WAN9B,iBAAiB,CA6E7B;QAAD,wBAAC;KA7ED;;ICJA,IAAI,YAAY,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCrB;QA0DE,uBAAoB,kBAAqC,EAAU,GAAe;YAA9D,uBAAkB,GAAlB,kBAAkB,CAAmB;YAAU,QAAG,GAAH,GAAG,CAAY;;;;YAXzE,WAAM,GAAG,KAAK,CAAC;;;;YAKd,oBAAe,GAAuB,IAAII,iBAAY,EAAQ,CAAC;YAGjE,8BAAyB,GAAG,KAAK,CAAC;YAClC,QAAG,GAAW,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC;SAEoC;0BA1D3E,aAAa;QA4DxB,gCAAQ,GAAR;YACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;YAChF,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;;QAGD,mCAAW,GAAX,UAAY,OAAsC;YAChD,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACnC,OAAO;aACR;YACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAClF,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;gBACtC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC3C;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACzC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;YACD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;SACrC;QAEO,+CAAuB,GAA/B;YAAA,iBAKC;YAJC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;gBAC1E,KAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,KAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;aAC7B,CAAC,CAAC;SACJ;QAEO,wCAAgB,GAAxB;YACE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;SAC1C;QAEO,6CAAqB,GAA7B,UAA8B,OAAsC;YAClE,IAAI,OAAO,GAA8B,EAAE,CAAC;YAC5C,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CACxC,UAAA,CAAC,IAAI,OAAA,eAAa,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;YACnE,UAAU,CAAC,OAAO,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACnD;;;;QAKD,4BAAI,GAAJ,cAAwB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;;;;QAKpE,6BAAK,GAAL;YAAA,iBAEC;YADC,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAQ,KAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SACzF;;QAGD,0BAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,gCAAQ,GAAR,cAAqB,OAAO,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE;;QAGrE,mCAAW,GAAX,cAAgB,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE;;QAtElD,sCAAwB,GAAa,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;;oBAI3C,iBAAiB;oBAAegB,eAAU;;QArDzEnB;YAARC,UAAK,EAAE;;uDAAkB;QAMjBD;YAARC,UAAK,EAAE;;wDAAmB;QAMlBD;YAARC,UAAK,EAAE;;6DAAyB;QAQxBD;YAARC,UAAK,EAAE;;qDAAgB;QAOfD;YAARC,UAAK,EAAE;;uDAAkB;QAejBD;YAARC,UAAK,EAAE;;qDAAgB;QAKdD;YAATI,WAAM,EAAE;sCAAkBD,iBAAY;8DAAkC;QApD9D,aAAa;YAPzBiB,cAAS,CAAC;gBACT,QAAQ,EAAE,iBAAiB;gBAC3B,QAAQ,EAAE,wFAGT;aACF,CAAC;6CA2DwC,iBAAiB,EAAeD,eAAU;WA1DvE,aAAa,CA6HzB;QAAD,oBAAC;KA7HD;;IChCA;;;AAIA;QAIE,yBAAoB,QAA8B,EAAU,KAAa;YAArD,aAAQ,GAAR,QAAQ,CAAsB;YAAU,UAAK,GAAL,KAAK,CAAQ;YAHjE,YAAO,GACX,IAAI,GAAG,EAAkC,CAAC;SAE+B;;;;QAK7E,qCAAW,GAAX,UAAY,KAAkB;YAC5B,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,UAAA,CAAC;gBAClD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,GAAG,EAAE,CAAC;oBACN,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;oBACxC,cAAc,EAAE,KAAK,CAAC,cAAc;oBACpC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;oBAC9C,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,MAAM,EAAE,KAAK,CAAC,MAAM;iBACF,CAAC,CAAC;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SACnC;QAED,oCAAU,GAAV,UAAW,KAAkB,EAAE,OAAwB;YACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;SAC1D;QAED,wCAAc,GAAd,UAAe,KAAkB;YAAjC,iBAKC;YAJC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;gBAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACf,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC5B,CAAC,CAAC;SACJ;;;;QAKD,+CAAqB,GAArB,UAAyB,SAAiB,EAAE,KAAkB;YAA9D,iBAMC;YALC,OAAO,IAAIrB,eAAU,CAAC,UAAC,QAAqB;gBAC1C,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAC,CAAW;oBACvC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBAC5E,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;;oBAxC6B,oBAAoB;oBAAiBC,WAAM;;QAJ9D,eAAe;YAD3BF,eAAU,EAAE;6CAKmB,oBAAoB,EAAiBE,WAAM;WAJ9D,eAAe,CA6C3B;QAAD,sBAAC;KA7CD;;ICPA,IAAIM,SAAO,GAAG,CAAC,CAAC;AAKhB;QAyDE,qBAAoB,QAAyB;YAAzB,aAAQ,GAAR,QAAQ,CAAiB;YAxDrC,oBAAe,GAAG,KAAK,CAAC;YACxB,QAAG,GAAW,CAACA,SAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;YACrC,mBAAc,GAAmB,EAAE,CAAC;;;;YAOnC,cAAS,GAAG,IAAI,CAAC;;;;;;;YAQjB,qBAAgB,GAAG,KAAK,CAAC;;;;YAKzB,mBAAc,GAAG,IAAI,CAAC;;;;YAKtB,wBAAmB,GAAG,KAAK,CAAC;;;;YAK5B,QAAG,GAAW,IAAI,CAAC;;;;YAKnB,WAAM,GAAkB,IAAI,CAAC;;;;YAK5B,eAAU,GAAgC,IAAIF,iBAAY,EAAiB,CAAC;;;;YAK5E,0BAAqB,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;;;;;;YAOrE,iBAAY,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;SAErB;wBAzDtC,WAAW;QA2DtB,8BAAQ,GAAR;YACE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,OAAO;aACR;YACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAED,iCAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,OAAO;aACR;YACD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;SACrC;QAEO,2CAAqB,GAA7B,UAA8B,OAAsB;YAClD,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBACf,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,aAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC;iBAC3D,MAAM,CAAC,UAAC,GAAQ,EAAE,CAAS;gBAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBACjC,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACzC;SACF;QAEO,wCAAkB,GAA1B;YAAA,iBAUC;YATC,IAAM,SAAS,GAAG;gBAChB,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAC,EAAiB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBACzE,EAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAA,EAAC;gBACnF,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAA,EAAC;aAClE,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,UAAC,GAAG;gBACpB,IAAM,EAAE,GAAG,KAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtF,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B,CAAC,CAAC;SACJ;;QAGD,wBAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,8BAAQ,GAAR,cAAqB,OAAO,iBAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAI,CAAC,EAAE;;QAGnE,iCAAW,GAAX;YACE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;YAEnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;SACnD;;QA1Gc,4BAAgB,GAC3B,CAAC,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;;oBAoDlE,eAAe;;QA/CpCH;YAARC,UAAK,EAAE;;sDAAkB;QAQjBD;YAARC,UAAK,EAAE;;6DAA0B;QAKzBD;YAARC,UAAK,EAAE;;2DAAuB;QAKtBD;YAARC,UAAK,EAAE;;gEAA6B;QAK5BD;YAARC,UAAK,EAAE;;gDAAoB;QAKnBD;YAARC,UAAK,EAAE;;mDAA8B;QAK5BD;YAATI,WAAM,EAAE;sCAAaD,iBAAY;uDAAoD;QAK5EH;YAATI,WAAM,EAAE;sCAAwBD,iBAAY;kEAAkC;QAOrEH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;yDAAkC;QAvD3D,WAAW;YAHvBD,cAAS,CAAC;gBACT,QAAQ,EAAE,eAAe;aAC1B,CAAC;6CA0D8B,eAAe;WAzDlC,WAAW,CA+GvB;QAAD,kBAAC;KA/GD;;aCRgB,wBAAwB,CAAI,KAAkB;QAC5D,IAAM,UAAU,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACxD,OAAOmB,qBAAgB,CACrB,UAAC,OAAiB,IAAK,OAAA,UAAU,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,KAAK,CAAC,WAAW,CAAC,MAAM,EACtE,UAAC,KAAa,EAAE,QAAY,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAE,EAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,QAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAgB,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,GAAA,EAClI,UAAC,QAAkB,EAAE,WAAgC,IAAK,OAAA,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,MAAM,EAAE,GAAA,CAAC,GAAA,CAAC,CAAC;KACrH;IAWD;QAAA;YACU,SAAI,GAAQ,EAAE,CAAC;YACf,cAAS,GAKb;gBACF,WAAW,EAAE,EAAgB;gBAC7B,WAAW,EAAE,EAAgB;gBAC7B,QAAQ,EAAE,EAAgB;aAC3B,CAAC;SAmDH;QAlDC,4BAAK,GAAL;YACE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACpB;SACF;QACD,+BAAQ,GAAR;YACE,gBAAW,IAAI,CAAC,IAAI,EAAE;SACvB;QACD,4BAAK,GAAL,UAAM,CAAS;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;QACD,gCAAS,GAAT;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACzB;QACD,+BAAQ,GAAR,UAAS,CAAS,EAAE,IAAO;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;SACvD;QACD,0BAAG,GAAH;YAAA,iBAIC;YAHC,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAA,CAAC,CAAC;YAC9E,OAAO,OAAO,CAAC;SAChB;QACD,2BAAI,GAAJ,UAAK,IAAO;YAAZ,iBAIC;YAHC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,KAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAA,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SACzB;QACD,+BAAQ,GAAR,UAAS,CAAS;YAChB,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,GAAA,CAAC,CAAC;YAC/D,OAAO,OAAO,CAAC;SAChB;QACD,4BAAK,GAAL,UAAM,CAAS,EAAE,IAAO;YACtB,IAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,GAAA,CAAC,CAAC;SAC7D;QACD,8BAAO,GAAP,UAAQ,QAAsC;YAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC7B;QACD,kCAAW,GAAX,UAAY,SAAiB,EAAE,OAAiB;YAC9C,IAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC9C,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,OAAO;gBACH,MAAM,EAAE;oBACJ,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;iBACvD;aACJ,CAAC;SACH;QACH,mBAAC;KAAA,IAAA;;;QCpEC,wBAAoB,YAAkC,EAAU,KAAa;YAAzD,iBAAY,GAAZ,YAAY,CAAsB;YAAU,UAAK,GAAL,KAAK,CAAQ;YAHrE,cAAS,GACf,IAAI,GAAG,EAAgC,CAAC;SAEwC;QAElF,mCAAU,GAAV,UAAW,IAAgB;YACzB,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gBACrD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;SAC1C;QAED,sCAAa,GAAb,UAAc,OAAmB;YAAjC,iBAMC;YALC,IAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,IAAI,EAAE;gBACb,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,CAAU,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAA,CAAC,CAAC;SACrF;QAED,0CAAiB,GAAjB,UAAkB,IAAgB,EAAE,OAAoC;YACtE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,CAAU,IAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;SAClF;QAED,sCAAa,GAAb,UAAc,KAAiB;YAA/B,iBAWC;YAVC,IAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,IAAI,EAAE;gBACb,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,CAAU;gBACvB,OAAO,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACf,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,gCAAO,GAAP,UAAQ,OAAmB;YACzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;iBAC/B,IAAI,CAAC,UAAC,OAAO,IAAK,OAAA,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAA,CAAC,CAAC;SACpD;QAED,iCAAQ,GAAR,UAAS,OAAmB;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;iBAC/B,IAAI,CAAC,UAAC,OAAO,IAAK,OAAA,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,EAAE,GAAA,CAAC,GAAA,CAAC,CAAC;SAC9E;QAED,8CAAqB,GAArB,UAAyB,SAAiB,EAAE,IAAgB;YAA5D,iBAMC;YALC,OAAO,IAAIvB,eAAU,CAAC,UAAC,QAAqB;gBAC1C,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,CAAU;oBACvC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBAC5E,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAEK,kDAAyB,GAA/B,UAAgC,UAAsB;;;;;gCACpC,qBAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAA;;4BAA9C,OAAO,GAAG,SAAoC;4BAC9C,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;4BAC3B,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;4BACtD,sBAAO,aAAa,CAAC,IAAI,CAACwB,mBAAS,CAAE,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAiC,CAAC;gCAC/FZ,mBAAS,CAAC,UAAA,aAAa,IAAI,OAAAa,UAAK;gCAC9B,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK;oCACpC,OAAA,wBAAwB,CAAC,KAAK,CAAC;yCAC9B,IAAI,CAACX,aAAG,CAAC,UAAA,UAAU,IAAI,QAAC,EAAE,aAAa,eAAA,EAAE,UAAU,YAAA,EAAE,SAAS,EAAE,KAAK,EAAE,IAAC,CAAC,CAAC;iCAAA,CAAC,GAC7E,IAAI,CAACU,mBAAS,CAAC,EAAE,aAAa,eAAA,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAA,CAAC;gCACzEE,cAAI,CAAC,CAAC,CAAC;gCACPZ,aAAG,CAAC,UAAC,EAAwC;wCAAtC,gCAAa,EAAE,0BAAU,EAAE,wBAAS;oCACzC,IAAI,MAAM,CAAC;oCACX,IAAI,CAAC,UAAU,EAAE;wCACf,MAAM,GAAG;4CACP,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,MAAM,EAAE,GAAA,CAAC,GAAA,CAAC;4CAC5F,SAAS,EAAE,aAAa,CAAC,MAAM;4CAC/B,KAAK,EAAE,aAAa,CAAC,KAAK;yCACa,CAAC;wCAC1C,IAAI,aAAa,CAAC,QAAQ,EAAE;4CAC1B,MAAM,CAAC,QAAQ,GAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;yCACtD;qCACF;yCAAM;wCACL,MAAM,GAAG;4CACP,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,MAAM,EAAE,GAAA,CAAC,GAAA,CAAC;4CAC5F,SAAS,WAAA;4CACT,SAAS,EAAE,UAAU,CAAC,MAAM;4CAC5B,KAAK,EAAE,UAAU,CAAC,KAAK;yCACM,CAAC;wCAChC,IAAI,UAAU,CAAC,QAAQ,EAAE;4CACvB,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;yCACvC;qCACF;oCACD,OAAO,MAAM,CAAC;iCACf,CAAC,CAAC,EAAC;;;;SACP;;oBAlGiC,oBAAoB;oBAAiBb,WAAM;;QAJlE,cAAc;YAD1BF,eAAU,EAAE;6CAKuB,oBAAoB,EAAiBE,WAAM;WAJlE,cAAc,CAuG1B;QAAD,qBAAC;KAvGD;;;QCME,yBAAoB,YAAkC,EAAU,KAAa;YAAzD,iBAAY,GAAZ,YAAY,CAAsB;YAAU,UAAK,GAAL,KAAK,CAAQ;YAHrE,eAAU,GACd,IAAI,GAAG,EAAkC,CAAC;SAEmC;4BAJtE,eAAe;QAMX,8BAAc,GAA7B,UAA8B,IAAiB;YAC7C,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,UAAC,KAAuB;gBACzD,OAAO,EAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,SAAS,EAAkB,CAAC;aACrE,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACb;QAEc,4BAAY,GAA3B,UAA4B,IACG;YAC7B,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,OAAO,UAAU,CAAC;aACnB;iBAAK;gBACJ,OAAO,IAAI,CAAC;aACb;SACF;QAEc,6BAAa,GAA5B,UAA6B,IAAiB;YAC5C,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,UAAA,OAAO,IAAI,QAAC;gBAC7C,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE;oBACJ,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;oBAC/D,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,IAAI,EAAE,iBAAe,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChD,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,YAAY,EAAE,OAAO,CAAC,YAAY;iBACnC;aACe,IAAA,CAAC,CAAC;;YAEpB,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;gBAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAC,EAAU;wBAAV,kBAAU,EAAT,WAAG,EAAE,WAAG;oBACrC,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;wBAC9B,OAAQ,IAAY,CAAC,GAAG,CAAC,CAAC;qBAC3B;iBACF,CAAC,CAAC;gBACH,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,WAAW;oBAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,WAAW,EAAE;oBACzC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;iBACzB;aACJ,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;SACd;QAED,qCAAW,GAAX,UAAY,IAAiB;YAA7B,iBAmBC;YAlBC,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;iBACvD,IAAI,CAAC,cAAM,OAAA,CAAE,iBAAe,CAAC,cAAc,CAAC,IAAI,CAAC;gBACpC,iBAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAA,CAAC;iBAClD,IAAI,CAAC,UAAC,EAAgD;oBAAhD,kBAAgD,EAA/C,YAAI,EAAE,aAAK;gBACjB,OAAA,KAAI,CAAC,YAAY,CAAC,cAAc,CAAC;oBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,KAAK;iBACf,CAAC;aAAA,CAAC,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;SAC5C;QAED,8CAAoB,GAApB,UAAqB,IAAiB;YAAtC,iBAOC;YANC,IAAM,IAAI,GAAG,iBAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClD,IAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,IAAI,EAAE;gBACb,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,CAAW,IAAO,OAAO,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACxF;QAEK,6CAAmB,GAAzB,UAA0B,IAAiB;;;;;;gCACzC,qBAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAA;;4BAAtC,SAAsC,CAAC;4BACjC,KAAK,GAAG,iBAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;4BAC5C,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACpC,IAAI,CAAC,IAAI,IAAI,EAAE;gCACb,sBAAO;6BACR;4BACD,sBAAO,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,CAAC,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,GAAA,CAAE,GAAA,CAAE,EAAC;;;;SAC1E;QAED,4CAAkB,GAAlB,UAAmB,IAAiB,EAAE,OAAkC;YAEtE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,CAAW,IAAO,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;SACpF;QAED,wCAAc,GAAd,UAAe,IAAiB;YAAhC,iBAWC;YAVC,IAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,IAAI,EAAE;gBACb,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,CAAW;gBACxB,OAAO,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACf,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBAC9B,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAEa,oCAAU,GAAxB,UAAyB,WAAwB;;;;;gCAC9B,qBAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAA;;4BAAjD,QAAQ,GAAG,SAAsC;4BACvD,sBAAO,QAAQ,CAAC,OAAO,EAAE,EAAC;;;;SAC3B;QAEK,iCAAO,GAAb,UAAc,WAAwB;;;;gCAC5B,qBAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAA;gCAA1C,sBAAO,CAAC,SAAkC,EAAE,QAAQ,EAAE,EAAC;;;;SACxD;QAED,+CAAqB,GAArB,UAAyB,SAAiB,EAAE,IAAiB;YAA7D,iBAMC;YALC,OAAO,IAAID,eAAU,CAAC,UAAC,QAAqB;gBAC1C,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,CAAW;oBACzC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBAC5E,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAEK,mDAAyB,GAA/B,UAAgC,IAAiB;;;;;gCAC/B,qBAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAA;;4BAArC,OAAO,GAAG,SAA2B;4BAC3C,sBAAO,wBAAwB,CAAC,OAAO,CAAC,EAAC;;;;SAC1C;;;oBAjIiC,oBAAoB;oBAAiBC,WAAM;;QAJlE,eAAe;YAD3BF,eAAU,EAAE;6CAKuB,oBAAoB,EAAiBE,WAAM;WAJlE,eAAe,CAsI3B;QAAD,sBAAC;KAtID;;;QCCE,0BAAoB,WAAiC,EAAU,KAAa;YAAxD,gBAAW,GAAX,WAAW,CAAsB;YAAU,UAAK,GAAL,KAAK,CAAQ;YAHpE,gBAAW,GACf,IAAI,GAAG,EAA6C,CAAC;SAEuB;QAEhF,uCAAY,GAAZ,UAAa,SAAuB;YAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;gBAC/D,MAAM,EAAE;oBACN,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB;gBACD,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,aAAa,EAAE,SAAS,CAAC,aAAa;gBACtC,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC,CAAC,CAAC;SACL;;;;QAKD,0CAAe,GAAf,UAAgB,SAAuB;YAAvC,iBAKC;YAJC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC5C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACf,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;aACpC,CAAC,CAAC;SACJ;QAED,qCAAU,GAAV,UAAW,SAAuB,EAAE,OAAkC;YACpE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;SAC3E;QAED,oCAAS,GAAT,UAAU,SAAuB;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,EAAE,GAAA,CAAC,CAAC;SACnE;QAED,oCAAS,GAAT,UAAU,SAAuB;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC5C,OAAO,CAAC,CAAC,SAAS,CAAC;oBACjB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACrB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAED,sCAAW,GAAX,UAAY,SAAuB;YACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC5C,OAAO,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC1C,CAAC,CAAC;SACJ;QAED,uCAAY,GAAZ,UAAa,SAAuB;YAClC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC5C,OAAO,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;aAC5C,CAAC,CAAC;SACJ;QAED,qCAAU,GAAV,UAAW,SAAuB;YAChC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;gBAC5C,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;aACxC,CAAC,CAAC;SACJ;QAED,gDAAqB,GAArB,UAAyB,SAAiB,EAAE,SAAuB;YAAnE,iBAaC;YAZC,OAAOD,eAAU,CAAC,MAAM,CAAC,UAAC,QAAqB;gBAC7C,IAAI,QAAQ,GAA+B,IAAI,CAAC;gBAChD,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC;oBACrC,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,UAAC,CAAI,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAA,CAAC,GAAA,CAAC,CAAC;iBACvF,CAAC,CAAC;gBAEH,OAAO;oBACL,IAAI,QAAQ,KAAK,IAAI,EAAE;wBACrB,QAAQ,CAAC,MAAM,EAAE,CAAC;qBACnB;iBACF,CAAC;aACH,CAAC,CAAC;SACJ;;oBApFgC,oBAAoB;oBAAiBC,WAAM;;QAJjE,gBAAgB;YAD5BF,eAAU,EAAE;6CAKsB,oBAAoB,EAAiBE,WAAM;WAJjE,gBAAgB,CAyF5B;QAAD,uBAAC;KAzFD;;ICeA;;;;;;;;;;;;;;;;;;;;;;;AA2DA;QA0SE,gBACU,KAAiB,EACjB,YAAkC,EACb,WAAmB,EACtC,iBAAmC,EACrC,KAAa;YAJb,UAAK,GAAL,KAAK,CAAY;YACjB,iBAAY,GAAZ,YAAY,CAAsB;YACb,gBAAW,GAAX,WAAW,CAAQ;YACtC,sBAAiB,GAAjB,iBAAiB,CAAkB;YACrC,UAAK,GAAL,KAAK,CAAQ;;;;YA3Sd,cAAS,GAAG,CAAC,CAAC;;;;YAKd,aAAQ,GAAG,CAAC,CAAC;;;;YAKb,SAAI,GAAG,CAAC,CAAC;;;;;YAuBK,cAAS,GAAG,IAAI,CAAC;;;;YAK/B,2BAAsB,GAAG,KAAK,CAAC;;;;;YAM/B,qBAAgB,GAAG,KAAK,CAAC;;;;YAKzB,gBAAW,GAAG,IAAI,CAAC;;;;;YA4BnB,sBAAiB,GAAG,IAAI,CAAC;;;;;YAgBzB,WAAM,GAAmB,EAAE,CAAC;;;;;;YAO5B,eAAU,GAAG,KAAK,CAAC;;;;;YAkBnB,cAAS,GAAiD,KAAK,CAAC;;;;YAUhE,iBAAY,GAAG,KAAK,CAAC;;;;YAUrB,mBAAc,GAAG,KAAK,CAAC;;;;YAUvB,eAAU,GAAI,KAAK,CAAC;;;;YAUpB,kBAAa,GAAG,KAAK,CAAC;;;;YAUtB,sBAAiB,GAAI,KAAK,CAAC;;;;YAU3B,cAAS,GAA4D,SAAS,CAAC;;;;;YAM/E,mBAAc,GAAG,IAAI,CAAC;;;;;;;YAQtB,0BAAqB,GAAG,IAAI,CAAC;;;;;;;;;YAU7B,oBAAe,GAA+C,MAAM,CAAC;;;;;;;;;;;;;;;YAgBrE,SAAI,GAAG,CAAC,CAAC;YAmBV,6BAAwB,GAAmB,EAAE,CAAC;;;;;YAO5C,aAAQ,GAA6B,IAAII,iBAAY,EAAc,CAAC;;;;;YAMpE,kBAAa,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;;YAMzE,gBAAW,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKvE,iBAAY,GAAgC,IAAIA,iBAAY,EAAiB,CAAC;;;;YAK9E,iBAAY,GAA+B,IAAIA,iBAAY,EAAgB,CAAC;;;;YAK5E,oBAAe,GAA4B,IAAIA,iBAAY,EAAa,CAAC;;;;YAKzE,SAAI,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;;;;YAKpD,eAAU,GAAyB,IAAIA,iBAAY,EAAU,CAAC;;;;;YAM9D,aAAQ,GAAsB,IAAIA,iBAAY,EAAO,CAAC;;;;YAKtD,gBAAW,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;SAQjE;mBAhTO,MAAM;;QAmTjB,yBAAQ,GAAR;YACE,IAAIsB,uBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;;gBAEtC,OAAO;aACR;;YAED,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;YACrF,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;SAClC;QAEO,iCAAgB,GAAxB,UAAyB,EAAe;YAAxC,iBA+CC;YA9CC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE;gBAC9B,MAAM,EAAE,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,EAAC;gBAC3D,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;gBACvD,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;gBAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;gBACvD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC;iBACC,IAAI,CAAC,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,YAAY,EAAE,GAAA,CAAC;iBAC5C,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;;YAGxC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;;QAGD,4BAAW,GAAX;;YAEE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;;YAG9D,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;aAC3C;SACF;;QAGD,4BAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC/B;QAEO,yCAAwB,GAAhC,UAAiC,OAAsB;YACrD,IAAI,OAAO,GAA8B,EAAE,CAAC;YAC5C,IAAI,UAAU,GACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,QAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;YACnF,UAAU,CAAC,OAAO,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC1C;;;;;;QAOD,8BAAa,GAAb,UAAc,QAAwB;YAAtC,iBAcC;YAda,yBAAA,EAAA,eAAwB;;;;YAIpC,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO;gBAC/B,UAAU,CAAC;oBACT,OAAO,KAAI,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;wBACtD,IAAI,QAAQ,EAAE;4BACZ,KAAI,CAAC,SAAS,IAAI,IAAI,GAAG,KAAI,CAAC,UAAU,EAAE,GAAG,KAAI,CAAC,UAAU,EAAE,CAAC;yBAChE;wBACD,OAAO,EAAE,CAAC;qBACX,CAAC,CAAC;iBACJ,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAEO,gCAAe,GAAvB,UAAwB,OAAsB;YAC5C,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI;gBAC3D,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;;gBAEzB,OAAO;aACR;;YAGD,IAAI,WAAW,IAAI,OAAO,EAAE;gBAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO;aACR;YAED,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;gBAC3E,OAAO;aACR;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAEO,2BAAU,GAAlB;YACE,IAAI,SAAS,GAAG;gBACd,GAAG,EAAE,IAAI,CAAC,QAAQ;gBAClB,GAAG,EAAE,IAAI,CAAC,SAAS;aACpB,CAAC;YACF,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;aACxC;SACF;QAEO,2BAAU,GAAlB;YACE,QAAQ,IAAI,CAAC,SAAS;gBACpB,KAAK,IAAI;oBACP,IAAI,CAAC,4BAA4B,EAAE,CAAC;oBACpC,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,IAAI,CAAC,sBAAsB,EAAE;wBAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;qBAC3C;oBACD,MAAM;gBACR;oBACE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC7D;SACF;QAEO,6CAA4B,GAApC;YAAA,iBAMC;YALC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAC3B,KAAI,CAAC,sBAAsB,GAAG,KAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,UAAA,CAAC;oBAC3E,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAM,OAAA,KAAI,CAAC,aAAa,CAAC,CAAC,EAAE,KAAI,CAAC,gBAAgB,CAAC,GAAA,CAAC,CAAC;iBACpE,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QAES,8BAAa,GAAvB,UAAwB,MAA0C,EAAE,OAA0B;YAC5F,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;aACR;YACD,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC7H,IAAM,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACjD,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACxB,MAAM,GAAG,SAAS,CAAC;aACpB;YACD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO;aACR;YACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAC9C;QAEO,uCAAsB,GAA9B,UAA+B,MAA0C;YACvE,OAAO,MAAM,IAAI,IAAI,IAAK,MAAc,CAAC,MAAM,KAAK,SAAS,CAAC;SAC/D;QAEO,uCAAsB,GAA9B;YAAA,iBASC;YARC,IAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAO,gBAAgB,CAAC,CAAC,SAAS,CAAC;gBAChF,KAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAC,MAAc;oBAChD,KAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC7B,KAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;oBAC9B,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAI,CAAC,SAAS,EAAkB,CAAC,CAAC;iBACpF,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,oCAAmB,GAA3B;YAAA,iBAMC;YALC,IAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAO,gBAAgB,CAAC,CAAC,SAAS,CAAC;gBAChF,KAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAChC,UAAC,MAAoB,IAAO,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;aAClE,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,uCAAsB,GAA9B;YAAA,iBAMC;YALC,IAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAO,mBAAmB,CAAC,CAAC,SAAS,CAAC;gBACnF,KAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CACnC,UAAC,SAAoB,IAAO,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;aACxE,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,qCAAoB,GAA5B;YAAA,iBAQC;YAPC,IAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAO,cAAc,CAAC,CAAC,SAAS,CAAC;gBAC9E,KAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAC,CAAS;oBACzC,KAAI,CAAC,IAAI,GAAG,CAAC,CAAC;oBACd,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACzB,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,iCAAgB,GAAxB;YAAA,iBAIC;YAHC,IAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAO,MAAM,CAAC,CAAC,SAAS,CACrE,cAAQ,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,wCAAuB,GAA/B;YAAA,iBAKC;YAJC,IAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAO,aAAa,CAAC,CAAC,SAAS,CAC5E,cAAM,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAA,CACpC,CAAC;YACF,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvC;QAEO,sCAAqB,GAA7B;YAAA,iBA+BC;YAxBC,IAAM,MAAM,GAAY;gBACtB,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAC;gBACvC,EAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAC;gBACjD,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAC;aAC9C,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,UAAC,CAAQ;gBACtB,IAAM,CAAC,GAAG,KAAI,CAAC,YAAY,CAAC,mBAAmB,CAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CACjF,UAAC,KAAuB;oBACtB,IAAI,KAAK,GAAe;wBACtB,MAAM,EAAE;4BACN,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;4BACvB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;yBACxB;wBACD,OAAO,EAAG,KAA2C,CAAC,OAAO;qBAC9D,CAAC;;oBAEF,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAI,CAAC,qBAAqB,EAAE;wBAC/C,KAAa,CAAC,IAAI,EAAE,CAAC;qBACvB;oBACD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACvB,CAAC,CAAC;gBACL,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACvC,CAAC,CAAC;SACJ;;;;;QAhVc,4BAAqB,GAAa;YAC/C,wBAAwB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB;YACzF,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,mBAAmB;YACvF,0BAA0B,EAAE,MAAM,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,SAAS;YACxF,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,sBAAsB;YACrF,mBAAmB,EAAE,0BAA0B,EAAE,cAAc,EAAE,qBAAqB;YACtF,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa;SACxE,CAAC;;oBA4DeN,eAAU;oBACH,oBAAoB;oBACA,MAAM,uBAA/CO,WAAM,SAACC,gBAAW;oBACU,gBAAgB;oBAC9B5B,WAAM;;QA3SdC;YAARC,UAAK,EAAE;;iDAAe;QAKdD;YAARC,UAAK,EAAE;;gDAAc;QAKbD;YAARC,UAAK,EAAE;;4CAAU;QAMTD;YAARC,UAAK,EAAE;;+CAAiB;QAMhBD;YAARC,UAAK,EAAE;;+CAAiB;QAKhBD;YAARC,UAAK,EAAE;;mDAAqB;QAMND;YAAtBC,UAAK,CAAC,cAAc,CAAC;;iDAAkB;QAK/BD;YAARC,UAAK,EAAE;;8DAAgC;QAM/BD;YAARC,UAAK,EAAE;;wDAA0B;QAKzBD;YAARC,UAAK,EAAE;;mDAAoB;QAMnBD;YAARC,UAAK,EAAE;;uDAAyB;QAQxBD;YAARC,UAAK,EAAE;;uDAAyB;QAQxBD;YAARC,UAAK,EAAE;;sDAAwB;QAMvBD;YAARC,UAAK,EAAE;;yDAA0B;QAKzBD;YAARC,UAAK,EAAE;;mDAAsB;QAKrBD;YAARC,UAAK,EAAE;;0DAAwC;QAMvCD;YAARC,UAAK,EAAE;;8CAA6B;QAO5BD;YAARC,UAAK,EAAE;;kDAAoB;QAOnBD;YAARC,UAAK,EAAE;;yDAA4B;QAK3BD;YAARC,UAAK,EAAE;;gEAAoD;QAMnDD;YAARC,UAAK,EAAE;;iDAAiE;QAKhED;YAARC,UAAK,EAAE;;wDAAoC;QAKnCD;YAARC,UAAK,EAAE;;oDAAsB;QAKrBD;YAARC,UAAK,EAAE;;2DAA0C;QAKzCD;YAARC,UAAK,EAAE;;sDAAwB;QAKvBD;YAARC,UAAK,EAAE;;6DAA8C;QAK7CD;YAARC,UAAK,EAAE;;kDAAqB;QAKpBD;YAARC,UAAK,EAAE;;yDAAsC;QAKrCD;YAARC,UAAK,EAAE;;qDAAuB;QAKtBD;YAARC,UAAK,EAAE;;4DAA4C;QAK3CD;YAARC,UAAK,EAAE;;yDAA4B;QAK3BD;YAARC,UAAK,EAAE;;gEAAoD;QAKnDD;YAARC,UAAK,EAAE;;iDAAgF;QAM/ED;YAARC,UAAK,EAAE;;sDAAuB;QAQtBD;YAARC,UAAK,EAAE;;6DAA8B;QAU7BD;YAARC,UAAK,EAAE;;uDAAsE;QAgBrED;YAARC,UAAK,EAAE;;4CAAU;QAMTD;YAARC,UAAK,EAAE;;mDAA6B;QAoB3BD;YAATI,WAAM,EAAE;sCAAWD,iBAAY;gDAA8C;QAMpEH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;qDAA8C;QAMzEH;YAATI,WAAM,EAAE;sCAAcD,iBAAY;mDAA8C;QAKvEH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;oDAAoD;QAK9EH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;oDAAkD;QAK5EH;YAATI,WAAM,EAAE;sCAAkBD,iBAAY;uDAA4C;QAKzEH;YAATI,WAAM,EAAE;sCAAOD,iBAAY;4CAAkC;QAKpDH;YAATI,WAAM,EAAE;sCAAaD,iBAAY;kDAAsC;QAM9DH;YAATI,WAAM,EAAE;sCAAWD,iBAAY;gDAAgC;QAKtDH;YAATI,WAAM,EAAE;sCAAcD,iBAAY;mDAAkC;QAxS1D,MAAM;YApClBiB,cAAS,CAAC;gBACT,QAAQ,EAAE,SAAS;gBACnB,SAAS,EAAE;oBACT,aAAa;oBACb,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,oBAAoB;oBACpB,iBAAiB;oBACjB,eAAe;oBACf,YAAY;oBACZ,aAAa;oBACb,cAAc;oBACd,eAAe;oBACf,gBAAgB;iBACjB;gBACD,IAAI,EAAE;;oBAEJ,mCAAmC,EAAE,MAAM;iBAC5C;gBAUD,QAAQ,EAAE,+MAKT;yBAdQ,gJAQR;aAOF,CAAC;YA8SGF,WAAAQ,WAAM,CAACC,gBAAW,CAAC,CAAA;6CAFLR,eAAU;gBACH,oBAAoB;gBACA,MAAM;gBACnB,gBAAgB;gBAC9BpB,WAAM;WA/SZ,MAAM,CAyjBlB;QAAD,aAAC;KAzjBD;;IC3EA,IAAI,QAAQ,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAoCjB;QA2HE,mBAAoB,cAA6B;YAA7B,mBAAc,GAAd,cAAc,CAAe;;;;;YAlGvB,cAAS,GAAG,KAAK,CAAC;;;;YAUnC,YAAO,GAAG,IAAI,CAAC;;;;YAKf,mBAAc,GAAG,IAAI,CAAC;;;;YAKtB,YAAO,GAAG,CAAC,CAAC;;;;;;;YAQZ,WAAM,GAAG,CAAC,CAAC;;;;;YAMM,cAAS,GAAG,IAAI,CAAC;;;;;;YAajC,oBAAe,GAAG,IAAII,iBAAY,EAAa,CAAC;;;;YAKhD,gBAAW,GAA4B,IAAIA,iBAAY,EAAa,CAAC;;;;YAKrE,mBAAc,GAA4B,IAAIA,iBAAY,EAAa,CAAC;;;;YAKxE,qBAAgB,GAAuB,IAAIA,iBAAY,EAAQ,CAAC;;;;YAKhE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKrE,SAAI,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKhE,YAAO,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKnE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKrE,aAAQ,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;YAG9C,eAAU,GAA6B,IAAIyB,cAAS,EAAiB,CAAC;YAE9F,yBAAoB,GAAG,KAAK,CAAC;YAE7B,6BAAwB,GAAmB,EAAE,CAAC;YAEnC,uBAAkB,GAAoC,IAAIC,kBAAa,CAAmB,CAAC,CAAC,CAAC;YAE3D,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC;SAAE;sBA3H/E,SAAS;;QA8HpB,sCAAkB,GAAlB;YAAA,iBAGC;YAFC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,sBAAsB,EAAE,GAAA,CAAC,CAAC;SACxE;QAEO,0CAAsB,GAA9B;YAAA,iBAOC;YANC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC3D;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM;gBAC5B,MAAM,CAAC,UAAU,GAAG,KAAI,CAAC;aAC1B,CAAC,CAAC;SACJ;;QAGD,+BAAW,GAAX,UAAY,OAAwC;YAClD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACvC;YACD,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;gBACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzC;YACD,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;gBAC3E,OAAO;aACR;YACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,OAAO;aACR;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC/C,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;YACD,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBACpB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACvC;YACD,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBACpB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACvC;YACD,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aAC3C;YACD,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACtC;YACD,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aACzC;YACD,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aACzC;YACD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aACxC;YACD,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aAC3C;YACD,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aAC3C;SACF;;QAGD,wCAAoB,GAApB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SAC/C;QAES,2CAAuB,GAAjC;YACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SACvF;QAEO,sCAAkB,GAA1B;YAAA,iBA4DC;YA3DC,IAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;gBAC5E,IAAI,KAAI,CAAC,cAAc,EAAE;oBACvB,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,IAAI,EAAE,GAAA,CAAC,CAAC;iBAC1D;gBACD,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvC,IAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;gBAChF,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAExC,IAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;gBACjF,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClC,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvC,IAAM,EAAE,GACN,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAsB,WAAW,EAAE,IAAI,CAAC;iBAC9E,SAAS,CAAC,UAAC,CAAsB;gBAChC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAgB,CAAC,CAAC;aAC7F,CAAC,CAAC;YACP,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvC,IAAM,CAAC,GACL,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAsB,MAAM,EAAE,IAAI,CAAC;iBACzE,SAAS,CAAC,UAAC,CAAsB;gBAChC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAgB,CAAC,CAAC;aACxF,CAAC,CAAC;YACP,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAM,EAAE,GACN,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAsB,SAAS,EAAE,IAAI,CAAC;iBAC5E,SAAS,CAAC,UAAC,CAAsB;gBAChC,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAgB,CAAC,CAAC;aAC3F,CAAC,CAAC;YACP,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvC,IAAM,KAAK,GACT,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAsB,WAAW,EAAE,IAAI,CAAC;iBAC9E,SAAS,CAAC,UAAC,CAAsB;gBAChC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAgB,CAAC,CAAC;aAC7F,CAAC,CAAC;YACP,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1C,IAAM,IAAI,GACR,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAsB,UAAU,EAAE,IAAI,CAAC;iBAC7E,SAAS,CAAC,UAAC,CAAsB;gBAChC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAgB,CAAC,CAAC;aAC5F,CAAC,CAAC;YACP,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzC,IAAM,MAAM,GACV,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAO,mBAAmB,EAAE,IAAI,CAAC;iBACvE,SAAS,CAAC;gBACT,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;aAC3C,CAAC,CAAC;YACP,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5C;;QAGD,sBAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,4BAAQ,GAAR,cAAqB,OAAO,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE;;QAGjE,+BAAW,GAAX;YACE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;;YAEvC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;SAC/D;;;oBAtJmC,aAAa;;QAvHxC7B;YAARC,UAAK,EAAE;;mDAAkB;QAKjBD;YAARC,UAAK,EAAE;;oDAAmB;QAKlBD;YAARC,UAAK,EAAE;;gDAAe;QAKdD;YAARC,UAAK,EAAE;;gDAAsC;QAMpBD;YAAzBC,UAAK,CAAC,iBAAiB,CAAC;;oDAAmB;QAKnCD;YAARC,UAAK,EAAE;;kDAAiB;QAKhBD;YAARC,UAAK,EAAE;;kDAAgB;QAKfD;YAARC,UAAK,EAAE;;yDAAuB;QAKtBD;YAARC,UAAK,EAAE;;kDAAa;QAQZD;YAARC,UAAK,EAAE;;iDAAY;QAMMD;YAAzBC,UAAK,CAAC,iBAAiB,CAAC;;oDAAkB;QAMlCD;YAARC,UAAK,EAAE;;oDAAsB;QAOpBD;YAATI,WAAM,EAAE;;0DAAiD;QAKhDJ;YAATI,WAAM,EAAE;sCAAcD,iBAAY;sDAA4C;QAKrEH;YAATI,WAAM,EAAE;sCAAiBD,iBAAY;yDAA4C;QAKxEH;YAATI,WAAM,EAAE;sCAAmBD,iBAAY;2DAAkC;QAKhEH;YAATI,WAAM,EAAE;sCAAYD,iBAAY;oDAA8C;QAKrEH;YAATI,WAAM,EAAE;sCAAOD,iBAAY;+CAA8C;QAKhEH;YAATI,WAAM,EAAE;sCAAUD,iBAAY;kDAA8C;QAKnEH;YAATI,WAAM,EAAE;sCAAYD,iBAAY;oDAA8C;QAKrEH;YAATI,WAAM,EAAE;sCAAWD,iBAAY;mDAA8C;QAG9CH;YAA/B8B,oBAAe,CAAC,aAAa,CAAC;sCAAaF,cAAS;qDAAiD;QAnH3F,SAAS;YAXrB1B,cAAS,CAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE;oBACT,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE6B,eAAU,CAAC,cAAM,OAAA,WAAS,GAAA,CAAC,EAAE;iBACzE;gBACD,MAAM,EAAE;oBACN,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,4BAA4B,EAAE,SAAS;oBAClF,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;iBAC9D;gBACD,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;aAClF,CAAC;6CA4HoC,aAAa;WA3HtC,SAAS,CAkRrB;QAAD,gBAAC;KAlRD;;ICrCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA;QAoJE,oBAAoB,eAA+B;YAA/B,oBAAe,GAAf,eAAe,CAAgB;;;;YAhJ1C,cAAS,GAAG,IAAI,CAAC;;;;;;YAOF,cAAS,GAAG,KAAK,CAAC;;;;;YAMjC,aAAQ,GAAG,KAAK,CAAC;;;;;;;;YAoBjB,aAAQ,GAAG,KAAK,CAAC;;;;;;;;;;;;YAajB,UAAK,GAAyE,EAAE,CAAC;;;;YA+BhF,cAAS,GAAiC,IAAI5B,iBAAY,EAAkB,CAAC;;;;YAK7E,iBAAY,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKhF,aAAQ,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKpE,gBAAW,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKvE,kBAAa,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKzE,kBAAa,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKjF,kBAAa,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKjF,iBAAY,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKhF,kBAAa,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKjF,gBAAW,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAK/E,mBAAc,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKlF,oBAAe,GAAG,IAAIA,iBAAY,EAAyB,CAAC;YAS9D,2BAAsB,GAAG,KAAK,CAAC;YAC/B,mBAAc,GAAmB,EAAE,CAAC;SAEY;uBApJ7C,UAAU;;QAuJrB,uCAAkB,GAAlB;YACE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChC,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;QAED,gCAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;aACR;YAED,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;SACnF;QAEO,0BAAK,GAAb;YACE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAEO,uCAAkB,GAA1B;YAAA,iBAwBC;YAvBC,IAAM,QAAQ,GAAG;gBACf,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBAC3E,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBACjF,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAC,EAAc,IAAK,OAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBACrE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAC,EAAc,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBAC3E,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAc,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBAC/E,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBACnF,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBACnF,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBACjF,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBACnF,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;gBAC/E,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAE;aACtF,CAAC;YACF,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAG;gBACnB,IAAM,EAAE,GAAG,KAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7F,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC;iBACnD,IAAI,CAAC,UAAA,MAAM;gBACV,IAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,UAAA,SAAS,IAAI,OAAA,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAA,CAAC,CAAC;gBAC/E,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B,CAAC,CAAC;SACJ;QAEO,0CAAqB,GAA7B,UAA8B,OAAsB;YAClD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBACxB,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,YAAU,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC;iBACnE,MAAM,CAAC,UAAC,GAAQ,EAAE,CAAS;gBAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBACjC,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;SACV;;QAGD,uBAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,gCAAW,GAAX;YACE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;;YAEzC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;SACrD;QAED,4BAAO,GAAP;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC3C;QAED,6BAAQ,GAAR;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC5C;;QArFc,oCAAyB,GAAkB;YACxD,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK;YAC3F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;YACzF,UAAU,EAAE,SAAS;SACtB,CAAC;;oBAMmC,cAAc;;QAhJ1CH;YAARC,UAAK,EAAE;;qDAAkB;QAOFD;YAAvBC,UAAK,CAAC,eAAe,CAAC;;qDAAmB;QAMjCD;YAARC,UAAK,EAAE;;oDAAkB;QAMjBD;YAARC,UAAK,EAAE;;qDAAmB;QAKlBD;YAARC,UAAK,EAAE;;uDAAqB;QASpBD;YAARC,UAAK,EAAE;;oDAAkB;QAajBD;YAARC,UAAK,EAAE;sCAAQ,KAAK;iDAAqE;QAMjFD;YAARC,UAAK,EAAE;;uDAAqB;QAKpBD;YAARC,UAAK,EAAE;;yDAAuB;QAKtBD;YAARC,UAAK,EAAE;;wDAAsB;QAKrBD;YAARC,UAAK,EAAE;;mDAAkB;QAKjBD;YAARC,UAAK,EAAE;;kDAAgB;QAKdD;YAATI,WAAM,EAAE;sCAAYD,iBAAY;qDAAsD;QAK7EH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;wDAAsD;QAKhFH;YAATI,WAAM,EAAE;sCAAWD,iBAAY;oDAA8C;QAKpEH;YAATI,WAAM,EAAE;sCAAcD,iBAAY;uDAA8C;QAKvEH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;yDAA8C;QAKzEH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;yDAAsD;QAKjFH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;yDAAsD;QAKjFH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;wDAAsD;QAKhFH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;yDAAsD;QAKjFH;YAATI,WAAM,EAAE;sCAAcD,iBAAY;uDAAsD;QAK/EH;YAATI,WAAM,EAAE;sCAAiBD,iBAAY;0DAAsD;QAKlFH;YAATI,WAAM,EAAE;;2DAA6D;QAxI3D,UAAU;YAHtBF,cAAS,CAAC;gBACT,QAAQ,EAAE,aAAa;aACxB,CAAC;6CAqJqC,cAAc;WApJxC,UAAU,CAgOtB;QAAD,iBAAC;KAhOD;;ICzDA;;;;;;;;;;;;;;;;;;AAmBA;QAAA;SAgIC;QALC,kCAAQ,GAAR;YACE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;aACnD;SACF;QArHQF;YAARC,UAAK,EAAE;;8DAAwB;QAUvBD;YAARC,UAAK,EAAE;;uDAAgB;QAUfD;YAARC,UAAK,EAAE;;uDAAgB;QAWfD;YAARC,UAAK,EAAE;;wDAAiB;QAWhBD;YAARC,UAAK,EAAE;;wDAAiB;QAShBD;YAARC,UAAK,EAAE;;0DAAmB;QAKlBD;YAARC,UAAK,EAAE;;4DAAqB;QASpBD;YAARC,UAAK,EAAE;;qDAC4B;QAU3BD;YAARC,UAAK,EAAE;;yDAAkB;QAUjBD;YAARC,UAAK,EAAE;;sDAAe;QASdD;YAARC,UAAK,EAAE;;4DAAqB;QAQpBD;YAARC,UAAK,EAAE;;8DAAuB;QAQtBD;YAARC,UAAK,EAAE;;6DAAsB;QAzHnB,eAAe;YAD3BC,cAAS,CAAC,EAAC,QAAQ,EAAE,gCAAgC,EAAC,CAAC;WAC3C,eAAe,CAgI3B;QAAD,sBAAC;KAhID;;ICfA;;;;AAUA;QAgBE;;;;YAFU,oBAAe,GAAgC,IAAIC,iBAAY,EAAiB,CAAC;SAE3E;6BAhBL,gBAAgB;QAkB3B,sCAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC/C,IAAM,QAAQ,GAAkB;oBAC9B,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ;oBAC3E,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS;iBAC9D,CAAC;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACrC;SACF;;QAGD,+CAAoB,GAApB;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9BmB,mBAAS,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAC,CAAC,EACpDV,aAAG,CAAC,UAAA,QAAQ,IAAI,QAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,IAAC,CAAC,CACtC,CAAC;SACH;;QA9BQZ;YAARC,UAAK,EAAE;;0DAAyB;QAKxBD;YAARC,UAAK,EAAE;;2DAA0B;QAKxBD;YAATI,WAAM,EAAE;sCAAkBD,iBAAY;iEAAoD;QAdhF,gBAAgB;YAN5BD,cAAS,CAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,SAAS,EAAE;oBACT,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE6B,eAAU,CAAC,cAAM,OAAA,kBAAgB,GAAA,CAAC,EAAC;iBAC9E;aACF,CAAC;;WACW,gBAAgB,CAmC5B;QAAD,uBAAC;KAnCD;;ICRA,IAAI,UAAU,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BnB;QAgIE,qBAAoB,gBAAiC;YAAjC,qBAAgB,GAAhB,gBAAgB,CAAiB;;;;YA5H5C,cAAS,GAAG,IAAI,CAAC;;;;;;YAOE,cAAS,GAAG,KAAK,CAAC;;;;;YAMrC,aAAQ,GAAG,KAAK,CAAC;;;;;;;YAQjB,aAAQ,GAAG,KAAK,CAAC;;;;YAoBjB,YAAO,GAAG,IAAI,CAAC;;;;YAUd,cAAS,GAAiC,IAAI5B,iBAAY,EAAkB,CAAC;;;;YAK7E,iBAAY,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKhF,aAAQ,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKpE,gBAAW,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKvE,kBAAa,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKzE,kBAAa,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKjF,kBAAa,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKjF,iBAAY,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKhF,kBAAa,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKjF,gBAAW,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAK/E,mBAAc,GAAiC,IAAIA,iBAAY,EAAkB,CAAC;;;;YAKlF,mBAAc,GAAG,IAAIA,iBAAY,EAAa,CAAC;YAejD,4BAAuB,GAAG,KAAK,CAAC;YAChC,mBAAc,GAAmB,EAAE,CAAC;YAEa,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC;SAAE;wBAhIrF,WAAW;;QAmItB,wCAAkB,GAAlB;YAAA,iBAiBC;YAhBC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAuB;oBAC1C,IAAM,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,SAAS,CACrC,cAAQ,KAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBACjE,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC7B,CAAC,CAAC;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;YACD,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAI,CAAC,GAAA,CAAC,CAAC;YACvG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,cAAM,OAAA,KAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,KAAI,CAAC,GAAA,CAAC,CAAC;YAC5G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACnC;QAED,iCAAW,GAAX,UAAY,OAAsB;YAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;aACR;YAED,IAAI,OAAO,GAA8B,EAAE,CAAC;YAC5C,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAC1C,UAAA,CAAC,IAAI,OAAA,aAAW,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;YACnE,UAAU,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,GAAA,CAAC,CAAC;YAC9D,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;QAED,6BAAO,GAAP;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC5C;QAEO,2BAAK,GAAb;YACE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAEO,wCAAkB,GAA1B;YAAA,iBAuBC;YAtBC,IAAM,QAAQ,GAAG;gBACf,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBACzE,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBAC/E,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAC,EAAc,IAAK,OAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBACnE,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAC,EAAc,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBACzE,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAc,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBAC7E,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBACjF,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBACjF,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBAC/E,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBACjF,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;gBAC7E,EAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAC,EAAkB,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,EAAC;aACpF,CAAC;YACF,QAAQ,CAAC,OAAO,CAAC,UAAC,GAAG;gBACnB,IAAM,EAAE,GAAG,KAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9F,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,GAAG;gBAC7D,IAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,UAAA,SAAS,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,GAAA,CAAC,CAAC;gBAC3E,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B,CAAC,CAAC;SACJ;;QAGD,gCAAU,GAAV;YACE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aAC9B;YACD,OAAO,EAAE,CAAC;SACX;QAED,+BAAS,GAAT;YACE,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;aACrC;YACD,OAAO,EAAE,CAAC;SACX;;QAGD,wBAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,iCAAW,GAAX;YACE,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;YAE3C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;SACrD;;QAtGc,sCAA0B,GAAkB;YACzD,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc;YAC9F,QAAQ;SACT,CAAC;;oBAMoC,eAAe;;QA5H5CH;YAARC,UAAK,EAAE;;sDAAkB;QAOED;YAA3BC,UAAK,CAAC,mBAAmB,CAAC;;sDAAmB;QAMrCD;YAARC,UAAK,EAAE;;qDAAkB;QAQjBD;YAARC,UAAK,EAAE;;qDAAkB;QAKjBD;YAARC,UAAK,EAAE;;wDAAqB;QAKpBD;YAARC,UAAK,EAAE;;0DAAuB;QAKtBD;YAARC,UAAK,EAAE;;yDAAsB;QAKrBD;YAARC,UAAK,EAAE;;oDAAgB;QAKfD;YAARC,UAAK,EAAE;;mDAAgB;QAKdD;YAATI,WAAM,EAAE;sCAAYD,iBAAY;sDAAsD;QAK7EH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;yDAAsD;QAKhFH;YAATI,WAAM,EAAE;sCAAWD,iBAAY;qDAA8C;QAKpEH;YAATI,WAAM,EAAE;sCAAcD,iBAAY;wDAA8C;QAKvEH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;0DAA8C;QAKzEH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;0DAAsD;QAKjFH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;0DAAsD;QAKjFH;YAATI,WAAM,EAAE;sCAAeD,iBAAY;yDAAsD;QAKhFH;YAATI,WAAM,EAAE;sCAAgBD,iBAAY;0DAAsD;QAKjFH;YAATI,WAAM,EAAE;sCAAcD,iBAAY;wDAAsD;QAK/EH;YAATI,WAAM,EAAE;sCAAiBD,iBAAY;2DAAsD;QAKlFH;YAATI,WAAM,EAAE;;2DAAgD;QAKtBJ;YAAlC8B,oBAAe,CAAC,gBAAgB,CAAC;sCAASF,cAAS;mDAAmB;QAErC5B;YAAjC8B,oBAAe,CAAC,eAAe,CAAC;sCAAgBF,cAAS;0DAAkB;QArHjE,WAAW;YAHvB1B,cAAS,CAAC;gBACT,QAAQ,EAAE,cAAc;aACzB,CAAC;6CAiIsC,eAAe;WAhI1C,WAAW,CA8NvB;QAAD,kBAAC;KA9ND;;;QCoJE,sBAAoB,QAA0B;YAA1B,aAAQ,GAAR,QAAQ,CAAkB;;;;YA7IrC,cAAS,GAAG,IAAI,CAAC;;;;;YAMG,cAAS,GAAG,KAAK,CAAC;;;;;YAMtC,aAAQ,GAAG,KAAK,CAAC;;;;;YA0BjB,mBAAc,GAAoC,QAAQ,CAAC;;;;YAK3D,iBAAY,GAAG,CAAC,CAAC;;;;YAKjB,YAAO,GAAG,IAAI,CAAC;;;;YAWxB,iBAAY,GAAsC,IAAIC,iBAAY,EAE/D,CAAC;;;;YAMJ,mBAAc,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAM1E,sBAAiB,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKnE,SAAI,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAKhE,YAAO,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAM7E,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAMrE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAMrE,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAK3D,aAAQ,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAM9E,cAAS,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAK3D,YAAO,GAA6B,IAAIA,iBAAY,EAAc,CAAC;;;;YAM7E,eAAU,GAA6B,IAAIA,iBAAY,EAAc,CAAC;YAE9D,6BAAwB,GAAG,KAAK,CAAC;YAcjC,wBAAmB,GAAmB,EAAE,CAAC;SAEC;yBArKvC,YAAY;;QAwKvB,+BAAQ,GAAR;YACE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;;QAGD,kCAAW,GAAX,UAAY,OAAwC;YAClD,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAClC,OAAO;aACR;YACD,IACE,OAAO,CAAC,OAAO,CAAC;gBAChB,OAAO,CAAC,MAAM,CAAC;gBACf,OAAO,CAAC,OAAO,CAAC;gBAChB,OAAO,CAAC,MAAM,CAAC,EACf;gBACA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC/B;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACjC;YACD,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAClC;YACD,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAChC;YACD,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;SAC9C;QAEO,qDAA8B,GAAtC,UAAuC,OAEtC;YACC,IAAI,OAAO,GAAgC,EAAE,CAAC;YAC9C,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAC1C,UAAA,CAAC,IAAI,OAAA,cAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,CAChD,CAAC;YACF,UAAU,CAAC,OAAO,CAAC,UAAA,CAAC;gBAClB,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;aACtC,CAAC,CAAC;YACH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACzC;SACF;QAEO,8CAAuB,GAA/B;YAAA,iBA0CC;YAzCC,IAAI,MAAM,GAAmC,IAAI,GAAG,EAGjD,CAAC;YACJ,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,OAAO,CAAC,UAAC,YAAY,EAAE,SAAS;gBACrC,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,KAAI,CAAC,QAAQ;qBACV,qBAAqB,CAAgB,SAAS,EAAE,KAAI,CAAC;qBACrD,SAAS,CAAC,UAAA,KAAK;oBACd,QAAQ,SAAS;wBACf,KAAK,gBAAgB;4BACnB,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAI,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;gCACvC,OAAA,YAAY,CAAC,IAAI,CAAC;oCAChB,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;oCAClC,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;oCACjC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;oCAClC,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;iCACX,CAAC;6BAAA,CAC1B,CAAC;4BACF,MAAM;wBACR;4BACE,YAAY,CAAC,IAAI,CAAC;gCAChB,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE;6BAC/C,CAAC,CAAC;qBACpB;iBACF,CAAC,CACL,CAAC;aACH,CAAC,CAAC;SACJ;;QAGD,kCAAW,GAAX;YACE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAS,CAAe;gBACvD,CAAC,CAAC,WAAW,EAAE,CAAC;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACrC;;;;QAKD,gCAAS,GAAT;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACtC;;QAzHc,wBAAW,GAAa;YACrC,WAAW;YACX,aAAa;YACb,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,SAAS;YACT,QAAQ;YACR,WAAW;SACZ,CAAC;;oBAI4B,gBAAgB;;QAjKrCH;YAARC,UAAK,EAAE;;mDAAe;QAKdD;YAARC,UAAK,EAAE;;kDAAc;QAKbD;YAARC,UAAK,EAAE;;mDAAe;QAKdD;YAARC,UAAK,EAAE;;kDAAc;QAKbD;YAARC,UAAK,EAAE;;uDAAkB;QAMGD;YAA5BC,UAAK,CAAC,oBAAoB,CAAC;;uDAAmB;QAMtCD;YAARC,UAAK,EAAE;;sDAAkB;QAKjBD;YAARC,UAAK,EAAE;;uDAAmB;QAKlBD;YAARC,UAAK,EAAE;;yDAAqB;QAKpBD;YAARC,UAAK,EAAE;;yDAAqB;QAKpBD;YAARC,UAAK,EAAE;;2DAAuB;QAMtBD;YAARC,UAAK,EAAE;;4DAA4D;QAK3DD;YAARC,UAAK,EAAE;;0DAAkB;QAKjBD;YAARC,UAAK,EAAE;;qDAAgB;QAKfD;YAARC,UAAK,EAAE;;oDAAgB;QAMxBD;YADCI,WAAM,EAAE;sCACKD,iBAAY;0DAEtB;QAMJH;YADCI,WAAM,EAAE;sCACOD,iBAAY;4DAA8C;QAM1EH;YADCI,WAAM,EAAE;sCACUD,iBAAY;+DAA8C;QAKnEH;YAATI,WAAM,EAAE;sCAAOD,iBAAY;kDAA8C;QAKhEH;YAATI,WAAM,EAAE;sCAAUD,iBAAY;qDAA8C;QAM7EH;YADCI,WAAM,EAAE;sCACED,iBAAY;uDAA8C;QAMrEH;YADCI,WAAM,EAAE;sCACED,iBAAY;uDAA8C;QAMrEH;YADCI,WAAM,EAAE;sCACED,iBAAY;uDAA8C;QAK3DH;YAATI,WAAM,EAAE;sCAAWD,iBAAY;sDAA8C;QAM9EH;YADCI,WAAM,EAAE;sCACED,iBAAY;uDAA8C;QAK3DH;YAATI,WAAM,EAAE;sCAAUD,iBAAY;qDAA8C;QAM7EH;YADCI,WAAM,EAAE;sCACGD,iBAAY;wDAA8C;QAnJ3D,YAAY;YAHxBD,cAAS,CAAC;gBACT,QAAQ,EAAE,eAAe;aAC1B,CAAC;6CAsK8B,gBAAgB;WArKnC,YAAY,CAiRxB;QAAD,mBAAC;KAjRD;;ICnBA,IAAIG,SAAO,GAAG,CAAC,CAAC;;;;;AAUhB;QASI,yBAAqB,QAAsB;YAAtB,aAAQ,GAAR,QAAQ,CAAc;YARnC,oBAAe,GAAG,KAAK,CAAC;YACxB,QAAG,GAAW,CAACA,SAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;;;;YAKpC,YAAO,GAAG,IAAI,CAAC;SAEwB;QAEhD,kCAAQ,GAAR;YACI,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,OAAO;aACV;YACD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;QAED,qCAAW,GAAX,UAAY,OAAsB;YAC9B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,OAAO;aACV;YACD,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,EAAC,CAAC,CAAC;aACzF;SACJ;;QAGD,4BAAE,GAAF,cAAe,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;;QAGjC,kCAAQ,GAAR,cAAqB,OAAO,qBAAmB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAI,CAAC,EAAE;;QAGvE,qCAAW,GAAX;YACI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACnC;;oBA5B8B,YAAY;;QAFlCL;YAARC,UAAK,EAAE;;wDAAgB;QAPf,eAAe;YAJ3BC,cAAS,CAAC;gBACP,QAAQ,EAAE,mBAAmB;aAChC,CAAC;6CAWiC,YAAY;WATlC,eAAe,CAuC3B;QAAD,sBAAC;KAvCD;;ICbO,IAAI8B,QAAW,CAAC;IAkTvB,IAAY,UAMX;IAND,WAAY,UAAU;QACpB,6EAAyB,CAAA;QACzB,yEAAuB,CAAA;QACvB,+CAAU,CAAA;QACV,2EAAwB,CAAA;QACxB,uEAAsB,CAAA;KACvB,EANW,UAAU,KAAV,UAAU,QAMrB;;;;;;AA2MD;IAAA,WAAY,eAAe;QACzB,qEAAY,CAAA;QACZ,6DAAQ,CAAA;QACR,iEAAU,CAAA;QACV,+DAAS,CAAA;QACT,mEAAW,CAAA;QACX,6DAAQ,CAAA;QACR,mEAAW,CAAA;QACX,+DAAS,CAAA;QACT,qEAAY,CAAA;QACZ,qEAAY,CAAA;QACZ,oEAAW,CAAA;QACX,wEAAa,CAAA;KACd,EAbWC,uBAAe,KAAfA,uBAAe,QAa1B;AAED;IAAA,WAAY,SAAS;;QAEnB,6CAAM,CAAA;;QAEN,+CAAO,CAAA;;QAEP,mDAAS,CAAA;;QAET,+CAAO,CAAA;KACR,EATWC,iBAAS,KAATA,iBAAS,QASpB;IAgBD,IAAY,mBAIX;IAJD,WAAY,mBAAmB;QAC7B,mEAAW,CAAA;QACX,+EAAiB,CAAA;QACjB,iFAAkB,CAAA;KACnB,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AA8BD;IAAA,WAAY,iBAAiB;QAC3B,+DAAO,CAAA;KACR,EAFWC,yBAAiB,KAAjBA,yBAAiB,QAE5B;AAyBD;IAAA,WAAY,gBAAgB;QAC1B,6DAAO,CAAA;QACP,yDAAK,CAAA;QACL,yDAAK,CAAA;KACN,EAJWC,wBAAgB,KAAhBA,wBAAgB,QAI3B;AA2CD;IAAA,WAAY,oBAAoB;QAC9B,mDAA2B,CAAA;QAC3B,6DAAqC,CAAA;QACrC,iEAAyC,CAAA;QACzC,2CAAmB,CAAA;KACpB,EALWC,4BAAoB,KAApBA,4BAAoB,QAK/B;AAqBD;IAAA,WAAY,cAAc;QACxB,iCAAe,CAAA;QACf,qDAAmC,CAAA;QACnC,2BAAS,CAAA;QACT,uDAAqC,CAAA;QACrC,mDAAiC,CAAA;QACjC,iDAA+B,CAAA;QAC/B,+CAA6B,CAAA;KAC9B,EARWC,sBAAc,KAAdA,sBAAc,QAQzB;;;QC7qBC,qBAAY,MAAqB;YAAjC,iBAaC;YAZC,IAAM,oBAAoB,GAAG,IAAIxC,eAAU,CAAC,UAAA,UAAU;gBACpD,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAM,OAAA,UAAU,CAAC,IAAI,EAAE,GAAA,CAAC,CAAC;aAC7C,CAAC;iBACC,IAAI,CACHc,aAAG,CAAC,cAAM,OAAA,KAAI,CAAC,eAAe,EAAE,GAAA,CAAC,EACjC2B,mBAAS,CAAC,IAAIV,kBAAa,CAAC,CAAC,CAAC,CAAC,CACG,CAAC;YAEvC,oBAAoB,CAAC,OAAO,EAAE,CAAC;;YAG/B,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;SACvC;QAED,6BAAO,GAAP,UAAQ,OAAwB;YAAhC,iBAIC;YAHC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACxBnB,mBAAS,CAAC,UAAC,QAAQ,IAAK,OAAA,KAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAA,CAAC,CACnE,CAAC;SACH;QAEO,uCAAiB,GAAzB,UAA0B,QAAkB,EAAE,OAAwB;YACpE,IAAM,iBAAiB,GAAG8B,iBAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CACpC9B,mBAAS,CAAC,UAAC,EAAiB;oBAAjB,kBAAiB,EAAhB,eAAO,EAAE,cAAM;gBACzB,IAAI,MAAM,KAAK4B,sBAAc,CAAC,EAAE,EAAE;oBAChC,OAAOG,OAAE,CAAC,OAAO,CAAC,CAAC;iBACpB;gBAED,OAAOC,eAAU,CAAC,MAAM,CAAC,CAAC;aAC3B,CAAC,CACH,CAAC;SACH;QAEO,qCAAe,GAAvB;YACE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAc,CAAC;SAC/C;;oBApCmB,aAAa;;;QAHtB,WAAW;YADvB7C,eAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;6CAIb,aAAa;WAHtB,WAAW,CAwCvB;0BAjDD;KASA;;;QCPA;SAEC;QADC,mCAAe,GAAf,cAAyB,OAAO,MAAM,CAAC,EAAE;QAC3C,gBAAC;KAAA,IAAA;;QAED;SAEC;QADC,uCAAiB,GAAjB,cAA2B,OAAO,QAAQ,CAAC,EAAE;QAC/C,kBAAC;KAAA,IAAA;QAEY,yBAAyB,GAAe,CAAC,SAAS,EAAE,WAAW,CAAC;;;ICJ7E,WAAY,wBAAwB;QAClC,uEAAQ,CAAA;QACR,yEAAS,CAAA;QACT,uEAAQ,CAAA;KACT,EAJW8C,gCAAwB,KAAxBA,gCAAwB,QAInC;;;;;AAMD,QAAa,oBAAoB,GAAG,IAAIC,mBAAc,CAAiC,0CAA0C,CAAC,CAAC;AAiEnI;QAAuCC,qCAAa;QAQlD,2BAAsD,MAAkB,EAAE,CAAY,EAAE,CAAc,EAC1E,QAAgB;YADU,uBAAA,EAAA,aAAkB;YAAxE,YAEE,iBAAO,SAIR;YAL2B,cAAQ,GAAR,QAAQ,CAAQ;YAJzB,gBAAU,GAAW,wBAAwB,CAAC;YAC9C,kBAAY,GAAW,sBAAsB,CAAC;YAK/D,KAAI,CAAC,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5B,KAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,KAAI,CAAC,YAAY,GAAG,CAAC,CAAC;;SACvB;QAED,gCAAI,GAAJ;YACE,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAS,CAAC;YACxD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;;gBAEvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC;aACnC;;YAGD,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3F,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;gBAC/C,OAAO,IAAI,CAAC,qBAAqB,CAAC;aACnC;YAED,IAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;YAChC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,qBAAqB,CAAC;SACnC;QAEO,uDAA2B,GAAnC,UAAoC,UAAuB;YAA3D,iBAUC;YATC,IAAI,CAAC,qBAAqB,GAAG,IAAI,OAAO,CAAO,UAAC,OAAiB,EAAE,MAAgB;gBAChF,KAAI,CAAC,UAAU,CAAC,eAAe,EAAU,CAAC,KAAI,CAAC,YAAY,CAAC,GAAG;oBAC9D,OAAO,EAAE,CAAC;iBACX,CAAC;gBAEF,UAAU,CAAC,OAAO,GAAG,UAAC,KAAY;oBAChC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACf,CAAC;aACH,CAAC,CAAC;SACJ;QAES,yCAAa,GAAvB,UAAwB,YAAoB;YAC1C,IAAI,YAAY,GACZ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAKF,gCAAwB,CAAC,KAAK,CAAC;YAC9E,IAAI,QAAgB,CAAC;YAErB,QAAQ,YAAY;gBAClB,KAAKA,gCAAwB,CAAC,IAAI;oBAChC,QAAQ,GAAG,EAAE,CAAC;oBACd,MAAM;gBACR,KAAKA,gCAAwB,CAAC,IAAI;oBAChC,QAAQ,GAAG,OAAO,CAAC;oBACnB,MAAM;gBACR,KAAKA,gCAAwB,CAAC,KAAK;oBACjC,QAAQ,GAAG,QAAQ,CAAC;oBACpB,MAAM;aACT;YAED,IAAM,WAAW,GAAW,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,iCAAiC,CAAC;YAC1F,IAAM,WAAW,GAA4C;gBAC3D,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW;gBACzC,QAAQ,EAAE,YAAY;gBACtB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBACxB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;gBACjC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI;aACpF,CAAC;YACF,IAAM,MAAM,GAAW,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;iBACnB,MAAM,CAAC,UAAC,CAAS,IAAK,OAAA,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,GAAA,CAAC;iBAC7C,MAAM,CAAC,UAAC,CAAS;;gBAEhB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;qBAChC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAClE,CAAC;iBACD,GAAG,CAAC,UAAC,CAAS;;gBAEb,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACpB,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC;iBACrC;gBACD,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC;aACxC,CAAC;iBACD,GAAG,CAAC,UAAC,KAAmC;gBACvC,OAAU,KAAK,CAAC,GAAG,SAAI,KAAK,CAAC,KAAO,CAAC;aACtC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,OAAU,QAAQ,UAAK,WAAW,SAAI,MAAQ,CAAC;SAChD;;oDAjGYG,aAAQ,YAAIpB,WAAM,SAAC,oBAAoB;oBAAyB,SAAS;oBAAK,WAAW;iDACpGA,WAAM,SAACqB,cAAS;;QATP,iBAAiB;YAD7BlD,eAAU,EAAE;YASEqB,WAAA4B,aAAQ,EAAE,CAAA,EAAE5B,WAAAQ,WAAM,CAAC,oBAAoB,CAAC,CAAA;YACnDR,WAAAQ,WAAM,CAACqB,cAAS,CAAC,CAAA;qDAD0D,SAAS,EAAK,WAAW;WAR3F,iBAAiB,CA0G7B;QAAD,wBAAC;KAAA,CA1GsC,aAAa;;IC/EpD;;;;;AAKA;QAAA;SAQC;QAPC,gCAAI,GAAJ;YACE,IAAI,CAAE,MAAc,CAAC,MAAM,IAAI,CAAE,MAAc,CAAC,MAAM,CAAC,IAAI,EAAE;gBAC3D,MAAM,IAAI,KAAK,CACX,gFAAgF,CAAC,CAAC;aACvF;YACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QACH,wBAAC;KAAA;;ICbD;;ICoBA;;;IAGA,SAAgB,cAAc;QAC5B,OAAO;YACL,iBAAiB;YACjB,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,WAAW;YACX,MAAM;YACN,SAAS;YACT,UAAU;YACV,WAAW;YACX,eAAe;YACf,gBAAgB;YAChB,YAAY;YACZ,eAAe;SAChB,CAAC;KACH;;;;;AAOD;QAAA;SAaC;0BAbY,aAAa;;;;QAIjB,qBAAO,GAAd,UAAe,uBAAwD;YACrE,OAAO;gBACL,QAAQ,EAAE,eAAa;gBACvB,SAAS,WACJ,yBAAyB;oBAAE,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAC;oBACnF,EAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,uBAAuB,EAAC;kBACnE;aACF,CAAC;SACH;;QAZU,aAAa;YADzBC,aAAQ,CAAC,EAAC,YAAY,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAC,CAAC;WACzD,aAAa,CAazB;QAAD,oBAAC;KAbD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
\No newline at end of file