From e114753512d7ee1ba76f3ecbc14b9981c2f163dc Mon Sep 17 00:00:00 2001 From: kaw67872 <kawtar.laariche@iais.fraunhofer.de> Date: Fri, 13 Sep 2024 11:12:29 +0200 Subject: [PATCH] #26: add remaining design studio js dependencies --- src/legacy/design-studio/js/bootstrap.js | 3535 +++++++++++++++++++ src/legacy/design-studio/js/dc.graph.js.map | 1 + 2 files changed, 3536 insertions(+) create mode 100644 src/legacy/design-studio/js/bootstrap.js create mode 100644 src/legacy/design-studio/js/dc.graph.js.map diff --git a/src/legacy/design-studio/js/bootstrap.js b/src/legacy/design-studio/js/bootstrap.js new file mode 100644 index 0000000..2568773 --- /dev/null +++ b/src/legacy/design-studio/js/bootstrap.js @@ -0,0 +1,3535 @@ +/*! + * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com) + * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) { + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0') + } +}(jQuery); + + ++function () { + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): util.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Util = function ($) { + + /** + * ------------------------------------------------------------------------ + * Private TransitionEnd Helpers + * ------------------------------------------------------------------------ + */ + + var transition = false; + + var MAX_UID = 1000000; + + var TransitionEndEvent = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + + // shoutout AngusCroll (https://goo.gl/pxwQGp) + function toType(obj) { + return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + } + + function isElement(obj) { + return (obj[0] || obj).nodeType; + } + + function getSpecialTransitionEndEvent() { + return { + bindType: transition.end, + delegateType: transition.end, + handle: function handle(event) { + if ($(event.target).is(this)) { + return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params + } + return undefined; + } + }; + } + + function transitionEndTest() { + if (window.QUnit) { + return false; + } + + var el = document.createElement('bootstrap'); + + for (var name in TransitionEndEvent) { + if (el.style[name] !== undefined) { + return { + end: TransitionEndEvent[name] + }; + } + } + + return false; + } + + function transitionEndEmulator(duration) { + var _this = this; + + var called = false; + + $(this).one(Util.TRANSITION_END, function () { + called = true; + }); + + setTimeout(function () { + if (!called) { + Util.triggerTransitionEnd(_this); + } + }, duration); + + return this; + } + + function setTransitionEndSupport() { + transition = transitionEndTest(); + + $.fn.emulateTransitionEnd = transitionEndEmulator; + + if (Util.supportsTransitionEnd()) { + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); + } + } + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + + var Util = { + + TRANSITION_END: 'bsTransitionEnd', + + getUID: function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); + return prefix; + }, + getSelectorFromElement: function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector) { + selector = element.getAttribute('href') || ''; + selector = /^#[a-z]/i.test(selector) ? selector : null; + } + + return selector; + }, + reflow: function reflow(element) { + return element.offsetHeight; + }, + triggerTransitionEnd: function triggerTransitionEnd(element) { + $(element).trigger(transition.end); + }, + supportsTransitionEnd: function supportsTransitionEnd() { + return Boolean(transition); + }, + typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { + for (var property in configTypes) { + if (configTypes.hasOwnProperty(property)) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); + } + } + } + } + }; + + setTransitionEndSupport(); + + return Util; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): alert.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Alert = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'alert'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + + var Event = { + CLOSE: 'close' + EVENT_KEY, + CLOSED: 'closed' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Alert = function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } + + // getters + + // public + + Alert.prototype.close = function close(element) { + element = element || this._element; + + var rootElement = this._getRootElement(element); + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + }; + + Alert.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + }; + + // private + + Alert.prototype._getRootElement = function _getRootElement(element) { + var selector = Util.getSelectorFromElement(element); + var parent = false; + + if (selector) { + parent = $(selector)[0]; + } + + if (!parent) { + parent = $(element).closest('.' + ClassName.ALERT)[0]; + } + + return parent; + }; + + Alert.prototype._triggerCloseEvent = function _triggerCloseEvent(element) { + var closeEvent = $.Event(Event.CLOSE); + + $(element).trigger(closeEvent); + return closeEvent; + }; + + Alert.prototype._removeElement = function _removeElement(element) { + var _this2 = this; + + $(element).removeClass(ClassName.SHOW); + + if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + return; + } + + $(element).one(Util.TRANSITION_END, function (event) { + return _this2._destroyElement(element, event); + }).emulateTransitionEnd(TRANSITION_DURATION); + }; + + Alert.prototype._destroyElement = function _destroyElement(element) { + $(element).detach().trigger(Event.CLOSED).remove(); + }; + + // static + + Alert._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $element = $(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + }; + + Alert._handleDismiss = function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + }; + + _createClass(Alert, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Alert; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Alert._jQueryInterface; + $.fn[NAME].Constructor = Alert; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + + return Alert; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): button.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Button = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'button'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input', + ACTIVE: '.active', + BUTTON: '.btn' + }; + + var Event = { + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY) + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Button = function () { + function Button(element) { + _classCallCheck(this, Button); + + this._element = element; + } + + // getters + + // public + + Button.prototype.toggle = function toggle() { + var triggerChangeEvent = true; + var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + + if (rootElement) { + var input = $(this._element).find(Selector.INPUT)[0]; + + if (input) { + if (input.type === 'radio') { + if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + + if (activeElement) { + $(activeElement).removeClass(ClassName.ACTIVE); + } + } + } + + if (triggerChangeEvent) { + input.checked = !$(this._element).hasClass(ClassName.ACTIVE); + $(input).trigger('change'); + } + + input.focus(); + } + } + + this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); + + if (triggerChangeEvent) { + $(this._element).toggleClass(ClassName.ACTIVE); + } + }; + + Button.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + this._element = null; + }; + + // static + + Button._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Button(this); + $(this).data(DATA_KEY, data); + } + + if (config === 'toggle') { + data[config](); + } + }); + }; + + _createClass(Button, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Button; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + + var button = event.target; + + if (!$(button).hasClass(ClassName.BUTTON)) { + button = $(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call($(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = $(event.target).closest(Selector.BUTTON)[0]; + $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Button._jQueryInterface; + $.fn[NAME].Constructor = Button; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; + + return Button; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): carousel.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Carousel = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'carousel'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true + }; + + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean' + }; + + var Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' + }; + + var Event = { + SLIDE: 'slide' + EVENT_KEY, + SLID: 'slid' + EVENT_KEY, + KEYDOWN: 'keydown' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'carousel-item-right', + LEFT: 'carousel-item-left', + NEXT: 'carousel-item-next', + PREV: 'carousel-item-prev', + ITEM: 'carousel-item' + }; + + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Carousel = function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); + + this._items = null; + this._interval = null; + this._activeElement = null; + + this._isPaused = false; + this._isSliding = false; + + this._config = this._getConfig(config); + this._element = $(element)[0]; + this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; + + this._addEventListeners(); + } + + // getters + + // public + + Carousel.prototype.next = function next() { + if (this._isSliding) { + throw new Error('Carousel is sliding'); + } + this._slide(Direction.NEXT); + }; + + Carousel.prototype.nextWhenVisible = function nextWhenVisible() { + // Don't call next when the page isn't visible + if (!document.hidden) { + this.next(); + } + }; + + Carousel.prototype.prev = function prev() { + if (this._isSliding) { + throw new Error('Carousel is sliding'); + } + this._slide(Direction.PREVIOUS); + }; + + Carousel.prototype.pause = function pause(event) { + if (!event) { + this._isPaused = true; + } + + if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + Util.triggerTransitionEnd(this._element); + this.cycle(true); + } + + clearInterval(this._interval); + this._interval = null; + }; + + Carousel.prototype.cycle = function cycle(event) { + if (!event) { + this._isPaused = false; + } + + if (this._interval) { + clearInterval(this._interval); + this._interval = null; + } + + if (this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); + } + }; + + Carousel.prototype.to = function to(index) { + var _this3 = this; + + this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + + var activeIndex = this._getItemIndex(this._activeElement); + + if (index > this._items.length - 1 || index < 0) { + return; + } + + if (this._isSliding) { + $(this._element).one(Event.SLID, function () { + return _this3.to(index); + }); + return; + } + + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } + + var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS; + + this._slide(direction, this._items[index]); + }; + + Carousel.prototype.dispose = function dispose() { + $(this._element).off(EVENT_KEY); + $.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + }; + + // private + + Carousel.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Carousel.prototype._addEventListeners = function _addEventListeners() { + var _this4 = this; + + if (this._config.keyboard) { + $(this._element).on(Event.KEYDOWN, function (event) { + return _this4._keydown(event); + }); + } + + if (this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) { + $(this._element).on(Event.MOUSEENTER, function (event) { + return _this4.pause(event); + }).on(Event.MOUSELEAVE, function (event) { + return _this4.cycle(event); + }); + } + }; + + Carousel.prototype._keydown = function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } + + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + default: + return; + } + }; + + Carousel.prototype._getItemIndex = function _getItemIndex(element) { + this._items = $.makeArray($(element).parent().find(Selector.ITEM)); + return this._items.indexOf(element); + }; + + Carousel.prototype._getItemByDirection = function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREVIOUS; + var activeIndex = this._getItemIndex(activeElement); + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREVIOUS ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + }; + + Carousel.prototype._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var slideEvent = $.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName + }); + + $(this._element).trigger(slideEvent); + + return slideEvent; + }; + + Carousel.prototype._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + $(nextIndicator).addClass(ClassName.ACTIVE); + } + } + }; + + Carousel.prototype._slide = function _slide(direction, element) { + var _this5 = this; + + var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var isCycling = Boolean(this._interval); + + var directionalClassName = void 0; + var orderClassName = void 0; + var eventDirectionName = void 0; + + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } + + if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = $.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName + }); + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + + $(nextElement).addClass(orderClassName); + + Util.reflow(nextElement); + + $(activeElement).addClass(directionalClassName); + $(nextElement).addClass(directionalClassName); + + $(activeElement).one(Util.TRANSITION_END, function () { + $(nextElement).removeClass(directionalClassName + ' ' + orderClassName).addClass(ClassName.ACTIVE); + + $(activeElement).removeClass(ClassName.ACTIVE + ' ' + orderClassName + ' ' + directionalClassName); + + _this5._isSliding = false; + + setTimeout(function () { + return $(_this5._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + $(activeElement).removeClass(ClassName.ACTIVE); + $(nextElement).addClass(ClassName.ACTIVE); + + this._isSliding = false; + $(this._element).trigger(slidEvent); + } + + if (isCycling) { + this.cycle(); + } + }; + + // static + + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Default, $(this).data()); + + if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') { + $.extend(_config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (data[action] === undefined) { + throw new Error('No method named "' + action + '"'); + } + data[action](); + } else if (_config.interval) { + data.pause(); + data.cycle(); + } + }); + }; + + Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { + var selector = Util.getSelectorFromElement(this); + + if (!selector) { + return; + } + + var target = $(selector)[0]; + + if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { + return; + } + + var config = $.extend({}, $(target).data(), $(this).data()); + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; + } + + Carousel._jQueryInterface.call($(target), config); + + if (slideIndex) { + $(target).data(DATA_KEY).to(slideIndex); + } + + event.preventDefault(); + }; + + _createClass(Carousel, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Carousel; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + + $(window).on(Event.LOAD_DATA_API, function () { + $(Selector.DATA_RIDE).each(function () { + var $carousel = $(this); + Carousel._jQueryInterface.call($carousel, $carousel.data()); + }); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Carousel._jQueryInterface; + $.fn[NAME].Constructor = Carousel; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; + + return Carousel; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): collapse.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Collapse = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'collapse'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 600; + + var Default = { + toggle: true, + parent: '' + }; + + var DefaultType = { + toggle: 'boolean', + parent: 'string' + }; + + var Event = { + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + + var Selector = { + ACTIVES: '.card > .show, .card > .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Collapse = function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); + + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); + + this._parent = this._config.parent ? this._getParent() : null; + + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } + + if (this._config.toggle) { + this.toggle(); + } + } + + // getters + + // public + + Collapse.prototype.toggle = function toggle() { + if ($(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } + }; + + Collapse.prototype.show = function show() { + var _this6 = this; + + if (this._isTransitioning) { + throw new Error('Collapse is transitioning'); + } + + if ($(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var actives = void 0; + var activesData = void 0; + + if (this._parent) { + actives = $.makeArray($(this._parent).find(Selector.ACTIVES)); + if (!actives.length) { + actives = null; + } + } + + if (actives) { + activesData = $(actives).data(DATA_KEY); + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = $.Event(Event.SHOW); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call($(actives), 'hide'); + if (!activesData) { + $(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + + this._element.style[dimension] = 0; + this._element.setAttribute('aria-expanded', true); + + if (this._triggerArray.length) { + $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + $(_this6._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); + + _this6._element.style[dimension] = ''; + + _this6.setTransitioning(false); + + $(_this6._element).trigger(Event.SHOWN); + }; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = 'scroll' + capitalizedDimension; + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + + this._element.style[dimension] = this._element[scrollSize] + 'px'; + }; + + Collapse.prototype.hide = function hide() { + var _this7 = this; + + if (this._isTransitioning) { + throw new Error('Collapse is transitioning'); + } + + if (!$(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var startEvent = $.Event(Event.HIDE); + $(this._element).trigger(startEvent); + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; + + this._element.style[dimension] = this._element[offsetDimension] + 'px'; + + Util.reflow(this._element); + + $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + + this._element.setAttribute('aria-expanded', false); + + if (this._triggerArray.length) { + $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + + this.setTransitioning(true); + + var complete = function complete() { + _this7.setTransitioning(false); + $(_this7._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = ''; + + if (!Util.supportsTransitionEnd()) { + complete(); + return; + } + + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + }; + + Collapse.prototype.setTransitioning = function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + }; + + Collapse.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + }; + + // private + + Collapse.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + config.toggle = Boolean(config.toggle); // coerce string values + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Collapse.prototype._getDimension = function _getDimension() { + var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + }; + + Collapse.prototype._getParent = function _getParent() { + var _this8 = this; + + var parent = $(this._config.parent)[0]; + var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; + + $(parent).find(selector).each(function (i, element) { + _this8._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + + return parent; + }; + + Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { + if (element) { + var isOpen = $(element).hasClass(ClassName.SHOW); + element.setAttribute('aria-expanded', isOpen); + + if (triggerArray.length) { + $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + }; + + // static + + Collapse._getTargetFromElement = function _getTargetFromElement(element) { + var selector = Util.getSelectorFromElement(element); + return selector ? $(selector)[0] : null; + }; + + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Collapse, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Collapse; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + + var target = Collapse._getTargetFromElement(this); + var data = $(target).data(DATA_KEY); + var config = data ? 'toggle' : $(this).data(); + + Collapse._jQueryInterface.call($(target), config); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Collapse._jQueryInterface; + $.fn[NAME].Constructor = Collapse; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; + + return Collapse; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): dropdown.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Dropdown = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'dropdown'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY, + FOCUSIN_DATA_API: 'focusin' + EVENT_KEY + DATA_API_KEY, + KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + BACKDROP: 'dropdown-backdrop', + DISABLED: 'disabled', + SHOW: 'show' + }; + + var Selector = { + BACKDROP: '.dropdown-backdrop', + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + ROLE_MENU: '[role="menu"]', + ROLE_LISTBOX: '[role="listbox"]', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '[role="menu"] li:not(.disabled) a, ' + '[role="listbox"] li:not(.disabled) a' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Dropdown = function () { + function Dropdown(element) { + _classCallCheck(this, Dropdown); + + this._element = element; + + this._addEventListeners(); + } + + // getters + + // public + + Dropdown.prototype.toggle = function toggle() { + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return false; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.SHOW); + + Dropdown._clearMenus(); + + if (isActive) { + return false; + } + + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { + + // if mobile we use a backdrop because click events don't delegate + var dropdown = document.createElement('div'); + dropdown.className = ClassName.BACKDROP; + $(dropdown).insertBefore(this); + $(dropdown).on('click', Dropdown._clearMenus); + } + + var relatedTarget = { + relatedTarget: this + }; + var showEvent = $.Event(Event.SHOW, relatedTarget); + + $(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return false; + } + + this.focus(); + this.setAttribute('aria-expanded', true); + + $(parent).toggleClass(ClassName.SHOW); + $(parent).trigger($.Event(Event.SHOWN, relatedTarget)); + + return false; + }; + + Dropdown.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._element).off(EVENT_KEY); + this._element = null; + }; + + // private + + Dropdown.prototype._addEventListeners = function _addEventListeners() { + $(this._element).on(Event.CLICK, this.toggle); + }; + + // static + + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + + if (!data) { + data = new Dropdown(this); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config].call(this); + } + }); + }; + + Dropdown._clearMenus = function _clearMenus(event) { + if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) { + return; + } + + var backdrop = $(Selector.BACKDROP)[0]; + if (backdrop) { + backdrop.parentNode.removeChild(backdrop); + } + + var toggles = $.makeArray($(Selector.DATA_TOGGLE)); + + for (var i = 0; i < toggles.length; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (!$(parent).hasClass(ClassName.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'focusin') && $.contains(parent, event.target)) { + continue; + } + + var hideEvent = $.Event(Event.HIDE, relatedTarget); + $(parent).trigger(hideEvent); + if (hideEvent.isDefaultPrevented()) { + continue; + } + + toggles[i].setAttribute('aria-expanded', 'false'); + + $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget)); + } + }; + + Dropdown._getParentFromElement = function _getParentFromElement(element) { + var parent = void 0; + var selector = Util.getSelectorFromElement(element); + + if (selector) { + parent = $(selector)[0]; + } + + return parent || element.parentNode; + }; + + Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { + if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) { + return; + } + + event.preventDefault(); + event.stopPropagation(); + + if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { + return; + } + + var parent = Dropdown._getParentFromElement(this); + var isActive = $(parent).hasClass(ClassName.SHOW); + + if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) { + + if (event.which === ESCAPE_KEYCODE) { + var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; + $(toggle).trigger('focus'); + } + + $(this).trigger('click'); + return; + } + + var items = $(parent).find(Selector.VISIBLE_ITEMS).get(); + + if (!items.length) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + }; + + _createClass(Dropdown, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Dropdown; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.FOCUSIN_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Dropdown._jQueryInterface; + $.fn[NAME].Constructor = Dropdown; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; + + return Dropdown; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): modal.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Modal = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'modal'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 300; + var BACKDROP_TRANSITION_DURATION = 150; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + RESIZE: 'resize' + EVENT_KEY, + CLICK_DISMISS: 'click.dismiss' + EVENT_KEY, + KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY, + MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY, + MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + DIALOG: '.modal-dialog', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Modal = function () { + function Modal(element, config) { + _classCallCheck(this, Modal); + + this._config = this._getConfig(config); + this._element = element; + this._dialog = $(element).find(Selector.DIALOG)[0]; + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._originalBodyPadding = 0; + this._scrollbarWidth = 0; + } + + // getters + + // public + + Modal.prototype.toggle = function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); + }; + + Modal.prototype.show = function show(relatedTarget) { + var _this9 = this; + + if (this._isTransitioning) { + throw new Error('Modal is transitioning'); + } + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } + var showEvent = $.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + $(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + this._setScrollbar(); + + $(document.body).addClass(ClassName.OPEN); + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this9.hide(event); + }); + + $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + $(_this9._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ($(event.target).is(_this9._element)) { + _this9._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this9._showElement(relatedTarget); + }); + }; + + Modal.prototype.hide = function hide(event) { + var _this10 = this; + + if (event) { + event.preventDefault(); + } + + if (this._isTransitioning) { + throw new Error('Modal is transitioning'); + } + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + if (transition) { + this._isTransitioning = true; + } + + var hideEvent = $.Event(Event.HIDE); + $(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + + this._setEscapeEvent(); + this._setResizeEvent(); + + $(document).off(Event.FOCUSIN); + + $(this._element).removeClass(ClassName.SHOW); + + $(this._element).off(Event.CLICK_DISMISS); + $(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (transition) { + $(this._element).one(Util.TRANSITION_END, function (event) { + return _this10._hideModal(event); + }).emulateTransitionEnd(TRANSITION_DURATION); + } else { + this._hideModal(); + } + }; + + Modal.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + + $(window, document, this._element, this._backdrop).off(EVENT_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._originalBodyPadding = null; + this._scrollbarWidth = null; + }; + + // private + + Modal.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + Util.typeCheckConfig(NAME, config, DefaultType); + return config; + }; + + Modal.prototype._showElement = function _showElement(relatedTarget) { + var _this11 = this; + + var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // don't move modals dom position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + this._element.removeAttribute('aria-hidden'); + this._element.scrollTop = 0; + + if (transition) { + Util.reflow(this._element); + } + + $(this._element).addClass(ClassName.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this11._config.focus) { + _this11._element.focus(); + } + _this11._isTransitioning = false; + $(_this11._element).trigger(shownEvent); + }; + + if (transition) { + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + transitionComplete(); + } + }; + + Modal.prototype._enforceFocus = function _enforceFocus() { + var _this12 = this; + + $(document).off(Event.FOCUSIN) // guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (document !== event.target && _this12._element !== event.target && !$(_this12._element).has(event.target).length) { + _this12._element.focus(); + } + }); + }; + + Modal.prototype._setEscapeEvent = function _setEscapeEvent() { + var _this13 = this; + + if (this._isShown && this._config.keyboard) { + $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + _this13.hide(); + } + }); + } else if (!this._isShown) { + $(this._element).off(Event.KEYDOWN_DISMISS); + } + }; + + Modal.prototype._setResizeEvent = function _setResizeEvent() { + var _this14 = this; + + if (this._isShown) { + $(window).on(Event.RESIZE, function (event) { + return _this14._handleUpdate(event); + }); + } else { + $(window).off(Event.RESIZE); + } + }; + + Modal.prototype._hideModal = function _hideModal() { + var _this15 = this; + + this._element.style.display = 'none'; + this._element.setAttribute('aria-hidden', 'true'); + this._isTransitioning = false; + this._showBackdrop(function () { + $(document.body).removeClass(ClassName.OPEN); + _this15._resetAdjustments(); + _this15._resetScrollbar(); + $(_this15._element).trigger(Event.HIDDEN); + }); + }; + + Modal.prototype._removeBackdrop = function _removeBackdrop() { + if (this._backdrop) { + $(this._backdrop).remove(); + this._backdrop = null; + } + }; + + Modal.prototype._showBackdrop = function _showBackdrop(callback) { + var _this16 = this; + + var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + var doAnimate = Util.supportsTransitionEnd() && animate; + + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + $(this._backdrop).addClass(animate); + } + + $(this._backdrop).appendTo(document.body); + + $(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this16._ignoreBackdropClick) { + _this16._ignoreBackdropClick = false; + return; + } + if (event.target !== event.currentTarget) { + return; + } + if (_this16._config.backdrop === 'static') { + _this16._element.focus(); + } else { + _this16.hide(); + } + }); + + if (doAnimate) { + Util.reflow(this._backdrop); + } + + $(this._backdrop).addClass(ClassName.SHOW); + + if (!callback) { + return; + } + + if (!doAnimate) { + callback(); + return; + } + + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else if (!this._isShown && this._backdrop) { + $(this._backdrop).removeClass(ClassName.SHOW); + + var callbackRemove = function callbackRemove() { + _this16._removeBackdrop(); + if (callback) { + callback(); + } + }; + + if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + }; + + // ---------------------------------------------------------------------- + // the following methods are used to handle overflowing modals + // todo (fat): these should probably be refactored out of modal.js + // ---------------------------------------------------------------------- + + Modal.prototype._handleUpdate = function _handleUpdate() { + this._adjustDialog(); + }; + + Modal.prototype._adjustDialog = function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = this._scrollbarWidth + 'px'; + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = this._scrollbarWidth + 'px'; + } + }; + + Modal.prototype._resetAdjustments = function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + }; + + Modal.prototype._checkScrollbar = function _checkScrollbar() { + this._isBodyOverflowing = document.body.clientWidth < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + }; + + Modal.prototype._setScrollbar = function _setScrollbar() { + var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10); + + this._originalBodyPadding = document.body.style.paddingRight || ''; + + if (this._isBodyOverflowing) { + document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + } + }; + + Modal.prototype._resetScrollbar = function _resetScrollbar() { + document.body.style.paddingRight = this._originalBodyPadding; + }; + + Modal.prototype._getScrollbarWidth = function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + }; + + // static + + Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = $.extend({}, Modal.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); + + if (!data) { + data = new Modal(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + }; + + _createClass(Modal, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return Modal; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this17 = this; + + var target = void 0; + var selector = Util.getSelectorFromElement(this); + + if (selector) { + target = $(selector)[0]; + } + + var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = $(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ($(_this17).is(':visible')) { + _this17.focus(); + } + }); + }); + + Modal._jQueryInterface.call($(target), config, this); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Modal._jQueryInterface; + $.fn[NAME].Constructor = Modal; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; + + return Modal; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): scrollspy.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var ScrollSpy = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'scrollspy'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + + var Event = { + ACTIVATE: 'activate' + EVENT_KEY, + SCROLL: 'scroll' + EVENT_KEY, + LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + NAV_LINK: 'nav-link', + NAV: 'nav', + ACTIVE: 'active' + }; + + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + LIST_ITEM: '.list-item', + LI: 'li', + LI_DROPDOWN: 'li.dropdown', + NAV_LINKS: '.nav-link', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var ScrollSpy = function () { + function ScrollSpy(element, config) { + var _this18 = this; + + _classCallCheck(this, ScrollSpy); + + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + + $(this._scrollElement).on(Event.SCROLL, function (event) { + return _this18._process(event); + }); + + this.refresh(); + this._process(); + } + + // getters + + // public + + ScrollSpy.prototype.refresh = function refresh() { + var _this19 = this; + + var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; + + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; + + this._offsets = []; + this._targets = []; + + this._scrollHeight = this._getScrollHeight(); + + var targets = $.makeArray($(this._selector)); + + targets.map(function (element) { + var target = void 0; + var targetSelector = Util.getSelectorFromElement(element); + + if (targetSelector) { + target = $(targetSelector)[0]; + } + + if (target && (target.offsetWidth || target.offsetHeight)) { + // todo (fat): remove sketch reliance on jQuery position/offset + return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this19._offsets.push(item[0]); + _this19._targets.push(item[1]); + }); + }; + + ScrollSpy.prototype.dispose = function dispose() { + $.removeData(this._element, DATA_KEY); + $(this._scrollElement).off(EVENT_KEY); + + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + }; + + // private + + ScrollSpy.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, Default, config); + + if (typeof config.target !== 'string') { + var id = $(config.target).attr('id'); + if (!id) { + id = Util.getUID(NAME); + $(config.target).attr('id', id); + } + config.target = '#' + id; + } + + Util.typeCheckConfig(NAME, config, DefaultType); + + return config; + }; + + ScrollSpy.prototype._getScrollTop = function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + }; + + ScrollSpy.prototype._getScrollHeight = function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + }; + + ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight; + }; + + ScrollSpy.prototype._process = function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + var scrollHeight = this._getScrollHeight(); + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { + this._activeTarget = null; + this._clear(); + return; + } + + for (var i = this._offsets.length; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); + + if (isActiveTarget) { + this._activate(this._targets[i]); + } + } + }; + + ScrollSpy.prototype._activate = function _activate(target) { + this._activeTarget = target; + + this._clear(); + + var queries = this._selector.split(','); + queries = queries.map(function (selector) { + return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); + }); + + var $link = $(queries.join(',')); + + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + $link.addClass(ClassName.ACTIVE); + } else { + // todo (fat) this is kinda sus... + // recursively add actives to tested nav-links + $link.parents(Selector.LI).find('> ' + Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + } + + $(this._scrollElement).trigger(Event.ACTIVATE, { + relatedTarget: target + }); + }; + + ScrollSpy.prototype._clear = function _clear() { + $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); + }; + + // static + + ScrollSpy._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; + + if (!data) { + data = new ScrollSpy(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(ScrollSpy, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }]); + + return ScrollSpy; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(window).on(Event.LOAD_DATA_API, function () { + var scrollSpys = $.makeArray($(Selector.DATA_SPY)); + + for (var i = scrollSpys.length; i--;) { + var $spy = $(scrollSpys[i]); + ScrollSpy._jQueryInterface.call($spy, $spy.data()); + } + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = ScrollSpy._jQueryInterface; + $.fn[NAME].Constructor = ScrollSpy; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return ScrollSpy._jQueryInterface; + }; + + return ScrollSpy; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): tab.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tab = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tab'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.tab'; + var EVENT_KEY = '.' + DATA_KEY; + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY + }; + + var ClassName = { + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active', + DISABLED: 'disabled', + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + A: 'a', + LI: 'li', + DROPDOWN: '.dropdown', + LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)', + FADE_CHILD: '> .nav-item .fade, > .fade', + ACTIVE: '.active', + ACTIVE_CHILD: '> .nav-item > .active, > .active', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DROPDOWN_TOGGLE: '.dropdown-toggle', + DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tab = function () { + function Tab(element) { + _classCallCheck(this, Tab); + + this._element = element; + } + + // getters + + // public + + Tab.prototype.show = function show() { + var _this20 = this; + + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) { + return; + } + + var target = void 0; + var previous = void 0; + var listElement = $(this._element).closest(Selector.LIST)[0]; + var selector = Util.getSelectorFromElement(this._element); + + if (listElement) { + previous = $.makeArray($(listElement).find(Selector.ACTIVE)); + previous = previous[previous.length - 1]; + } + + var hideEvent = $.Event(Event.HIDE, { + relatedTarget: this._element + }); + + var showEvent = $.Event(Event.SHOW, { + relatedTarget: previous + }); + + if (previous) { + $(previous).trigger(hideEvent); + } + + $(this._element).trigger(showEvent); + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + return; + } + + if (selector) { + target = $(selector)[0]; + } + + this._activate(this._element, listElement); + + var complete = function complete() { + var hiddenEvent = $.Event(Event.HIDDEN, { + relatedTarget: _this20._element + }); + + var shownEvent = $.Event(Event.SHOWN, { + relatedTarget: previous + }); + + $(previous).trigger(hiddenEvent); + $(_this20._element).trigger(shownEvent); + }; + + if (target) { + this._activate(target, target.parentNode, complete); + } else { + complete(); + } + }; + + Tab.prototype.dispose = function dispose() { + $.removeClass(this._element, DATA_KEY); + this._element = null; + }; + + // private + + Tab.prototype._activate = function _activate(element, container, callback) { + var _this21 = this; + + var active = $(container).find(Selector.ACTIVE_CHILD)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0])); + + var complete = function complete() { + return _this21._transitionComplete(element, active, isTransitioning, callback); + }; + + if (active && isTransitioning) { + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + if (active) { + $(active).removeClass(ClassName.SHOW); + } + }; + + Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) { + if (active) { + $(active).removeClass(ClassName.ACTIVE); + + var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; + + if (dropdownChild) { + $(dropdownChild).removeClass(ClassName.ACTIVE); + } + + active.setAttribute('aria-expanded', false); + } + + $(element).addClass(ClassName.ACTIVE); + element.setAttribute('aria-expanded', true); + + if (isTransitioning) { + Util.reflow(element); + $(element).addClass(ClassName.SHOW); + } else { + $(element).removeClass(ClassName.FADE); + } + + if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { + + var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; + if (dropdownElement) { + $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); + } + + element.setAttribute('aria-expanded', true); + } + + if (callback) { + callback(); + } + }; + + // static + + Tab._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DATA_KEY); + + if (!data) { + data = new Tab(this); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Tab, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }]); + + return Tab; + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + + $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + Tab._jQueryInterface.call($(this), 'show'); + }); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tab._jQueryInterface; + $.fn[NAME].Constructor = Tab; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tab._jQueryInterface; + }; + + return Tab; +}(jQuery); + +/* global Tether */ + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): tooltip.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Tooltip = function ($) { + + /** + * Check for Tether dependency + * Tether - http://tether.io/ + */ + if (typeof Tether === 'undefined') { + throw new Error('Bootstrap tooltips require Tether (http://tether.io/)'); + } + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'tooltip'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.tooltip'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + var TRANSITION_DURATION = 150; + var CLASS_PREFIX = 'bs-tether'; + + var Default = { + animation: true, + template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-inner"></div></div>', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + selector: false, + placement: 'top', + offset: '0 0', + constraints: [], + container: false + }; + + var DefaultType = { + animation: 'boolean', + template: 'string', + title: '(string|element|function)', + trigger: 'string', + delay: '(number|object)', + html: 'boolean', + selector: '(string|boolean)', + placement: '(string|function)', + offset: 'string', + constraints: 'array', + container: '(string|element|boolean)' + }; + + var AttachmentMap = { + TOP: 'bottom center', + RIGHT: 'middle left', + BOTTOM: 'top center', + LEFT: 'middle right' + }; + + var HoverState = { + SHOW: 'show', + OUT: 'out' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + TOOLTIP: '.tooltip', + TOOLTIP_INNER: '.tooltip-inner' + }; + + var TetherClass = { + element: false, + enabled: false + }; + + var Trigger = { + HOVER: 'hover', + FOCUS: 'focus', + CLICK: 'click', + MANUAL: 'manual' + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Tooltip = function () { + function Tooltip(element, config) { + _classCallCheck(this, Tooltip); + + // private + this._isEnabled = true; + this._timeout = 0; + this._hoverState = ''; + this._activeTrigger = {}; + this._isTransitioning = false; + this._tether = null; + + // protected + this.element = element; + this.config = this._getConfig(config); + this.tip = null; + + this._setListeners(); + } + + // getters + + // public + + Tooltip.prototype.enable = function enable() { + this._isEnabled = true; + }; + + Tooltip.prototype.disable = function disable() { + this._isEnabled = false; + }; + + Tooltip.prototype.toggleEnabled = function toggleEnabled() { + this._isEnabled = !this._isEnabled; + }; + + Tooltip.prototype.toggle = function toggle(event) { + if (event) { + var dataKey = this.constructor.DATA_KEY; + var context = $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + context._activeTrigger.click = !context._activeTrigger.click; + + if (context._isWithActiveTrigger()) { + context._enter(null, context); + } else { + context._leave(null, context); + } + } else { + + if ($(this.getTipElement()).hasClass(ClassName.SHOW)) { + this._leave(null, this); + return; + } + + this._enter(null, this); + } + }; + + Tooltip.prototype.dispose = function dispose() { + clearTimeout(this._timeout); + + this.cleanupTether(); + + $.removeData(this.element, this.constructor.DATA_KEY); + + $(this.element).off(this.constructor.EVENT_KEY); + $(this.element).closest('.modal').off('hide.bs.modal'); + + if (this.tip) { + $(this.tip).remove(); + } + + this._isEnabled = null; + this._timeout = null; + this._hoverState = null; + this._activeTrigger = null; + this._tether = null; + + this.element = null; + this.config = null; + this.tip = null; + }; + + Tooltip.prototype.show = function show() { + var _this22 = this; + + if ($(this.element).css('display') === 'none') { + throw new Error('Please use show on visible elements'); + } + + var showEvent = $.Event(this.constructor.Event.SHOW); + if (this.isWithContent() && this._isEnabled) { + if (this._isTransitioning) { + throw new Error('Tooltip is transitioning'); + } + $(this.element).trigger(showEvent); + + var isInTheDom = $.contains(this.element.ownerDocument.documentElement, this.element); + + if (showEvent.isDefaultPrevented() || !isInTheDom) { + return; + } + + var tip = this.getTipElement(); + var tipId = Util.getUID(this.constructor.NAME); + + tip.setAttribute('id', tipId); + this.element.setAttribute('aria-describedby', tipId); + + this.setContent(); + + if (this.config.animation) { + $(tip).addClass(ClassName.FADE); + } + + var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; + + var attachment = this._getAttachment(placement); + + var container = this.config.container === false ? document.body : $(this.config.container); + + $(tip).data(this.constructor.DATA_KEY, this).appendTo(container); + + $(this.element).trigger(this.constructor.Event.INSERTED); + + this._tether = new Tether({ + attachment: attachment, + element: tip, + target: this.element, + classes: TetherClass, + classPrefix: CLASS_PREFIX, + offset: this.config.offset, + constraints: this.config.constraints, + addTargetClasses: false + }); + + Util.reflow(tip); + this._tether.position(); + + $(tip).addClass(ClassName.SHOW); + + var complete = function complete() { + var prevHoverState = _this22._hoverState; + _this22._hoverState = null; + _this22._isTransitioning = false; + + $(_this22.element).trigger(_this22.constructor.Event.SHOWN); + + if (prevHoverState === HoverState.OUT) { + _this22._leave(null, _this22); + } + }; + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + return; + } + + complete(); + } + }; + + Tooltip.prototype.hide = function hide(callback) { + var _this23 = this; + + var tip = this.getTipElement(); + var hideEvent = $.Event(this.constructor.Event.HIDE); + if (this._isTransitioning) { + throw new Error('Tooltip is transitioning'); + } + var complete = function complete() { + if (_this23._hoverState !== HoverState.SHOW && tip.parentNode) { + tip.parentNode.removeChild(tip); + } + + _this23.element.removeAttribute('aria-describedby'); + $(_this23.element).trigger(_this23.constructor.Event.HIDDEN); + _this23._isTransitioning = false; + _this23.cleanupTether(); + + if (callback) { + callback(); + } + }; + + $(this.element).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + $(tip).removeClass(ClassName.SHOW); + + this._activeTrigger[Trigger.CLICK] = false; + this._activeTrigger[Trigger.FOCUS] = false; + this._activeTrigger[Trigger.HOVER] = false; + + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + } else { + complete(); + } + + this._hoverState = ''; + }; + + // protected + + Tooltip.prototype.isWithContent = function isWithContent() { + return Boolean(this.getTitle()); + }; + + Tooltip.prototype.getTipElement = function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + }; + + Tooltip.prototype.setContent = function setContent() { + var $tip = $(this.getTipElement()); + + this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); + + $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW); + + this.cleanupTether(); + }; + + Tooltip.prototype.setElementContent = function setElementContent($element, content) { + var html = this.config.html; + if ((typeof content === 'undefined' ? 'undefined' : _typeof(content)) === 'object' && (content.nodeType || content.jquery)) { + // content is a DOM node or a jQuery + if (html) { + if (!$(content).parent().is($element)) { + $element.empty().append(content); + } + } else { + $element.text($(content).text()); + } + } else { + $element[html ? 'html' : 'text'](content); + } + }; + + Tooltip.prototype.getTitle = function getTitle() { + var title = this.element.getAttribute('data-original-title'); + + if (!title) { + title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; + } + + return title; + }; + + Tooltip.prototype.cleanupTether = function cleanupTether() { + if (this._tether) { + this._tether.destroy(); + } + }; + + // private + + Tooltip.prototype._getAttachment = function _getAttachment(placement) { + return AttachmentMap[placement.toUpperCase()]; + }; + + Tooltip.prototype._setListeners = function _setListeners() { + var _this24 = this; + + var triggers = this.config.trigger.split(' '); + + triggers.forEach(function (trigger) { + if (trigger === 'click') { + $(_this24.element).on(_this24.constructor.Event.CLICK, _this24.config.selector, function (event) { + return _this24.toggle(event); + }); + } else if (trigger !== Trigger.MANUAL) { + var eventIn = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSEENTER : _this24.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSELEAVE : _this24.constructor.Event.FOCUSOUT; + + $(_this24.element).on(eventIn, _this24.config.selector, function (event) { + return _this24._enter(event); + }).on(eventOut, _this24.config.selector, function (event) { + return _this24._leave(event); + }); + } + + $(_this24.element).closest('.modal').on('hide.bs.modal', function () { + return _this24.hide(); + }); + }); + + if (this.config.selector) { + this.config = $.extend({}, this.config, { + trigger: 'manual', + selector: '' + }); + } else { + this._fixTitle(); + } + }; + + Tooltip.prototype._fixTitle = function _fixTitle() { + var titleType = _typeof(this.element.getAttribute('data-original-title')); + if (this.element.getAttribute('title') || titleType !== 'string') { + this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); + this.element.setAttribute('title', ''); + } + }; + + Tooltip.prototype._enter = function _enter(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + } + + if ($(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { + context._hoverState = HoverState.SHOW; + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.SHOW; + + if (!context.config.delay || !context.config.delay.show) { + context.show(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.SHOW) { + context.show(); + } + }, context.config.delay.show); + }; + + Tooltip.prototype._leave = function _leave(event, context) { + var dataKey = this.constructor.DATA_KEY; + + context = context || $(event.currentTarget).data(dataKey); + + if (!context) { + context = new this.constructor(event.currentTarget, this._getDelegateConfig()); + $(event.currentTarget).data(dataKey, context); + } + + if (event) { + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + } + + if (context._isWithActiveTrigger()) { + return; + } + + clearTimeout(context._timeout); + + context._hoverState = HoverState.OUT; + + if (!context.config.delay || !context.config.delay.hide) { + context.hide(); + return; + } + + context._timeout = setTimeout(function () { + if (context._hoverState === HoverState.OUT) { + context.hide(); + } + }, context.config.delay.hide); + }; + + Tooltip.prototype._isWithActiveTrigger = function _isWithActiveTrigger() { + for (var trigger in this._activeTrigger) { + if (this._activeTrigger[trigger]) { + return true; + } + } + + return false; + }; + + Tooltip.prototype._getConfig = function _getConfig(config) { + config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + + if (config.delay && typeof config.delay === 'number') { + config.delay = { + show: config.delay, + hide: config.delay + }; + } + + Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + }; + + Tooltip.prototype._getDelegateConfig = function _getDelegateConfig() { + var config = {}; + + if (this.config) { + for (var key in this.config) { + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; + } + } + } + + return config; + }; + + // static + + Tooltip._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; + + if (!data && /dispose|hide/.test(config)) { + return; + } + + if (!data) { + data = new Tooltip(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Tooltip, null, [{ + key: 'VERSION', + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Tooltip; + }(); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Tooltip._jQueryInterface; + $.fn[NAME].Constructor = Tooltip; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Tooltip._jQueryInterface; + }; + + return Tooltip; +}(jQuery); + +/** + * -------------------------------------------------------------------------- + * Bootstrap (v4.0.0-alpha.6): popover.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + +var Popover = function ($) { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var NAME = 'popover'; + var VERSION = '4.0.0-alpha.6'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = '.' + DATA_KEY; + var JQUERY_NO_CONFLICT = $.fn[NAME]; + + var Default = $.extend({}, Tooltip.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '<div class="popover" role="tooltip">' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>' + }); + + var DefaultType = $.extend({}, Tooltip.DefaultType, { + content: '(string|element|function)' + }); + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + + var Selector = { + TITLE: '.popover-title', + CONTENT: '.popover-content' + }; + + var Event = { + HIDE: 'hide' + EVENT_KEY, + HIDDEN: 'hidden' + EVENT_KEY, + SHOW: 'show' + EVENT_KEY, + SHOWN: 'shown' + EVENT_KEY, + INSERTED: 'inserted' + EVENT_KEY, + CLICK: 'click' + EVENT_KEY, + FOCUSIN: 'focusin' + EVENT_KEY, + FOCUSOUT: 'focusout' + EVENT_KEY, + MOUSEENTER: 'mouseenter' + EVENT_KEY, + MOUSELEAVE: 'mouseleave' + EVENT_KEY + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + + var Popover = function (_Tooltip) { + _inherits(Popover, _Tooltip); + + function Popover() { + _classCallCheck(this, Popover); + + return _possibleConstructorReturn(this, _Tooltip.apply(this, arguments)); + } + + // overrides + + Popover.prototype.isWithContent = function isWithContent() { + return this.getTitle() || this._getContent(); + }; + + Popover.prototype.getTipElement = function getTipElement() { + return this.tip = this.tip || $(this.config.template)[0]; + }; + + Popover.prototype.setContent = function setContent() { + var $tip = $(this.getTipElement()); + + // we use append for html objects to maintain js events + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + this.setElementContent($tip.find(Selector.CONTENT), this._getContent()); + + $tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW); + + this.cleanupTether(); + }; + + // private + + Popover.prototype._getContent = function _getContent() { + return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); + }; + + // static + + Popover._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + var data = $(this).data(DATA_KEY); + var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null; + + if (!data && /destroy|hide/.test(config)) { + return; + } + + if (!data) { + data = new Popover(this, _config); + $(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (data[config] === undefined) { + throw new Error('No method named "' + config + '"'); + } + data[config](); + } + }); + }; + + _createClass(Popover, null, [{ + key: 'VERSION', + + + // getters + + get: function get() { + return VERSION; + } + }, { + key: 'Default', + get: function get() { + return Default; + } + }, { + key: 'NAME', + get: function get() { + return NAME; + } + }, { + key: 'DATA_KEY', + get: function get() { + return DATA_KEY; + } + }, { + key: 'Event', + get: function get() { + return Event; + } + }, { + key: 'EVENT_KEY', + get: function get() { + return EVENT_KEY; + } + }, { + key: 'DefaultType', + get: function get() { + return DefaultType; + } + }]); + + return Popover; + }(Tooltip); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + $.fn[NAME] = Popover._jQueryInterface; + $.fn[NAME].Constructor = Popover; + $.fn[NAME].noConflict = function () { + $.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; + + return Popover; +}(jQuery); + +}(); diff --git a/src/legacy/design-studio/js/dc.graph.js.map b/src/legacy/design-studio/js/dc.graph.js.map new file mode 100644 index 0000000..56c8bf9 --- /dev/null +++ b/src/legacy/design-studio/js/dc.graph.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/banner.js","src/core.js","src/utils.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/arrows.js","src/node_contents.js","src/diagram.js","src/render_svg.js","src/render_webgl.js","src/engine.js","src/webworker_layout.js","src/graphviz_attrs.js","src/cola_layout.js","src/dagre_layout.js","src/tree_layout.js","src/graphviz_layout.js","src/d3_force_layout.js","src/d3v4_force_layout.js","src/flexbox_layout.js","src/manual_layout.js","src/layered_layout.js","src/place_ports.js","src/grid.js","src/annotate_layers.js","src/troubleshoot.js","src/validate.js","src/legend.js","src/constraint_pattern.js","src/tree_positions.js","src/tree_constraints.js","src/mode.js","src/tip.js","src/dropdown.js","src/keyboard.js","src/edit_text.js","src/brush.js","src/select_things.js","src/select_nodes.js","src/select_edges.js","src/select_ports.js","src/move_nodes.js","src/fix_nodes.js","src/filter_selection.js","src/delete_things.js","src/delete_nodes.js","src/label_things.js","src/label_nodes.js","src/label_edges.js","src/highlight_things_group.js","src/highlight_things.js","src/highlight_neighbors_group.js","src/highlight_neighbors.js","src/highlight_radius.js","src/highlight_paths_group.js","src/highlight_paths.js","src/spline_paths.js","src/draw_clusters.js","src/expand_collapse.js","src/shown_hidden.js","src/expanded_hidden.js","src/draw_graphs.js","src/match_ports.js","src/match_opposites.js","src/wildcard_ports.js","src/symbol_port_style.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/transform.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/supergraph.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC,GAAG,CAAC,MAAM,EAAE;;ACDb,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AACpG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;AAC3J,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ;AACrG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAChE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ;AACtB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AACtB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AACrB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC9B,CAAC,EAAE;AACH;AACA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,QAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/B,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AACD;AACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,EAAE;AACF;AACA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5B,QAAQ,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AAC9B,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACrB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,KAAK,CAAC;AACjB,YAAY,KAAK,CAAC,CAAC,EAAE;AACrB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACrB,oBAAoB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACnD,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACnC,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACpC,YAAY,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AAC3D,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,EAAE;AACF;AACA,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;AACjC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AAC9C,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACxB,gBAAgB,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;AAC/C,gBAAgB,OAAO,CAAC,KAAK,GAAG;AAChC,gBAAgB,OAAO,CAAC,QAAQ,GAAG;AACnC,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa;AACtC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACzB,YAAY,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE;AACvC,QAAQ,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/B,QAAQ,EAAE,CAAC,MAAM,CAAC;AAClB,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AACtC,IAAI,EAAE;AACN,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,YAAY,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,CAAC;AACD;AACA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE;AACtC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AAClC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE;AAC5C,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,GAAG;AACtB,IAAI,EAAE;AACN,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACnC,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,YAAY,MAAM,CAAC;AACnB,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/B,YAAY,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;AAC5C,YAAY,OAAO,CAAC,KAAK,GAAG;AAC5B,YAAY,OAAO,CAAC,QAAQ,GAAG;AAC/B,QAAQ,CAAC;AACT,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;AAC1C,CAAC;AACD;AACA,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAC5C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,QAAQ,GAAG,GAAG;AACd,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AACxC,IAAI,EAAE;AACN,CAAC;AACD,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC9C,CAAC;AACD;AACA,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU;AAC3E,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACjB,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACnE,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9B,IAAI,GAAG;AACP,CAAC;AACD;AACA,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;AACxC;AACA,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,WAAW,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;AACtB,IAAI,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AACtE,CAAC;AACD;AACA,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAChC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AACrC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI;AAClE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3C,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI;AAC7D,QAAQ,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG;AAC1E,MAAM,CAAC;AACP;AACA,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC9B;AACA,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9D,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;AAC1C;AACA,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI;AACnE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ;AACzD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5E,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE;AAChD,YAAY,CAAC;AACb,UAAU,CAAC;AACX,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,MAAM,MAAM,CAAC,EAAE,CAAC;AAChB,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC;AACnB,IAAI,YAAY,CAAC,CAAC,IAAI;AACtB,EAAE,GAAG;AACL,CAAC;AACD;AACA;AACA,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ;AAC/D,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtD,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7C;AACA,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,GAAG;AAC7D,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5C,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3B;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI;AACtD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;AAC5C,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACxE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3B,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1D;AACA,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG;AACnG,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACjC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG;AACpE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3E,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/C,UAAU,MAAM,CAAC,IAAI,CAAC;AACtB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAQ,CAAC,GAAG;AACZ,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACxB,MAAM,MAAM,CAAC,KAAK,CAAC;AACnB,IAAI,CAAC;AACL,EAAE,GAAG;AACL,CAAC;AACD;AACA,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACtB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE;AACnC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5B,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK;AACzD,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG;AACf,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI;AACpD,IAAI,MAAM,CAAC,QAAQ,CAAC;AACpB,EAAE,EAAE;AACJ,CAAC;AACD;AACA,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;AAClD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI;AACrG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;AACtD;AACA,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AACpD,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG;AACnE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAChD,CAAC,MAAM,CAAC,GAAG;AACX,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS;AACvB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACnB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;AAClB,KAAK,GAAG;AACR,CAAC,CAAC;AACF;AACA,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACjB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;AACzB,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACzD,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACzB,IAAI,GAAG,CAAC,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG;AAC9B,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAChD,IAAI,CAAC;AACL,CAAC;;ACjUD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAC1C,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;AAC1D,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;AACjD,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AACD;AACA,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AACzD,CAAC;AACD;AACA,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAChD,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,QAAQ,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;AAC3B,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;AAChC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9B,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvB,QAAQ,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE;AAC1G,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;AACpE,IAAI,EAAE,CAAC,KAAK,CAAC;AACb,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG;AACrE,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AACD;AACA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AAC1B,gBAAgB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1D,YAAY,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5D,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG;AAC3C,IAAI,EAAE;AACN,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;AACxE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;AACtC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,IAAI,EAAE;AACN,EAAE;AACF;AACA,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AAClF,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK;AACrF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;AAClD,CAAC;AACD;AACA,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG;AAC1C,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/B,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC/D,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE;AACF;AACA,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9C,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3F,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;AACxB,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AACzB,QAAQ,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE;AACtF,IAAI,EAAE,CAAC,KAAK,CAAC;AACb,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG;AACvB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK;AACzB,CAAC;AACD;AACA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACZ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AAChC;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,MAAM,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACrC,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AACtB,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACnE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;AACxB,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;AAC3D,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAClD,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAChC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AAC3C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,GAAG;AAC7D,MAAM,CAAC;AACP;AACA,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3B;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI;AACtD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;AAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5C,QAAQ,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG;AAC5D,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC/E,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACjC;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACjC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACpF,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACnD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1B,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpD,UAAU,MAAM,CAAC,MAAM,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAQ,CAAC,GAAG;AACZ,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7B,MAAM,MAAM,CAAC,SAAS,CAAC;AACvB,IAAI,CAAC;AACL,EAAE,GAAG;AACL,CAAC;AACD;AACA,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,IAAI,GAAG,CAAC,KAAK,CAAC;AACd,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACjC,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;AACtE,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AAC1C,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG;AAClE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,OAAO,CAAC,CAAC;AAC3F,wBAAwB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG;AAC9F,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,CAAC;AACrB,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN,IAAI;AACJ;AACA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,qBAAqB,GAAG;AAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9D,8BAA8B,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG;AAC7D,EAAE;AACF;AACA,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;AAC9B,CAAC;AACD;AACA,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;AAC7F,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;AACpE;AACA,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpG,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE;AACzF,CAAC;AACD;AACA,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1D,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC;AACtE,CAAC;;AC9ND,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AACpE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;AAChE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AAChE;AACA,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACpE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;AAChE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;AACpJ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;AAC3C,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5E,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAC1B,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7C,gBAAgB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7C,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AACtC,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;AAC5B,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1C,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACtB,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1C,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7B,gBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG;AACnE,gBAAgB,MAAM,CAAC;AACvB,YAAY,CAAC;AACb,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE;AACxB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7B,YAAY,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9D,YAAY,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AAC5B,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;AAC3B,gBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG;AAC7D,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3C,wBAAwB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAClG,oBAAoB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;AACvD,oBAAoB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,gBAAgB,GAAG;AACnB,YAAY,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,KAAK,CAAC;AAClB,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5E,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG;AACzF,YAAY,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AACzE,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG;AACnC,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AACnC,gBAAgB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACpD,YAAY,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;AAC/C,YAAY,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAClE,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/B,IAAI,EAAE;AACN,EAAE;AACF;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;AAC9D,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAChE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK;AACxB,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;AAC7F,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7C,gBAAgB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7C,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AACtC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AACtC,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAC/B,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAC/B,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1C,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACvB,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1C,YAAY,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACtC,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,YAAY,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;AAChC,gBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,oBAAoB,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE;AACnC,wBAAwB,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG;AAC3C,gBAAgB,GAAG;AACnB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;AACzD,gBAAgB,OAAO,CAAC,CAAC,EAAE;AAC3B,gBAAgB,EAAE,MAAM,CAAC;AACzB,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,EAAE;AACN,EAAE;;AC3GF,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAC1E,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAClB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACvB,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE;AACzB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5C,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC9B,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,QAAQ,MAAM,CAAC,EAAE,CAAC;AAClB,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AAC/B,IAAI,EAAE,CAAC,IAAI,CAAC;AACZ,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACnE,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;AACnD,gBAAgB,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC3C,YAAY,CAAC;AACb,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACvD,gBAAgB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG;AACzC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AACjE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC3B,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AACrC,YAAY,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;AAChC,QAAQ,CAAC;AACT,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;;ACjCD,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG;AAC7C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACrF,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACpB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO;AAC7H,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,YAAY,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;AAC9C,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,YAAY,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;AAC9C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxB,CAAC;AACD;AACA;AACA,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAClG,yCAAyC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACzD,QAAQ,EAAE,CAAC,KAAK,CAAC;AACjB,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AACD;AACA,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AAC7B,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC/C,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,GAAG,CAAC,CAAC,CAAC;AACV,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ;AAC1E,QAAQ,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AAC7C,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,CAAC;AACf,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE;AAC5C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,aAAa,CAAC,CAAC,CAAC;AACpB,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,CAAC;AACf,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,CAAC;AACf,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,CAAC;AACd,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,WAAW,CAAC,CAAC,CAAC;AAClB,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE;AAC7C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,YAAY,CAAC,CAAC,CAAC;AACnB,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAgB,OAAO,CAAC,CAAC,IAAI;AAC7B,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,CAAC,CAAC;AACZ,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AAClC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,OAAO,CAAC,CAAC,IAAI;AAC7B,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,CAAC,CAAC;AACZ,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACvC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,EAAE;AACzB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,CAAC;AACf,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,oBAAoB,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,EAAE;AACzB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACvC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,oBAAoB,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,EAAE;AACzB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,oBAAoB,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,EAAE;AACzB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACvC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtC,oBAAoB,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,EAAE;AACzB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,oBAAoB,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,EAAE;AACzB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,CAAC;AACV,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACvC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACzC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvC,oBAAoB,EAAE;AACtB,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,EAAE;AACzB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC;AAC5F;AACA,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AACrD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO;AACrE,EAAE;AACF;AACA,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG;AACvC;AACA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AACxC,IAAI,EAAE,EAAE,GAAG,CAAC;AACZ,QAAQ,MAAM,CAAC,aAAa,CAAC;AAC7B,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC/B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;AAC5B,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;AACzD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO;AACxG,QAAQ,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG;AACtE,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AACpE,IAAI,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,QAAQ,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;AAC9C,QAAQ,MAAM,CAAC,aAAa,CAAC;AAC7B,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;AAC5D,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;AAC3D,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;AAC/D,CAAC;AACD;AACA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AACpD,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACnC,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClF,gBAAgB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/F,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1B,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC1D,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,YAAY,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxG,gBAAgB,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AAC5C,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACtF,gBAAgB,GAAG,CAAC,OAAO,CAAC;AAC5B,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1D,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;AAC/D,oBAAoB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE;AAClE,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAClE,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvC,oBAAoB,EAAE;AACtB,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,gBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,YAAY,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;AAChE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE;AACzG,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACrD,YAAY,IAAI;AAChB,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAChC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAChC;AACA,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO;AACpE,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC5E,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACvD,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B;AACA,YAAY,EAAE,EAAE,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AACtF,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1F,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AAC3B,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AAC3B,YAAY,CAAC;AACb,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,GAAG;AACX,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7C,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7C,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,gBAAgB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,gBAAgB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AACzF,gBAAgB,MAAM,CAAC,CAAC,CAAC,GAAG;AAC5B,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ;AAC1F,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;AACtE,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9E,YAAY,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AAC3C,YAAY,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5C,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxB,YAAY,IAAI;AAChB,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG;AACtD,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACxD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;AACpD,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AACvD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAQ,EAAE,IAAI,QAAQ,CAAC;AACvB,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG;AAChD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,IAAI;AACZ,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,CAAC;AACL,CAAC;AACD;AACA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACxD,6BAA6B,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACrF,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC,OAAO,CAAC;AACzB,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;AAC9B,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;AAC9B,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE;AACnB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,QAAQ,EAAE,CAAC,CAAC;AACZ,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,CAAC;AACV,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACnH,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC7C,gBAAgB,EAAE,EAAE,IAAI,CAAC;AACzB,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAwB,GAAG,CAAC,CAAC,GAAG;AAChC,oBAAoB,EAAE;AACtB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC;AACnC,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,wBAAwB,GAAG,CAAC,CAAC,GAAG;AAChC,oBAAoB,EAAE;AACtB,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9E,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9E,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACrB;AACA,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY;AACvD,QAAQ,GAAG,CAAC,CAAC;AACb,YAAY,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AACpF,gCAAgC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACpF,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC3D,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,CAAC;AACb,YAAY,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AACpF,gCAAgC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACpF,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC3D,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3C,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3C,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7B,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7B,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,SAAS,CAAC,CAAC,SAAS;AAC5B,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC9D,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AACD;AACA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACxB,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,CAAC;AACb,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,YAAY,EAAE;AACd,YAAY,CAAC;AACb,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChD,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/C,YAAY,EAAE;AACd,YAAY,CAAC;AACb,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACjD,YAAY,EAAE;AACd,YAAY,CAAC;AACb,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAChE,CAAC;AACD;AACA,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpD,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACf,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3E,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACrB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AAC/C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,CAAC;AACD;AACA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE;AAClC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,CAAC;AACD;AACA,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;AACpF,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS;AAC5D,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC;AACA,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3B;AACA,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3B;AACA,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3B;AACA,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/B;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACnC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACnC;AACA,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACrF,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACpF,IAAI,EAAE;AACN,CAAC;AACD,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG;AACxD,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACrB,QAAQ,EAAE,CAAC,CAAC;AACZ,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC3B,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;AACjG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACvC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC1B,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACtC,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AAChD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACxB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7C,IAAI,EAAE,CAAC,CAAC;AACR,QAAQ,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACzC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3B,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACtB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;AACxB,QAAQ,IAAI;AACZ,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;AACxB,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;AAC1E,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACxD,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC5B,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACtB,QAAQ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG;AACjE,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG;AAChD,CAAC;AACD;AACA,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChD,CAAC;AACD;AACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AAC9C,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAClD,QAAQ,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAChD,QAAQ,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1D,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAClC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AAC9C,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACxE,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/C,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC;AACA,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACnF,YAAY,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACvD,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACrD,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AAClC;AACA,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACpC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,YAAY,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AACvD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AAC7C,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;AAC7C,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,KAAK;AACtD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AAC9C,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACxE,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/C,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC;AACA,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;AACjF,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AACtC,YAAY,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AACzH,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG;AAC1E;AACA,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACpC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,YAAY,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AACpD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AAC7C,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1C,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,KAAK;AACtD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE;AAC7D,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AAC9C,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AAC7C,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC7C,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC7C,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AAC5C,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACjF,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AACtE,YAAY,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AACpC,gBAAgB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AACtC,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,YAAY,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AAC5C,YAAY,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AAC7C,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AAC7C,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1C,gBAAgB,CAAC,IAAI,EAAE;AACvB,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,oBAAoB,EAAE;AACtB,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,oBAAoB,EAAE;AACtB,oBAAoB,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1C,oBAAoB,EAAE;AACtB,oBAAoB,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1C,oBAAoB,EAAE;AACtB,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,wBAAwB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACrD,oBAAoB,EAAE;AACtB,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,wBAAwB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACrD,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU;AACnF,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5E,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,GAAG;AACpD,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAChE,QAAQ,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC9D,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AACvC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAC1C,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;AACpD,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;AACtB,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,QAAQ,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AAChD,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AACzC,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACtC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1F,YAAY,GAAG;AACf,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;;ACr2BA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;AACrC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAClC,wBAAwB,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,wBAAwB,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,wBAAwB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACzC,oBAAoB,GAAG;AACvB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;AACrC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,wBAAwB,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,wBAAwB,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,wBAAwB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,IAAI,CAAC;AACxB,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AAC7D,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AAClD,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAChC,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACjC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AAChC,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxG,gBAAgB,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE;AACjC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,4BAA4B,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5F,gBAAgB,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE;AAClC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG;AAC5C,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;AAC/C,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AAClD,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;AAChC,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AAChC,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxG,gBAAgB,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE;AACjC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,4BAA4B,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5F,gBAAgB,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE;AAClC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG;AAC5C,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,4BAA4B,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;AAC7C,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AAClD,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC7C,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACpC,YAAY,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;AACpC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE;AAC5E,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7C,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAChD,gBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC5C,gBAAgB,EAAE,EAAE,IAAI,CAAC;AACzB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAChD,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1D,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACzC,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,gCAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;AACpD,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC7C,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACpC,YAAY,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;AACpC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE;AAC5E,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACjD,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAClD,gBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9C,gBAAgB,EAAE,EAAE,IAAI,CAAC;AACzB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAClD,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3D,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,gCAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;AACpD,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;AACpC,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AAC7F,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,wBAAwB,GAAG;AAC3B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;AACjD,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;AAC/C,wBAAwB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,wBAAwB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/C,wBAAwB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACtC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACrD,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;AACpC,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AACnG,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,gCAAgC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG;AACjD,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;AAC/C,wBAAwB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,wBAAwB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/C,wBAAwB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACtC,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACrD,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACjC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,IAAI,EAAE;AAC5B,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AAC1E,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,KAAK,EAAE;AAC7B,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AACzE,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,OAAO,CAAC;AACxB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACpC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAChD,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACjD,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AAChE,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACjC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3B,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC1C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1C,oBAAoB,EAAE;AACtB,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACpE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,EAAE;AACtB,gBAAgB,CAAC;AACjB,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3D,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AACtD,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACjC,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,CAAC,IAAI,EAAE;AAC5B,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AACtE,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,KAAK,EAAE;AAC7B,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AACrE,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,OAAO,CAAC;AACxB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACpC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAChD,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACjD,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChE,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AAChE,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACjC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3B,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC1C,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1C,oBAAoB,EAAE;AACtB,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACpE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,oBAAoB,EAAE;AACtB,gBAAgB,CAAC;AACjB,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3D,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1C,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAC7C,wBAAwB,CAAC,IAAI,EAAE;AAC/B,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChE,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AACtD,4BAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACtD,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACpC,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAChC,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AACvC,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACjD,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AAClE,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;AACpD,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG;AAC1C,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAChC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AACrC,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,EAAE;AAClB,gBAAgB,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE;AAClC,oBAAoB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC1D,kCAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AAC5D,gBAAgB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE;AACtC,oBAAoB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,kCAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC1D,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AAC1D,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACjD,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AACpE,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE;AACrD,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;AAChC,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACrC,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,EAAE;AAClB,gBAAgB,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE;AAClC,oBAAoB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC1D,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AAC3D,gBAAgB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE;AACtC,oBAAoB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACzD,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AAC1D,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC1D,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACjD,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACzC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG;AACnE,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE;AACrD,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;AACtC,CAAC;AACD;AACA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AACrD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AAC5C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACrB,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3B,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3C,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE;AACrB,gBAAgB,IAAI,EAAE,IAAI,EAAE;AAC5B,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE;AACrB,gBAAgB,IAAI,EAAE,KAAK,EAAE;AAC7B,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;AACjC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,gBAAgB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG;AAClE,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAChD,gBAAgB,KAAK,CAAC;AACtB,YAAY,CAAC;AACb,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACjB,YAAY,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAChE,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG;AACxC,QAAQ,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG;AAC1C,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AAC3D,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AACzD,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;AACtD,CAAC;AACD;AACA,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;AAC1C,CAAC;AACD;AACA,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;AAC1C,CAAC;AACD;AACA,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9C,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AACxB,IAAI,EAAE;AACN,CAAC;AACD;AACA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG;AAC1C,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG;AACnC,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACjC;AACA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1C,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AAC/C,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;AAC7C,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzB,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAC/C,gBAAgB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;AACjD,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACtC,gBAAgB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/C,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;AAC1C,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,oBAAoB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,oBAAoB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnD,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,IAAI,CAAC;AACxB,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;AAC1C,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,YAAY,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACtD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE;AACnD,YAAY,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;AAC1C,YAAY,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AACnD,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,CAAC;AACD;AACA,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;AAClE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE;AACrC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC;AACpC,QAAQ,EAAE,EAAE,OAAO,CAAC;AACpB,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG;AACjC,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI;AAC7F,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAChD,CAAC;AACD;AACA,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,IAAI,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;AACrB,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;AAClD,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE;AAChF,CAAC;AACD;AACA;AACA,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAChC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAChG,SAAS,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrD,QAAQ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAChC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAChG,SAAS,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrD,IAAI,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE;AAC5D,CAAC;AACD;AACA,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AACnC,QAAQ,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AAC1D,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACxD,QAAQ,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AACpC,QAAQ,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU;AACnC,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,SAAS,CAAC,CAAC,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE;AACpF,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;AACpB,QAAQ,UAAU,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG;AACnL,QAAQ,UAAU,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1I,IAAI,EAAE;AACN,CAAC;AACD;AACA;AACA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW;AACtF,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3B,YAAY,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAChC,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACjC,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AACD;AACA;AACA,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;AAC9B,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AACzD,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACd,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxF,QAAQ,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAChD,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,SAAS,GAAG;AACjD,YAAY,MAAM,CAAC,EAAE,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;AAC3C,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG;AAC1E;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACtD,YAAY,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,YAAY,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;AACpD,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE;AACpD,QAAQ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACjD,QAAQ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACjD,QAAQ,MAAM;AACd,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE;AAClD,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC;AACvC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAC1B,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,MAAM;AAClB,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AACrC,sBAAsB,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE;AACrF,sBAAsB,SAAS,EAAE;AACjC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG;AACxC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC;;ACpsBD,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC7D,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACvD,YAAY,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACvC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AAC7C,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AACjE,gBAAgB,EAAE,EAAE,KAAK,CAAC;AAC1B,oBAAoB,MAAM,CAAC,GAAG;AAC9B,gBAAgB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAClD,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACpC,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AACrE,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1E,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AAC9D,gBAAgB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvE,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG;AAC1C,oBAAoB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,gBAAgB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;AAChI,YAAY,GAAG;AACf,YAAY,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG;AAC1C,YAAY,KAAK,CAAC,IAAI,EAAE;AACxB,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;AACvC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAClF,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACpB,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACpD,YAAY,IAAI;AAChB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACtF,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AACpD,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC5F,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,oBAAoB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,CAAC;AACrB,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,SAAS,EAAE,KAAK,GAAG;AACpC,YAAY,KAAK,CAAC,IAAI,EAAE;AACxB,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAChF,oBAAoB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;AAChD,oBAAoB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACnD,oBAAoB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AAC/C,oBAAoB,CAAC;AACrB,oBAAoB,MAAM,CAAC,IAAI,CAAC;AAChC,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAoB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,gBAAgB,EAAE;AAClB,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,YAAY,GAAG;AACf;AACA,YAAY,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AAClC,YAAY,IAAI;AAChB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE;AACrE,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,IAAI;AAC5E,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAClF,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG;AACvD,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;AACjD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;AACF;AACA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;AACpC,QAAQ,GAAG;AACX,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACpE,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AACtD,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACvD,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACnC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;AAC9B,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AAC3C,cAAc,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE;AACrC,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9B,gBAAgB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACpC,gBAAgB,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,YAAY,GAAG;AACf,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpC,YAAY,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AACrC,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AAClE,YAAY,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE;AAC5C,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AACvD,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5F,oBAAoB,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACnF,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5B,YAAY,GAAG;AACf,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACtC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE;AAClD,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG;AACnD,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG;AAC3E,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;AACF;;AClIA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;AAC5F,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7F,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACnC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;AACrG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO;AACrF,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;AACjB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;AAC1C,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/F,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACzF,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO;AAC9F,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC7B,CAAC,GAAG;AACJ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS;AAC7E,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;AAC5F,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,KAAK;AACtC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG;AAC9C,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG;AACjE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG;AACjJ,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;AAC5D,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC9C,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9C,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC;AACzC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACrB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM;AAC7D,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;AAC7B,IAAI,GAAG,CAAC,YAAY,CAAC;AACrB;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACxB,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACtG,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACvC;AACA,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AACzB,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACxG,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACrE,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACzC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;AACjD;AACA,IAAI,QAAQ,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,EAAE,QAAQ,CAAC,YAAY,GAAG;AACxC,gBAAgB,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACvD,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG;AACjD,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,gBAAgB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG;AAC5C,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,gBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjH,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG;AAClD,gBAAgB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AACrC,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI;AAC1C,gBAAgB,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AACpC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,IAAI;AAC5O,gBAAgB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AACrC,oBAAoB,MAAM,CAAC,IAAI,CAAC;AAChC,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AAC/F,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AAClC,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AACjG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAClC,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AACpG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACrF,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG;AACnG,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AACjG,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AACjD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,MAAM,GAAG;AACT,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9C,gBAAgB,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,IAAI;AAClE,gBAAgB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;AACxE,oBAAoB,MAAM,CAAC,WAAW,CAAC;AACvC,gBAAgB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;AACxD,gBAAgB,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;AACtC,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACrE,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,YAAY,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,YAAY,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAChC,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC7G,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,UAAU,CAAC;AAC9B,QAAQ,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5B,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAC9F,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AAClC,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AACjG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAClC,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC7F,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO;AACpG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACnG,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7E,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG;AAClG,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AACjG,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AACjD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7C,gBAAgB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,IAAI;AAChE,gBAAgB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;AACvE,oBAAoB,MAAM,CAAC,UAAU,CAAC;AACtC,gBAAgB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;AACxD,gBAAgB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACpC,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAClE,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC1G,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AAC1F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;AACnB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AACrB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG;AACrB,YAAY,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;AACzF,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5C;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AAC5C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;AACtF,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7D,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG;AACzF,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW;AACpF,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;AACvD,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO;AACtF,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACjF,KAAK,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AACtF,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACvD,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG;AACpF,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACtF,KAAK,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACrF,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACrD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO;AACpB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACvE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO;AACrF,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC;AAC/E,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;AACtF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE;AAC9C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG;AAC/C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AACpD,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AACrD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;AACjD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,QAAQ,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE;AAC1C,QAAQ,EAAE,KAAK,MAAM,CAAC;AACtB,QAAQ,SAAS,CAAC,OAAO,EAAE;AAC3B,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC1C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;AAC3F,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE;AAC/F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,GAAG;AACxC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACrF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AAC1F,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM;AAC9F,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACvF,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;AACzC,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1F,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG;AACpC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC7E,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;AAC3F,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE;AAC/F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,GAAG;AACxC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACrF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3F,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE;AACxF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG;AACpF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AACnF,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3D,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG;AACpC;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC5C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAC/F,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG;AAClF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE;AACtD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACjE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;AACtB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AACzE,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACjE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;AACtB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5F,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AAC5D,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE;AAClF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AACnC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AACvE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AACpG,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG;AACvF,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AAC3B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE;AAClF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AACnC,IAAI,GAAG;AACP;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5C,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5C,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,GAAG;AAC1C;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO;AACxE;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACjD,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACjD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC7E,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AACnG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACxD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AACpF,KAAK,CAAC,CAAC,OAAO,CAAC;AACf,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACpG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;AAClH,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3C;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS;AACxB,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AACjG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AACzE,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACpE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI;AACpD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACjG,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;AAChC,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACvE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACvG,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG;AACjG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAC3F,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACxE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1C;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ;AACpB,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9C,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB;AAChC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;AAC9B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACnD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC9E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AAC1E;AACA,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;AAChF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;AAClE,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;AACjF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACjG,KAAK,CAAC,CAAC,IAAI,CAAC;AACZ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE;AAClD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AACtE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACvF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACvC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACvC;AACA;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;AACjG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC3D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AAChF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAClD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACtF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AAChD,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/C,IAAI,GAAG;AACP;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG;AACrD,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACjG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AAC7F,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;AACpD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;AAC7F,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACpG,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAChE,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;AAC5B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG;AAC9D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC7D,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG;AACrE,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE;AACjD;AACA,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM;AAChD,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,GAAG;AACtC;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,IAAI;AACnD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI;AACxD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI;AACxD,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,uBAAuB,IAAI;AACvE,IAAI,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,0BAA0B,IAAI;AAC7E;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,GAAG;AAC5C,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,GAAG;AACxC,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI;AACvD;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS;AAClG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;AAC7D,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE;AACvC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE;AACtC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3F,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrE;AACA;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AAC1E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;AAC9B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACnD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC9E;AACA,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACZ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;AAC9E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE;AACtC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE;AACrC,IAAI,GAAG;AACP,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AACnE,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC7C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI;AACxF,KAAK,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG;AAC9E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC/F,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI;AAC3E,KAAK,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;AAC1F,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AACpC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACnF,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AACnC,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;AAC5F,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC7F,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;AAC9C,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;AACrF,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;AACnB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG;AACpB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACpF,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AACjD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;AAC1G,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE;AAC5D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,+BAA+B,EAAE,cAAc,GAAG;AAChF;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AACzF,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AACvF,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG;AACnG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC1B,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;AAClG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC3B,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG;AAC3C,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE;AAC1D,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,+BAA+B,EAAE,UAAU,GAAG;AACxE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClG,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAC9F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAChC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,EAAE,OAAO,GAAG;AAClE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE;AACrF,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AAC3F,KAAK,CAAC,CAAC,OAAO,CAAC;AACf,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;AAClG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,+BAA+B,EAAE,UAAU,GAAG;AACxE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAChD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS;AAC5E,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AACtE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;AAC1D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;AAC3D,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AAChE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,EAAE;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,GAAG;AACjD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AACtF,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACjF,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AAC1B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACvC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;AACxF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,+BAA+B,EAAE,cAAc,GAAG;AAChF;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,KAAK,CAAC;AACb,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC5F,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACtB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE;AACxF,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS;AAC3F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG;AACvC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACnF,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAClB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE;AACvB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACrF,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACjD,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1I,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;AACzF,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AAC5F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;AACzB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO;AAC3F,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACjF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACpC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,QAAQ,MAAM,CAAC,GAAG;AAClB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;AAC9C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC/C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAChB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACxF,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3C;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ;AACvF,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU;AAC1E,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AACzF,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAC/F,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AAC3F,KAAK,CAAC,CAAC,IAAI,CAAC;AACZ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAClD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACjF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;AAC9B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM;AAClG,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM;AAClG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACpF,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AAC5F,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI;AACtF,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AAChE,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9F,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACzF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;AACtH;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE;AACnJ;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;AAC5F,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,KAAK,CAAC;AACb,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACvF,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;AAC9E,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC5E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;AAC9B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AACtF,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACxD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG;AAChF,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AACjE;AACA,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC;AAC3E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACpE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC5E,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAChE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC/B,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC3E,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;AAC9E,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI;AACzD,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,GAAG;AACtD;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,YAAY,GAAG;AACvD,QAAQ,EAAE,EAAE,MAAM,CAAC;AACnB,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ;AACzE,QAAQ,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC;AACpC,YAAY,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACvF,QAAQ,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAChD,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrG,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnI,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG;AACjD,QAAQ,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;AACzC,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAChB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACrG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO;AACrB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;AAC9B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAC9E,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AAC9B,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,GAAG;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAChG,QAAQ,EAAE,EAAE,WAAW,CAAC;AACxB,YAAY,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,GAAG;AACpJ;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC;AACnB,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG;AAC5C,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;AACrB,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG;AAC7C,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE;AACnD,QAAQ,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACjE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AAC/D,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AACpC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,IAAI;AACpD,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;AACpC,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,KAAK;AAChF,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B,YAAY,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;AAC9C,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AAC/D,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM;AAChC,YAAY,UAAU,CAAC,GAAG,EAAE;AAC5B,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,GAAG;AAC/B,YAAY,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE;AAC7C,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC3B,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AAC9D,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnD;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,+BAA+B,EAAE,QAAQ,GAAG;AACpE;AACA;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;AAClE,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AAC3E,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;AACvF,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5E,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AAC1C,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;AAC/C,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACnC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG;AACjD,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,QAAQ,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;AACrC,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AACzD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG;AAC1B,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC;AAC9F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,+BAA+B,EAAE,kBAAkB,GAAG;AACxF;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACjC,QAAQ,EAAE,EAAE,QAAQ,CAAC,YAAY,GAAG;AACpC,YAAY,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;AACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,EAAE;AAClD,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG;AACpC,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;AACrC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC5B,cAAc,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI;AACnE,QAAQ,GAAG;AACX,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAClG,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpF,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACxC,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB;AAC3F,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzD,YAAY,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,QAAQ,CAAC,kBAAkB,GAAG;AAC1C,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,YAAY,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpE,YAAY,CAAC,CAAC,CAAC;AACf,YAAY,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChG,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AACpE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzF,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AACpE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,GAAG;AACvC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG;AACnC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,GAAG;AAC7C,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,GAAG;AACnD,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,GAAG;AAC7D,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,GAAG;AAC7D,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,GAAG;AAC7D,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,YAAY,EAAE,sBAAsB,GAAG;AAC7E,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,GAAG;AACzC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,GAAG;AACnD,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,GAAG;AAC3C;AACA,IAAI,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtG,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AACpE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,GAAG;AACrD,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,GAAG;AACrD,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,GAAG;AACrD,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,GAAG;AACrD,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,EAAE,UAAU,GAAG;AACzD;AACA;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AACzF,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC1F,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5C,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe;AAChG,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC;AAChE,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5F,KAAK,CAAC,CAAC,QAAQ,CAAC;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AACnF,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACrF,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;AACjD,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtB,YAAY,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG;AAC3C,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,GAAG,UAAU,GAAG;AAC5C,YAAY,SAAS,CAAC,KAAK,GAAG;AAC9B,QAAQ,EAAE,EAAE,QAAQ,CAAC,kBAAkB,GAAG;AAC1C,YAAY,UAAU,GAAG;AACzB;AACA,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,QAAQ,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAClC,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI;AACjD,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,MAAM;AAClD,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI;AAClD,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,MAAM;AACnD,QAAQ,QAAQ,CAAC,QAAQ,GAAG,iBAAiB,GAAG;AAChD,QAAQ,SAAS,CAAC,MAAM,GAAG;AAC3B,QAAQ,QAAQ,CAAC,MAAM,GAAG;AAC1B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,GAAG;AACnD;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACjC,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAClC,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACnC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3D,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG;AACvE,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5D,YAAY,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE;AACjF,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG;AAC/C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,GAAG;AAC/C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG;AAC3E,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG;AACpF,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtB,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI;AACxE,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAC3E,YAAY,kBAAkB,GAAG;AACjC,QAAQ,IAAI;AACZ,YAAY,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG;AACzC;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,GAAG;AACzC,YAAY,UAAU,GAAG;AACzB,QAAQ,QAAQ,CAAC,YAAY,GAAG,IAAI,GAAG;AACvC,QAAQ,SAAS,CAAC,OAAO,GAAG;AAC5B;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC7E,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC;AACrC,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACvG,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC;AACrC,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACvG,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE;AACzC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACpC,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;AAC5D,YAAY,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;AAChF,YAAY,QAAQ,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE;AACpE,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE;AACzC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACpC,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;AAC5D,YAAY,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;AAClE,YAAY,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;AAClE,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;AACvD,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;AACvD,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAChD,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAChD,YAAY,QAAQ,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE;AACpE,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACtD,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACtD;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9E,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AAC9E;AACA,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;AAC1D;AACA,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;AAC/C,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG;AACzG,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG;AAC5E,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAY,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG;AACzG,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG;AAC5E,QAAQ,IAAI;AACZ,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;AAC/E,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,gBAAgB,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;AACpE,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,YAAY,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;AACjF,6BAA6B,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;AACjF,6BAA6B,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAG;AACrD,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC9B,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG;AACxE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU;AAClG,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE;AAC3C,YAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;AAC/C,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,CAAC;AAClB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;AAC9C,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;AACvC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9B,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,YAAY,CAAC;AACb,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;AACzF,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC/D;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AACzC,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3D,YAAY,EAAE,CAAC,IAAI,CAAC;AACpB,gBAAgB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7F,YAAY,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AACvD,YAAY,EAAE,CAAC,IAAI,CAAC;AACpB,gBAAgB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7F,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AACtD,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC3B,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG;AACtF,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAChC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE;AAC7B,oBAAoB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACrC,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE;AACtD,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG;AACtC;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAY,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE;AAC5C,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM;AACtC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,gBAAgB,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;AAC7D,gBAAgB,iBAAiB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AAClE,YAAY,EAAE;AACd,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM;AACrC,QAAQ,GAAG;AACX;AACA,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC5B,QAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACjF,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAChE;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;AACzE,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG;AACpC,gBAAgB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AAClE,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;AAChE,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC3C,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AAC9C,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AACpC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAC/C,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/D,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE;AACnF,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/D,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE;AACnF,gBAAgB,CAAC;AACjB,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AACrE,oBAAoB,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AACrE,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AAClD,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG;AACpE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACjG,oBAAoB,GAAG,CAAC,CAAC,GAAG;AAC5B,oBAAoB,KAAK,CAAC,CAAC,EAAE;AAC7B,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AACzC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAC5D,YAAY,GAAG;AACf,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACnF;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI;AACpF,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY;AACtF,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,GAAG;AACpC,YAAY,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC/D;AACA,QAAQ,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;AAC1E,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,QAAQ,EAAE,EAAE,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC;AACzC,YAAY,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,gBAAgB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG;AAC5F,YAAY,IAAI;AAChB,YAAY,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,gBAAgB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7D,YAAY,IAAI;AAChB,YAAY,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC;AACxF,gBAAgB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,YAAY,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;AAC7C,YAAY,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;AAC7C,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AACrD,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAChE,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU;AACnE,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK;AAChD;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG;AACpE,QAAQ,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACzE;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;AACzE,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACnD,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;AACjE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;AAC5D,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAClD,QAAQ,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,gBAAgB,IAAI,CAAC,CAAC,SAAS,EAAE;AACjC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC;AACjD,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5C,oBAAoB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,wBAAwB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;AACvE,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,CAAC;AACjB,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5C,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;AAClE,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACzB,QAAQ,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAChC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG;AAC/E,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG;AACxC,YAAY,EAAE,CAAC,IAAI,CAAC;AACpB,gBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;AACnE,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE;AAC7B,gBAAgB,MAAM,CAAC;AACvB,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,YAAY,EAAE,EAAE,mBAAmB,CAAC,IAAI,EAAE;AAC1C,gBAAgB,MAAM,CAAC;AACvB,YAAY,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,gBAAgB,qBAAqB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACpD,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,YAAY,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE;AAC9B,gBAAgB,qBAAqB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,GAAG;AACzE,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AAC5D,QAAQ,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG;AACrC,QAAQ,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,gBAAgB,IAAI,CAAC,CAAC,SAAS,EAAE;AACjC,oBAAoB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AACtD,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,MAAM,EAAE;AAC9B,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AACtD,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,CAAC;AACjB,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9C,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7C,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC;AACtC,YAAY,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,mBAAmB,EAAE;AACnG;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAClC;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAChE,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE;AACrE,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;AACrC,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACvC,QAAQ,GAAG;AACX,QAAQ,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACvC,QAAQ,GAAG;AACX,QAAQ,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG;AACnG,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACvE,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AACxD,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChE,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,wBAAwB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC/C,wBAAwB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE;AACzD,wBAAwB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE;AACzD,wBAAwB,MAAM,CAAC,EAAE,CAAC;AAClC,oBAAoB,GAAG;AACvB,YAAY,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE;AACtD,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS;AAC/B,QAAQ,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACzC,QAAQ,GAAG;AACX,QAAQ,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACzC,QAAQ,GAAG;AACX,QAAQ,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG;AACxE,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5B,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG;AACvE,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACxD,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,IAAI,CAAC;AACrB,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,WAAW,CAAC,IAAI,EAAE;AACtC,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,wBAAwB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAChD,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AAClC,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACzB,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,YAAY,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AACtD,YAAY,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE;AACrD,YAAY,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;AAClE,YAAY,UAAU,CAAC,SAAS,EAAE;AAClC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;AACnC;AACA,QAAQ,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3D,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE;AAC/C,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,oBAAoB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG;AACzG,oBAAoB,MAAM,CAAC;AAC3B,gBAAgB,CAAC;AACjB,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE;AAC/C,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,oBAAoB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG;AACzG,oBAAoB,MAAM,CAAC;AAC3B,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AAC7B,oBAAoB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAC9C,YAAY,GAAG;AACf,YAAY,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,SAAS,CAAC;AACzB,gBAAgB,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE;AACzD,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,wBAAwB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG;AACnH,wBAAwB,MAAM,CAAC;AAC/B,oBAAoB,CAAC;AACrB,oBAAoB,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AACjC,wBAAwB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAClD,gBAAgB,GAAG;AACnB,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,YAAY,EAAE;AAC/B,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,gBAAgB,EAAE,EAAE,QAAQ,CAAC,WAAW,GAAG;AAC3C,oBAAoB,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC1D,gBAAgB,EAAE,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC;AAChD,oBAAoB,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACpD,oBAAoB,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACvG,oBAAoB,wBAAwB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACrE,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AAC9D,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE;AAC7D,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC/C,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;AAC1E,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;AAC5F,oBAAoB,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG;AAC7C,oBAAoB,QAAQ,CAAC,YAAY,GAAG,IAAI,GAAG;AACnD,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC;AACjD,oBAAoB,EAAE,EAAE,QAAQ,CAAC,WAAW,GAAG;AAC/C,wBAAwB,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC9D,oBAAoB,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACpD,oBAAoB,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACvG,oBAAoB,wBAAwB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACrE,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AAC9D,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE;AAC7D,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE;AAC1E,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE;AAC/C,gBAAgB,UAAU,CAAC,SAAS,EAAE;AACtC,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7C,gBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI;AAC/F,gBAAgB,SAAS,CAAC,KAAK,GAAG;AAClC,YAAY,GAAG;AACf;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG;AAClC,YAAY,QAAQ,CAAC,YAAY,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACnE,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxE,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG;AACjD,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;AACvE,gBAAgB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AACpE,oBAAoB,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC3C,wBAAwB,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACnD,oBAAoB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACpD,wBAAwB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtF,4BAA4B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE;AAC7E,wBAAwB,GAAG;AAC3B,oBAAoB,MAAM,CAAC,EAAE,CAAC;AAC9B,gBAAgB,GAAG;AACnB,gBAAgB,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,oBAAoB,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC3C,wBAAwB,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACnD,oBAAoB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACpD,wBAAwB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtF,4BAA4B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE;AAC7E,wBAAwB,GAAG;AAC3B,oBAAoB,MAAM,CAAC,EAAE,CAAC;AAC9B,gBAAgB,GAAG;AACnB,gBAAgB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,gBAAgB,GAAG;AACnB,gBAAgB,WAAW;AAC3B,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,KAAK,GAAG;AAC3B,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACpC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAC3E,YAAY,kBAAkB,GAAG;AACjC,QAAQ,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;AACnC,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,YAAY,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG;AACxC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;AACtB,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,YAAY,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpC,YAAY,KAAK,CAAC;AAClB,QAAQ,OAAO,CAAC;AAChB,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,QAAQ,CAAC;AACT,QAAQ,WAAW,CAAC,SAAS,EAAE;AAC/B,QAAQ,EAAE,CAAC,OAAO,CAAC;AACnB,YAAY,SAAS,CAAC,OAAO,EAAE;AAC/B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACzC,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACpC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1B,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACxF,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,QAAQ,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG;AAC9B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,QAAQ,UAAU,CAAC,CAAC,CAAC,GAAG;AACxB,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACpD,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AAC7D,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE;AACvB,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;AAC/B,gBAAgB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;AACzC,YAAY,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ;AAC3F,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACnE,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,wBAAwB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/E,wBAAwB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM;AAC9E,oBAAoB,EAAE;AACtB,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;AAClD,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS;AAC3D,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;AAC/B,YAAY,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;AAC1B,oBAAoB,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,GAAG;AACf,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACrD,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3D,YAAY,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACzG,gBAAgB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;AAC/E,YAAY,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AACvD,YAAY,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACzG,gBAAgB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;AAC/E,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;AACjE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC1D,QAAQ,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,YAAY,GAAG,CAAC,QAAQ,CAAC;AACzB,YAAY,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAChD,gBAAgB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,GAAG;AACzD,gBAAgB,QAAQ,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;AAC9D,YAAY,CAAC;AACb,YAAY,QAAQ,CAAC,QAAQ,GAAG,OAAO,GAAG;AAC1C,YAAY,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C,gBAAgB,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE;AACtD,QAAQ,GAAG;AACX,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,QAAQ,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;AAC/B,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1B,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,YAAY,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,gBAAgB,EAAE,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AAClF,oBAAoB,QAAQ,CAAC,MAAM,GAAG;AACtC,YAAY,EAAE,CAAC,CAAC,EAAE;AAClB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACpF,QAAQ,MAAM,CAAC,QAAQ,CAAC,oBAAoB,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,gBAAgB,MAAM,CAAC,CAAC;AACxB,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,wBAAwB,KAAK,CAAC;AAC9B,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7D,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3D,wBAAwB,IAAI;AAC5B,oBAAoB,EAAE;AACtB,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC;AACjC,oBAAoB,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,oBAAoB,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU;AAC/C,gBAAgB,EAAE;AAClB,YAAY,CAAC;AACb,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,gBAAgB,MAAM,CAAC,CAAC;AACxB,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,wBAAwB,KAAK,CAAC;AAC9B,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC7D,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC3D,wBAAwB,IAAI;AAC5B,oBAAoB,EAAE;AACtB,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC;AACjC,oBAAoB,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,oBAAoB,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU;AAC/C,gBAAgB,EAAE;AAClB,YAAY,CAAC;AACb,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,YAAY,GAAG,CAAC,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAY,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAY,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,YAAY,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;AACxD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3C,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACvE,2CAA2C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,kBAAkB,GAAG;AACpF,2CAA2C,cAAc,CAAC,CAAC,cAAc;AACzE,0CAA0C,EAAE;AAC5C,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5D,gBAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG;AACtC,YAAY,EAAE,CAAC,QAAQ,CAAC,oBAAoB,GAAG;AAC/C,gBAAgB,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9E,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAgB,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,gBAAgB,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS;AACzC,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG;AAC7E,YAAY,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;AACvF,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7D,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC;AAC3B,gBAAgB,IAAI,CAAC,CAAC,KAAK,CAAC;AAC5B,gBAAgB,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7G,gBAAgB,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/E,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1E,sBAAsB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC/E,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC7D,YAAY,EAAE,CAAC,KAAK,CAAC;AACrB,gBAAgB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAClE,oBAAoB,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE;AACpE,wBAAwB,MAAM,CAAC;AAC/B,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE;AACzE,oBAAoB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,oBAAoB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,oBAAoB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE;AACtD,gBAAgB,GAAG;AACnB,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC7C,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;AAC1C,YAAY,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;AAChD,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAClD,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AACjD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE;AAChE,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AAC1D,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE;AACjE,QAAQ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AACnE,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,OAAO,CAAC;AAChB,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,QAAQ,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;AAChE,YAAY,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE;AACrE,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;AACpC,YAAY,EAAE,EAAE,OAAO,CAAC;AACxB,gBAAgB,MAAM,CAAC;AACvB,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9F,gBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;AAChG,gBAAgB,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC;AACjG,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAY,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACnE,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACvE,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU;AAC1G,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAClE,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG;AACtG,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,6BAA6B,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzG,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACxE,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,KAAK;AACvE,gBAAgB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACvF,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,GAAG;AAC/C,gBAAgB,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,GAAG;AAC5D,gBAAgB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG;AACpD,gBAAgB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACzD,gBAAgB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC1E,wBAAwB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AACxE,wBAAwB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAC5E,wBAAwB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC9E,wBAAwB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK;AAC9C,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,OAAO,CAAC;AAC5B,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AAC1F,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;AACzC,oBAAoB,EAAE,EAAE,SAAS,CAAC;AAClC,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAC9E,oBAAoB,EAAE,EAAE,SAAS,CAAC;AAClC,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAC5E,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,gBAAgB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG;AACpD,gBAAgB,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,IAAI;AAC7E,YAAY,CAAC;AACb,YAAY,IAAI;AAChB,gBAAgB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3E;AACA,YAAY,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;AACnC,YAAY,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG;AACzF,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AAC/B,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG;AAChG,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;AAC5E,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,gBAAgB,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE;AACjH,YAAY,GAAG,CAAC,IAAI;AACpB,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;AACxC,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,gBAAgB,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE;AACjH,YAAY,GAAG,CAAC,IAAI;AACpB;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;AAC3F,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AAC5F,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;AAC5D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACjB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;AAC1D,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AACvC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM;AACpC,YAAY,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,GAAG;AAC3F,QAAQ,EAAE,CAAC,OAAO,CAAC;AACnB,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM;AACrC,QAAQ,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;AACjE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS;AAC7C,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACjB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC;AACA,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC;AACA,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAClE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE;AAClC,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE;AAClC,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9E,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;AAC3D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AACnF,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ;AACnB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACtC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG;AACvP,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,GAAG;AACV,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,OAAO,CAAC;AACvB,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE;AAClD,QAAQ,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC1C,IAAI,GAAG;AACP;AACA,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;AAChC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACvE,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG;AAChD,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;AAC9D,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AAC3D,YAAY,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AACjE,YAAY,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK;AACnE,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AACtE,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AACxE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AACxE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AACxE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;AACzE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,QAAQ,MAAM,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7F,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7F,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,GAAG;AAC7E,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,GAAG;AACvC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAChF,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AAC/E,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1B,YAAY,EAAE,CAAC,OAAO,CAAC;AACvB,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC/B,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACjC,YAAY,EAAE,CAAC,OAAO,CAAC;AACvB,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAChC,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC9D,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;AACrB,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAChE,YAAY,KAAK,CAAC;AAClB,QAAQ,OAAO,CAAC;AAChB,YAAY,EAAE,OAAO,CAAC;AACtB,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5E,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AAC3E,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1B,YAAY,EAAE,CAAC,OAAO,CAAC;AACvB,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC9B,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACjC,YAAY,EAAE,CAAC,OAAO,CAAC;AACvB,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACjC,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC1B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE;AACnB,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AAC5D,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;AACtB,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAClE,YAAY,KAAK,CAAC;AAClB,QAAQ,OAAO,CAAC;AAChB,YAAY,EAAE,OAAO,CAAC;AACtB,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB;AACA,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAC3E,YAAY,kBAAkB,GAAG;AACjC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AAC9C,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,GAAG;AAClC,YAAY,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG;AAC3F,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,QAAQ,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AAC5E,QAAQ,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,IAAI;AACzF,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAClD,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG;AAChD,YAAY,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;AAC/C,QAAQ,EAAE;AACV,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM;AAChE,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AACpG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAC1F,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACrG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;AACtD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/D,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,EAAE;AACP,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACpD,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS;AACzE,gBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG;AACxC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,YAAY,CAAC;AACb,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG;AAC9C,YAAY,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AAC1E,YAAY,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;AACnD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG;AAC/E,QAAQ,CAAC;AACT,QAAQ,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AACjC,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK,EAAE;AACP,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;AACnC,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,EAAE;AACP,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG;AAClC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI;AACtC,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG;AAC/C,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE;AAC/C,EAAE;;AC9iFF,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;AAC/D,IAAI,GAAG,CAAC,KAAK,CAAC;AACd,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB;AACA,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,CAAC,GAAG,EAAE;AACrB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtC;AACA,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACvE,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG;AAC1C,YAAY,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG;AACtC,QAAQ,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK;AACxD,QAAQ,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,KAAK;AAC1E,QAAQ,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG;AACvD,QAAQ,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK;AAC3D,QAAQ,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE;AACrD,QAAQ,SAAS,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC1C,YAAY,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvG,gBAAgB,OAAO;AACvB,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK;AAChE,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACpC,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;AAClC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;AAC3D,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;AACxE,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC;AAChF,gBAAgB,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC/G,YAAY,GAAG;AACf,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/E,QAAQ,IAAI;AACZ,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;AAC/D,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;AAC1E,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE;AACnF,QAAQ,UAAU;AAClB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACpE,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AACrG,gBAAgB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACpE,oBAAoB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC3G,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3E,gBAAgB,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAChF,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG;AACzE,gBAAgB,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAChF,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG;AACzE,YAAY,GAAG;AACf,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAQ,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,QAAQ,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9B,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG;AACvD,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAQ,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,QAAQ,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9B,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG;AACvD,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,QAAQ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAChC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG;AACvD,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAClB,YAAY,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,IAAI;AACpH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,KAAK;AACxH,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG;AACjE,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG;AACxC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG;AACjG,QAAQ,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE;AAC3F,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG;AAClC,QAAQ,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE;AAC7F,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG;AACnC,QAAQ,KAAK;AACb,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG;AAChE,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/C,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/D,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACrB,QAAQ,EAAE,CAAC,OAAO,CAAC;AACnB,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY,IAAI;AAC9E,QAAQ,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AAClF,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG;AACrC,QAAQ,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;AAC3B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACvB,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,IAAI;AACX,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AAC1B,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AACnC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,EAAE;AAChD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE;AAC/D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACvD,gBAAgB,CAAC,IAAI,EAAE;AACvB,oBAAoB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAClC,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;AAClD,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,EAAE;AAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,QAAQ,GAAG,UAAU,EAAE;AACvB,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC1D,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,GAAG;AACpD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,MAAM,GAAG;AACtB;AACA,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7D,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE;AAC/D,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACnE,gBAAgB,CAAC,IAAI,EAAE;AACvB,oBAAoB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACzC,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,wBAAwB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;AACxE,oBAAoB,EAAE;AACtB,oBAAoB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACjC,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,GAAG;AACnB,QAAQ,UAAU,CAAC,IAAI,GAAG,UAAU,EAAE;AACtC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC1D,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,GAAG;AACpD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,MAAM,EAAE;AACrB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC5F,gBAAgB,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC5F,YAAY,GAAG;AACf;AACA,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;AACvG,gBAAgB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,GAAG;AACf,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;AAC/D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC3D,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE;AAC/D,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACjE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AACxC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACjC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;AACpC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACrC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAgB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAC/E,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,GAAG;AACnD,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAgB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAC/E,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG;AAClD,YAAY,GAAG;AACf,QAAQ,SAAS,CAAC,IAAI,GAAG,MAAM,GAAG;AAClC;AACA,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACrE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE;AAC3D,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE;AAChD,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;AACxB,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAClD,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;AAC3C,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,kBAAkB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACjE,cAAc,GAAG;AACjB,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC/D,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE;AAC7D,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;AAC9C,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE;AAC1C,oBAAoB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7C,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU;AACrD,gBAAgB,GAAG;AACnB,QAAQ,UAAU,CAAC,IAAI,GAAG,UAAU,EAAE;AACtC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC1D,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,GAAG;AACpD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG;AACzC;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AACnC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,EAAE;AAChD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE;AAC/D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAChD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;AACtC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACpE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC/B;AACA,QAAQ,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,QAAQ,GAAG,UAAU,EAAE;AACvB,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC1D,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,GAAG;AACpD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,MAAM,GAAG;AACtB;AACA,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AAC9C;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC;AACvB,YAAY,SAAS,CAAC,CAAC,SAAS,CAAC;AACjC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC;AACvB,YAAY,SAAS,CAAC,CAAC,SAAS,CAAC;AACjC,YAAY,SAAS,CAAC,CAAC,SAAS,CAAC;AACjC,YAAY,cAAc,CAAC,CAAC,cAAc,CAAC;AAC3C,YAAY,UAAU,CAAC,CAAC,UAAU,CAAC;AACnC,YAAY,eAAe,CAAC,CAAC,eAAe,CAAC;AAC7C,YAAY,UAAU,CAAC,CAAC,UAAU,CAAC;AACnC,YAAY,eAAe,CAAC,CAAC,eAAe,CAAC;AAC7C,YAAY,SAAS,CAAC,CAAC,SAAS,CAAC;AACjC,YAAY,cAAc,CAAC,CAAC,cAAc;AAC1C,QAAQ,EAAE;AACV;AACA,QAAQ,QAAQ,CAAC,SAAS,EAAE;AAC5B;AACA,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE;AACnE,QAAQ,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE;AAC7C,QAAQ,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE;AACvC,IAAI,CAAC;AACL;AACA,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAChF,QAAQ,EAAE,CAAC,UAAU,CAAC;AACtB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9D,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG;AAClD,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG;AAClD,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG;AAClE,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,GAAG;AACnE;AACA,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG;AACzE,QAAQ,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG;AACnF,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG;AACjF,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACnD,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;AACpI,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,IAAI;AACZ,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAgB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACtE,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1H,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,gBAAgB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAC7E,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5C,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;AAChD,gBAAgB,GAAG;AACnB,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,gBAAgB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAC7E,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5C,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;AAChD,gBAAgB,GAAG;AACnB,QAAQ,EAAE;AACV,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,IAAI;AAClD,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3C,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AACzC,YAAY,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAC9D,QAAQ,EAAE;AACV,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AACvC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,oBAAoB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACjE,YAAY,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AACzD,QAAQ,EAAE;AACV,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACpD,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,QAAQ,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE;AACnE,GAAG,CAAC;AACJ;AACA,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACxC,IAAI,CAAC;AACL;AACA,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;AACjD,aAAa,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;AACjD,aAAa,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC;AAC3D,aAAa,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;AAC7D,aAAa,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;AAC7D,aAAa,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC;AAC3D,aAAa,gBAAgB,EAAE;AAC/B,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC;AAC9E,kBAAkB,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;AAC3E,kBAAkB,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChE,QAAQ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,qBAAqB,GAAG;AACjE;AACA,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,SAAS;AACjB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ;AAC1D,gBAAgB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACtE,YAAY,GAAG;AACf,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AACzB,gBAAgB,CAAC,UAAU,EAAE;AAC7B,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC9D,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;AAC3G,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE;AACtE,QAAQ,EAAE,CAAC,gBAAgB,CAAC;AAC5B,YAAY,MAAM;AAClB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,oBAAoB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1E,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,gBAAgB,GAAG;AACnB;AACA,QAAQ,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACzF,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,CAAC;AAClB,gBAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,oBAAoB,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACnI,mCAAmC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACzG,gBAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,oBAAoB,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAClI,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC3E,mBAAmB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnF,oBAAoB,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC5G,oBAAoB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3E,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AAC1F,+DAA+D,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACnG,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7D,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3E,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AAC1F,+DAA+D,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACnG,wBAAwB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG;AAC1F,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,YAAY,IAAI;AAChB,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,QAAQ,GAAG;AACX;AACA,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,SAAS;AACjB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AAC/G;AACA,QAAQ,eAAe;AACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACjF,gBAAgB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AAC7F,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7F,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5D,oBAAoB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACjF,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;AACrD,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5D,oBAAoB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACjF,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;AACrD,oBAAoB,GAAG;AACvB,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG;AACrH;AACA,QAAQ,UAAU;AAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5D,oBAAoB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACjF,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;AACxG,oBAAoB,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC/E,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE;AACjE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;AACpD,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5D,oBAAoB,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACjF,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;AACxG,oBAAoB,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC/E,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE;AACjE,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;AACpD,oBAAoB,GAAG;AACvB,YAAY,GAAG;AACf;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AACzB,cAAc,CAAC,UAAU,EAAE;AAC3B,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC9D,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;AAC3G,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE;AACtE,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;AACnC,cAAc,CAAC,UAAU,EAAE;AAC3B,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC9D,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;AAC3G,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE;AACtE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAChF,wBAAwB,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACxF,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE;AACnD,YAAY,GAAG;AACf,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAChF,wBAAwB,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACxF,gBAAgB,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AACzD,YAAY,GAAG;AACf,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;AAChC,YAAY,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AAClE,gBAAgB,EAAE,EAAE,MAAM,CAAC;AAC3B,oBAAoB,MAAM,CAAC,GAAG;AAC9B,gBAAgB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACnD,oBAAoB,MAAM,CAAC,CAAC,MAAM,EAAE;AACpC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnC,YAAY,GAAG;AACf,QAAQ,OAAO,CAAC,KAAK,EAAE;AACvB,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;AACzB,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AACtC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AACxC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC7B,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI;AACxC,QAAQ,OAAO;AACf,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;AAC7B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,IAAI;AAC1G,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,IAAI;AACtG,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;AACxE,gBAAgB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,YAAY,GAAG;AACf,QAAQ,cAAc;AACtB,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACrH,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE;AAC9C,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAC1D,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;AACvG,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,gBAAgB,CAAC;AAC5B,YAAY,SAAS;AACrB,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAChF,wBAAwB,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACxF,gBAAgB,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,EAAE;AACzD,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACpF,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AAC7D,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,gBAAgB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;AAC5C,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAClE,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,IAAI;AAC1D,gBAAgB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE;AAClD,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAClE,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,wBAAwB,EAAE,GAAG,IAAI;AAChE,gBAAgB,UAAU,CAAC,UAAU,EAAE;AACvC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,cAAc,GAAG;AAClE,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG;AAChE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9E,gBAAgB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK;AACvE,gBAAgB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACrD,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG;AAC3D,gBAAgB,MAAM;AACtB,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,IAAI;AAC1D,gBAAgB,SAAS;AACzB,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,IAAI;AAC1D,gBAAgB,UAAU;AAC1B,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG;AAChE,YAAY,CAAC;AACb,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ;AAC3D,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AACrF,QAAQ,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,GAAG,eAAe,GAAG;AACjD,YAAY,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE;AAC/C,mBAAmB,QAAQ,EAAE,CAAC,CAAC;AAC/B,uBAAuB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1C,uBAAuB,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE;AAC3D,mBAAmB,GAAG;AACtB;AACA,QAAQ,EAAE,CAAC,gBAAgB,CAAC;AAC5B,YAAY,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,IAAI;AAC3D;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAClC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI;AACjD,IAAI,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;AAC/F,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AACxF,YAAY,QAAQ,GAAG;AACvB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,YAAY,UAAU;AACtB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC1C,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG;AACvE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAQ,SAAS,CAAC,QAAQ,GAAG;AAC7B,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;AAC7B,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG;AACnC;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AAClD,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY,GAAG;AAC7C,YAAY,MAAM,CAAC,OAAO,GAAG;AAC7B,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtC,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAC9B,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;AACtD,QAAQ,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AAClD,QAAQ,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AAClD,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ;AAC5F,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvD,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChD,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE;AACnD,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvD,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC;AACnD,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACtE,QAAQ,GAAG;AACX,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG;AACvD,QAAQ,EAAE,EAAE,SAAS,CAAC;AACtB,YAAY,MAAM,CAAC;AACnB,QAAQ,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAChC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;AACrC,gBAAgB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9E,gBAAgB,GAAG;AACnB,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC/E,YAAY,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;AAC5F,QAAQ,GAAG;AACX,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3D,QAAQ,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;AACzF,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,QAAQ,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG;AAClC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI;AAChG,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAClG,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;AAClB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5F,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO;AACpE,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG;AAC5F,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;AACxD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC;AACA,KAAK,GAAG;AACR,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,EAAE,CAAC;AACtB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACf,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AAC5F,KAAK,CAAC,CAAC,OAAO,CAAC;AACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;AAC7D,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM;AACrD,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG;AAClD,QAAQ,GAAG,CAAC,MAAM,GAAG;AACrB,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpB,QAAQ,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC7C,QAAQ,MAAM,CAAC,WAAW,GAAG;AAC7B,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACtC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvD;AACA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAC1B,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAChC,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AAC9B,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AACtC,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;AACnC,QAAQ,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG;AAC5B,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AACvC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE;AAC/B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG;AACvD,QAAQ,SAAS,CAAC,MAAM,GAAG;AAC3B;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG;AACxC;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1D,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG;AAChE,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI;AAC1D,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,GAAG,CAAC,CAAC;AAChD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC1B,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,EAAE,KAAK,GAAG;AAC1D,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC;AACzD,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AACxC,oBAAoB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;AACxC,gBAAgB,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACjD,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjC,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG;AACnC,gBAAgB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,gBAAgB,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,oBAAoB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,gBAAgB,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzD,oBAAoB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACtC,oBAAoB,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/D,wBAAwB,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,wBAAwB,WAAW,GAAG;AACtC,wBAAwB,EAAE,CAAC,KAAK,CAAC;AACjC,4BAA4B,KAAK,CAAC,QAAQ,GAAG;AAC7C,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnC,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9F,wBAAwB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,4BAA4B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,4BAA4B,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5C,gCAAgC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,gCAAgC,UAAU,GAAG;AAC7C,gCAAgC,EAAE,CAAC,KAAK,CAAC;AACzC,oCAAoC,KAAK,CAAC,UAAU,GAAG;AACvD,4BAA4B,CAAC;AAC7B,wBAAwB,CAAC;AACzB,oBAAoB,EAAE;AACtB,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5F,wBAAwB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,4BAA4B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,4BAA4B,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5C,gCAAgC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,gCAAgC,WAAW,GAAG;AAC9C,gCAAgC,EAAE,CAAC,KAAK,CAAC;AACzC,oCAAoC,KAAK,CAAC,QAAQ,GAAG;AACrD,4BAA4B,CAAC;AAC7B,wBAAwB,CAAC;AACzB,oBAAoB,GAAG;AACvB,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,UAAU,GAAG;AAC9B,QAAQ,CAAC;AACT;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;AACF;;AC71BA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC;AACzC,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC;AACzC,IAAI,GAAG,CAAC,SAAS,CAAC;AAClB,IAAI,GAAG,CAAC,eAAe,CAAC;AACxB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACjC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;AAC/D,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB;AACA,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,CAAC,KAAK,EAAE;AACvB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtC;AACA,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,EAAE,OAAO,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/D,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,IAAI;AACX,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AAC/C,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B;AACA,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACpG,QAAQ,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD;AACA,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG;AACnC;AACA,QAAQ,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACrE;AACA,QAAQ,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACpE,QAAQ,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG;AAC9D,QAAQ,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACtC;AACA,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE;AACzD,QAAQ,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;AAClC;AACA,QAAQ,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG;AACvE,QAAQ,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC/D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,qBAAqB,GAAG;AACjF,QAAQ,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE;AACnE,QAAQ,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,UAAU,EAAE;AACjF;AACA,QAAQ,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,EAAE;AACjF,QAAQ,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,QAAQ,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,KAAK;AACxD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACtD,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACtC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG;AACnC,YAAY,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG;AACrC,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACtD,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AACtC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG;AACnC,YAAY,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG;AACrC,YAAY,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG;AACrC,QAAQ,GAAG;AACX,QAAQ,OAAO,GAAG;AAClB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAChF,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACtC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpD,YAAY,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACjE,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;AAC9B,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,CAAC;AACL,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;AAC1C;AACA,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC5D,QAAQ,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1B,gBAAgB,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/H,gDAAgD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACtH,YAAY,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1B,gBAAgB,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9H,QAAQ,GAAG;AACX;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,GAAG;AAC1C,QAAQ,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACnE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,YAAY,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,GAAG;AACtD,oBAAoB,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,GAAG,KAAK,EAAE;AACtE,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;AAC/C,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG;AAC3E,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;AACvE,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACzE,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,YAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,YAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,YAAY,EAAE,CAAC,GAAG,CAAC;AACnB,gBAAgB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;AACpC,QAAQ,GAAG;AACX;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACxF,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACzF,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7F,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC;AACA,QAAQ,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACxC,QAAQ,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC/C,QAAQ,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACzC,QAAQ,SAAS,CAAC,MAAM,GAAG;AAC3B;AACA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAC1B,QAAQ,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,YAAY,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;AACpD,gBAAgB,MAAM,CAAC;AACvB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACnE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AAC1E,YAAY,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACzE,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;AAC/C,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;AAC7E,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;AAChD,oBAAoB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1E,oBAAoB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG;AAC3E,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5F,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;AACnE,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACzE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;AAChD,oBAAoB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1E,oBAAoB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG;AAC3E,gBAAgB,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG;AACtC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5F,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC/C,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,GAAG,CAAC;AACnB,gBAAgB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;AACpC,QAAQ,GAAG;AACX,QAAQ,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAQ,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE;AAC5C,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACxB,QAAQ,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE;AAC9C,QAAQ,MAAM,GAAG;AACjB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,QAAQ,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AAChD,IAAI,CAAC;AACL;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG;AACvD,QAAQ,EAAE,EAAE,SAAS,CAAC;AACtB,YAAY,MAAM,CAAC;AACnB,QAAQ,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAChC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;AACrC,gBAAgB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9E,gBAAgB,GAAG;AACnB,YAAY,EAAE,CAAC,GAAG,CAAC,WAAW;AAC9B,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC/E,YAAY,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE;AAC9F,QAAQ,GAAG;AACX,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3D,QAAQ,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE;AACvD,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,QAAQ,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE;AACtF,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAChF,QAAQ,EAAE,CAAC,UAAU,CAAC;AACtB,YAAY,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AACnE,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACxC,IAAI,CAAC;AACL;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAI,EAAE;AACN;AACA,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACvC;AACA,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;AACF;;ACrPA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACtB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;AACvC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACpE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACjB,QAAQ,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC1G,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACtF,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACtB,QAAQ,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG;AAC5B,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAG;AAC3C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACxB,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,eAAe,GAAG;AAC9C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;AAC1B,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,iBAAiB,GAAG;AAChD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACrB,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG;AAC1C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AAClE,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACvE,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACrB,QAAQ,MAAM,CAAC,CAAC,EAAE,cAAc,GAAG;AACnC,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG;AAC1C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AACvB,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG;AAC5C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACxB,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG;AAC7C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACxB,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG;AAC7C,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,EAAE;AACF,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClC;AACA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC9F,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;AACnE,IAAI,EAAE;AACN,IAAI,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACrC,QAAQ,EAAE,EAAE,KAAK,CAAC;AAClB,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;AACrD,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACxC,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE;AACvB,gBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG;AACnC,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AAC5E,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE;AACvD,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,QAAQ,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AACzE,QAAQ,EAAE,CAAC,IAAI;AACf,IAAI,EAAE;AACN,IAAI,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACvF,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;AACzE,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;AACpD,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,gBAAgB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,IAAI;AAChB,gBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE;AACrE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,MAAM,CAAC;AAClB,YAAY,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AAChC,YAAY,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AACjG,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AACtB,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;AACxC,QAAQ,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5B,YAAY,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACtD,gBAAgB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC5C,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK;AACrE,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL,EAAE;;AC5IF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAClB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;AACzC,IAAI,EAAE,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;AACpC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG;AAC7F,YAAY,OAAO,CAAC,CAAC,EAAE;AACvB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3C,YAAY,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzC,gBAAgB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI;AACxE,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,GAAG;AAC9D,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC;AACvF,gBAAgB,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG;AAClG,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AAC1F,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AACrC,CAAC;AACD;AACA,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG;AAC9E,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,IAAI;AAChE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,QAAQ,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;AAC/B,YAAY,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE;AACxC,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,QAAQ,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC;AACpD,YAAY,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI;AACzD,gBAAgB,MAAM,CAAC,OAAO,CAAC;AAC/B,YAAY,EAAE,CAAC,OAAO,EAAE;AACxB,QAAQ,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC;AACzC,YAAY,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE;AACnD,QAAQ,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACpC,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5B,YAAY,IAAI,CAAC,CAAC,CAAC;AACnB,gBAAgB,QAAQ,CAAC,CAAC,YAAY,CAAC,QAAQ,GAAG;AAClD,gBAAgB,OAAO,CAAC,CAAC,OAAO;AAChC,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE,QAAQ,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACpC,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5B,YAAY,IAAI,CAAC,CAAC,CAAC;AACnB,gBAAgB,QAAQ,CAAC,CAAC,YAAY,CAAC,QAAQ,GAAG;AAClD,gBAAgB,KAAK,CAAC,CAAC,KAAK,CAAC;AAC7B,gBAAgB,KAAK,CAAC,CAAC,KAAK,CAAC;AAC7B,gBAAgB,KAAK,CAAC,CAAC,KAAK,CAAC;AAC7B,gBAAgB,QAAQ,CAAC,CAAC,QAAQ,CAAC;AACnC,gBAAgB,WAAW,CAAC,CAAC,WAAW;AACxC,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,QAAQ,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACpC,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;AAC7B,YAAY,IAAI,CAAC,CAAC,CAAC;AACnB,gBAAgB,QAAQ,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE;AACjD,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,QAAQ,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACpC,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5B,YAAY,IAAI,CAAC,CAAC,CAAC;AACnB,gBAAgB,QAAQ,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE;AACjD,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AACxD,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC;AAC1E,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,EAAE;AACtF,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG;AAC9C,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,GAAG;AACnD,wBAAwB,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtG,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE;AACxE,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACjD,QAAQ,EAAE;AACV,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AACvC,QAAQ,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;;ACtGF,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;AACzF,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AACnF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc;AACxB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACnB,CAAC,GAAG;AACJ,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AAC1B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc;AAC5C,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnE,SAAS,GAAG;AACZ,QAAQ,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG;AAChC,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AAC1B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc;AAC5C,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AACvC,SAAS,GAAG;AACZ,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9B,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AACpC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AAC1B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc;AAC5C,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AACvC,SAAS,GAAG;AACZ,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC7B,IAAI,EAAE;AACN,EAAE;AACF;AACA,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACvD,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;AAC5D,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,CAAC;AACD;AACA,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK;AAC/E,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAC7B,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD,IAAI,OAAO;AACX,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;AACxC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACnC,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9B,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG;AAClD,QAAQ,EAAE;AACV,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpD,YAAY,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1C,QAAQ,EAAE;AACV,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;AAC3D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;AACzE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAY,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAQ,EAAE;AACV,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;AAC9E,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpE,gBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,gBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACnC,gBAAgB,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE;AACvC,QAAQ,EAAE;AACV,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AAC7E,YAAY,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU;AAC1G,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC9C,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAQ,EAAE;AACV,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC9F,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;AACrE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAQ,EAAE;AACV,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAQ,EAAE;AACV,QAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AACjE,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACrD,QAAQ,EAAE;AACV,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,QAAQ,EAAE;AACV,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE;AAC1B,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,GAAG;AACX,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG;AACvD,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACvB,QAAQ,aAAa;AACrB,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AAChD,YAAY,EAAE;AACd,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACjH,YAAY,EAAE;AACd,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,gBAAgB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC,YAAY,GAAG;AACf,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG;AACvE,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE;AAC/C,QAAQ,EAAE;AACV,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9C,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAgB,MAAM,CAAC,CAAC;AACxB,oBAAoB,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACjD,oBAAoB,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AACrD,oBAAoB,SAAS,CAAC,CAAC,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG;AACjF,oBAAoB,QAAQ,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9D,oBAAoB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACjE,oBAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,oBAAoB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C;AACA,oBAAoB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU;AAC9C,oBAAoB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACvD,oBAAoB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACnD,oBAAoB,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACzD,oBAAoB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACpC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/B,gBAAgB,EAAE;AAClB,YAAY,GAAG;AACf,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE;AAC/C,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7C,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACnD,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACnD,gBAAgB,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,gBAAgB,SAAS,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACzD,gBAAgB,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACrD,gBAAgB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC1D,gBAAgB,SAAS,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACzD,gBAAgB,SAAS,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,YAAY,EAAE;AACd,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC7B,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5B,YAAY,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC9B,YAAY,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;;ACvKF,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAC1E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;AACrB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AACjC,CAAC,GAAG;AACJ,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,IAAI,GAAG,CAAC,cAAc,CAAC;AACvB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI,GAAG,CAAC,WAAW,CAAC;AACpB,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AAC9E,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACjE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACjC,IAAI,GAAG,CAAC,QAAQ,CAAC;AACjB;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B,QAAQ,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAClC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;AAChC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;AAClD,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,kBAAkB,EAAE;AAC5D;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AAC5C,YAAY,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC/C;AACA,QAAQ,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE;AACzB,YAAY,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAU,EAAE;AACjE,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,YAAY,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3D,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,UAAU,EAAE;AAC1B,YAAY,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAgB,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9D,YAAY,GAAG;AACf,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,QAAQ,OAAO,CAAC;AAChB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAChC,YAAY,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE;AAC1F,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC/D,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC;AACzC,YAAY,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjC,YAAY,GAAG;AACf;AACA,YAAY,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACjE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACzC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACzC,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,CAAC;AAClB,gBAAgB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACrC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACrC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACzE,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACjE,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACjD,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACjD,YAAY,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACjD,YAAY,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjC,YAAY,GAAG;AACf,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ;AAChE,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG;AACX;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;AACrC,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACjE,YAAY,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAgB,MAAM,CAAC,CAAC;AACxB,oBAAoB,aAAa,CAAC,CAAC,IAAI,CAAC;AACxC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACxE,gBAAgB,EAAE;AAClB,YAAY,GAAG;AACf,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7B,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvB,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;AACzD,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,oBAAoB,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACrD,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,oBAAoB,MAAM,CAAC,CAAC,GAAG;AAC/B,oBAAoB,MAAM,CAAC,CAAC,EAAE;AAC9B,gBAAgB,EAAE;AAClB,YAAY,GAAG;AACf,YAAY,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE;AACjE,oBAAoB,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE;AAClF,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE;AACzE,oBAAoB,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9D,YAAY,GAAG;AACf,QAAQ,CAAC;AACT;AACA,QAAQ,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;AACjD,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,oBAAoB,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACxE,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;AACtC,gBAAgB,GAAG;AACnB,YAAY,GAAG;AACf,YAAY,SAAS,CAAC,KAAK,EAAE;AAC7B,gBAAgB,MAAM,CAAC;AACvB,gBAAgB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACxD,gBAAgB,GAAG;AACnB,gBAAgB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAC5C,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;AAC7C,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,wBAAwB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,oBAAoB,EAAE;AACtB,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,gBAAgB,GAAG;AACnB,gBAAgB,cAAc;AAC9B,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,YAAY,aAAa,EAAE,IAAI,GAAG;AAClC,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,YAAY,SAAS,CAAC,KAAK,GAAG;AAC9B,QAAQ,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,YAAY,aAAa,EAAE,GAAG,GAAG;AACjC,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;AACpE,YAAY,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG;AACzD,YAAY,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;AACxC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;AAClD,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW;AAChF,gBAAgB,CAAC,MAAM,GAAG;AAC1B;AACA,YAAY,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACzF,YAAY,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;AAC/C,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5C,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC;AACxD,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE;AAChC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;AACjC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC;AACzC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE;AAChC,QAAQ,CAAC;AACT;AACA,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,GAAG;AACvD,sBAAsB,MAAM,CAAC,wBAAwB,GAAG;AACxD,sBAAsB,MAAM,CAAC,wBAAwB,GAAG;AACxD,sBAAsB,MAAM,CAAC,kBAAkB,IAAI;AACnD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,OAAO,CAAC;AACnB,YAAY,OAAO,CAAC,IAAI,GAAG;AAC3B,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpF,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;AAC3B;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC3C,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACpE,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;AACtD,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;AACvF,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE;AAChF,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE;AACvC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,GAAG;AAC5D,QAAQ,EAAE;AACV,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,YAAY,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC;AAClC,gBAAgB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI;AAC3E,YAAY,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC;AAClC,gBAAgB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI;AAC3E,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AAC7D,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB;AACrC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;AACzC,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACrD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAC5B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,SAAS,GAAG;AACZ,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3C,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;AACzF,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;AAC9F,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AACvB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;AACjG,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG;AACxB,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACxF,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5B,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AACrD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;AACjC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;AACzC,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE;AAChE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,SAAS,GAAG;AACZ,QAAQ,cAAc,CAAC,CAAC,QAAQ,EAAE,SAAS,GAAG;AAC9C,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE;AACzF,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AAC/F,SAAS,CAAC,CAAC,OAAO,CAAC;AACnB,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAC7B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;AACzC,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1C,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAC3B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzC,SAAS,GAAG;AACZ,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjC,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG;AAC5E,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACrH,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;AACrH,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9F,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAChE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAC7B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;AACzC,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAC5C,SAAS,CAAC,CAAC,CAAC,OAAO;AACnB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC/B,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG;AAC/C,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE;AAC9D,SAAS,GAAG;AACZ,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,YAAY,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,gBAAgB,EAAE,CAAC,WAAW,CAAC;AAC/B,oBAAoB,MAAM,CAAC,WAAW,CAAC;AACvC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG;AAC3C,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,gBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,EAAE;AAChH,gBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,EAAE;AAChH,gBAAgB,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG;AACtG,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9C,QAAQ,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC/C,QAAQ,wBAAwB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC/C,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACxC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC9B,QAAQ,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACxC,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpC,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,cAAc,CAAC;AAClC,QAAQ,EAAE;AACV,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACjE,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,KAAK;AACvC,QAAQ,yBAAyB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3D,YAAY,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;AAC1C,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG;AACpD,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG;;AChVvD,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAC5E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI;AACjG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;AAClC,CAAC,GAAG;AACJ,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACzC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AACzD,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACjE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACjC;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK;AACtC,QAAQ,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG;AACnF;AACA,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AAC5C,QAAQ,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7G;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1E,QAAQ,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AACnE,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,YAAY,EAAE;AACd,cAAc,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS;AAC3D,cAAc,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACnC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACzC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACzC,cAAc,CAAC;AACf,aAAa,EAAE;AACf,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAY,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACtC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE;AACtC,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACjD,YAAY,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACjD,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AACvE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAY,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACtF,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;AACrD,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AACrD,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACnC,gBAAgB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE;AAC7E,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;AACvC,gBAAgB,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE;AAC9E,QAAQ,GAAG;AACX;AACA,QAAQ,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,YAAY,SAAS,CAAC,KAAK,EAAE;AAC7B,gBAAgB,MAAM,CAAC;AACvB,gBAAgB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACxD,gBAAgB,GAAG;AACnB,gBAAgB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,GAAG;AAClF,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,wBAAwB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChD,oBAAoB,EAAE;AACtB,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,gBAAgB,EAAE;AAClB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,aAAa,EAAE,IAAI,GAAG;AAClC,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,aAAa,EAAE,GAAG,GAAG;AACjC,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7B,QAAQ,SAAS,CAAC,KAAK,GAAG;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;AAClC,QAAQ,KAAK,GAAG;AAChB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,KAAK,EAAE;AAC3B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACzC,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,aAAa,CAAC;AACjC,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE;AACzC,IAAI,GAAG;AACP,EAAE;AACF;AACA,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG;;ACtJtD,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG;AACpG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;AACrB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;AACjC,CAAC,GAAG;AACJ,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI,GAAG,CAAC,IAAI,CAAC;AACb;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,GAAG,CAAC,CAAC,CAAC;AACd,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;AACtD,QAAQ,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAC/C,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,gBAAgB,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACrC,YAAY,EAAE;AACd,YAAY,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAgB,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;AACxC,YAAY,EAAE;AACd,YAAY,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAgB,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;AACxC,YAAY,EAAE;AACd,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AACpC,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAgB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClC,YAAY,EAAE;AACd,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;AACjD,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACrD,gBAAgB,CAAC;AACjB,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AACvD,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC/C,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvC,YAAY,EAAE;AACd,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,gBAAgB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;AAC7D,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AACtD,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1C,oBAAoB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACrC,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ;AAC1F,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC1F,gBAAgB,EAAE,CAAC,OAAO,CAAC,GAAG;AAC9B,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9E,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AACvD,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,wBAAwB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9D,wBAAwB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACnC,4BAA4B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3E,gCAAgC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gCAAgC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,gCAAgC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC9D,4BAA4B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AACnD,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC;AAChC,4BAA4B,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC3D,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,gCAAgC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG;AACtD,4BAA4B,IAAI,CAAC,CAAC;AAClC,gCAAgC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,oCAAoC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AAC1E,gCAAgC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,gCAAgC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;AACrF,oCAAoC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACxE,oCAAoC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,oCAAoC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,gCAAgC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,oCAAoC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AACvI,oCAAoC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACxD,gCAAgC,CAAC;AACjC,gCAAgC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,oCAAoC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG;AACvE,oCAAoC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,gCAAgC,CAAC;AACjC,gCAAgC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,4BAA4B,CAAC;AAC7B,wBAAwB,CAAC;AACzB,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC7B,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACtC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE;AACV,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC/B,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,GAAG;AAC9E,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG;AAClC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;AAC9D,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG;AAC7D,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9B,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9B,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC3B,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;;ACtKlC,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AACxF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI;AACpG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe;AACzB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;AACrC,CAAC,GAAG;AACJ,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;AAC9B;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI;AAC3C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,GAAG,CAAC,KAAK;AAC3C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,QAAQ,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM;AACnD,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;AAC5C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACnC,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACvB,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AAC1C,QAAQ,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC9D,QAAQ,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE;AACpD,YAAY,kBAAkB,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE;AACjE,YAAY,kBAAkB,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE;AACjE,YAAY,kBAAkB,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG;AAC7D,QAAQ,IAAI;AACZ,QAAQ,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;AAC/B,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC7C,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpB,gBAAgB,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5D,gBAAgB,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;AACtD,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAC7C,QAAQ,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACxC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAChE,gBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;AAC3D,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE;AAC/C,QAAQ,GAAG;AACX;AACA,QAAQ,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;AAC1D,YAAY,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE;AACnC,gBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC5E,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI;AACnE,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AACrC,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACnD;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAgB,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;AACxD,gBAAgB,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;AAC1D,gBAAgB,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,GAAG;AACzD,gBAAgB,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7D,YAAY,EAAE;AACd,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;AAC/B,gBAAgB,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;AACtD,oBAAoB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACtC,oBAAoB,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAC1C,gBAAgB,EAAE,IAAI,QAAQ;AAC9B,YAAY,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE;AAC3F,QAAQ,IAAI;AACZ,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC7F,gBAAgB,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE;AAC7E,oBAAoB,kBAAkB,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG;AACzE,gBAAgB,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,GAAG;AACxD,gBAAgB,kBAAkB,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;AACvD,gBAAgB,GAAG;AACnB,QAAQ,IAAI;AACZ,QAAQ,KAAK,CAAC,IAAI,MAAM;AACxB,QAAQ,KAAK,CAAC,IAAI,KAAK;AACvB,QAAQ,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG;AACtC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnB,YAAY,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;AAC5D,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT,QAAQ,SAAS,CAAC,KAAK,GAAG;AAC1B,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACtE,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;AAC3D,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM;AACvC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAChD,gBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG;AACjE,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE;AACjD,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3B,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAY,EAAE;AACd,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,YAAY,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3C,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC;AACA,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ;AAClD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACtE,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1D,wBAAwB,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AAC/D,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAgB,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,YAAY,EAAE;AACd,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1B,gBAAgB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACxF,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AACrG,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,EAAE,CAAC;AACtB,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC9C,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACpB,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;AAC5E,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,gBAAgB,EAAE;AACvG,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AACjG,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACxC,YAAY,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAC3C,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE;AACV,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACzC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,aAAa,CAAC;AACjC,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE;AACzC,IAAI,GAAG;AACP,CAAC;AACD;;AC1MA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAC/E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe;AACzB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;AACrC,CAAC,GAAG;AACJ,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU;AAClD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AAC/E,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACjE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACjC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACnC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B;AACA,QAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;AACvC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG;AACnD,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACxD,gBAAgB,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE;AAC/D,YAAY,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACpD,gBAAgB,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,oBAAoB,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;AAC5C,gBAAgB,GAAG;AACnB,QAAQ,CAAC;AACT;AACA,QAAQ,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzD,YAAY,aAAa,EAAE,IAAI,GAAG;AAClC,QAAQ,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,YAAY,SAAS,CAAC,KAAK,GAAG;AAC9B,QAAQ,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,YAAY,aAAa,EAAE,GAAG,GAAG;AACjC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,KAAK,EAAE;AACzB,YAAY,OAAO,CAAC;AACpB,YAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACpD,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9C,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG;AACX;AACA,QAAQ,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAClC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACjC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACzC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACzC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACpC,QAAQ,GAAG;AACX;AACA,QAAQ,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACzE,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACjE,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACjD,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;AAC1D,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACjD,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;AAC1D,YAAY,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACjD,QAAQ,GAAG;AACX;AACA,QAAQ,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;AACnC,QAAQ,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;AACnC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,aAAa,GAAG;AACxB,QAAQ,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC3C,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,WAAW,CAAC;AACvB,YAAY,WAAW,CAAC,IAAI,GAAG;AAC/B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AAC9B,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;AAC7D,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7B,gBAAgB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1C,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AAC9B,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAY,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;AACzD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE;AAChD,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1C,gBAAgB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC5D,gBAAgB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,oBAAoB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,wBAAwB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;AAC7C,oBAAoB,GAAG;AACvB,gBAAgB,GAAG;AACnB;AACA,gBAAgB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACzC,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,oBAAoB,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/C,wBAAwB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5B,wBAAwB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb;AACA,YAAY,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK;AAC9D,YAAY,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;AACrD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACzB,YAAY,aAAa,EAAE,GAAG,GAAG;AACjC,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT,QAAQ,WAAW,CAAC,KAAK,GAAG;AAC5B,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,WAAW,CAAC,IAAI,GAAG;AAC/B,YAAY,EAAE,CAAC,MAAM,CAAC;AACtB,gBAAgB,oBAAoB,GAAG;AACvC,QAAQ,CAAC;AACT,QAAQ,WAAW,CAAC,IAAI,GAAG;AAC3B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACrC,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACjE,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAClE,QAAQ,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG;AACvD,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/B,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAChC,QAAQ,EAAE;AACV,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;AAC3C,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG;AAC9C,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE;AAChD,QAAQ,EAAE;AACV;AACA,QAAQ,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACnD,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACnD,QAAQ,CAAC;AACT;AACA,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnF,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7C;AACA,gBAAgB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK;AACtC,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC3E,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC3E;AACA,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE;AACA,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5C,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5C;AACA,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC/D,gBAAgB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM;AACzE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC1E,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC3E,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAC/F,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAClE,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAClE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM;AAChG,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK;AACxC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnH,gBAAgB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnH;AACA,gBAAgB,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AACpD,gBAAgB,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;AACvE,gBAAgB,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;AACvE,YAAY,CAAC;AACb;AACA,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpF;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;AAC9B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1D,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC5C,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,aAAa,CAAC;AACrC,QAAQ,gBAAgB,CAAC,CAAC,gBAAgB,CAAC;AAC3C,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE;AACjF,oBAAoB,CAAC,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,eAAe,EAAE;AACvE,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE;AACvC,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClC,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;AACnC,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE;AACpC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,QAAQ,aAAa,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE;AACtC,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzC,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE;AACzC,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG;;AChR7C,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAC3F,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB;AAC3B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACvC,CAAC,GAAG;AACJ,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU;AAClD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AAC/E,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACjE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACjC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACnC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B;AACA,QAAQ,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE;AAC5C,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG;AAC5C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACrF,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE;AACjG,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE;AAClG,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC5E,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG;AAClD,YAAY,CAAC,IAAI,GAAG;AACpB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,KAAK,EAAE;AACzB,YAAY,OAAO,CAAC;AACpB,YAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACpD,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG;AACX;AACA,QAAQ,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAClC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACjC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1C,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1C,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,QAAQ,GAAG;AACX;AACA,QAAQ,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE;AACtE,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE;AACtE,YAAY,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;AACjD,QAAQ,GAAG;AACX;AACA,QAAQ,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE;AAC9C,QAAQ,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;AACnC,QAAQ,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE;AACjD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,SAAS,CAAC,KAAK,GAAG;AAC1B,QAAQ,aAAa,CAAC,MAAM,EAAE;AAC9B,QAAQ,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC3C,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,GAAG;AAC7D,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AAC9B,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;AAC7D,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7B,gBAAgB,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7C,gBAAgB,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7C,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,EAAE,CAAC,KAAK,CAAC;AACjB,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG;AAC7E,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,YAAY,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;AACzE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,GAAG,CAAC,WAAW,CAAC;AAC5B,YAAY,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1C,gBAAgB,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;AACvC,gBAAgB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,oBAAoB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,wBAAwB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;AAC7C,oBAAoB,GAAG;AACvB,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb;AACA,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACrC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,gBAAgB,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AACvE,oBAAoB,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,oBAAoB,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,oBAAoB,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf;AACA,YAAY,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;AACvE,YAAY,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACvE,8BAA8B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AACxE,8BAA8B,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC9D,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzE,8BAA8B,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/E,8BAA8B,CAAC,KAAK,CAAC,KAAK,GAAG;AAC7C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC,QAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,WAAW,CAAC,IAAI,GAAG;AAC/B,YAAY,aAAa,EAAE,IAAI,GAAG;AAClC,QAAQ,CAAC;AACT,QAAQ,aAAa,EAAE,GAAG,GAAG;AAC7B,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpF;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAChC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1D,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC5C,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,aAAa,CAAC;AACrC,QAAQ,gBAAgB,CAAC,CAAC,gBAAgB,CAAC;AAC3C,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE;AACpG,oBAAoB,CAAC,aAAa,EAAE,CAAC,CAAC,eAAe,EAAE;AACvD,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE;AACvC,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClC,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;AACnC,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE;AACpC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrC,QAAQ,aAAa,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE;AACtC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzC,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE;AACzC,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AACnD,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG;;AC7MhE,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;AAClE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AACvI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AACjG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;AACtF,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1D,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AACjE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC7F,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG;AACjG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS;AACpG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;AACzF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI;AACjG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACpG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9F,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AACpE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG;AAC/F,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AAClG,CAAC,CAAC,CAAC,UAAU,CAAC;AACd,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc;AACxB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;AACpC,CAAC,GAAG;AACJ,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAC/C,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5C;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM;AAC1E,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;AAClC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AACtC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AAC5C,QAAQ,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5B,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC1E,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI;AACpC,QAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE;AACvD,QAAQ,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG;AAC9C,QAAQ,IAAI;AACZ,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI;AAC5C,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAY,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACvC,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACnC,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC;AACtB,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACxG,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EAAE;AACjE,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,UAAU,CAAC,CAAC,CAAC;AACrB,YAAY,OAAO,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;AAC9C,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACtD,YAAY,MAAM,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;AAC5C,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;AAClD,YAAY,QAAQ,CAAC,CAAC,UAAU,CAAC,cAAc;AAC/C,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,CAAC;AACpB,YAAY,OAAO,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;AAC9C,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACtD,YAAY,MAAM,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;AAC5C,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;AAClD,YAAY,QAAQ,CAAC,CAAC,UAAU,CAAC,cAAc;AAC/C,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,CAAC;AACvB,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACtD,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;AAClD,YAAY,OAAO,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;AAC9C,YAAY,MAAM,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;AAC5C,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC;AAC5D,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB;AACzD,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,CAAC;AACxB,YAAY,MAAM,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC;AACrD,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,6BAA6B,CAAC;AACvE,YAAY,GAAG,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAC/C,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,0BAA0B;AAChE,QAAQ,EAAE;AACV,QAAQ,cAAc,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;AACxD,YAAY,MAAM,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;AAC9C,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACpD,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC;AAC9D,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC5D,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,oBAAoB;AAC3D,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACzE,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACjD,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACtF,QAAQ,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE;AAChC,YAAY,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;AAChD,QAAQ,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE;AAC9E,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACjF,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACjD,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACtF,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI;AACjC,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACnI,QAAQ,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG;AAC9C,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,QAAQ,GAAG,CAAC,QAAQ,CAAC;AACrB,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;AAC1B,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI;AAC/E,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAY,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG;AAChD,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AAC9C,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACzD,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AAC5C,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,gBAAgB,QAAQ,CAAC;AACzB,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1D,gBAAgB,QAAQ,CAAC;AACzB,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;AACpC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAC3C,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACzC,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;AAC9B,gBAAgB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,gBAAgB,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACrD,gBAAgB,KAAK,CAAC;AACtB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtB,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvD,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACjC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3E,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG;AAC1F,gBAAgB,GAAG;AACnB,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;AAC9B,gBAAgB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7C,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,gBAAgB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,oBAAoB,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnD,gBAAgB,GAAG;AACnB,gBAAgB,KAAK,CAAC;AACtB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjC,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACrC,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;AAC1B,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG;AAClC,gBAAgB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG;AAChG,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACjF,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;AACjF,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAY,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG;AACvG,YAAY,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG;AACvG,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE;AAC9D,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;AAC7E,YAAY,GAAG;AACf,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,QAAQ,SAAS,CAAC,KAAK,EAAE;AACzB,YAAY,MAAM,CAAC;AACnB,YAAY,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACpD,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAgB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAC5E,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,KAAK,EAAE;AAClC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AACxD,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;AAC1B,YAAY,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,YAAY,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAClD,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAY,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;AAC3D,YAAY,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7D,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG;AAC9B,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAC3D,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;AAC1B,YAAY,aAAa,CAAC,QAAQ,EAAE;AACpC,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAY,QAAQ,CAAC,eAAe,GAAG;AACvC,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;AAC1C,QAAQ,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;AAC1C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU;AAC3F,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU;AACxG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5E,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;AAC3E,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM;AAC7C,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM;AACnD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM;AACnD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM;AACnD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,MAAM;AACrF,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM;AACnG,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM;AACvH,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC;AAC3C,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAChG,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;AACnF,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM;AAClC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;AACvC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;AAC5C,IAAI,EAAE;AACN;AACA,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC/B,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,GAAG;AACtB,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACtC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClD,YAAY,GAAG;AACf,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAClG,SAAS,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAClE,SAAS,CAAC;AACV,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACxD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC/B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc;AAC5C,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE;AACnF,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AAC7B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC5C,SAAS,GAAG;AACZ,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG;AACtE,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAClG,SAAS,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAClE,SAAS,CAAC;AACV,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACvD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY;AAC/B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc;AAC5C,SAAS,CAAC,CAAC,CAAC,QAAQ;AACpB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,EAAE;AACtF,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AAC7B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC5C,SAAS,GAAG;AACZ,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG;AACzE,QAAQ,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,YAAY,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACzD,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AACzD,YAAY,MAAM,CAAC,cAAc,CAAC;AAClC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjC,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE;AACF;AACA,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG;;ACxVpD,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD;AACA,IAAI,GAAG,CAAC,OAAO,CAAC;AAChB;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,QAAQ,SAAS,CAAC,KAAK,EAAE;AACzB,YAAY,MAAM,CAAC;AACnB,YAAY,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACpD,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;AAC1C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,MAAM,EAAE;AAC5B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,GAAG;AACtB,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACpD,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAClD,YAAY,GAAG;AACf,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG;AACtE,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,EAAE;AACxE,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE;AACF;AACA,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG;;AC1EnD,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;AAClF,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;AAC9D,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc;AACxB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAClD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;AACpC,CAAC,GAAG;AACJ,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG;AACjC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxD,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC;AAChC,IAAI,GAAG,CAAC,OAAO,CAAC;AAChB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B;AACA,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9C,QAAQ,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,YAAY,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AAC3D,YAAY,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AAC3D,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE;AACjE,YAAY,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAChE,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAClD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,IAAI;AACzD,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AACpC,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;AAC5B,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACtB,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AACxE,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AACvE,QAAQ,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI;AACnE,gBAAgB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,IAAI;AACnE,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;AACtC,gBAAgB,MAAM,CAAC;AACvB,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI;AAC3C,YAAY,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;AAClC,YAAY,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI;AAC3C,YAAY,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE;AAClC,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAC5C,QAAQ,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;AACxC,gBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG;AAC/D,gBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI;AAChE,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK;AAC7C,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC9B,eAAe,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC;AAC7E,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACxF,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG;AAC/E,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACjD,YAAY,EAAE;AACd,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;AACpC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG;AAC1E,QAAQ,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,YAAY,OAAO,CAAC,GAAG,EAAE;AACzB,gBAAgB,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAChD,gBAAgB,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACjD,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,gBAAgB,SAAS,CAAC,GAAG,CAAC;AAC9B,oBAAoB,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG;AAC/E,oBAAoB,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI;AAChF,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAClC,QAAQ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,YAAY,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACvD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,QAAQ,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,EAAE,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzD,eAAe,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC3C,eAAe,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACzC,gBAAgB,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACnC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AAClC,gBAAgB,EAAE;AAClB,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,KAAK;AACjD,QAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjC,QAAQ,SAAS,CAAC,IAAI,CAAC;AACvB,YAAY,GAAG;AACf,YAAY,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;AACjC,YAAY,GAAG;AACf,YAAY,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;AACjC,YAAY,IAAI;AAChB,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AAC5C,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;AAC3D,QAAQ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,YAAY,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,gBAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG;AACtD,YAAY,GAAG;AACf,YAAY,SAAS,CAAC,KAAK,GAAG;AAC9B,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;AAC3E,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;AAC3D,gBAAgB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;AACzD,gBAAgB,EAAE,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,oBAAoB,MAAM,CAAC;AAC3B,gBAAgB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,gBAAgB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,gBAAgB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACnF,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,SAAS,CAAC,KAAK,GAAG;AAC1B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpF;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,YAAY,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI;AACpE,YAAY,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1D,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC5C,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,KAAK,GAAG;AACpB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,IAAI,GAAG;AACnB,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,EAAE;AACrB,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE;AACvC,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtC,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtC,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC1C,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACjE,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,IAAI;AACtC,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA;;AClNA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9C,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;AAC3B,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACtD,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG;AACrD,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG;AACrD,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3E,EAAE;AACF,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,MAAM;AACpC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACvC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;AACtC,IAAI,GAAG;AACP,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9B,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAQ,EAAE;AACV,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1B,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtB,IAAI,EAAE;AACN,CAAC;AACD,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChB,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACxC,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1F,IAAI,CAAC;AACL,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE;AAC5F,CAAC;AACD;AACA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,IAAI,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpF,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG;AAC7C;AACA,QAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AACpC,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AAChE,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACpC,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACjC,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACjC,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1B,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AAC9C,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1C,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACtE,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACvC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG;AACpD,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3C,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS;AACnC,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;AAC/B,gBAAgB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;AACzC;AACA,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa;AAC9F,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;AACpF,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnD,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;AACnD,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC/C,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9C,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG;AAC7E,YAAY,GAAG;AACf;AACA,YAAY,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACnE,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AACzD,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;AAC1B,oBAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;AACrC,gBAAgB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAClE,oBAAoB,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACpC,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACnC,YAAY,GAAG;AACf;AACA,YAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AACpD,YAAY,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC/C,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/B,YAAY,GAAG;AACf;AACA,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AACtG,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAC/C,YAAY,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM;AAC9F,gBAAgB,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAChD,gBAAgB,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;AACpE,gBAAgB,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE;AAC9C,YAAY,GAAG;AACf,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AACjE,gBAAgB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,oBAAoB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;AACtE,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACrF,oBAAoB,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5D,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC7C,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG;AAC1B;AACA,YAAY,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AACnD,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,YAAY,GAAG;AACf;AACA,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG;AAC1F,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAClC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;AACxC,oBAAoB,QAAQ,CAAC;AAC7B,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACtC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5C,wBAAwB,QAAQ,CAAC;AACjC,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvC,wBAAwB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,4BAA4B,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7C,4BAA4B,QAAQ,CAAC;AACrC,wBAAwB,CAAC;AACzB,wBAAwB,IAAI;AAC5B,4BAA4B,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7C,oBAAoB,CAAC;AACrB,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;AAClF;AACA,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5G,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjE,YAAY,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACpC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACxE,gBAAgB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;AACvF,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,oBAAoB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACtC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnC,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;AAClE,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,wBAAwB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG;AAC3E,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,wBAAwB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,oBAAoB,CAAC;AACrB,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACnC,oBAAoB,QAAQ,CAAC,KAAK,GAAG;AACrC,oBAAoB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG;AAChD,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,CAAC,CAAC,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE;AACpE,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG;AACrC,gBAAgB,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AACtE,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;AACzC,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAClC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;AAClE,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9B,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AChMF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;AAC/C;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE;AAClC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,EAAE,CAAC,UAAU,CAAC;AACtB,YAAY,UAAU,CAAC,MAAM,GAAG;AAChC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG;AACrE,QAAQ,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AACnE,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1H,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AAC/D,QAAQ,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG;AAC/B,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACrC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5C,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACpD,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,YAAY,GAAG;AACf,QAAQ,MAAM,CAAC,IAAI,EAAE;AACrB,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5B,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1H,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACtE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AAC/D,QAAQ,MAAM,CAAC,IAAI,GAAG,MAAM,GAAG;AAC/B,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACrC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9C,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACpD,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,YAAY,GAAG;AACf,QAAQ,MAAM,CAAC,IAAI,EAAE;AACrB,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5B,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,QAAQ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI;AAC7B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,QAAQ,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG;AACzC,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG;AACxC,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG;AACxC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;AAC7C,gBAAgB,cAAc,CAAC,CAAC,EAAE;AAClC,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAClC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxC;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA;;AClFA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ;AACnB,IAAI,GAAG,CAAC,UAAU,CAAC;AACnB,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ;AACpB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACrB,IAAI,GAAG,CAAC,cAAc,CAAC;AACvB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD,QAAQ,SAAS,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG;AACpC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM;AACtB,IAAI,GAAG;AACP,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG;AACpE,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG;AACnD,QAAQ,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACpC,YAAY,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACrD,eAAe,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;AAC/D,gBAAgB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG;AACpG,gBAAgB,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AAC9E,gBAAgB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,oBAAoB,MAAM,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AAC/D,gBAAgB,GAAG;AACnB,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACtF,gBAAgB,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AACtC,gBAAgB,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AAC5C,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG;AAC9C,gBAAgB,KAAK,CAAC,IAAI,EAAE;AAC5B,oBAAoB,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG;AAC3C,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG;AACxD,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG;AAChE,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,EAAE;AACtB,oBAAoB,EAAE,CAAC,CAAC,IAAI,CAAC;AAC7B,oBAAoB,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG;AAC9D,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC/D,YAAY,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3E,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5G,oBAAoB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7G,gBAAgB,GAAG,CAAC,OAAO,CAAC;AAC5B,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG;AAC9C,gBAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACxC,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AAC5C,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACvC,gBAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,EAAE,CAAC,cAAc,CAAC;AAClC,oBAAoB,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;AAC7C,gBAAgB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACtE;AACA,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG;AAC7C,gBAAgB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,wBAAwB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE;AACtD,oBAAoB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC9D,gBAAgB,CAAC;AACjB,gBAAgB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,oBAAoB,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE;AACnC,wBAAwB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;AAC9D,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC;AACvC,wBAAwB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE;AACtD,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE;AAChH,wBAAwB,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG;AACtD,wBAAwB,WAAW,CAAC,CAAC,IAAI,CAAC;AAC1C,wBAAwB,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,IAAI;AAC1F,wBAAwB,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU;AAC9C,oBAAoB,IAAI;AACxB,oBAAoB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1F,sCAAsC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1F,sCAAsC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtD,oBAAoB,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AACpC,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAC3B,oBAAoB,OAAO,CAAC,OAAO,GAAG;AACtC,YAAY,CAAC;AACb,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;AACzG,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,UAAU,CAAC;AACtB,YAAY,UAAU,CAAC,MAAM,GAAG;AAChC,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;AAC9B,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AACrC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACpC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG;AAC5C;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU;AACvB,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,GAAG;AAC3C,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACpGF,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;AACnD;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,EAAE,EAAE,WAAW,CAAC;AACxB,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE;AACxD,gBAAgB,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE;AACtC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;AACxC,YAAY,GAAG;AACf,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAY,EAAE;AACd,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;AAChF,QAAQ,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG;AACnC,QAAQ,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG;AACtE,QAAQ,UAAU,CAAC,IAAI,EAAE;AACzB,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;AACnG,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG;AAClG,YAAY,EAAE;AACd,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;AAC5F,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;AACvC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM;AACpC,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACxE,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE;AACvF,QAAQ,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI;AACxE;AACA,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAC5D,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,YAAY,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACxE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC/C,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE;AACvF,QAAQ,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI;AACxE;AACA,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC5C,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,YAAY,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACnE,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC/C,QAAQ,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;AAC1F,QAAQ,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI;AAC1E;AACA,QAAQ,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC1D,+BAA+B,IAAI,CAAC;AACpC,+BAA+B,CAAC,GAAG,CAAC,MAAM,EAAE;AAC5C,+BAA+B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK;AACjF,QAAQ,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAC1D,+BAA+B,IAAI,CAAC;AACpC,+BAA+B,CAAC,GAAG,CAAC,MAAM,EAAE;AAC5C,+BAA+B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,KAAK;AACjF,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;AAC9G,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG;AAChB,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1E,QAAQ,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG;AACrG;AACA,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;AACjF,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG;AAChB,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1E,QAAQ,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG;AACrG;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1D,YAAY,MAAM,CAAC,iBAAiB,CAAC;AACrC,gBAAgB,OAAO,CAAC,MAAM,GAAG;AACjC,gBAAgB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,gBAAgB,SAAS,CAAC;AAC1B,gBAAgB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;AAC5C,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACtE,gBAAgB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,YAAY,EAAE;AACd,QAAQ,IAAI;AACZ,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;AACxE,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI;AACzD;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1D,YAAY,MAAM,CAAC,iBAAiB,CAAC;AACrC,gBAAgB,OAAO,CAAC,MAAM,GAAG;AACjC,gBAAgB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,gBAAgB,SAAS,CAAC;AAC1B,gBAAgB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;AAC5C,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AACzC,gBAAgB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,YAAY,EAAE;AACd,QAAQ,IAAI;AACZ,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;AACxE,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI;AACzD;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,GAAG;AACpE,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG;AACtC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG;AAC/E,QAAQ,MAAM,CAAC,IAAI,EAAE;AACrB,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;AAC5B,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACzB,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG;AAC3C,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG;AACxC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC;AAC7D,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACrB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACrB,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACjC,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,QAAQ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,IAAI;AAC/F,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,YAAY,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI;AAC3F,YAAY,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI;AAC7F,YAAY,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI;AACjG,YAAY,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI;AAC/F,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG;AACpB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG;AAChC,QAAQ,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE;AAChE,QAAQ,OAAO,CAAC,IAAI,EAAE;AACtB,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;AACvB,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;AAC9F,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC;AAC1B,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,QAAQ,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM;AAC7C,QAAQ,CAAC;AACT,IAAI,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACtE,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG;AAChC,QAAQ,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE;AAChE,QAAQ,OAAO,CAAC,IAAI,EAAE;AACtB,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE;AAChG,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE;AAChG,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC;AAC1B,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAC5D,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;AAC5F,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AAClD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAChD,QAAQ,WAAW;AACnB,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,YAAY,GAAG;AACf,QAAQ,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE;AAClC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC;AAClC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACjC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;AAC1C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/F,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;AAC9C,YAAY,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;AACtD,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG;AACzD,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAChC,QAAQ,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;AACzB,YAAY,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AACtD,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG;AACxD,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;AACjC,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG;AAC1D,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,MAAM,CAAC,UAAU,EAAE;AAC/B,gBAAgB,OAAO,CAAC;AACxB,gBAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE;AAC7C,gBAAgB,GAAG,CAAC,MAAM;AAC1B,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE;AAC7C,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAY,OAAO,CAAC;AACpB,YAAY,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE;AACpD,YAAY,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM;AAC1C,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,GAAG;AAC1C,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM,CAAC,UAAU,CAAC;AAC9B,gBAAgB,IAAI,CAAC;AACrB,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9E,YAAY,EAAE;AACd,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1D,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG;AAChC,QAAQ,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE;AAChE,QAAQ,OAAO,CAAC,IAAI,EAAE;AACtB,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,gBAAgB,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtF,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,wBAAwB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvE,oBAAoB,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG;AAClC,gBAAgB,GAAG,IAAI,EAAE,CAAC,GAAG;AAC7B,YAAY,EAAE;AACd,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC;AAC1B,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,EAAE,CAAC,WAAW,CAAC;AACvB,YAAY,WAAW,CAAC,MAAM,GAAG;AACjC,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,QAAQ,SAAS,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG;AAC3C,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACnC,gBAAgB,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE;AACrD,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG;AACnC,gBAAgB,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;AAC/D,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;AACnC;AACA,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,GAAG;AACxC;AACA,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AAC1C;AACA,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,GAAG;AACrE,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG;AAC3C,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AACtC;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAChC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC;AACA,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,GAAG;AAC/C,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1C;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;;AC1RA,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAChC,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAY,IAAI,CAAC;AACjB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG;AACvC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAChD,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAC1B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrI,YAAY,IAAI,CAAC;AACjB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG;AACrC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG;AAC9C,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG;AAC9C,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG;AACzE,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB;AACA,QAAQ,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,YAAY,EAAE,CAAC,KAAK,CAAC;AACrB,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;AACnC,QAAQ,CAAC;AACT;AACA,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI;AACnE,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,IAAI;AACzE,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,IAAI;AACzE;AACA,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI;AAC1D,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,IAAI;AAC9D,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,YAAY,MAAM,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG;AAC7C,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;AACjC,YAAY,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,cAAc,GAAG;AACrI;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI;AAC3D,YAAY,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI;AAC3D,QAAQ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI;AAC9F,QAAQ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI;AAC9F;AACA,QAAQ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE;AACvE,gBAAgB,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE;AAClE,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI;AACjD;AACA,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,YAAY,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE;AAC5C,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,YAAY,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE;AAC5C,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI;AACtG,QAAQ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI;AAC1G;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,gBAAgB,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE;AAChF,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,OAAO,CAAC,kBAAkB,GAAG;AAC5C,gBAAgB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,oBAAoB,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,EAAE;AACzG,gBAAgB,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI;AAC5D,YAAY,EAAE,CAAC,OAAO,CAAC,kBAAkB,GAAG;AAC5C,gBAAgB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,oBAAoB,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,EAAE;AACzG,gBAAgB,EAAE,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI;AAC5D,QAAQ,CAAC;AACT;AACA,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACnG,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B,YAAY,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK;AAC1F,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,gBAAgB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AACjD,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,QAAQ,IAAI;AACZ,YAAY,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK;AAC5F,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,EAAE,CAAC,CAAC,CAAC;AACjB,gBAAgB,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AAChD,YAAY,IAAI;AAChB,gBAAgB,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AACzD,QAAQ,EAAE;AACV,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACxGF,GAAG;AACH,EAAE,CAAC,MAAM;AACT;AACA,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpG,GAAG;AACH,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC9C,IAAI,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACzD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AAC/B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,GAAG;AAC5C,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACzB;AACA,IAAI,GAAG,CAAC,aAAa,CAAC;AACtB;AACA,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7B,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AACjC,YAAY,EAAE,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;AAC1C,gBAAgB,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,oBAAoB,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,wBAAwB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrD,oBAAoB,GAAG,MAAM,CAAC;AAC9B,gBAAgB,GAAG;AACnB,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,oBAAoB,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtE,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,YAAY,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG;AACtC,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnD,QAAQ,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG;AACpC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC;AACrB,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC9B,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,CAAC;AACjB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;AAC7D,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE;AAC7D,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,CAAC;AAClB,gBAAgB,OAAO,CAAC,MAAM,EAAE;AAChC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;AAC3D,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE;AAC1D,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;AACxB,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;AACjH,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI;AAC3D;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACrB,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5B;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACrB,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5B;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE;AACvB,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC9B;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE;AAC7B,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAC9D,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACzD;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;AAC9B,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAC/D,IAAI,GAAG;AACP,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC3D;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,GAAG;AACxC;AACA,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACxC;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3B,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AAC9F,IAAI,GAAG;AACP,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC;AACA,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,YAAY,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAClC,QAAQ,IAAI;AACZ,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG;AAC3B,QAAQ,MAAM,CAAC,OAAO,CAAC;AACvB,IAAI,EAAE;AACN;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,SAAS,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9B,QAAQ,MAAM,CAAC,OAAO,CAAC;AACvB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE;AAC9B,KAAK,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AACvG,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;AACpG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG;AACpG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC9D,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK;AACrC;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7B,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG;AACtH,IAAI,CAAC;AACL;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACrH,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE;AAC9D,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACnE,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;AAC3B,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAClC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACjE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AACrF;AACA,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AAC9F,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,GAAG;AAClE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC7D,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG;AAC7B,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI;AACzH,QAAQ,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AAChC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;AAC1C,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC3C,QAAQ,IAAI;AACZ,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACzH,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACxC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5F,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1E,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AACxM,YAAY,GAAG;AACf,QAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AAChF,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7B,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,aAAa,IAAI,MAAM,GAAG;AACpE;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAChG,YAAY,KAAK;AACjB,cAAc,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACrC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACpC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG;AACzC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChD,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;AAC9C,gBAAgB,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI;AACxC,YAAY,KAAK;AACjB,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,oBAAoB,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC;AACvJ,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,GAAG;AAC5D,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/D,oBAAoB,OAAO,CAAC,QAAQ,EAAE;AACtC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACnD,gBAAgB,GAAG;AACnB,YAAY,IAAI;AAChB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,oBAAoB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACxD,wBAAwB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE;AACpE,4BAA4B,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,GAAG;AAC5D,oBAAoB,CAAC;AACrB,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE;AAChE,wBAAwB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG;AACvD,gBAAgB,GAAG;AACnB,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;AAC1C,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/D,oBAAoB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AACzC,wBAAwB,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE;AAC9E,oBAAoB,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC/C,wBAAwB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG;AACxF,oBAAoB,IAAI;AACxB,wBAAwB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;AAC5C,oBAAoB,YAAY,GAAG;AACnC,oBAAoB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AACrD,oBAAoB,EAAE,CAAC,aAAa,CAAC;AACrC,wBAAwB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AACvD,gBAAgB,GAAG;AACnB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;AACvC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE;AACvD,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;AACxC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9G,YAAY,GAAG;AACf,IAAI,EAAE;AACN;AACA,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7B,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG;AACxC,gBAAgB,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,GAAG;AACnD,gBAAgB,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,GAAG;AACnD,gBAAgB,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,IAAI;AACpF,IAAI,EAAE;AACN;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACrH,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAClE,YAAY,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,GAAG;AAClD,YAAY,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG;AAClD,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,GAAG,EAAE;AAC1D,qBAAqB,CAAC,KAAK,EAAE;AAC7B,yBAAyB,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC9C,yBAAyB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,yBAAyB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;AACvD,yBAAyB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACvC,yBAAyB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;AACjD,qBAAqB,IAAI;AACzB,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG;AAC5C,QAAQ,OAAO,CAAC,aAAa,GAAG;AAChC,QAAQ,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG;AACzH,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AACtC,gBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK;AAC/F,QAAQ,CAAC;AACT,QAAQ,MAAM,GAAG;AACjB,IAAI,EAAE;AACN;AACA,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,GAAG;AACzG,YAAY,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACjD,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC3B,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,gBAAgB,SAAS,CAAC,CAAC,CAAC,GAAG;AAC/B,gBAAgB,YAAY,GAAG;AAC/B,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7C;AACA,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE;AACF;AACA;AACA,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,EAAE,IAAI,EAAE;AAC3B,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;AACjC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9C,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;AACxC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG;AACvC,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,YAAY,QAAQ;AACpB,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC;AACtC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE;AAClC,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE;AACrC,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;AACjC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;AACjD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAChD,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;AACpC,YAAY,SAAS;AACrB,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/B,gBAAgB,CAAC,IAAI,EAAE;AACvB,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AAClC,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,GAAG;AACnB,YAAY,SAAS;AACrB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE;AACpC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9B,cAAc,CAAC,KAAK,EAAE;AACtB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;AACjC,gBAAgB,CAAC,IAAI,EAAE;AACvB,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG;AAC9C,oBAAoB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACjC,oBAAoB,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;AACpC,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9C,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,oBAAoB,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,wBAAwB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI;AAC1F,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG;AAClE,YAAY,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACxC,gBAAgB,CAAC,IAAI,EAAE;AACvB,oBAAoB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAClC,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACvD,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5D,oBAAoB,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;AACrD,gBAAgB,GAAG;AACnB;AACA,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC7B,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,YAAY,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,IAAI;AACxG,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,EAAE,MAAM,EAAE;AAC7B,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE;AACnC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;AACnD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG;AACzC,YAAY,MAAM,CAAC,WAAW,CAAC;AAC/B,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE;AACtC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AACnD,gBAAgB,GAAG;AACnB,YAAY,MAAM,CAAC,WAAW,CAAC;AAC/B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;;ACpXF,GAAG;AACH,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AACjD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE;AAC3D,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG;AACvD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAC5E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,OAAO;AACpG,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AACrG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;AACrB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC1G,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK;AAC5D,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AAC7F,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxF,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;AAC3F,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACxF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa;AACzF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AACrF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE;AAChB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAC/F,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;AAC9F,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC/F,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;AAC5F,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM;AAC3F,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACR,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;AACjG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;AACnG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM;AACnD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACzE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;AAC1F,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS;AAC3F,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AAC5E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB;AAC5B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS;AAC/F,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS;AAClF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACrB,CAAC,EAAE;AACH,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC/B;AACA,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AACjD,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACjE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzB,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACxC,oBAAoB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,oBAAoB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE;AACjE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE;AAC7G,YAAY,CAAC;AACb,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACpF,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG;AACzF,IAAI,GAAG;AACP,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,YAAY,MAAM,CAAC;AACnB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjF,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;AACpC,QAAQ,EAAE;AACV,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACzB,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAChE,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,oBAAoB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,oBAAoB,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE;AACvC,wBAAwB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,4BAA4B,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ;AAC3D,4BAA4B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AAClD,wBAAwB,EAAE;AAC1B,oBAAoB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AACnD,oBAAoB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG;AAChE,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACpD,gBAAgB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACpD,YAAY,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5E,mBAAmB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5E,oBAAoB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACtE,oBAAoB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,wBAAwB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,wBAAwB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,CAAC;AAC1B,wBAAwB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,wBAAwB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,oBAAoB,CAAC;AACrB,oBAAoB,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;AACjD,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,QAAQ,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE;AAClC,gBAAgB,MAAM,CAAC;AACvB,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG;AACzC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AACvE,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7E,YAAY,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AACrE,YAAY,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;AACzC,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,IAAI,EAAE;AACN,EAAE;AACF;AACA,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS;AAC9C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACjB,QAAQ,QAAQ,CAAC,CAAC,EAAE,QAAQ;AAC5B,IAAI,EAAE;AACN,EAAE;AACF,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACjB,QAAQ,QAAQ,CAAC,CAAC,EAAE,QAAQ;AAC5B,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI;AACtB,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5D,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG;AACxB,EAAE;AACF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG;AACxB,EAAE;AACF;AACA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AAChB,QAAQ,QAAQ,CAAC,CAAC,QAAQ;AAC1B,IAAI,EAAE;AACN,EAAE;AACF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AAChB,QAAQ,QAAQ,CAAC,CAAC,QAAQ;AAC1B,IAAI,EAAE;AACN,EAAE;;ACpMF,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;AAC7D,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,GAAG;AACrG,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,QAAQ,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG;AAC7E,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,CAAC,CAAC;AACV,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;AAChC,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAC9C,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AACzC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AACzC,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AAChC,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5B,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7C,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,CAAC;AACb,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC3C,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrC,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;AACzD,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC5D,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,gBAAgB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACjC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ;AACtF,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACtF,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AACpF,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AACnD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1D,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/B,wBAAwB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACjF,4BAA4B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,4BAA4B,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1D,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AAC/C,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5B,wBAAwB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACvD,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7E,4BAA4B,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG;AAClD,wBAAwB,IAAI,CAAC,CAAC;AAC9B,4BAA4B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,gCAAgC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AACtE,4BAA4B,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;AACjF,gCAAgC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACzE,gCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,gCAAgC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,gCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AAC7I,gCAAgC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,4BAA4B,CAAC;AAC7B,4BAA4B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,gCAAgC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG;AACnE,gCAAgC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,4BAA4B,CAAC;AAC7B,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,wBAAwB,CAAC;AACzB,oBAAoB,CAAC;AACrB,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACjC,IAAI,EAAE;AACN,EAAE;AACF;;AClGA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;AAC7D,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG;AAC/G,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAClD,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC;AACxB,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC;AACxB,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;AACjD,oBAAoB,WAAW,CAAC,IAAI,EAAE;AACtC,wBAAwB,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;AACzD,wBAAwB,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACvD,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,wBAAwB,QAAQ,CAAC,CAAC,IAAI;AACtC,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7B,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;AAC1B,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACnC,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,IAAI,EAAE;AACN,EAAE;;AC/BF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACxE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACrD,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG;AAC3D;AACA,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACf,QAAQ,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG;AAC7E,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;AACpC,IAAI,CAAC;AACL,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACjB,QAAQ,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG;AAClF,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;AACzC,IAAI,CAAC;AACL;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE;AAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACpC,KAAK,GAAG;AACR,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,GAAG,CAAC,OAAO,CAAC;AACxB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrE,oBAAoB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG;AACxF,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC5C,oBAAoB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,wBAAwB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACzD,wBAAwB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACtC,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;AACzC,wBAAwB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACxD,gBAAgB,GAAG;AACnB,gBAAgB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG;AAClD,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,wBAAwB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpG,oBAAoB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AAC3D,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,gBAAgB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG;AACzC,gBAAgB,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7F,oBAAoB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACxD,oBAAoB,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE;AACzE,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,YAAY,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAChD,QAAQ,GAAG;AACX;AACA,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AACrD,QAAQ,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC1D,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;;AC5D1G,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AACjF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AACvF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1F,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AACnF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACb,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACnB,CAAC,GAAG;AACJ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAClC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;AAChD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC;AACnC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG;AAC1C;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;AAC7B,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;AACzD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE;AACvE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI;AAC9C,YAAY,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG;AAC9B,gBAAgB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI;AAC9C,YAAY,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACtC,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACzG,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;AAChC,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,YAAY,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,gBAAgB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AAC9D,oBAAoB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;AAC3C,wBAAwB,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;AAChD,wBAAwB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/D,4BAA4B,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG;AACtD,4BAA4B,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG;AACpD,gCAAgC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE;AAC9D,wBAAwB,GAAG;AAC3B,oBAAoB,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;AACxC,gBAAgB,GAAG;AACnB,YAAY,EAAE;AACd,QAAQ,EAAE,CAAC,YAAY,CAAC;AACxB,YAAY,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;AAC9C,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B,YAAY,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;AAC9C,YAAY,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;AAClE,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG;AACpB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;AAC/B,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACpC,WAAW,EAAE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;AACzF,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AAC5G,YAAY,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI;AACtF,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;AAC9C,YAAY,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;AACvC,YAAY,MAAM,CAAC;AACnB,QAAQ,WAAW,GAAG;AACtB,QAAQ,MAAM,CAAC,IAAI,GAAG;AACtB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;AAC/B,QAAQ,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE;AACvC,YAAY,MAAM,CAAC;AACnB,QAAQ,WAAW,GAAG;AACtB,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG;AAC7B,YAAY,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,gBAAgB,MAAM,CAAC,IAAI,GAAG;AAC9B,YAAY,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI;AAClC,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,IAAI,GAAG;AAC1B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACrF,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC;AAClE,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE;AAC1D,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;AAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;AACnC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3D,oBAAoB,EAAE,CAAC,YAAY,CAAC;AACpC,wBAAwB,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;AAC1D,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE;AAC9D,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACrF,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;AAChD,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;AAChD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,SAAS,CAAC,CAAC,IAAI;AACvB,IAAI,GAAG;AACP,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;AACjE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,EAAE;AAChH,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE;AACjH,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7B,KAAK,GAAG;AACR,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AACpC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1F,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,EAAE;AAC1F,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACjD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AAC3D,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACrE,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,GAAG;AACR,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAClE,IAAI,GAAG;AACP;AACA,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACtC,IAAI,EAAE;AACN;AACA,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzC;AACA,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3B,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC;AACpI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE;AAC5B,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC;AAChD,YAAY,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACnF,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;AAChD,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACnC,YAAY,EAAE,CAAC,IAAI;AACnB,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AACpD,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,IAAI;AAC/E,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,GAAG;AACpD,YAAY,EAAE,CAAC,EAAE,CAAC;AAClB,gBAAgB,EAAE,CAAC,CAAC,EAAE;AACtB,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG;AACpC,gBAAgB,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE;AACnE,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN;AACA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACpB,YAAY,EAAE,CAAC,KAAK,CAAC;AACrB,gBAAgB,cAAc,GAAG;AACjC,YAAY,IAAI;AAChB,gBAAgB,QAAQ,GAAG;AAC3B,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,IAAI;AACpE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAChD,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AACpC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxC;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACrF,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AACd,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AACzB,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;AACrE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG;AAC5B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI;AACrC,CAAC,GAAG;AACJ,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;AAC3B,QAAQ,EAAE,EAAE,CAAC,CAAC;AACd,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AAC1D,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AACvB,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5B,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC/D,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvB,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM;AACxB,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI;AACzE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C,gBAAgB,GAAG;AACnB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,IAAI;AAC/D,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AACpD,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,EAAE,GAAG;AAClD,QAAQ,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAChD,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACxC,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,YAAY,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,gBAAgB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG;AAC/C,YAAY,GAAG;AACf,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AAC3E,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,EAAE;AACF;AACA,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;AACtC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,QAAQ,GAAG,CAAC,CAAC;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACvC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,YAAY,MAAM,CAAC,CAAC,OAAO,EAAE;AAC7B,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5D,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG;AAC/C,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE;AACjC,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,YAAY,CAAC,CAAC,IAAI,EAAE;AACpB,QAAQ,IAAI;AACZ,YAAY,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5D,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,EAAE;AACF;AACA,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI;AAC3D,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG;AAC1E,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACnE,YAAY,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG;AACvD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG;AACvD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,GAAG;AAC5C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;;ACrUF,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/C,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/B,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,EAAE;AACpD,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG;AACrE,YAAY,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ;AACxC,gBAAgB,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE;AACtC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE;AAC3D,YAAY,QAAQ;AACpB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;AAC/C,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACxC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG;AACxC,YAAY,GAAG,CAAC,OAAO,CAAC;AACxB,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,MAAM;AACtD,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,MAAM;AAC1D,YAAY,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,GAAG;AACvC,gBAAgB,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtD,oBAAoB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG;AAC3D,gBAAgB,GAAG;AACnB,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC;AACjD,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG;AACjD,gBAAgB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,IAAI,EAAE;AACtD,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG;AACnD,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG;AACrD,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACvC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7C,wBAAwB,OAAO,CAAC,MAAM,GAAG;AACzC,wBAAwB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG;AAC/D,oBAAoB,GAAG;AACvB,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrC,YAAY,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1C,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,GAAG;AACtD,gBAAgB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC9C,oBAAoB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC3C,gBAAgB,QAAQ;AACxB,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC;AAChD,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;AAC9C,gBAAgB,aAAa;AAC7B,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAChD,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE;AAChC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG;AAC/C,gBAAgB,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,GAAG;AAC/D,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;AACrC,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AACjE,gBAAgB,KAAK;AACrB,oBAAoB,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE;AAC1C,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG;AACpD,gBAAgB,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AACtC,gBAAgB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,gBAAgB,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG;AAC7C,oBAAoB,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC3C,gBAAgB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG;AAClD,oBAAoB,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAChD,gBAAgB,KAAK;AACrB,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,GAAG;AACjF,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAClC,oBAAoB,KAAK;AACzB,wBAAwB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,4BAA4B,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE;AACxD,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC;AACjD,oBAAoB,KAAK;AACzB,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,4BAA4B,OAAO,CAAC,MAAM,GAAG;AAC7C,4BAA4B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG;AACnE,wBAAwB,GAAG;AAC3B,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,GAAG;AAC/C,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AACpC,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC7B,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;AACtD,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI;AAC9C,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AAC3D,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE;AACtC,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;;ACvFF,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,GAAG;AACnE;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACxB,QAAQ,SAAS,CAAC,OAAO,GAAG;AAC5B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AACtB,QAAQ,SAAS,CAAC,KAAK,GAAG;AAC1B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC,GAAG;AAChF,QAAQ,aAAa,CAAC,KAAK,EAAE;AAC7B,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE;AAC/C,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvC,gBAAgB,IAAI,CAAC,CAAC,GAAG;AACzB,YAAY,GAAG;AACf,QAAQ,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;AACtD,QAAQ,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;AAClD;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;AACzD,QAAQ,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzD,YAAY,KAAK,CAAC,KAAK,GAAG;AAC1B,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAQ,aAAa,CAAC,MAAM,GAAG;AAC/B,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM;AACtB,IAAI,GAAG;AACP;AACA,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AACvC,QAAQ,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,QAAQ,EAAE,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;AACnC,YAAY,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,GAAG;AACvE,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzC;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AChDF,EAAE,CAAC,OAAO,CAAC,IAAI;AACf,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ;AAClF;AACA,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE;AACvD,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG;AACvB,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACnC,IAAI,GAAG;AACP,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,QAAQ,GAAG,CAAC,GAAG,CAAC;AAChB,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE;AACjE,YAAY,KAAK,CAAC;AAClB,QAAQ,OAAO,CAAC;AAChB,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;AACtB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC,CAAC;AACnF,gBAAgB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,EAAE,CAAC;AACpF,YAAY,EAAE;AACd,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AACtE,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,GAAG;AAC9C,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AAC7B,QAAQ,eAAe,CAAC,CAAC,IAAI,CAAC;AAC9B,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AACtB,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AACpC,IAAI,GAAG,KAAK,EAAE;AACd,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAChC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AACpC,QAAQ,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,IAAI,GAAG;AACP;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG;AACnC,IAAI,CAAC;AACL,IAAI,OAAO;AACX,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;AAC5C,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;AAC5C,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC;AAC1C,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;AAC5C;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;AACzD,QAAQ,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC3C,QAAQ,OAAO,CAAC,MAAM,GAAG;AACzB,QAAQ,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG;AAC3C,QAAQ,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC3C,QAAQ,OAAO,CAAC,MAAM,GAAG;AACzB,QAAQ,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;AAC7C,IAAI,CAAC;AACL;AACA,IAAI,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AACnC,YAAY,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG;AACtC,QAAQ,CAAC;AACT,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,GAAG;AACrB,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,GAAG;AACrB,QAAQ,CAAC;AACT,QAAQ,UAAU,GAAG;AACrB,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACpC,IAAI,UAAU,GAAG;AACjB,IAAI,OAAO,CAAC,IAAI,GAAG,KAAK,GAAG;AAC3B;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG;AACvC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5B,QAAQ,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI;AACjD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AAC1C,QAAQ,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AACxC,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG;AACpC,IAAI,GAAG,CAAC,eAAe,GAAG;AAC1B,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE;AACxB,EAAE;;ACpFF,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;AACnF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/F,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3B,CAAC,GAAG;AACJ,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7B,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,GAAG;AAC/F;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,QAAQ,SAAS,CAAC,UAAU,GAAG;AAC/B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG;AAClC,QAAQ,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;AACjC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,SAAS,CAAC,QAAQ,GAAG;AAC7B,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI;AACrC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE;AACnC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AAC9C,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;AACxD,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;AAClD,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;AACrD,QAAQ,CAAC;AACT,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACtB,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AAC/D,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AACvC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9B,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7B,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACrB,YAAY,OAAO,CAAC,MAAM,GAAG;AAC7B,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC5B,QAAQ,MAAM,CAAC,CAAC,YAAY;AAC5B,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;AACrF,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACjB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE;AAC7F,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO;AAC1F,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,GAAG;AACR,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;AACvC,QAAQ,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,KAAK,GAAG;AACR,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAQ,aAAa,CAAC,KAAK,CAAC,MAAM,IAAI;AACtC,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/B,KAAK,GAAG;AACR,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,QAAQ,YAAY,GAAG;AACvB,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,GAAG;AACR,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,EAAE,OAAO,CAAC;AACzB,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AChGF,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1E,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;AACrC,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B;AACA,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACnD,YAAY,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,gBAAgB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACxD,gBAAgB,EAAE;AAClB,YAAY,CAAC,CAAC,CAAC;AACf,QAAQ,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,YAAY,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,gBAAgB,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AACjC,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG;AACzD,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACxD,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG;AAClE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG;AAC3G,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACrC,gBAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,YAAY,EAAE,CAAC,OAAO,CAAC;AACvB,gBAAgB,OAAO,CAAC,cAAc,GAAG;AACzC,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,IAAI,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS;AACnG,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,YAAY,MAAM,CAAC;AACnB,QAAQ,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,YAAY,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,gBAAgB,YAAY,CAAC,WAAW,KAAK;AAC7C,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClB,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE;AAC3E,YAAY,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG;AAC7C,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG;AAC9B,YAAY,YAAY,CAAC,WAAW,KAAK;AACzC,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAQ,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC;AACrC,YAAY,MAAM,CAAC;AACnB,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE;AACvD,QAAQ,GAAG,CAAC,WAAW,CAAC;AACxB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE;AACzC,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE;AACrE,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE;AAC/C,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE;AACxE,QAAQ,IAAI;AACZ,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AACrC,QAAQ,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE;AAC9C,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,YAAY,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG;AAC/E,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,YAAY,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG;AAC1D,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE;AAC1C;AACA,QAAQ,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/F,YAAY,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,GAAG;AACX;AACA,QAAQ,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,YAAY,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AACnF,gBAAgB,MAAM,CAAC;AACvB,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;AAC3E,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;AAClF,YAAY,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,gBAAgB,MAAM,CAAC;AACvB,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC;AACrD,YAAY,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;AACxC,gBAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;AACrC,oBAAoB,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE;AAC5D,gBAAgB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3C,oBAAoB,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE;AAC/D,YAAY,CAAC;AACb,YAAY,EAAE,EAAE,WAAW,CAAC;AAC5B,gBAAgB,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACpC,YAAY,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE;AAClD,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG;AACpD,YAAY,UAAU,CAAC,QAAQ,GAAG;AAClC,QAAQ,CAAC;AACT,QAAQ,IAAI;AACZ,YAAY,sBAAsB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,qBAAqB,IAAI;AAC3E;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACrE,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;AAChG,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC9F,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;AACxD,gBAAgB,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;AAC9D,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAQ,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AACpF,QAAQ,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AACvD,QAAQ,UAAU,CAAC,YAAY,GAAG;AAClC,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3F,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;AAC7C,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG;AAClD,gBAAgB,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACjC,oBAAoB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG;AAClD,oBAAoB,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE;AACjD,gBAAgB,CAAC;AACjB,gBAAgB,UAAU;AAC1B,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC;AAChE,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE;AAC/D,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK;AAChD,IAAI,GAAG;AACP;AACA,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAQ,EAAE,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG;AACrD,YAAY,sBAAsB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACtD,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AACrG,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG;AAC/F,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AACvE,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAC7D,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG;AAC1C,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;AAChE,EAAE;;ACxKF,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H;AACA,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,gBAAgB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC3E,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AACjE,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;AAC7B,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG;AACvD,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,YAAY,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;AACtF,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACrD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;AACvF,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AC7BF,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,YAAY,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;AAC3G,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3D,gBAAgB,EAAE;AAClB,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/D,oBAAoB,EAAE;AACtB,gBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAChE,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3D,gBAAgB,GAAG;AACnB,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;AAC7B,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG;AAChE,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,YAAY,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;AACtF,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACrD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;AACvF,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACpCF,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AACpD,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,SAAS,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG;AACxE,QAAQ,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC,CAAC,IAAI,GAAG;AAC3D,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;AAC3D,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1E,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,YAAY,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;AACxG,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC3E,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,YAAY,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;AAChG,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;AACvF,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AC5BF,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG;AACtE,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;AAClE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,uBAAuB,CAAC;AACnE,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACxD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACrC,gBAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,QAAQ,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC;AACzC,QAAQ,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE;AACrD,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACtB,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACpE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,GAAG,SAAS,GAAG;AAC3F,gBAAgB,MAAM,CAAC;AACvB,YAAY,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE;AACvD,YAAY,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;AACxC,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3E,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AACtC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACrC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjC,gBAAgB,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;AACnC,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,YAAY,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3D,YAAY,EAAE,CAAC,QAAQ,EAAE;AACzB,YAAY,EAAE,CAAC,MAAM,CAAC;AACtB,gBAAgB,MAAM,CAAC,UAAU,GAAG;AACpC,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/B,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3B,gBAAgB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7C,oBAAoB,QAAQ,GAAG;AAC/B,oBAAoB,MAAM,CAAC;AAC3B,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,YAAY,CAAC;AAChC,oBAAoB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG;AACnE,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE;AACzD,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC/C,oBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC/C,gBAAgB,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC5E,oBAAoB,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,oBAAoB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACvF,oBAAoB,EAAE,CAAC,SAAS,CAAC;AACjC,wBAAwB,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG;AAClE,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAClC,oBAAoB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,oBAAoB,GAAG;AACvB,oBAAoB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACnD,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3B,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAClC,oBAAoB,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,oBAAoB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,wBAAwB,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;AAChE,wBAAwB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,oBAAoB,CAAC;AACrB,oBAAoB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACnC,oBAAoB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,wBAAwB,KAAK,CAAC,IAAI,EAAE;AACpC,4BAA4B,EAAE,CAAC,CAAC,EAAE,CAAC;AACnC,4BAA4B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,wBAAwB,GAAG;AAC3B,oBAAoB,GAAG;AACvB,oBAAoB,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE;AACzD,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,MAAM,CAAC;AAC1B,oBAAoB,MAAM,CAAC,QAAQ,GAAG;AACtC,gBAAgB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC;AACnD,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;AAChD,QAAQ,OAAO,CAAC,GAAG,EAAE;AACrB,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC;AACnD,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;AAChD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC9C,QAAQ,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC9C,QAAQ,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC5C,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7F,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG;AAC1C,gBAAgB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG;AACrD,gBAAgB,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG;AACvD,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC9D,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACjC;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACnIF,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG;AACtE,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;AACzD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACtD;AACA,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACrD,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACrD,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AACpD,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,QAAQ,EAAE;AACV,QAAQ,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AACxD,QAAQ,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,YAAY,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG;AACpC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,QAAQ,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACzD,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;AACjE,QAAQ,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACjE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACzB,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACrD,gBAAgB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AACrC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACtD,gBAAgB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1B,gBAAgB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,oBAAoB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAClC,YAAY,EAAE,CAAC,OAAO,CAAC;AACvB,gBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACxF,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,OAAO,CAAC;AACvB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,CAAC,KAAK,CAAC;AACjB,YAAY,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACnD,QAAQ,IAAI;AACZ,YAAY,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9C,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE;AAC5F,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5D,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9C,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,oBAAoB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACpD,gBAAgB,GAAG;AACnB,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;AACrC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,YAAY,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACnD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE;AAC5F,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5D,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAC/C,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;AACrC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9B,WAAW,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC7D,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,YAAY,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE;AAC1C,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,WAAW,CAAC,OAAO,EAAE;AACjC,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;AAC9C,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,QAAQ,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,eAAe,GAAG;AAC/E,QAAQ,QAAQ,CAAC,WAAW,GAAG;AAC/B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;AACtC,YAAY,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO;AACvG,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,GAAG;AACzC,YAAY,WAAW,CAAC,OAAO,EAAE;AACjC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACnF,YAAY,EAAE,CAAC,KAAK,CAAC,6BAA6B,GAAG;AACrD,gBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO;AAC1D,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,eAAe;AAC3B,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;AAC/D,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;AAChD,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG;AACrC,gBAAgB,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC1D,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;AACtD,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;AACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,QAAQ,WAAW,CAAC,CAAC,aAAa,CAAC;AACnC,QAAQ,UAAU,CAAC,CAAC,WAAW,CAAC;AAChC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI;AACnE,QAAQ,6BAA6B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrD,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AACjC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,WAAW,GAAG;AAC/B,YAAY,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAgB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACnD,YAAY,GAAG;AACf,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/C,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG;AAC3B,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,YAAY,EAAE,IAAI,CAAC;AACnB,YAAY,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AAC1E,YAAY,GAAG;AACf,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,YAAY,EAAE,IAAI,CAAC;AACnB,YAAY,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAC5D,YAAY,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AAChC,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,YAAY,EAAE,IAAI,CAAC;AACnB,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ;AACjD,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AAChE,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;AAC1C,oBAAoB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AACpE,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,SAAS,CAAC,UAAU;AACnC,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAChC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC/C,gBAAgB,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,gBAAgB,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,gBAAgB,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,gBAAgB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,oBAAoB,UAAU,CAAC,IAAI,KAAK;AACxC,gBAAgB,EAAE;AAClB,gBAAgB,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE;AAC/C,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAChC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;AACjC,YAAY,IAAI,CAAC,WAAW,GAAG;AAC/B,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;AAC/D,YAAY,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,oBAAoB,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAC1C,wBAAwB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,4BAA4B,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,4BAA4B,KAAK,CAAC,CAAC,CAAC;AACpC,wBAAwB,EAAE;AAC1B,wBAAwB,MAAM,CAAC,KAAK,GAAG;AACvC,wBAAwB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AACrD,4BAA4B,MAAM,CAAC,KAAK,GAAG;AAC3C,oBAAoB,CAAC;AACrB,oBAAoB,MAAM,CAAC,EAAE,CAAC;AAC9B,gBAAgB,EAAE,CAAC,IAAI;AACvB,gBAAgB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvF,oBAAoB,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;AAC9C,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG;AACjH,oBAAoB,MAAM,CAAC,EAAE,CAAC;AAC9B,gBAAgB,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,oBAAoB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjD,gBAAgB,GAAG;AACnB,gBAAgB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC;AACpF,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC;AACnF,gBAAgB,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AACrD,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,oBAAoB,MAAM,CAAC,GAAG,CAAC;AAC/B,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,oBAAoB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,wBAAwB,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AAC/C,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACjD,gBAAgB,CAAC;AACjB,gBAAgB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,oBAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACvD,gBAAgB,GAAG;AACnB,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,oBAAoB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,gBAAgB,EAAE,CAAC,IAAI;AACvB,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7C,oBAAoB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;AAClC,wBAAwB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,oBAAoB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,GAAG;AACnB,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/D,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAG;AACpE,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;AACvE,EAAE;;AC9QF,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACjE,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAChD,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE;AAC7G;AACA,IAAI,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACpC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE;AAC5C,gBAAgB,KAAK,CAAC,iBAAiB,GAAG,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,oBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AACtC,gBAAgB,GAAG;AACnB,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;AACnE,YAAY,OAAO,CAAC,WAAW,GAAG;AAClC,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClH,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,QAAQ,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG;AACvC,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACzBF,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AAC5B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACvD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AAClC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3C,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AACzB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1C,QAAQ,EAAE,EAAE,KAAK,CAAC,mBAAmB,GAAG;AACxC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,GAAG;AACxD,QAAQ,EAAE,EAAE,KAAK,CAAC,iBAAiB,GAAG;AACtC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,GAAG;AACtD,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;AAC3C,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK;AACvC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE;AACpG,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG;AAC5B,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI;AACrD,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,YAAY,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,gBAAgB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,MAAM,IAAI;AAC9E,oBAAoB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,IAAI;AAC1E,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACpE,gBAAgB,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;AACvC,gBAAgB,WAAW,CAAC,MAAM,GAAG;AACrC,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,oBAAoB,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AACrE,oBAAoB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;AACjG,iCAAiC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE;AACnF,gBAAgB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC1C;AACA,gBAAgB,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG;AAC7C,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,YAAY,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5C,gBAAgB,gBAAgB,GAAG;AACnC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,EAAE;AAC3E,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG;AAChD,gBAAgB,EAAE,EAAE,SAAS,CAAC;AAC9B,oBAAoB,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI;AACzE,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/C,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC7C,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACnEF,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnD,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AACnF;AACA,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;AAC9E,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAC3B,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG;AACrC,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG;AAC5D,QAAQ,EAAE,EAAE,eAAe,CAAC;AAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AAC/D,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC1F,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpG,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5F,QAAQ,EAAE;AACV,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AAC/F,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY;AACnG,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ;AAChD,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3D,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,gBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACvE,oBAAoB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI;AACtC,YAAY,kBAAkB,CAAC,WAAW,CAAC,WAAW,EAAE;AACxD,YAAY,MAAM,CAAC,eAAe,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtE,gBAAgB,MAAM,CAAC,KAAK,CAAC;AAC7B,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AChCF,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE;AACtG,QAAQ,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE;AAClG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC;AACjC;AACA,IAAI,QAAQ,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACpC,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,QAAQ,SAAS,CAAC,KAAK,GAAG;AAC1B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,QAAQ,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;AAC/C,YAAY,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAClD,YAAY,QAAQ,CAAC,SAAS,CAAC;AAC/B,gBAAgB,OAAO,CAAC,CAAC,GAAG;AAC5B,gBAAgB,CAAC;AACjB,oBAAoB,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;AACnG,oBAAoB,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,oBAAoB,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AACzC,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC;AAC7B,oBAAoB,UAAU,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC;AACxD,oBAAoB,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,wBAAwB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC3D,oBAAoB,EAAE;AACtB,oBAAoB,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,wBAAwB,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC/D,wBAAwB,UAAU,GAAG;AACrC,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACvD,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACrC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7E,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACjE,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B,YAAY,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;AACzE,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM;AACtG,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT,QAAQ,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AAC3D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,QAAQ,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChE,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,gBAAgB,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;AACzD,gBAAgB,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,oBAAoB,MAAM,CAAC;AAC3B,gBAAgB,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG;AACpF,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,aAAa,CAAC;AACzB,YAAY,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxH,gBAAgB,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG;AAC/D,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClH,YAAY,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACzG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG;AAChD,gBAAgB,EAAE,EAAE,SAAS,CAAC;AAC9B,oBAAoB,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI;AACzE,gBAAgB,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;AAC7D,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AAClD,QAAQ,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC,YAAY,EAAE;AACvG,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAG;AACzC,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;AAChE,EAAE;;AClGF,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1C,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AAChD,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;AACxE,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAChE,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACrE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAC7D,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AACxC;AACA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1D,QAAQ,GAAG;AACX,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK;AAC7F,QAAQ,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG;AACrF,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACtD,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK;AAC7F,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;AACzC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;AAC3D,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AAChD,gBAAgB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,gBAAgB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AACtC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AACjC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,YAAY,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG;AACzC,QAAQ,GAAG;AACX,IAAI,EAAE;AACN;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE;AAC/C,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3C,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AC1CF,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1C,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AAChD,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;AACxE,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAChE,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AACrE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAC7D,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AACxC;AACA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpD,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1D,QAAQ,GAAG;AACX,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG;AAC5G,QAAQ,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG;AACjE,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACtD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACtD,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE;AACpD,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;AAC3D,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AAChD,gBAAgB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,gBAAgB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AACtC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AACjC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5C,YAAY,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG;AACzC,QAAQ,GAAG;AACX,IAAI,EAAE;AACN;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE;AAC/C,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3C,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACzCF,QAAQ,CAAC,+BAA+B,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAClE,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtE,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,GAAG;AACxC,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;AAC/E,EAAE;;ACNF,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjG,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG;AACjH,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;AAC/B;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1C,QAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;AACrC,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AACjC,QAAQ,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,gBAAgB,IAAI;AAChE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;AAC7D,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAgB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAChE,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAChE,YAAY,EAAE,CAAC,YAAY,GAAG;AAC9B,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;AAChE,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC5E,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC5E,YAAY,EAAE,CAAC,YAAY,GAAG;AAC9B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACvD,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AAC5D,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,sBAAsB,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;AACrF,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE;AACjD,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACtCF,QAAQ,CAAC,kCAAkC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AACxE,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzE,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG;AAC7C,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,cAAc,EAAE;AACrF,EAAE;;ACNF,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAClG,IAAI,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG;AAC/H,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG;AACnH;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG;AACrC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACvC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACpB,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,YAAY,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,gBAAgB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,oBAAoB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,oBAAoB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,oBAAoB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,oBAAoB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,YAAY,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC/D,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC1D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,gBAAgB,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AACzF,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,gBAAgB,yBAAyB,CAAC,cAAc,CAAC,IAAI,EAAE;AAC/D,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;AACtD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE;AACtD,QAAQ,yBAAyB,CAAC,cAAc,CAAC,IAAI,EAAE;AACvD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACxC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,yBAAyB,CAAC,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1G,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG;AACjD,gBAAgB,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE;AAC3C,wBAAwB,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC;AAC7E,0BAA0B,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,KAAK;AACvE,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE;AACjD,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;;ACxDA,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG;AACtI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAChC;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACf,YAAY,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;AACzC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,gBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3D,YAAY,GAAG;AACf,YAAY,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;AACzC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,gBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3D,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,QAAQ,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAQ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;AAC/B,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACvC,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,YAAY,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AACzE,QAAQ,GAAG;AACX,QAAQ,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACxE,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,QAAQ,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;AAC3D,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,QAAQ,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,YAAY,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1C,YAAY,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1C,YAAY,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AAChD,YAAY,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;AAC/C,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE;AACrC,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3C,YAAY,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,gBAAgB,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE;AACrD,YAAY,EAAE,CAAC,CAAC,EAAE;AAClB,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;AACvD,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG;AACrC,gBAAgB,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;AACjE,YAAY,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,iBAAiB,EAAE;AACrF,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/B,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;AC7DF,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrE,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,cAAc,GAAG;AAC/E,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;AAC7E,EAAE;;ACNF,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACrF,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/G,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAChC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAClC,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG;AACpC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,IAAI,GAAG,CAAC,OAAO,CAAC;AAChB;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACxB,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG;AAC5B,YAAY,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG;AAC/C,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG;AACrC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,QAAQ,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK;AAC1G,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACtF,WAAW,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACpF,YAAY,MAAM,CAAC;AACnB,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B,QAAQ,OAAO,GAAG;AAClB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/B,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7B,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACrC,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG;AAC3B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG;AAC3B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;AAC1C,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI;AACX,IAAI,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC7B,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AAC9B,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG;AAClD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,EAAE,MAAM,CAAC;AACnB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;AACxB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG;AAC/C,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,IAAI;AAC9E,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,OAAO;AACf,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,gBAAgB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAChE,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAChE,YAAY,EAAE,CAAC,SAAS,EAAE;AAC1B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;AACzF,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;AACzF,YAAY,EAAE,CAAC,WAAW,EAAE;AAC5B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE;AAC3F,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE;AAC3F,YAAY,EAAE,CAAC,UAAU,GAAG;AAC5B;AACA,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE;AACpG,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE;AAC1D,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;AACrH,YAAY,GAAG;AACf;AACA;AACA,QAAQ,MAAM;AACd,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE;AACpG,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE;AAC1D,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;AACrH,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AACjD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC/C,QAAQ,MAAM;AACd,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AACjD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC/C,QAAQ,oBAAoB,GAAG;AAC/B,QAAQ,OAAO;AACf,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC3C,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC7C,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;AAC7C,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,CAAC,CAAC;AACjB,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG;AACzC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;AAC1D,YAAY,qBAAqB,CAAC,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3G,YAAY,qBAAqB,CAAC,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3G,YAAY,qBAAqB,CAAC,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7G,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AACrE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrC;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;;AC1JA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9F,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/G,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAChC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAClC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,IAAI,GAAG,CAAC,OAAO,CAAC;AAChB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG;AACnD,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE;AACrD,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE;AACnE,gBAAgB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAChD,oBAAoB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,oBAAoB,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG;AACzD,gBAAgB,MAAM,CAAC,CAAC;AACxB,oBAAoB,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;AAC5C,oBAAoB,QAAQ,CAAC,CAAC,QAAQ;AACtC,gBAAgB,EAAE;AAClB,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;AACnC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AAC/B,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE;AACzD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,SAAS,CAAC;AACrB,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/F,QAAQ,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG;AAChC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,YAAY,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3B,YAAY,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAC9C,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,YAAY,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAChE,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;AACjD,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACnD,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,YAAY,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACrE,gBAAgB,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG;AAC9E,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AACzC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE;AACxD,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AACnF,QAAQ,GAAG;AACX,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AAC7C,IAAI,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,QAAQ,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5F,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;AAChC;AACA,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrD,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,gBAAgB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC9D,oBAAoB,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AAChF,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACnE,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD;AACA,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3D,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D;AACA,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC3D,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC3D;AACA,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC;AACA,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D;AACA,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D;AACA,oBAAoB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE;AACnD,oBAAoB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG;AACvD,oBAAoB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE;AACnD,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE;AACtG,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAClF,oBAAoB,EAAE,CAAC,KAAK,CAAC,IAAI;AACjC,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACnE,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD;AACA,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3D,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D;AACA,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC3D;AACA,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC;AACA,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D;AACA,oBAAoB,EAAE,CAAC,MAAM,CAAC,IAAI;AAClC,oBAAoB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,oBAAoB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,oBAAoB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,oBAAoB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjC;AACA,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACvD,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACzD;AACA,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC3D;AACA,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D;AACA,oBAAoB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE;AACnD,oBAAoB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG;AACvD,oBAAoB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE;AACnD;AACA,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG;AACvD,gBAAgB,CAAC;AACjB,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG;AACnD,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS;AACvB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAClE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACtE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;AAC1E,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACtF,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,MAAM,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAChD,MAAM,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9C;AACA,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK;AACxC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AAClC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,UAAU,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AACpC,QAAQ,CAAC;AACT,MAAM,CAAC;AACP;AACA,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AACnC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AAC9B,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;AACxC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG;AACjD;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AAC3D,MAAM,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AACxE,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM;AAC1C,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI;AAC5B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D;AACA,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D;AACA,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3B,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG;AACrD,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG;AACrD,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK;AACvD,QAAQ,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5B,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAClF,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAClF,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG;AAClE,UAAU,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG;AAC3D,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC7C;AACA,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE;AACvC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5D,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG;AAC7D,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG;AAC7D,YAAY,EAAE,CAAC,QAAQ;AACvB,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG;AACzE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI;AACjH,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,cAAc,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,cAAc,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,YAAY,CAAC;AACb,UAAU,CAAC;AACX,QAAQ,CAAC;AACT;AACA,QAAQ,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG;AAClC,MAAM,CAAC;AACP;AACA,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACnD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5B,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,MAAM,CAAC;AACP,MAAM,MAAM,CAAC,MAAM,CAAC;AACpB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACtF,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ;AAC9B,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AACxC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;AACpC,UAAU,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG;AAChF,UAAU,QAAQ,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;AAC5F,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,UAAU,EAAE,GAAG;AACf,UAAU,EAAE,GAAG;AACf,QAAQ,CAAC;AACT,MAAM,CAAC;AACP;AACA,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AAC1B,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAClC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAClD;AACA,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACrD,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3D,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC1D,QAAQ,EAAE;AACV;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAChF,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5B,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO;AACtF,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;AACpE,QAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,UAAU,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AACtD,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AAClD,UAAU,EAAE;AACZ,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;AAC7B,QAAQ,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACjC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;AACnD,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAClD,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACjC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;AACpD,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AAClD,QAAQ,EAAE;AACV;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC;AACpB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7C,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1B;AACA,UAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;AACnE,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW;AAChF,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAChB,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxD,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACvD,UAAU,EAAE;AACZ;AACA,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAChB,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxD,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACvD,UAAU,EAAE;AACZ;AACA,UAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;AACvF,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;AAC1D,UAAU,EAAE;AACZ,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;AAC1D,UAAU,EAAE;AACZ,UAAU,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACpD,UAAU,EAAE;AACZ,UAAU,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACzC,UAAU,EAAE;AACZ,UAAU,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7B,UAAU,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/B,UAAU,CAAC;AACX;AACA,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AACjD,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAChB,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACpD,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnD,UAAU,EAAE;AACZ;AACA,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAChB,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACpD,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnD,UAAU,EAAE;AACZ;AACA,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;AAC1D,UAAU,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;AACnF,UAAU,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;AAC3F;AACA,UAAU,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9B,QAAQ,CAAC;AACT,MAAM,CAAC;AACP,MAAM,MAAM,CAAC,UAAU,CAAC;AACxB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACxF,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW;AACxB,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE;AAC7D,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;AAC1C;AACA,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACtB,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AACvD,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AACtC,MAAM,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,EAAE;AAC5F;AACA,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ;AACnC,MAAM,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,EAAE;AAC5F;AACA,MAAM,MAAM,CAAC,MAAM,CAAC;AACpB,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AAChC,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,YAAY,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG;AAC5E,YAAY,MAAM,CAAC;AACnB,QAAQ,CAAC;AACT;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE;AAC5C,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG;AAC3C,YAAY,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACvC;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM;AACtB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,GAAG;AACtH,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG;AAC7B,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACvD,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AACzC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACpE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACjC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG;AACjH,QAAQ,IAAI;AACZ,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AAC9E,oBAAoB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC5E,oBAAoB,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AACpD,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;AAC/E,oBAAoB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AAC7E,oBAAoB,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,YAAY,GAAG;AACf,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,CAAC,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AACjD,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9C,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK;AACnE,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,kBAAkB,GAAG;AACvE,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG;AAClH;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;AAC/D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9D,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,GAAG;AAC/E,QAAQ,SAAS,CAAC,IAAI,GAAG,MAAM,GAAG;AAClC,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACjE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/C,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE;AAChH,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;AACpC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACjC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,qBAAqB,CAAC,aAAa,EAAE,CAAC,GAAG;AACzD,aAAa,EAAE;AACf,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE;AAC1D,aAAa,EAAE;AACf,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACrE,oBAAoB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5C,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5B,oBAAoB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,gBAAgB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1C,oBAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;AACrC,gBAAgB,IAAI;AACpB,oBAAoB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,qBAAqB,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC/D,aAAa,GAAG;AAChB,QAAQ,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,kBAAkB,GAAG;AAC5E,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG;AAClH,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG;AACvF,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AACjE;AACA,QAAQ,UAAU,CAAC,MAAM,EAAE;AAC3B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,QAAQ,SAAS,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,CAAC,CAAC;AACjB,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG;AACzC,YAAY,qBAAqB;AACjC,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3F,gBAAgB,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF,oBAAoB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,oBAAoB,UAAU,CAAC,MAAM,EAAE;AACvC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3C;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE;;ACjezI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1C,YAAY,EAAE;AACd,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACzC,YAAY,EAAE;AACd,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChE,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAChE,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAQ,EAAE,EAAE,OAAO,CAAC,YAAY,GAAG;AACnC,YAAY,MAAM,CAAC;AACnB,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG;AACxE,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AAClD,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AAC5C,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE;AAC1D,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AACpD,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AAChE,QAAQ,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AAC9B,QAAQ,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACpC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;AACjC,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACjD,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC9D,gBAAgB,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAC/D,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,QAAQ,KAAK,CAAC,UAAU,EAAE;AAC1B,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG;AACtD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AACvD,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,QAAQ,SAAS,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM;AACtB,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;AAC1C,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AAC5C,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC3C,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AAC/C,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,GAAG,KAAK,IAAI;AAC/D;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;;ACjEA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,YAAY,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACrC,YAAY,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACjC,YAAY,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACnC,YAAY,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AAClE,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG;AAC5I,IAAI,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG;AAC5I,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG;AAChI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG;AAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,QAAQ,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AAC5B,IAAI,GAAG;AACP,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;AAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG;AACzE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG;AACtE;AACA,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG;AAC9B,IAAI,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,QAAQ,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACnC,YAAY,MAAM,CAAC;AACnB,QAAQ,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,QAAQ,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtG,YAAY,QAAQ,CAAC,IAAI,EAAE;AAC3B,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACzB,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACzB,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAC3B,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACzB,gBAAgB,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;AACnC,YAAY,GAAG;AACf,YAAY,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;AAC/E,gBAAgB,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;AAC9C,oBAAoB,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1C,oBAAoB,EAAE;AACtB,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,oBAAoB,EAAE;AACtB,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,QAAQ,GAAG,CAAC,GAAG,CAAC;AAChB,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE;AACnB,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1D,YAAY,EAAE;AACd,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1D,YAAY,EAAE;AACd,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAChG,YAAY,EAAE;AACd,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG;AACvC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE;AACxB,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnD,YAAY,EAAE;AACd,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7C,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7B,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9B,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,gBAAgB,KAAK,CAAC;AACtB,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;AAC5B,gBAAgB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClF,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC/D,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AACxB,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;AAClC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9B,YAAY,GAAG;AACf,QAAQ,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AAC9B,QAAQ,KAAK;AACb,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AAC9C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE;AACrC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AACxB,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;AAClC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACjC,oBAAoB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACrF,oBAAoB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACnC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAClC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7C,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACrD,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACrD,wBAAwB,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3E,oBAAoB,EAAE;AACtB,gBAAgB,CAAC;AACjB,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAY,GAAG;AACf,QAAQ,IAAI;AACZ,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACjC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC;AACnC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;AAC1B,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACvG,oBAAoB,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AACrD,oBAAoB,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AAChE,gBAAgB,EAAE;AAClB,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACpB,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC5E,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG;AAC7B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,QAAQ,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACpD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;AAC7D,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,qBAAqB,GAAG;AAClE,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG;AACjG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1B,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1B,QAAQ,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,GAAG,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,OAAO,IAAI;AAC/E,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE;AACnB,YAAY,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;AACrB,YAAY,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;AACrC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,YAAY,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACpC,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACzC,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;AACrD,QAAQ,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACtF,gBAAgB,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,QAAQ,GAAG;AACX,QAAQ,oBAAoB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,cAAc,EAAE;AACvE,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;AAChC,QAAQ,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,QAAQ,oBAAoB,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE;AAC3D,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACzC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACd,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7B,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;AAC5D,QAAQ,IAAI;AACZ,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;AAC7D,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AAC9B,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACtC,gBAAgB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,YAAY,IAAI,CAAC,CAAC;AAClB,gBAAgB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3B,gBAAgB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACtC,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC;AACzB,gBAAgB,OAAO,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9D,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe;AACrG,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,oBAAoB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,gBAAgB,EAAE,CAAC,IAAI;AACvB,gBAAgB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG;AACtG,YAAY,CAAC;AACb,YAAY,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACvD,YAAY,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG;AACjE,YAAY,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;AACzD,gBAAgB,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,gBAAgB,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,YAAY,CAAC;AACb,YAAY,wBAAwB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,EAAE;AACvF,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClE,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE;AAC/D,gBAAgB,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACxD,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACnF,gBAAgB,OAAO,CAAC,cAAc,EAAE;AACxC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/C,oBAAoB,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG;AACjD,gBAAgB,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE;AAC1C,YAAY,CAAC;AACb,YAAY,IAAI;AAChB,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAChE,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACjC,YAAY,OAAO,CAAC,cAAc,EAAE;AACpC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AAC3C,gBAAgB,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE;AACxC,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC7C,YAAY,wBAAwB,CAAC,SAAS,IAAI,CAAC,IAAI;AACvD,YAAY,oBAAoB,CAAC,SAAS,IAAI,CAAC,IAAI;AACnD,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7C,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE;AAC/D,gBAAgB,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC,YAAY,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAClD,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5D,oBAAoB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AACvE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACjD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACtE,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG;AACrD,YAAY,CAAC;AACb,QAAQ,CAAC;AACT;AACA,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE;AAC/D,gBAAgB,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,oBAAoB,CAAC,SAAS,IAAI,CAAC,IAAI;AACnD,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE;AAC/D,gBAAgB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC1D,QAAQ,CAAC;AACT;AACA,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;AACxD,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;AACvD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;AACvD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;AACpD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE;AACxD;AACA,QAAQ,MAAM;AACd,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;AACzD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;AACvD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE;AACrD;AACA,QAAQ,SAAS;AACjB,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,gBAAgB,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1H,oBAAoB,EAAE,CAAC,SAAS,CAAC;AACjC,wBAAwB,qBAAqB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AACxE,oBAAoB,EAAE,CAAC,SAAS,CAAC;AACjC,wBAAwB,qBAAqB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE;AAClE,oBAAoB,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACrD,oBAAoB,wBAAwB,CAAC,SAAS,IAAI,CAAC,IAAI;AAC/D,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACxE,oBAAoB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACpE,wBAAwB,OAAO,CAAC,cAAc,EAAE;AAChD,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,gCAAgC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACvD,4BAA4B,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG;AACzD,oBAAoB,CAAC;AACrB,oBAAoB,oBAAoB,CAAC,SAAS,IAAI,CAAC,IAAI;AAC3D,oBAAoB,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACrD,oBAAoB,wBAAwB,CAAC,SAAS,IAAI,CAAC,IAAI;AAC/D,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,gBAAgB,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;AACxH,oBAAoB,oBAAoB,CAAC,SAAS,IAAI,CAAC,IAAI;AAC3D,oBAAoB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,wBAAwB,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACrF,wBAAwB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3D,4BAA4B,OAAO,CAAC,cAAc,EAAE;AACpD,gCAAgC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,oCAAoC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AAC3D,gCAAgC,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE;AACxD,wBAAwB,CAAC;AACzB,oBAAoB,CAAC;AACrB,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC;AACzD,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAgB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACvF,YAAY,EAAE;AACd,YAAY,CAAC;AACb,gBAAgB,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACnD,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACjD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AAC9C,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AAClD,QAAQ,MAAM;AACd,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACnD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AACjD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AAC/C,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACzC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7C,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,gBAAgB,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9C,YAAY,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,QAAQ,GAAG,CAAC,OAAO,CAAC;AACpB,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAY,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,gBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE;AAC/D,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,gBAAgB,MAAM,CAAC,CAAC,CAAC;AACzB,YAAY,EAAE,CAAC,IAAI;AACnB,QAAQ,CAAC;AACT,QAAQ,wBAAwB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI;AACxD,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7C,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAC3B,oBAAoB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1E,gBAAgB,IAAI;AACpB,oBAAoB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5E,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,EAAE,CAAC,OAAO,CAAC;AACvB,gBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;AACxC,YAAY,IAAI;AAChB,gBAAgB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE;AAC1C,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,QAAQ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,YAAY,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;AACpD,QAAQ,GAAG;AACX,QAAQ,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI;AACpD,QAAQ,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE;AACnC,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG;AAChD,gBAAgB,EAAE,EAAE,SAAS,CAAC;AAC9B,oBAAoB,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI;AACzE,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1B,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AACpC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;AACtI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7D,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,GAAG;AACpD,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE;AAC5E,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI;AACjE,EAAE;;AC7bF,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;AAC1G,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/C,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3D,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,IAAI,EAAE,CAAC,IAAI,EAAE;AACb,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC1C;AACA,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAClF,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE;AACrE,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7B,QAAQ,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE;AAClC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAChF,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;AAChG,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG;AACxG,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAChD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAChD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,YAAY,GAAG,CAAC,EAAE,CAAC;AACnB,YAAY,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7C,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE;AAC5C,YAAY,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAClD,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE;AAC5C,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE;AACvD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,YAAY,GAAG;AACnB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AAC3B,QAAQ,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,YAAY,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,gBAAgB,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;AACxD,gBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;AACtD,gBAAgB,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACrE,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAClD,gBAAgB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,gBAAgB,IAAI,CAAC,CAAC,GAAG,EAAE;AAC3B,oBAAoB,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,wBAAwB,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG;AAC/D,4BAA4B,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE;AAC1B,oBAAoB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,wBAAwB,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG;AAC/D,4BAA4B,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACrE,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAChC,oBAAoB,YAAY,GAAG;AACnC,oBAAoB,EAAE,CAAC,SAAS,GAAG;AACnC,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AACrC,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM;AAC7E,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,gBAAgB,UAAU,CAAC,CAAC,CAAC,GAAG;AAChC,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,oBAAoB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;AACjD,oBAAoB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE;AAChD,gBAAgB,GAAG;AACnB,gBAAgB,YAAY,GAAG;AAC/B,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC3C,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;AAC3F,oBAAoB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,wBAAwB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,wBAAwB,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,4BAA4B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,wBAAwB,GAAG;AAC3B,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACpD,YAAY,EAAE;AACd,YAAY,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF,oBAAoB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,gBAAgB,GAAG;AACnB,gBAAgB,YAAY,GAAG;AAC/B,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,YAAY,EAAE;AACd,YAAY,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,gBAAgB,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,gBAAgB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,gBAAgB,YAAY,GAAG;AAC/B,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,YAAY,EAAE;AACd,YAAY,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;AAC/B,QAAQ,GAAG;AACX,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,YAAY,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC;AACjD,YAAY,EAAE;AACd,YAAY,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,gBAAgB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,gBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,oBAAoB,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE;AACxC,wBAAwB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,gBAAgB,GAAG;AACnB,gBAAgB,YAAY,GAAG;AAC/B,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,YAAY,EAAE;AACd,YAAY,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AACrC,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM;AAC7E,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,gBAAgB,UAAU,CAAC,CAAC,CAAC,GAAG;AAChC,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,oBAAoB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;AACpC,gBAAgB,GAAG;AACnB,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,YAAY,EAAE;AACd,YAAY,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC3C,gBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAChD,oBAAoB,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,wBAAwB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,wBAAwB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACpD,YAAY,EAAE;AACd,YAAY,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,oBAAoB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,gBAAgB,GAAG;AACnB,gBAAgB,YAAY,GAAG;AAC/B,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,YAAY,EAAE;AACd,YAAY,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,gBAAgB,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,gBAAgB,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,gBAAgB,YAAY,GAAG;AAC/B,gBAAgB,EAAE,CAAC,SAAS,GAAG;AAC/B,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;;AC/KF,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/C,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/C,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3D,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,IAAI,EAAE,CAAC,IAAI,EAAE;AACb,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC/D;AACA,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAClF,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE;AACtE,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE;AACpG;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,YAAY,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,gBAAgB,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE;AACrC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE;AAC9C,QAAQ,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,YAAY,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AAC9B,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,YAAY,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE;AACpC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAChF,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,IAAI,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,EAAE,SAAS,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACnD,IAAI,EAAE,KAAK,GAAG;AACd,IAAI,EAAE,CAAC,CAAC;AACR,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,IAAI,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,EAAE,SAAS,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACnD,IAAI,EAAE,KAAK,GAAG;AACd,IAAI,EAAE,CAAC,CAAC;AACR,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;AAChG,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,YAAY,GAAG;AACnB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC;AAC7C,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE;AACtC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,YAAY,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,YAAY,YAAY,GAAG;AAC3B,YAAY,EAAE,CAAC,SAAS,GAAG;AAC3B,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC;AACjC,gBAAgB,MAAM,CAAC,aAAa,CAAC;AACrC,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,YAAY,GAAG;AAC3B,YAAY,EAAE,CAAC,SAAS,GAAG;AAC3B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1D,YAAY,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AAC9B,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE;AAC5E,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AAC9D,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,gBAAgB,EAAE,CAAC,IAAI;AACvB,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,KAAK,CAAC,CAAC,KAAK,CAAC;AAC7B,gBAAgB,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG;AACxF,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,oBAAoB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,oBAAoB,MAAM,CAAC,CAAC,CAAC;AAC7B,gBAAgB,EAAE,CAAC,GAAG;AACtB,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE;AACrC,YAAY,YAAY,GAAG;AAC3B,YAAY,EAAE,CAAC,SAAS,GAAG;AAC3B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,YAAY,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,YAAY,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AACzC,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC;AACxC,gBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG;AACpF,YAAY,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,YAAY,YAAY,GAAG;AAC3B,YAAY,EAAE,CAAC,SAAS,GAAG;AAC3B,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;;AChHF,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1C,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC/H,QAAQ,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9H,QAAQ,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG;AAC5F,QAAQ,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG;AAC5F,QAAQ,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG;AACtE,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AAC3C,QAAQ,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC;AACrD,QAAQ,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AACnD,QAAQ,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AACnD,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AACpD,QAAQ,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC;AAC9D;AACA,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACnH;AACA,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACxC,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACrE,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACnC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;AACvC,YAAY,CAAC,KAAK,EAAE;AACpB,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7B,gBAAgB,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;AAChC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;AACxC,YAAY,GAAG;AACf;AACA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACnD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACnD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACnD,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG;AACnF,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE;AACxC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;AAChC,QAAQ,GAAG,CAAC,IAAI,CAAC;AACjB,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,YAAY,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG;AAChC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,GAAG;AAC7C,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9E,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACvB;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;AAC/D,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE;AACnF,QAAQ,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AAC9B,QAAQ,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,OAAO,EAAE;AACvC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG;AAClD,QAAQ,KAAK;AACb,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,MAAM,CAAC,CAAC;AACxB,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACjF,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjF,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACjF,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,gBAAgB,CAAC;AACjB,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE;AAC7D,oBAAoB,CAAC,IAAI,EAAE,CAAC,GAAG;AAC/B,YAAY,GAAG;AACf,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,QAAQ,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB,QAAQ,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,QAAQ,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,QAAQ,WAAW,GAAG;AACtB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,QAAQ,EAAE,EAAE,KAAK,CAAC,eAAe,GAAG;AACpC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,GAAG;AACpD,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC;AACjE,QAAQ,EAAE,CAAC,IAAI,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG;AACtB,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AACtC,YAAY,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG;AACrC,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,GAAG,CAAC;AACf,YAAY,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AACrF,QAAQ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,YAAY,EAAE,EAAE,KAAK,CAAC;AACtB,gBAAgB,MAAM,CAAC;AACvB,YAAY,KAAK,CAAC,eAAe,GAAG,GAAG,EAAE,KAAK,GAAG;AACjD,YAAY,OAAO,CAAC,WAAW,GAAG;AAClC,YAAY,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,IAAI;AAChE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,QAAQ,EAAE,EAAE,KAAK,CAAC,eAAe,GAAG;AACpC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,GAAG;AACpD,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC;AACtE,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAClC,QAAQ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG;AACjC,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACtH,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,YAAY,GAAG,CAAC,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,YAAY,EAAE,EAAE,KAAK,CAAC;AACtB,gBAAgB,MAAM,CAAC;AACvB,YAAY,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG;AAC7F,YAAY,KAAK,CAAC,eAAe,GAAG,GAAG,EAAE,KAAK,GAAG;AACjD,YAAY,kBAAkB,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE;AACtD,YAAY,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE;AACvE,YAAY,OAAO,CAAC,WAAW,GAAG;AAClC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,GAAG,CAAC;AAChB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,YAAY,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,YAAY,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AAC9C,gBAAgB,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE;AAC5D,YAAY,UAAU,GAAG;AACzB,YAAY,eAAe,GAAG;AAC9B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AACzI,YAAY,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC;AAC/C,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;AAChE,oBAAoB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAC9D,wBAAwB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC,WAAW,EAAE;AAChF,wBAAwB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;AACzC,wBAAwB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACjD,4BAA4B,OAAO,CAAC,WAAW;AAC/C,gCAAgC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE;AACpE,gCAAgC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;AACpG,wBAAwB,CAAC;AACzB,oBAAoB,CAAC;AACrB,oBAAoB,UAAU,GAAG;AACjC,oBAAoB,MAAM,CAAC,IAAI,CAAC;AAChC,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG;AACzD,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1B,YAAY,EAAE,CAAC,KAAK,CAAC,iBAAiB,GAAG;AACzC,gBAAgB,YAAY,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAC1D,QAAQ,CAAC;AACT,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG;AAC3C,gBAAgB,EAAE,EAAE,KAAK,CAAC,gBAAgB,GAAG;AAC7C,oBAAoB,MAAM,CAAC;AAC3B,gBAAgB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,oBAAoB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,wBAAwB,GAAG;AAC3B,4BAA4B,CAAC,OAAO,EAAE;AACtC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5C,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtC,oBAAoB,GAAG,CAAC,UAAU,CAAC;AACnC,oBAAoB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC1F,wBAAwB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG;AAClE,oBAAoB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AAC3F,wBAAwB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG;AAChF,oBAAoB,EAAE,EAAE,UAAU,CAAC;AACnC,wBAAwB,MAAM,CAAC;AAC/B,oBAAoB,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;AAC9D,oBAAoB,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI;AACjE,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC5C,oBAAoB,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;AACrG,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,GAAG,CAAC,GAAG,CAAC;AACxB,gBAAgB,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG;AAC3C,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACjC,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE;AAChE,oBAAoB,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE;AAClD,wBAAwB,MAAM,CAAC;AAC/B,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AAChD,oBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,wBAAwB,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC,EAAE;AAC/D,4BAA4B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,WAAW,GAAG;AACxG,wBAAwB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,wBAAwB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC/C,wBAAwB,GAAG,CAAC,UAAU,CAAC;AACvC,wBAAwB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC9F,4BAA4B,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,GAAG;AACtE,wBAAwB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;AAC9F,4BAA4B,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;AACrF,wBAAwB,EAAE,CAAC,UAAU,CAAC;AACtC,4BAA4B,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;AACtE,wBAAwB,IAAI;AAC5B,4BAA4B,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,wBAAwB,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAChD,oBAAoB,CAAC;AACrB,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC1D,wBAAwB,GAAG,CAAC,MAAM,CAAC;AACnC,wBAAwB,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC9C,4BAA4B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AACtE,gCAAgC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1E,4BAA4B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACzD,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC;AAChC,4BAA4B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AACtE,gCAAgC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1E,6BAA6B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1D,wBAAwB,CAAC;AACzB,wBAAwB,EAAE,CAAC,MAAM,CAAC;AAClC,4BAA4B,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5F,gCAAgC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,gCAAgC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvD,oCAAoC,OAAO,CAAC,WAAW,CAAC,OAAO,GAAG;AAClE,gCAAgC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,EAAE,CAAC,EAAE;AACnH,oCAAoC,CAAC,OAAO,EAAE;AAC9C,gCAAgC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACzD,oCAAoC,OAAO,CAAC,WAAW;AACvD,wCAAwC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE;AAC5E,wCAAwC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;AAC5G,gCAAgC,CAAC;AACjC,gCAAgC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,gCAAgC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9D,oCAAoC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrE,oCAAoC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;AACpE,gCAAgC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC,CAAC,CAAC;AACzF,oCAAoC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AAC3D,wCAAwC,OAAO,CAAC,WAAW,CAAC,OAAO,GAAG;AACtE,oCAAoC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;AACzG,oCAAoC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;AACrD,oCAAoC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,wCAAwC,OAAO,CAAC,WAAW;AAC3D,4CAA4C,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE;AAChF,4CAA4C,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;AAChH,oCAAoC,CAAC;AACrC,gCAAgC,CAAC;AACjC,gCAAgC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,4BAA4B,CAAC;AAC7B,oBAAoB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,oBAAoB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,wBAAwB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;AAC5C,4BAA4B,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;AACvE,wBAAwB,IAAI;AAC5B,4BAA4B,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7E,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,CAAC;AAC1B,wBAAwB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AAC3E,oBAAoB,CAAC;AACrB,oBAAoB,WAAW,GAAG;AAClC,oBAAoB,eAAe,GAAG;AACtC,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,gBAAgB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,gBAAgB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,oBAAoB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACtD,gBAAgB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,oBAAoB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACtD,gBAAgB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,oBAAoB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,wBAAwB,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC5C,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC3F,gBAAgB,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG;AAC9C,gBAAgB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACjD,oBAAoB,GAAG,CAAC,aAAa,CAAC;AACtC,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AACtD,wBAAwB,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;AACjG,oBAAoB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAC/D,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACnE,oBAAoB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,wBAAwB,EAAE,CAAC,EAAE,CAAC;AAC9B,4BAA4B,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACjE,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACtC,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AACtD,wBAAwB,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE;AACpE,gBAAgB,CAAC;AACjB,gBAAgB,UAAU,GAAG;AAC7B,gBAAgB,eAAe,GAAG;AAClC,YAAY,GAAG;AACf,QAAQ,OAAO,CAAC,GAAG,EAAE;AACrB,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,gBAAgB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAC9B,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;AACjD,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE;AAChE,oBAAoB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,oBAAoB,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE;AAClD,wBAAwB,MAAM,CAAC;AAC/B,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;AAClD,wBAAwB,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;AACxE,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC,WAAW,CAAC;AACvE,wBAAwB,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AAC5E,oBAAoB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,oBAAoB,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACvE,oBAAoB,WAAW,GAAG;AAClC,oBAAoB,eAAe,GAAG;AACtC,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnD,gBAAgB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,gBAAgB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,oBAAoB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACtD,gBAAgB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,oBAAoB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE;AACtD,gBAAgB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;AACvC,oBAAoB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,wBAAwB,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC5C,oBAAoB,GAAG;AACvB,gBAAgB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AAC9C,oBAAoB,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;AACtD,wBAAwB,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE;AACpE,oBAAoB,UAAU,GAAG;AACjC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;AACtC,oBAAoB,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,GAAG;AAC7E,wBAAwB,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,GAAG;AAC7E,gBAAgB,CAAC;AACjB,gBAAgB,eAAe,GAAG;AAClC,YAAY,GAAG;AACf,QAAQ,EAAE,EAAE,UAAU,CAAC;AACvB,YAAY,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAC9E,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC9C,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC9C,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;AAC7C,QAAQ,OAAO,CAAC,GAAG,EAAE;AACrB,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC9C,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC9C,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;AAC7C,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,MAAM;AACtB,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;AACzC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AAC9D,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AAC9D;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO;AACrB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACjC;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI;AACnD,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnC;AACA,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ;AAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK;AACjC;AACA,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACnD,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AACrF;AACA,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACjC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,QAAQ,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC/C,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;;AC3YA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;AAChD,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACnG,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,IAAI,GAAG;AACP,IAAI,OAAO,CAAC,EAAE,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,QAAQ,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE;AACtC,IAAI,GAAG;AACP,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,YAAY,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG;AACxD,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG;AACzD,QAAQ,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE;AACvC,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxF,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE;AACnF,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,UAAU,EAAE;AAC3D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,QAAQ,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAC5I,YAAY,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,UAAU,EAAE;AAC3D,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,YAAY,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACpF,QAAQ,GAAG;AACX,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/D,YAAY,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AACjF,gBAAgB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7F,QAAQ,GAAG;AACX,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvC,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,gBAAgB,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG;AAC1E,gBAAgB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;AACxC,oBAAoB,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG;AACzE,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACpC,gBAAgB,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG;AAC5D,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,YAAY,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG;AAC7E,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,GAAG;AAC9D,YAAY,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,gBAAgB,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE;AAC/C,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5C,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG;AACjE,gBAAgB,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE;AAC/C,YAAY,CAAC;AACb,YAAY,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE;AAC/C,YAAY,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,EAAE;AACV,QAAQ,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;AACpD,QAAQ,EAAE;AACV,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;AACnF,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,gBAAgB,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG;AAC5D,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACrE,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,CAAC;AAClB,gBAAgB,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG;AAC5D,gBAAgB,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE;AACxD,gBAAgB,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,GAAG;AAC9D,YAAY,CAAC;AACb,YAAY,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACnD,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACnC,QAAQ,EAAE;AACV,QAAQ,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,YAAY,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AACzD,QAAQ,EAAE;AACV,QAAQ,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,YAAY,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE;AAC1C,YAAY,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG;AACvE,QAAQ,EAAE;AACV,QAAQ,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,YAAY,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE;AAC1C,YAAY,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;;ACpGF,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7B,QAAQ,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9B,IAAI,EAAE,CAAC,OAAO,EAAE;AAChB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;AAChD;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,oBAAoB,GAAG;AAC3C,IAAI,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACvG,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,IAAI,GAAG;AACP,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC1E,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,YAAY,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxF,QAAQ,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,UAAU,EAAE;AAC3D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,QAAQ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,MAAM,CAAC;AAClB,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,GAAG;AACf,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AAC9G,YAAY,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG;AAC/G,QAAQ,GAAG;AACX,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvC,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;AACzE,QAAQ,EAAE;AACV,QAAQ,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,YAAY,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG;AAC7E,YAAY,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,GAAG;AACtF,YAAY,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACvC,gBAAgB,MAAM,CAAC,CAAC;AACxB,oBAAoB,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACjF,oBAAoB,IAAI,CAAC,CAAC,CAAC;AAC3B,gBAAgB,EAAE;AAClB,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/C,YAAY,GAAG;AACf,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/E,YAAY,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpH,gBAAgB,GAAG;AACnB,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACzH,YAAY,GAAG;AACf,YAAY,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE;AACtC,QAAQ,EAAE;AACV,QAAQ,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AACrE,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAgB,GAAG;AACnB,gBAAgB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,gBAAgB,GAAG;AACnB,gBAAgB,gBAAgB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,gBAAgB,IAAI;AACpB,gBAAgB,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE;AAC1C,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE;AACV,QAAQ,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,YAAY,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,gBAAgB,gBAAgB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,gBAAgB,IAAI;AACpB,gBAAgB,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1C,oBAAoB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG;AACnI,oBAAoB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC1E,gBAAgB,CAAC;AACjB,gBAAgB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAC7C,YAAY,CAAC;AACb,YAAY,gBAAgB,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI;AAC1D,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1C,QAAQ,EAAE;AACV,QAAQ,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,YAAY,gBAAgB,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI;AAC1D,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,kBAAkB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;AAC9D,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;;AC5GF,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AAClC,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AACjF,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AACrG,QAAQ,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AACjF,QAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/E,QAAQ,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG;AAC7D,QAAQ,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACrE,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,QAAQ,EAAE,EAAE,OAAO,CAAC;AACpB,YAAY,MAAM,CAAC,GAAG;AACtB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AACxC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,YAAY,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtC,QAAQ,GAAG;AACX,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACpD,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACnE,gBAAgB,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvE,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,YAAY,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5G,gBAAgB,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;AACjF,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,YAAY,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,gBAAgB,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AACnC,YAAY,GAAG;AACf,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,gBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACvC,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACnD,gBAAgB,YAAY,GAAG;AAC/B,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,gBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACvC,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACnD,gBAAgB,YAAY,GAAG;AAC/B,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;AACtC,QAAQ,EAAE;AACV,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACtC,YAAY,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACnE,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AACzC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9B,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACnC,gBAAgB,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACrC,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE;AAC9C,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5D,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5D,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACnC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAC9E,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACvD,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5E,oBAAoB,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,wBAAwB,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAC3C,wBAAwB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAC1E,gBAAgB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACnD,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5E,oBAAoB,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,wBAAwB,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAC3C,wBAAwB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,MAAM,CAAC;AAC1B,oBAAoB,YAAY,GAAG;AACnC,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;;AC1FF,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AAC1B,IAAI,GAAG,CAAC,YAAY,CAAC;AACrB;AACA,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1D,SAAS,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK;AAC/C,QAAQ,EAAE,CAAC,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE;AAChF,oBAAoB,EAAE,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM;AACpF;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG;AAC3E,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACtH,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;AACpE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,IAAI;AAC3E,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,IAAI;AAC7E,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzD,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpE,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACnE,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAChE,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1E,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpE,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxE,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClF,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,QAAQ,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACrD,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;AACrC;AACA,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7C,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClE,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3C,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE;AACzC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,EAAE;AACV,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5C,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzB,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,QAAQ,CAAC,IAAI,EAAE;AACf,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE;AACzC,QAAQ,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACxD,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,EAAE,EAAE,MAAM,CAAC,WAAW,GAAG;AACjC,YAAY,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,MAAM;AAC9F,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5C,QAAQ,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC3F,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;AACrB,YAAY,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE;AACtB,YAAY,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,CAAC;AAChB,YAAY,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACvC,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;AAC3D,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC1D,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAChE,YAAY,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACzD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;AACtD,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACvF,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE;AACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1F,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;AAChC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AACxB,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AACrE,gBAAgB,GAAG;AACnB,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,GAAG;AAC1G,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG;AACtF,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG;AAC1F,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,MAAM,CAAC;AACtB,gBAAgB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;AAC3C,YAAY,IAAI,CAAC,MAAM,GAAG;AAC1B,QAAQ,CAAC;AACT;AACA,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3B,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE;AAC7C,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;AACpC,YAAY,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;AAC7C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,oBAAoB,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1E,gBAAgB,IAAI;AACpB,YAAY,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,cAAc,GAAG;AAC1E,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;AAC7C,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG;AACjC,YAAY,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,oBAAoB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACnF,gBAAgB,IAAI;AACpB,YAAY,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG;AACnF,YAAY,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;AACxC,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE;AAC3C,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC/B,QAAQ,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;AACxC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACpE,YAAY,IAAI;AAChB,QAAQ,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;AACvC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,YAAY,GAAG;AACpE;AACA,QAAQ,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC/D,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1C,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,oBAAoB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,oBAAoB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7D,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACrD,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACjE,QAAQ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AACpE,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE;AACrD,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE;AAC9C,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAC9C,QAAQ,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACvC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE;AAC9C,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;AAC3D,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG;AAChF,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG;AAClC,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,QAAQ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAY,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AACpE,QAAQ,EAAE,CAAC,YAAY,EAAE;AACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG;AAC7B,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAChD,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAC9B,gBAAgB,SAAS,CAAC,CAAC,cAAc;AACzC,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE;AACxC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG;AACvD,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;AAC5F,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,SAAS,CAAC,CAAC,cAAc;AACzC,YAAY,GAAG;AACf;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,YAAY,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzD,QAAQ,GAAG;AACX,QAAQ,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG;AAChC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG;AACzE,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;AACtC,gBAAgB,IAAI,CAAC,CAAC,YAAY,CAAC;AACnC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC;AACrD,gBAAgB,MAAM,CAAC,CAAC,cAAc;AACtC,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACjC,YAAY,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE;AACrD,QAAQ,YAAY;AACpB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/E,YAAY,IAAI;AAChB,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AACrF,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;AACjF,QAAQ,OAAO;AACf,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,IAAI,CAAC,CAAC,YAAY,CAAC;AACnC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC;AACrD,gBAAgB,MAAM,CAAC,CAAC,cAAc;AACtC,YAAY,GAAG;AACf,QAAQ,OAAO,CAAC,UAAU,EAAE;AAC5B,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG;AACvD,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;AAC5F,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/E,YAAY,IAAI;AAChB;AACA,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG;AAClE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACzC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG;AAC/E;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG;AACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE;AACzC,QAAQ,MAAM,CAAC,UAAU,EAAE;AAC3B,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG;AACvD,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;AAC5F,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG;AAC/E;AACA,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,YAAY,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvD,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AAC9B,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG;AACvC,QAAQ,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;AACjC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AAC/C,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;AACxC,YAAY,GAAG;AACf,QAAQ,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;AACjC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AACpC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;AAC9C,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;AACzC,gBAAgB,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;AAClC,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,GAAG;AACf,QAAQ,KAAK;AACb,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG;AAC7G,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,oBAAoB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACxD,gBAAgB,EAAE;AAClB,gBAAgB,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC3D,gBAAgB,CAAC;AACjB,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AAC9C,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACpD,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACnH,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAChF,gBAAgB,EAAE;AAClB,gBAAgB,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9E,gBAAgB,EAAE;AAClB,gBAAgB,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/E,gBAAgB,EAAE;AAClB,gBAAgB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AAC9B,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,GAAG;AACf,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3B,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG;AAChE,gBAAgB,EAAE,CAAC,IAAI,CAAC;AACxB,oBAAoB,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG;AAClD,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/E,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACrB,YAAY,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1D,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG;AACpD,gBAAgB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE;AACnC,oBAAoB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,wBAAwB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC/F,oBAAoB,GAAG;AACvB,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG;AACpF,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC/B,gBAAgB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1C,YAAY,GAAG;AACf,YAAY,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1D,gBAAgB,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE;AACnC,oBAAoB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,wBAAwB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC1C,oBAAoB,GAAG;AACvB,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AAC9E,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAC/B,gBAAgB,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1C,YAAY,GAAG;AACf,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AACrD,YAAY,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnC,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;AACA,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACxC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,YAAY,MAAM,CAAC,CAAC,MAAM,EAAE;AAC5B,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,gBAAgB,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG;AAClE,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,YAAY,MAAM,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AAClE,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,GAAG;AAC9D,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,gBAAgB,QAAQ,CAAC,IAAI,EAAE;AAC/B,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACtD,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AACtD,oBAAoB,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3D,oBAAoB,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3D,gBAAgB,GAAG;AACnB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;AACF,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,YAAY,MAAM,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,GAAG;AAC7D,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,YAAY,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,gBAAgB,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAClC,oBAAoB,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE;AACrE,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,oBAAoB,IAAI;AACxB,wBAAwB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,gBAAgB,GAAG;AACnB,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7B,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,QAAQ,CAAC;AACpB,EAAE;AACF;AACA,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACxC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1D,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,YAAY,MAAM,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;AACtC,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,gBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACjD,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE;AAChD,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,oBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG;AAC5B,gBAAgB,GAAG;AACnB,gBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,oBAAoB,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACvC,wBAAwB,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAClD,oBAAoB,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzC,wBAAwB,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACjD,oBAAoB,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACzC,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE;AACF,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,YAAY,MAAM,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE;AAC7D,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,gBAAgB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,oBAAoB,CAAC,IAAI,EAAE;AAC3B,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;AACtD,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;AAC/C,oBAAoB,GAAG;AACvB,gBAAgB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,oBAAoB,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC;AACtC,wBAAwB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AAC7D,gBAAgB,GAAG;AACnB,gBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,oBAAoB,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,wBAAwB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI;AAC/D,gBAAgB,GAAG;AACnB,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE;;ACvdF,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,CAAC;AACf,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AACvD,IAAI,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;AAC5E,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE;AAC9C;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AACxC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;AAC5C,QAAQ,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG;AAC/D,YAAY,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,QAAQ,GAAG;AACX;AACA,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AACxC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,QAAQ,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACzC,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,gBAAgB,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,gBAAgB,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAClC,YAAY,IAAI;AAChB,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC3F,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;AACzC;AACA,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AACpC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;AAC5C,QAAQ,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG;AAC/D,YAAY,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,QAAQ,GAAG;AACX;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,QAAQ,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClE,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/C,gBAAgB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/C,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI;AAChB,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACxE,QAAQ,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;AAC/B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG;AAC3H,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7B,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG;AACrC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;AACtD,YAAY,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACjC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;AACpC,gBAAgB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,YAAY,CAAC;AACb,YAAY,IAAI;AAChB,gBAAgB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;AACnG,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS;AACpD,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1C,QAAQ,GAAG;AACX,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;AAC7F,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1B,CAAC;AACD;AACA,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,CAAC;AACf,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;AACpC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI;AACpE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG;AAC7B,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAClE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpB,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;AACrB,QAAQ,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,CAAC;AACpB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACtC,gBAAgB,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,IAAI,GAAG;AACP,CAAC;AACD;AACA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACrB,QAAQ,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;AAClC,QAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;AAC1B,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG;AAC7C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;AAC5B,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACnC,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG;AAC3D,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,YAAY,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC9C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AACpB,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AAC1B,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG;AAC7E,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,YAAY,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,GAAG;AACjE,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,CAAC;AACL,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AACpB,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AAC1B,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG;AAC1D,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,YAAY,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG;AAC5D,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/B,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1B,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAgB,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;AACnE,QAAQ,GAAG;AACX,IAAI,GAAG;AACP,EAAE;AACF;AACA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACjC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;AACjC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5B,QAAQ,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpC,IAAI,GAAG;AACP,EAAE;AACF;AACA,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,MAAM;AAClC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AAClB,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG;AACjG,IAAI,IAAI;AACR,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC1G,CAAC;AACD;AACA,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACrE,CAAC;AACD;AACA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;AAC5F,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS;AACzD,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,QAAQ,EAAE,EAAE,IAAI,CAAC;AACjB,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI;AACxC,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACzB,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC7B,QAAQ,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAChC,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAChC,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG;AACxD;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;AACtD,QAAQ,KAAK,EAAE;AACf,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AAClC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AAClC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACzB,oBAAoB,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC1C,gBAAgB,IAAI;AACpB,oBAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;AACjF,YAAY,GAAG;AACf,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,CAAC;AACV,QAAQ,GAAG,CAAC,MAAM,CAAC;AACnB,QAAQ,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,UAAU;AACtD,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG;AACxD,YAAY,EAAE,CAAC,MAAM,CAAC;AACtB,gBAAgB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;AACrD,YAAY,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI;AACxD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;AAC/C,YAAY,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAC1D,YAAY,EAAE,CAAC,MAAM,CAAC;AACtB,gBAAgB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACjD,YAAY,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,GAAG;AAC1D,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AACtD,IAAI,EAAE,CAAC,MAAM,CAAC;AACd,QAAQ,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,GAAG;AAClD,EAAE;AACF;AACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC3D,EAAE;;ACpOF,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;AACxE,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;AAC7D,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7D,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAClC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5E,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AACpG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE;AACzE;AACA,IAAI,EAAE,EAAE,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;AACxC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAG;AAChD,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG;AACzG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI;AACvD,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG;AAClC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5D,IAAI,CAAC;AACL;AACA,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzB,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACjC,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG;AACtG,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG;AACtG,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG;AACxD,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG;AACpC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;AAClE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAY,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,gBAAgB,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,oBAAoB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;AAC/E,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAoB,EAAE,CAAC,UAAU,CAAC;AAClC,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;AAC7E,oBAAoB,IAAI;AACxB,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG;AACvE,gBAAgB,CAAC;AACjB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG;AAC/E,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,gBAAgB,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACrF,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AAC/B;AACA,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AACvD,YAAY,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,gBAAgB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;AACpD,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;AACzE,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG;AACnE,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACrF,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AAC/B;AACA,YAAY,EAAE;AACd,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;AACzD,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACxD,YAAY,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC;AAClC,gBAAgB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG;AAC5D,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AAC9E,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AACxC,aAAa,EAAE;AACf,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzB,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG;AAC3F,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG;AACtC,QAAQ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACpD,QAAQ,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;AAC5E,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAgB,EAAE,CAAC,WAAW,CAAC;AAC/B,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;AAC3E,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG;AACnE,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG;AAC3E,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACxD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACnF,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AAC5B,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;AACrB,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;AACrB,QAAQ,WAAW,CAAC,CAAC,GAAG,CAAC;AACzB,QAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,UAAU,CAAC,CAAC,EAAE;AACtB,IAAI,EAAE;AACN,CAAC;;AC9GD,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAClF,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACxE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AACjG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU;AACxB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACb,GAAG;AACH;AACA,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5C,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AAC/E,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7B,gBAAgB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,oBAAoB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7C,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;AACnD,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,WAAW,CAAC,CAAC,GAAG,CAAC;AAC7B,YAAY,SAAS,CAAC,CAAC,SAAS,CAAC;AACjC,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;AACnE,qDAAqD,SAAS,CAAC,MAAM,CAAC;AACtE,qDAAqD,SAAS,CAAC,IAAI,EAAE;AACrE,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACnG,SAAS,CAAC;AACV,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9F,SAAS,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC;AACjC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC;AAC3E,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;AAC/F,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1E,SAAS,CAAC;AACV,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AACnG,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7F,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;AACvB,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;AACxC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;AACnF,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AAClG,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU;AAC5B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;AAC7D,SAAS,GAAG;AACZ,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7C,YAAY,GAAG,CAAC,EAAE,CAAC;AACnB,YAAY,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AACrC,gBAAgB,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE;AACzC,YAAY,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AAC9C,QAAQ,EAAE;AACV,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1E,SAAS,CAAC;AACV,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AAC1B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;AACxC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO;AAC1C,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ;AACrD,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AAClG,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU;AAC5B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;AAC7D,SAAS,GAAG;AACZ,QAAQ,OAAO,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACtF,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AAC9C,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,KAAK;AACL;AACA;;ACtFA,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG;AACjC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACnC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AACzC,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AACjE,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1B,gBAAgB,GAAG,CAAC,IAAI,CAAC;AACzB,gBAAgB,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1C,oBAAoB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5C,oBAAoB,EAAE,CAAC,IAAI,CAAC;AAC5B,wBAAwB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5C,oBAAoB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;AACtD,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACjC,gBAAgB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjD,gBAAgB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;AACrD,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACzE,gBAAgB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AACjC,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACjC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5B,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAClC,oBAAoB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,oBAAoB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxD,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACrC,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzE,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;AAChF,8CAA8C,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG;AAC7F,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK;AAC5F,gBAAgB,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM;AAC7F,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;AACjC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AACzB,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACtB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AACtD,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,IAAI;AACR,EAAE;AACF;AACA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7B,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;AACvB,QAAQ,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE;AACjC,QAAQ,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE;AACjC,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACtB,IAAI,EAAE,CAAC,OAAO,EAAE;AAChB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AAC3B,QAAQ,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AAC3F,IAAI,IAAI,CAAC,CAAC;AACV,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE;AACnC,QAAQ,MAAM,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AAC7F,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7G,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,QAAQ,OAAO,CAAC,CAAC,WAAW,CAAC;AAC7B,QAAQ,UAAU,CAAC,CAAC,cAAc,CAAC;AACnC,QAAQ,UAAU,CAAC,CAAC,cAAc,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC;AACrB,QAAQ,OAAO,CAAC,CAAC,OAAO,CAAC;AACzB,QAAQ,YAAY,CAAC,CAAC,IAAI,CAAC;AAC3B,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AACtB,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACtE,QAAQ,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACvB,IAAI,GAAG;AACP,EAAE;AACF;AACA,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvF,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvB,YAAY,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAC7C,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AACxD,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtF,YAAY,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5C,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,GAAG;AACX,IAAI,IAAI;AACR,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;AACrB,QAAQ,KAAK,CAAC,CAAC,KAAK;AACpB,IAAI,EAAE;AACN,EAAE;AACF;;ACnGA,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;AAChD,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACrC,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AACxC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACxB,YAAY,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE;AACjD,oBAAoB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE;AACjD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACxD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7E,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AACxC,gBAAgB,GAAG,CAAC,KAAK,CAAC;AAC1B,gBAAgB,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAClC,oBAAoB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;AACzC,oBAAoB,EAAE,CAAC,MAAM,CAAC;AAC9B,wBAAwB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE;AACpE,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG;AAC/F,gBAAgB,EAAE,CAAC,GAAG,CAAC;AACvB,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;AAC/B,gBAAgB,IAAI;AACpB,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC;AAChC,YAAY,GAAG;AACf,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACzB,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,gBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,oBAAoB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE;AACnD,oBAAoB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,oBAAoB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,oBAAoB,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG;AACtE,gBAAgB,GAAG;AACnB,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;;ACrCF,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7C,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/G,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;AACzC;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,QAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3B,YAAY,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACtD,YAAY,IAAI,CAAC,CAAC,IAAI,EAAE;AACxB,gBAAgB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AACnD,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AAClD,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,IAAI,EAAE;AACxB,gBAAgB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9F,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AAClD,gBAAgB,KAAK,CAAC;AACtB,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7B,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AAC5C,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACzC,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC5C,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AAC/C,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC3C,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACvC,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1C,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1C,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,qBAAqB,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,IAAI;AAC5D,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9D,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;AAC5F,oBAAoB,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1C,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG;AAC3F,oBAAoB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;AACzC,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG;AAC3F,oBAAoB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AACvD,gBAAgB,CAAC;AACjB,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;AACpC,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5B,gBAAgB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,oBAAoB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI;AACxF,oBAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,oBAAoB,MAAM,CAAC,QAAQ,CAAC;AACpC,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;AAC1E,gBAAgB,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE;AAChE,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACzB,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,gBAAgB,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACxE,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,UAAU,CAAC;AAC9B,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACnD,gBAAgB,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1E,oBAAoB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC9C,oBAAoB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAChE,gBAAgB,GAAG;AACnB,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACrE,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;;AClFA,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3E,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/G,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG;AAC/C,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC;AACA,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC7E,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC7B,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,EAAE,MAAM,CAAC;AACnB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;AACxB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG;AAC/C,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,IAAI;AAC9E,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY;AACvD,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU;AAChE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW;AAC5C,QAAQ,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;AAChD,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;AAC1E;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG;AAClD;AACA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AACrE,QAAQ,QAAQ,CAAC,KAAK,EAAE;AACxB,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;AACtB,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACxF,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG;AACzG,YAAY,EAAE,CAAC,IAAI;AACnB,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG;AACtD,YAAY,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3C,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AACtD,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;AACzC;AACA,YAAY,EAAE,CAAC,IAAI;AACnB,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;AACvE,YAAY,IAAI,CAAC,KAAK,EAAE;AACxB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;AAC/B,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC1E,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AAChC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AAC/F,gBAAgB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE;AAC3F,gBAAgB,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,eAAe,EAAE;AAC7D,cAAc,GAAG;AACjB;AACA,YAAY,EAAE,CAAC,KAAK;AACpB,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG;AACtD,YAAY,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE;AAC1C,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzD,kBAAkB,qBAAqB,CAAC,aAAa,EAAE,SAAS,GAAG;AACnE,cAAc,EAAE;AAChB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,kBAAkB,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE;AAC5D,cAAc,EAAE;AAChB,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,kBAAkB,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,IAAI;AAC5F,cAAc,GAAG;AACjB,UAAU,GAAG;AACb,QAAQ,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG;AACrE,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7B,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE;AAC9C,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;AACvC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC9D,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;AAC9D,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE;AACxE,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;AAC3C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC;AACtC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE;AACtC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE;AACvE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AAC9B,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE;AAClD,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAChE,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;AACjE,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE;AACjD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE;AAC/C,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;AAC7C,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC;AACxC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE;AACxC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE;AACzE,UAAU,GAAG;AACb,IAAI,CAAC;AACL;AACA,IAAI,qBAAqB;AACzB,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,YAAY,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,YAAY,QAAQ,CAAC,MAAM,GAAG;AAC9B,QAAQ,EAAE;AACV,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,YAAY,YAAY,GAAG;AAC3B,QAAQ,EAAE;AACV,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,YAAY,aAAa,GAAG;AAC5B,QAAQ,GAAG;AACX,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,GAAG;AAC/C,QAAQ,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,GAAG;AACxC,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnC,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AACxC,YAAY,YAAY,GAAG;AAC3B,YAAY,aAAa,GAAG;AAC5B,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,IAAI,CAAC,MAAM,GAAG;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;AAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC;AACpB,EAAE;;AC7JF,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;AACjC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACZ,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/E,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG;AACjD,EAAE;AACF,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACxB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,EAAE;AACF;AACA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACxB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AACrB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAQ,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,EAAE;AACF;AACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAC1C,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7B,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClB,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;AAClB,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE;AACrB,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI;AACtG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI;AACnG,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,IAAI,IAAI,SAAS,EAAE;AAC9B,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3D,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI;AACpF,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI;AACtF,YAAY,CAAC;AACb,QAAQ,KAAK,CAAC;AACd,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE;AACjB,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI;AACzF,QAAQ,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AACxE,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC1C,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,gBAAgB,CAAC;AACjB,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC/F,YAAY,CAAC;AACb,QAAQ,KAAK,CAAC;AACd,IAAI,OAAO,CAAC;AACZ,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AACzD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1B,EAAE;AACF;AACA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAChE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAI;AACvG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI;AACjH,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,YAAY,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI;AACvH,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;AACF;AACA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC7B,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;AACvB,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;AAChC,QAAQ,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;AAChC,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AACxB,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,QAAQ,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7B,QAAQ,GAAG,CAAC,CAAC,KAAK;AAClB,IAAI,EAAE,CAAC,OAAO,EAAE;AAChB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;AAClC,QAAQ,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,QAAQ,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACjC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACnB,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;AAC/D,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;AACxE,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACvB,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG;AAC/D,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE;AACV,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAC3C,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3B,gBAAgB,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvE,oBAAoB,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG;AACpC,gBAAgB,IAAI;AACpB,oBAAoB,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG;AACvC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;AAChD,oBAAoB,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG;AACpC,gBAAgB,IAAI;AACpB,oBAAoB,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG;AACvC,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAClC,oBAAoB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;AAC9E,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;AAClE,oBAAoB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;AAClE,oBAAoB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;AACtF,oBAAoB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,wBAAwB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG;AACxF,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AACtC,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAC3C,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;AACnD,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;AAC9E,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG;AAC5E,oBAAoB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACjC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,wBAAwB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;AACzE,2BAA2B,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AACvE,4BAA4B,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;AACzC,oBAAoB,GAAG;AACvB,oBAAoB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,wBAAwB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC7C,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,EAAE;;ACjLF,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,IAAI,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3B,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,CAAC,CAAC;AACpB,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE;AACjD,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE;AACjD,gBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;AACnD,YAAY,EAAE;AACd,YAAY,KAAK,CAAC,CAAC,CAAC;AACpB,gBAAgB,KAAK,CAAC,CAAC,CAAC;AACxB,oBAAoB,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;AACpC,oBAAoB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;AACjC,oBAAoB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACnC,gBAAgB,EAAE;AAClB,gBAAgB,OAAO,CAAC,CAAC,CAAC;AAC1B,oBAAoB,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;AACvC,oBAAoB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;AACjC,oBAAoB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,GAAG;AACtF,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE;AAChF,EAAE;;ACzBF,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;AACxJ;AACA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3D,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa;AAC7D,YAAY,YAAY,GAAG;AAC3B,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,MAAM,CAAC;AACnB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,EAAE,CAAC,CAAC;AACZ,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACpC,YAAY,EAAE,CAAC,MAAM,CAAC;AACtB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;AACpD,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAClC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACjC,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG;AAC1B,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACzB,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACjC,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;AAC/B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN,EAAE;;AC5BF,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnF,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzB,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AACtB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClC,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7D,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAChC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI;AACpE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAChC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI;AACpE,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;AAChD,QAAQ,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAgB,IAAI,CAAC,CAAC,KAAK,CAAC;AAC5B,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;AAClC,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACjC,YAAY,EAAE;AACd,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACzE,IAAI,EAAE;AACN,CAAC;;AC1BD,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AACnC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB;AACA,MAAM,CAAC,QAAQ,CAAC;AAChB,CAAC;AACD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,QAAQ,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE;AACvD,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG;AAChC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG;AAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,YAAY,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC;AACpD,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG;AAChC,QAAQ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE;AAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE;AACvD,IAAI,CAAC;AACL,CAAC;AACD,IAAI","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current diagram\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the diagram.\n * @namespace dc_graph\n * @version 0.9.5\n * @example\n * // Example chaining\n * diagram.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.9.5',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i<cascade.length; ++i) {\n if(cascade[i].n === n) {\n if(f)\n cascade[i].f = f;\n else cascade.splice(i, 1);\n return ret;\n } else if(cascade[i].n > n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction named_children() {\n var _children = {};\n var f = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n if(f.reject) {\n var reject = f.reject(id, object);\n if(reject) {\n console.groupCollapsed(reject);\n console.trace();\n console.groupEnd();\n return this;\n }\n }\n // do not notify unnecessarily\n if(_children[id] === object)\n return this;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(this);\n return this;\n };\n f.enum = function() {\n return Object.keys(_children);\n };\n f.nameOf = function(o) {\n var found = Object.entries(_children).find(function(kv) {\n return kv[1] == o;\n });\n return found ? found[0] : null;\n };\n return f;\n}\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\nfunction onetime_trace(level, message) {\n var said = false;\n return function() {\n if(said)\n return;\n if(level === 'trace') {\n console.groupCollapsed(message);\n console.trace();\n console.groupEnd();\n }\n else\n console[level](message);\n said = true;\n };\n}\n\nfunction deprecation_warning(message) {\n return onetime_trace('warn', message);\n}\n\nfunction trace_function(level, message, f) {\n var dep = onetime_trace(level, message);\n return function() {\n dep();\n return f.apply(this, arguments);\n };\n}\nfunction deprecate_function(message, f) {\n return trace_function('warn', message, f);\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n\nfunction is_ie() {\n var ua = window.navigator.userAgent;\n\n return(ua.indexOf('MSIE ') > 0 ||\n ua.indexOf('Trident/') > 0 ||\n ua.indexOf('Edge/') > 0);\n}\n\nfunction is_safari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\n\n// polyfill Object.assign for IE\n// it's just too useful to do without\nif (typeof Object.assign != 'function') {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) { // .length of function is 2\n 'use strict';\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) { // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true\n });\n}\n\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, 'includes', {\n value: function(valueToFind, fromIndex) {\n\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (If fromIndex is undefined, this step produces the value 0.)\n var n = fromIndex | 0;\n\n // 5. If n >= 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. If k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat, while k < len\n while (k < len) {\n // a. Let elementK be the result of ? Get(O, ! ToString(k)).\n // b. If SameValueZero(valueToFind, elementK) is true, return true.\n if (sameValueZero(o[k], valueToFind)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n }\n });\n}\n\nif (!Object.entries) {\n Object.entries = function( obj ){\n var ownProps = Object.keys( obj ),\n i = ownProps.length,\n resArray = new Array(i); // preallocate the Array\n while (i--)\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n return resArray;\n };\n}\n\n// https://github.com/KhaledElAnsari/Object.values\nObject.values = Object.values ? Object.values : function(obj) {\n var allowedTypes = [\"[object String]\", \"[object Object]\", \"[object Array]\", \"[object Function]\"];\n var objType = Object.prototype.toString.call(obj);\n\n if(obj === null || typeof obj === \"undefined\") {\n\tthrow new TypeError(\"Cannot convert undefined or null to object\");\n } else if(!~allowedTypes.indexOf(objType)) {\n\treturn [];\n } else {\n\t// if ES6 is supported\n\tif (Object.keys) {\n\t return Object.keys(obj).map(function (key) {\n\t\treturn obj[key];\n\t });\n\t}\n\n\tvar result = [];\n\tfor (var prop in obj) {\n\t if (obj.hasOwnProperty(prop)) {\n\t\tresult.push(obj[prop]);\n\t }\n\t}\n\n\treturn result;\n }\n};\n\nfunction getBBoxNoThrow(elem) {\n // firefox seems to have issues with some of my texts\n // just catch for now\n try {\n return elem.getBBox();\n } catch(xep) {\n return {x: 0, y: 0, width:0, height: 0};\n }\n}\n","function property_if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n}\n\nfunction property_interpolate(value, curr) {\n return function(o, last) {\n return d3.interpolate(last(o), curr(o))(value(o));\n };\n}\n\nfunction multiply_properties(pred, props, blend) {\n var props2 = {};\n for(var p in props)\n props2[p] = blend(pred, param(props[p]));\n return props2;\n}\n\nfunction conditional_properties(pred, props) {\n return multiply_properties(pred, props, property_if);\n}\n\nfunction node_edge_conditions(npred, epred, props) {\n var nprops = {}, eprops = {}, badprops = [];\n for(var p in props) {\n if(/^node/.test(p))\n nprops[p] = props[p];\n else if(/^edge/.test(p))\n eprops[p] = props[p];\n else badprops.push(p);\n }\n if(badprops.length)\n console.error('only know how to deal with properties that start with \"node\" or \"edge\"', badprops);\n var props2 = npred ? conditional_properties(npred, nprops) : {};\n if(epred)\n Object.assign(props2, conditional_properties(epred, eprops));\n return props2;\n}\n\nfunction cascade(parent) {\n return function(level, add, props) {\n for(var p in props) {\n if(!parent[p])\n throw new Error('unknown attribute ' + p);\n parent[p].cascade(level, add ? props[p] : null);\n }\n return parent;\n };\n}\n\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\n// outputs the array with adjacent identical lines collapsed to one\nfunction uniq(a) {\n var ret = [];\n a.forEach(function(x, i) {\n if(i === 0 || x !== a[i-1])\n ret.push(x);\n });\n return ret;\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) {\n throw new TypeError('\"this\" is null or not defined');\n }\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, << kValue, k, O >>)).\n // d. If testResult is true, return kValue.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) {\n return kValue;\n }\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return undefined.\n return undefined;\n }\n });\n}\n\nvar script_path = function() {\n var _path;\n return function() {\n if(_path === undefined) {\n // adapted from http://stackoverflow.com/a/18283141/676195\n _path = null; // only try once\n var filename = 'dc.graph.js';\n var scripts = document.getElementsByTagName('script');\n if (scripts && scripts.length > 0) {\n for (var i in scripts) {\n if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) {\n _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1');\n break;\n }\n }\n }\n }\n return _path;\n };\n}();\n\ndc_graph.event_coords = function(diagram) {\n var bound = diagram.root().node().getBoundingClientRect();\n return diagram.invertCoord([d3.event.clientX - bound.left,\n d3.event.clientY - bound.top]);\n};\n\nfunction promise_identity(x) {\n return Promise.resolve(x);\n}\n\n// http://stackoverflow.com/questions/7044944/jquery-javascript-to-detect-os-without-a-plugin\nvar is_a_mac = navigator.platform.toUpperCase().indexOf('MAC')!==-1;\n\n// https://stackoverflow.com/questions/16863917/check-if-class-exists-somewhere-in-parent-vanilla-js\nfunction ancestor_has_class(element, classname) {\n if(d3.select(element).classed(classname))\n return true;\n return element.parentElement && ancestor_has_class(element.parentElement, classname);\n}\n\nif (typeof SVGElement.prototype.contains == 'undefined') {\n SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n}\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {[init, root, row, tree, place, sib, push, pop, skip,] finish, nodeid, sourceid, targetid}\n return function(nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = callbacks.sourceid(e),\n head = callbacks.targetid(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n var nmap = nodes.reduce(function(m, n) {\n var key = callbacks.nodeid(n);\n m[key] = n;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = callbacks.nodeid(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n var target = nmap[callbacks.targetid(e)];\n if(ei && callbacks.sib)\n callbacks.sib(false, nmap[callbacks.targetid(outmap[key][ei-1])], target);\n callbacks.push && callbacks.push();\n place_tree(target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n); });\n else {\n roots = nodes.filter(function(n) { return !indegree[callbacks.nodeid(n)]; });\n if(nodes.length && !roots.length) // all nodes are in a cycle\n roots = [nodes[0]];\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row && callbacks.row(n) || 0);\n });\n callbacks.finish(rows);\n };\n};\n\n// basically, see if it's any simpler if we start from scratch\n// (well, of course it's simpler because we have less callbacks)\n// same caveats as above\ndc_graph.undirected_dfs = function(callbacks) { // {[comp, node], nodeid, sourceid, targetid}\n return function(nodes, edges) {\n var adjacencies = edges.reduce(function(m, e) {\n var tail = callbacks.sourceid(e),\n head = callbacks.targetid(e);\n if(!m[tail]) m[tail] = [];\n if(!m[head]) m[head] = [];\n m[tail].push(head);\n m[head].push(tail);\n return m;\n }, {});\n var nmap = nodes.reduce(function(m, n) {\n var key = callbacks.nodeid(n);\n m[key] = n;\n return m;\n }, {});\n var found = {};\n function recurse(n) {\n var nid = callbacks.nodeid(n);\n callbacks.node(compid, n);\n found[nid] = true;\n if(adjacencies[nid])\n adjacencies[nid].forEach(function(adj) {\n if(!found[adj])\n recurse(nmap[adj]);\n });\n }\n var compid = 0;\n nodes.forEach(function(n) {\n if(!found[callbacks.nodeid(n)]) {\n callbacks.comp && callbacks.comp(compid);\n recurse(n);\n ++compid;\n }\n });\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, need, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n if(need)\n need.forEach(function(k) {\n if(!preserved[k]) { // hasn't been created, needs to be\n create(k, preserved[k] = {}, null);\n assign(preserved[k], null);\n }\n if(!keep[k]) { // wasn't in list, should be\n wlist.push(preserved[k]);\n keep[k] = true;\n }\n });\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\ndc_graph.shape_presets = {\n egg: {\n // not really: an ovoid should be two half-ellipses stuck together\n // https://en.wikipedia.org/wiki/Oval\n generator: 'polygon',\n preset: function() {\n return {sides: 100, distortion: -0.25};\n }\n },\n triangle: {\n generator: 'polygon',\n preset: function() {\n return {sides: 3};\n }\n },\n rectangle: {\n generator: 'polygon',\n preset: function() {\n return {sides: 4};\n }\n },\n diamond: {\n generator: 'polygon',\n preset: function() {\n return {sides: 4, rotation: 45};\n }\n },\n trapezium: {\n generator: 'polygon',\n preset: function() {\n return {sides: 4, distortion: -0.5};\n }\n },\n parallelogram: {\n generator: 'polygon',\n preset: function() {\n return {sides: 4, skew: 0.5};\n }\n },\n pentagon: {\n generator: 'polygon',\n preset: function() {\n return {sides: 5};\n }\n },\n hexagon: {\n generator: 'polygon',\n preset: function() {\n return {sides: 6};\n }\n },\n septagon: {\n generator: 'polygon',\n preset: function() {\n return {sides: 7};\n }\n },\n octagon: {\n generator: 'polygon',\n preset: function() {\n return {sides: 8};\n }\n },\n invtriangle: {\n generator: 'polygon',\n preset: function() {\n return {sides: 3, rotation: 180};\n }\n },\n invtrapezium: {\n generator: 'polygon',\n preset: function() {\n return {sides: 4, distortion: 0.5};\n }\n },\n square: {\n generator: 'polygon',\n preset: function() {\n return {\n sides: 4,\n regular: true\n };\n }\n },\n plain: {\n generator: 'rounded-rect',\n preset: function() {\n return {\n noshape: true\n };\n }\n },\n house: {\n generator: 'elaborated-rect',\n preset: function() {\n return {\n get_points: function(rx, ry) {\n return [\n {x: rx, y: ry*2/3},\n {x: rx, y: -ry/2},\n {x: 0, y: -ry},\n {x: -rx, y: -ry/2},\n {x: -rx, y: ry*2/3}\n ];\n },\n minrx: 30\n };\n }\n },\n invhouse: {\n generator: 'elaborated-rect',\n preset: function() {\n return {\n get_points: function(rx, ry) {\n return [\n {x: rx, y: ry/2},\n {x: rx, y: -ry*2/3},\n {x: -rx, y: -ry*2/3},\n {x: -rx, y: ry/2},\n {x: 0, y: ry}\n ];\n },\n minrx: 30\n };\n }\n },\n rarrow: {\n generator: 'elaborated-rect',\n preset: function() {\n return {\n get_points: function(rx, ry) {\n return [\n {x: rx, y: ry},\n {x: rx, y: ry*1.5},\n {x: rx + ry*1.5, y: 0},\n {x: rx, y: -ry*1.5},\n {x: rx, y: -ry},\n {x: -rx, y: -ry},\n {x: -rx, y: ry}\n ];\n },\n minrx: 30\n };\n }\n },\n larrow: {\n generator: 'elaborated-rect',\n preset: function() {\n return {\n get_points: function(rx, ry) {\n return [\n {x: -rx, y: ry},\n {x: -rx, y: ry*1.5},\n {x: -rx - ry*1.5, y: 0},\n {x: -rx, y: -ry*1.5},\n {x: -rx, y: -ry},\n {x: rx, y: -ry},\n {x: rx, y: ry}\n ];\n },\n minrx: 30\n };\n }\n },\n rpromoter: {\n generator: 'elaborated-rect',\n preset: function() {\n return {\n get_points: function(rx, ry) {\n return [\n {x: rx, y: ry},\n {x: rx, y: ry*1.5},\n {x: rx + ry*1.5, y: 0},\n {x: rx, y: -ry*1.5},\n {x: rx, y: -ry},\n {x: -rx, y: -ry},\n {x: -rx, y: ry*1.5},\n {x: 0, y: ry*1.5},\n {x: 0, y: ry},\n ];\n },\n minrx: 30\n };\n }\n },\n lpromoter: {\n generator: 'elaborated-rect',\n preset: function() {\n return {\n get_points: function(rx, ry) {\n return [\n {x: -rx, y: ry},\n {x: -rx, y: ry*1.5},\n {x: -rx - ry*1.5, y: 0},\n {x: -rx, y: -ry*1.5},\n {x: -rx, y: -ry},\n {x: rx, y: -ry},\n {x: rx, y: ry*1.5},\n {x: 0, y: ry*1.5},\n {x: 0, y: ry}\n ];\n },\n minrx: 30\n };\n }\n },\n cds: {\n generator: 'elaborated-rect',\n preset: function() {\n return {\n get_points: function(rx, ry) {\n return [\n {x: rx, y: ry},\n {x: rx + ry, y: 0},\n {x: rx, y: -ry},\n {x: -rx, y: -ry},\n {x: -rx, y: ry}\n ];\n },\n minrx: 30\n };\n }\n },\n};\n\ndc_graph.shape_presets.box = dc_graph.shape_presets.rect = dc_graph.shape_presets.rectangle;\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph.shape_presets);\n return shapes.slice(0, shapes.length-1); // not including polygon\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction normalize_shape_def(diagram, n) {\n var def = diagram.nodeShape.eval(n);\n if(!def)\n return default_shape;\n if(typeof def === 'string')\n return {shape: def};\n return def;\n}\n\nfunction elaborate_shape(diagram, def) {\n var shape = def.shape, def2 = Object.assign({}, def);\n delete def2.shape;\n if(shape === 'random') {\n var available = dc_graph.available_shapes(); // could include diagram.shape !== ellipse, polygon\n shape = available[Math.floor(Math.random()*available.length)];\n }\n else if(diagram.shape.enum().indexOf(shape) !== -1)\n return diagram.shape(shape).elaborate({shape: shape}, def2);\n if(!dc_graph.shape_presets[shape]) {\n console.warn('unknown shape ', shape);\n return default_shape;\n }\n var preset = dc_graph.shape_presets[shape].preset(def2);\n preset.shape = dc_graph.shape_presets[shape].generator;\n return diagram.shape(preset.shape).elaborate(preset, def2);\n}\n\nfunction infer_shape(diagram) {\n return function(n) {\n var def = normalize_shape_def(diagram, n);\n n.dcg_shape = elaborate_shape(diagram, def);\n n.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(diagram) {\n return function(n) {\n var def = normalize_shape_def(diagram, n);\n var old = n.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction node_label_padding(diagram, n) {\n var nlp = diagram.nodeLabelPadding.eval(n);\n if(typeof nlp === 'number' || typeof nlp === 'string')\n return {x: +nlp, y: +nlp};\n else return nlp;\n}\n\nfunction fit_shape(shape, diagram) {\n return function(content) {\n content.each(function(n) {\n var bbox = null;\n if((!shape.useTextSize || shape.useTextSize(n.dcg_shape)) && diagram.nodeFitLabel.eval(n)) {\n bbox = getBBoxNoThrow(this);\n bbox = {x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height};\n var padding;\n var content = diagram.nodeContent.eval(n);\n if(content && diagram.content(content).padding)\n padding = diagram.content(content).padding(n);\n else {\n var padding2 = node_label_padding(diagram, n);\n padding = {\n x: padding2.x*2,\n y: padding2.y*2\n };\n }\n bbox.width += padding.x;\n bbox.height += padding.y;\n n.bbox = bbox;\n }\n var r = 0, radii;\n if(!shape.useRadius || shape.useRadius(n.dcg_shape))\n r = diagram.nodeRadius.eval(n);\n if(bbox && bbox.width && bbox.height || shape.useTextSize && !shape.useTextSize(n.dcg_shape))\n radii = shape.calc_radii(n, r, bbox);\n else\n radii = {rx: r, ry: r};\n n.dcg_rx = radii.rx;\n n.dcg_ry = radii.ry;\n\n var w = radii.rx*2, h = radii.ry*2;\n // fixme: this is only consistent if regular || !squeeze\n // but we'd need to calculate polygon first in order to find out\n // (not a bad idea, just no time right now)\n if(w<h) w = h;\n\n if(!shape.usePaddingAndStroke || shape.usePaddingAndStroke(n.dcg_shape)) {\n var pands = diagram.nodePadding.eval(n) + diagram.nodeStrokeWidth.eval(n);\n w += pands;\n h += pands;\n }\n n.cola.width = w;\n n.cola.height = h;\n });\n };\n}\n\nfunction ellipse_attrs(diagram) {\n return {\n rx: function(n) { return n.dcg_rx; },\n ry: function(n) { return n.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(diagram, n) {\n return {\n d: function(n) {\n var rx = n.dcg_rx, ry = n.dcg_ry,\n def = n.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i<sides; ++i) {\n var theta = -((i+align)/sides + rotation)*Math.PI*2; // svg is up-negative\n angles.push({x: Math.cos(theta), y: Math.sin(theta)});\n }\n var yext = d3.extent(angles, function(theta) { return theta.y; });\n if(def.regular)\n rx = ry = Math.max(rx, ry);\n else if(rx < ry && !def.squeeze)\n rx = ry;\n else\n ry = ry / Math.min(-yext[0], yext[1]);\n n.dcg_points = angles.map(function(theta) {\n var x = rx*theta.x,\n y = ry*theta.y;\n x *= 1 + distortion*((ry-y)/ry - 1);\n x -= skew*y/2;\n return {x: x, y: y};\n });\n return generate_path(n.dcg_points, 1, true);\n }\n };\n}\n\nfunction binary_search(f, a, b) {\n var patience = 100;\n if(f(a).val >= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(diagram, e, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n sp = e.sourcePort.pos;\n tp = e.targetPort.pos;\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return diagram.shape(node.dcg_shape.shape).intersect_vec(node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(e.source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(e.target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\nfunction is_one_segment(path) {\n return path.bezDegree === 1 && path.points.length === 2 ||\n path.bezDegree === 3 && path.points.length === 4;\n}\n\nfunction as_bezier3(path) {\n var p = path.points;\n if(path.bezDegree === 3) return p;\n else if(path.bezDegree === 1)\n return [\n {\n x: p[0].x,\n y: p[0].y\n },\n {\n x: p[0].x + (p[1].x - p[0].x)/3,\n y: p[0].y + (p[1].y - p[0].y)/3\n },\n {\n x: p[0].x + 2*(p[1].x - p[0].x)/3,\n y: p[0].y + 2*(p[1].y - p[0].y)/3\n },\n {\n x: p[1].x,\n y: p[1].y\n }\n ];\n else throw new Error('unknown bezDegree ' + path.bezDegree);\n}\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i<d.length; i++) {\n var d0 = d[i-1], d1 = d[i];\n r.push({x: d0.x + (d1.x - d0.x) * p, y: d0.y + (d1.y - d0.y) * p});\n }\n return r;\n}\n\nfunction getLevels(points, t_) {\n var x = [points];\n for (var i=1; i<points.length; i++) {\n x.push(interpolate(x[x.length-1], t_));\n }\n return x;\n}\n\n// get a point on a bezier segment, where 0 <= t <= 1\nfunction bezier_point(points, t_) {\n var q = getLevels(points, t_);\n return q[q.length-1][0];\n}\n\n// from https://stackoverflow.com/questions/8369488/splitting-a-bezier-curve#8405756\n// somewhat redundant with the above but different objective\nfunction split_bezier(p, t) {\n var x1 = p[0].x, y1 = p[0].y,\n x2 = p[1].x, y2 = p[1].y,\n x3 = p[2].x, y3 = p[2].y,\n x4 = p[3].x, y4 = p[3].y,\n\n x12 = (x2-x1)*t+x1,\n y12 = (y2-y1)*t+y1,\n\n x23 = (x3-x2)*t+x2,\n y23 = (y3-y2)*t+y2,\n\n x34 = (x4-x3)*t+x3,\n y34 = (y4-y3)*t+y3,\n\n x123 = (x23-x12)*t+x12,\n y123 = (y23-y12)*t+y12,\n\n x234 = (x34-x23)*t+x23,\n y234 = (y34-y23)*t+y23,\n\n x1234 = (x234-x123)*t+x123,\n y1234 = (y234-y123)*t+y123;\n\n return [\n [{x: x1, y: y1}, {x: x12, y: y12}, {x: x123, y: y123}, {x: x1234, y: y1234}],\n [{x: x1234, y: y1234}, {x: x234, y: y234}, {x: x34, y: y34}, {x: x4, y: y4}]\n ];\n}\nfunction split_bezier_n(p, n) {\n var ret = [];\n while(n > 1) {\n var parts = split_bezier(p, 1/n);\n ret.push(parts[0][0], parts[0][1], parts[0][2]);\n p = parts[1];\n --n;\n }\n ret.push.apply(ret, p);\n return ret;\n}\n\n// binary search for a point along a bezier that is a certain distance from one of the end points\n// return the bezier cut at that point.\nfunction chop_bezier(points, end, dist) {\n var EPS = 0.1, dist2 = dist*dist;\n var ref, dir, segment;\n if(end === 'head') {\n ref = points[points.length-1];\n segment = points.slice(points.length-4);\n dir = -1;\n } else {\n ref = points[0];\n segment = points.slice(0, 4);\n dir = 1;\n }\n var parts, d2, t = 0.5, dt = 0.5, dx, dy;\n do {\n parts = split_bezier(segment, t);\n dx = ref.x - parts[1][0].x;\n dy = ref.y - parts[1][0].y;\n d2 = dx*dx + dy*dy;\n dt /= 2;\n if(d2 > dist2)\n t -= dt*dir;\n else\n t += dt*dir;\n //console.log('dist', dist, 'dir', dir, 'd', d, 't', t, 'dt', dt);\n }\n while(dt > 0.0000001 && Math.abs(d2 - dist2) > EPS);\n points = points.slice();\n if(end === 'head')\n return points.slice(0, points.length-4).concat(parts[0]);\n else\n return parts[1].concat(points.slice(4));\n}\n\nfunction angle_between_points(p0, p1) {\n return Math.atan2(p1.y - p0.y, p1.x - p0.x);\n}\n\ndc_graph.no_shape = function() {\n var _shape = {\n parent: property(null),\n elaborate: function(preset, def) {\n return Object.assign(preset, def);\n },\n useTextSize: function() { return false; },\n useRadius: function() { return false; },\n usePaddingAndStroke: function() { return false; },\n intersect_vec: function(n, deltaX, deltaY) {\n return {x: 0, y: 0};\n },\n calc_radii: function(n, ry, bbox) {\n return {rx: 0, ry: 0};\n },\n create: function(nodeEnter) {\n },\n replace: function(nodeChanged) {\n },\n update: function(node) {\n }\n };\n return _shape;\n};\n\ndc_graph.ellipse_shape = function() {\n var _shape = {\n parent: property(null),\n elaborate: function(preset, def) {\n return Object.assign(preset, def);\n },\n intersect_vec: function(n, deltaX, deltaY) {\n return point_on_ellipse(n.dcg_rx, n.dcg_ry, deltaX, deltaY);\n },\n calc_radii: function(n, ry, bbox) {\n // make sure we can fit height in r\n ry = Math.max(ry, bbox.height/2 + 5);\n var rx = bbox.width/2;\n\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/ry;\n rx = rx/Math.sqrt(1 - y_over_B*y_over_B);\n rx = Math.max(rx, ry);\n\n return {rx: rx, ry: ry};\n },\n create: function(nodeEnter) {\n nodeEnter.insert('ellipse', ':first-child')\n .attr('class', 'node-shape');\n },\n update: function(node) {\n node.select('ellipse.node-shape')\n .attr(ellipse_attrs(_shape.parent()));\n }\n };\n return _shape;\n};\n\ndc_graph.polygon_shape = function() {\n var _shape = {\n parent: property(null),\n elaborate: function(preset, def) {\n return Object.assign(preset, def);\n },\n intersect_vec: function(n, deltaX, deltaY) {\n return point_on_polygon(n.dcg_points, 0, 0, deltaX, deltaY);\n },\n calc_radii: function(n, ry, bbox) {\n // make sure we can fit height in r\n ry = Math.max(ry, bbox.height/2 + 5);\n var rx = bbox.width/2;\n\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(n.dcg_shape.sides||4));\n\n return {rx: rx, ry: ry};\n },\n create: function(nodeEnter) {\n nodeEnter.insert('path', ':first-child')\n .attr('class', 'node-shape');\n },\n update: function(node) {\n node.select('path.node-shape')\n .attr(polygon_attrs(_shape.parent()));\n }\n };\n return _shape;\n};\n\ndc_graph.rounded_rectangle_shape = function() {\n var _shape = {\n parent: property(null),\n elaborate: function(preset, def) {\n preset = Object.assign({rx: 10, ry: 10}, preset);\n return Object.assign(preset, def);\n },\n intersect_vec: function(n, deltaX, deltaY) {\n var points = [\n {x: n.dcg_rx, y: n.dcg_ry},\n {x: n.dcg_rx, y: -n.dcg_ry},\n {x: -n.dcg_rx, y: -n.dcg_ry},\n {x: -n.dcg_rx, y: n.dcg_ry}\n ];\n return point_on_polygon(points, 0, 0, deltaX, deltaY); // not rounded\n },\n useRadius: function(shape) {\n return !shape.noshape;\n },\n calc_radii: function(n, ry, bbox) {\n var fity = bbox.height/2;\n // fixme: fudge to make sure text is not too tall for node\n if(!n.dcg_shape.noshape)\n fity += 5;\n return {\n rx: bbox.width / 2,\n ry: Math.max(ry, fity)\n };\n },\n create: function(nodeEnter) {\n nodeEnter.filter(function(n) {\n return !n.dcg_shape.noshape;\n }).insert('rect', ':first-child')\n .attr('class', 'node-shape');\n },\n update: function(node) {\n node.select('rect.node-shape')\n .attr({\n x: function(n) {\n return -n.dcg_rx;\n },\n y: function(n) {\n return -n.dcg_ry;\n },\n width: function(n) {\n return 2*n.dcg_rx;\n },\n height: function(n) {\n return 2*n.dcg_ry;\n },\n rx: function(n) {\n return n.dcg_shape.rx + 'px';\n },\n ry: function(n) {\n return n.dcg_shape.ry + 'px';\n }\n });\n }\n };\n return _shape;\n};\n\n// this is not all that accurate - idea is that arrows, houses, etc, are rectangles\n// in terms of sizing, but elaborated drawing & clipping. refine until done.\ndc_graph.elaborated_rectangle_shape = function() {\n var _shape = dc_graph.rounded_rectangle_shape();\n _shape.intersect_vec = function(n, deltaX, deltaY) {\n var points = n.dcg_shape.get_points(n.dcg_rx, n.dcg_ry);\n return point_on_polygon(points, 0, 0, deltaX, deltaY);\n };\n delete _shape.useRadius;\n var orig_radii = _shape.calc_radii;\n _shape.calc_radii = function(n, ry, bbox) {\n var ret = orig_radii(n, ry, bbox);\n return {\n rx: Math.max(ret.rx, n.dcg_shape.minrx),\n ry: ret.ry\n };\n };\n _shape.create = function(nodeEnter) {\n nodeEnter.insert('path', ':first-child')\n .attr('class', 'node-shape');\n };\n _shape.update = function(node) {\n node.select('path.node-shape')\n .attr('d', function(n) {\n return generate_path(n.dcg_shape.get_points(n.dcg_rx, n.dcg_ry), 1, true);\n });\n };\n return _shape;\n};\n\n","function offsetx(ofsx) {\n return function(p) {\n return {x: p.x + ofsx, y: p.y};\n };\n}\n\ndc_graph.builtin_arrows = {\n box: function(open, side) {\n if(!open) return {\n frontRef: [8,0],\n drawFunction: function(marker, ofs, stemWidth) {\n marker.append('rect')\n .attr({\n x: ofs[0],\n y: side==='right' ? -stemWidth/2 : -4,\n width: 8,\n height: side ? 4+stemWidth/2 : 8,\n 'stroke-width': 0\n });\n }\n };\n else return {\n frontRef: [8,0],\n drawFunction: function(marker, ofs, stemWidth) {\n marker.append('rect')\n .attr({\n x: ofs[0] + 0.5,\n y: side==='right' ? 0 : -3.5,\n width: 7,\n height: side ? 3.5 : 7,\n 'stroke-width': 1,\n fill: 'none'\n });\n if(side)\n marker.append('svg:path')\n .attr({\n d: ['M', ofs[0], 0, 'h',8].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n };\n },\n curve: function(open, side) {\n return {\n stems: [true,false],\n kernstems: [0, 0.25],\n frontRef: [8,0],\n drawFunction: function(marker, ofs, stemWidth) {\n var instrs = [];\n instrs.push('M', (side==='left' ? 7.5 : 4) + ofs[0], side==='left' ? stemWidth/2 : 3.5);\n if(side==='left')\n instrs.push('v', -stemWidth/2);\n instrs.push('A', 3.5, 3.5, 0, 0, 0,\n (side==='right' ? 7.5 : 4) + ofs[0], side==='right' ? 0 : -3.5);\n if(side==='right')\n instrs.push('v', -stemWidth/2);\n marker.append('svg:path')\n .attr({\n d: instrs.join(' '),\n 'stroke-width': 1,\n fill: 'none'\n });\n marker.append('svg:path')\n .attr({\n d: ['M', 7 + ofs[0], 0,\n 'h -7'].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n };\n },\n icurve: function(open, side) {\n return {\n stems: [false,true],\n kernstems: [0.25,0],\n frontRef: [8,0],\n drawFunction: function(marker, ofs, stemWidth) {\n var instrs = [];\n instrs.push('M', (side==='left' ? 0.5 : 4) + ofs[0], side==='left' ? stemWidth/2 : 3.5);\n if(side==='left')\n instrs.push('v', -stemWidth/2);\n instrs.push('A', 3.5, 3.5, 0, 0, 1,\n (side==='right' ? 0.5 : 4) + ofs[0], side==='right' ? 0 : -3.5);\n if(side==='right')\n instrs.push('v', -stemWidth/2);\n marker.append('svg:path')\n .attr({\n d: instrs.join(' '),\n 'stroke-width': 1,\n fill: 'none'\n });\n marker.append('svg:path')\n .attr({\n d: ['M', 1 + ofs[0], 0,\n 'h 7'].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n };\n },\n diamond: function(open, side) {\n if(!open) return {\n frontRef: [side ? 11.25 : 12, 0],\n backRef: [side ? 0.75 : 0, 0],\n viewBox: [0, -4, 12, 8],\n stems: [!!side, !!side],\n kernstems: function(stemWidth) {\n return [side ? 0 : .75*stemWidth, side ? 0 : .75*stemWidth];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [{x: 0, y: 0}];\n if(side !== 'left')\n upoints.push({x: 6, y: 4});\n else\n upoints.push({x: 6, y: -4});\n upoints.push({x: 12, y: 0});\n if(!side)\n upoints.push({x: 6, y: -4});\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr({\n d: generate_path(points, 1, true),\n 'stroke-width': 0\n });\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', 0.75 + ofs[0], 0,\n 'h 10.5'].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n }\n };\n else return {\n frontRef: [side ? 11.25 : 12, 0],\n backRef: [side ? 0.75 : 0, 0],\n viewBox: [0, -4, 12, 8],\n stems: [!!side, !!side],\n kernstems: function(stemWidth) {\n return [side ? 0 : .75*stemWidth, side ? 0 : .75*stemWidth];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [{x: 0.9, y: 0}];\n if(side !== 'left')\n upoints.push({x: 6, y: 3.4});\n else\n upoints.push({x: 6, y: -3.4});\n upoints.push({x: 11.1, y: 0});\n if(!side)\n upoints.push({x: 6, y: -3.4});\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr({\n d: generate_path(points, 1, !side),\n 'stroke-width': 1,\n fill: 'none'\n });\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', 0.75 + ofs[0], 0,\n 'h 10.5'].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n }\n };\n },\n dot: function(open, side) {\n if(!open) return {\n frontRef: [8,0],\n stems: [!!side, !!side],\n drawFunction: function(marker, ofs, stemWidth) {\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', ofs[0], 0,\n 'A', 4, 4, 0, 0, side==='left'?1:0, 8 + ofs[0], 0].join(' '),\n 'stroke-width': 0\n });\n marker.append('svg:path')\n .attr({\n d: ['M', ofs[0], 0,\n 'h 8'].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n else {\n marker.append('svg:circle')\n .attr('r', 4)\n .attr('cx', 4 + ofs[0])\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n }\n }\n };\n else return {\n frontRef: [8,0],\n stems: [!!side, !!side],\n drawFunction: function(marker, ofs, stemWidth) {\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', 0.5 + ofs[0], 0,\n 'A', 3.5, 3.5, 0, 0, side==='left'?1:0, 7.5 + ofs[0], 0].join(' '),\n 'stroke-width': 1,\n fill: 'none'\n });\n marker.append('svg:path')\n .attr({\n d: ['M', ofs[0], 0,\n 'h 8'].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n } else {\n marker.append('svg:circle')\n .attr('r', 3.5)\n .attr('cx', 4 + ofs[0])\n .attr('cy', 0)\n .attr('fill', 'none')\n .attr('stroke-width', '1px');\n }\n }\n };\n },\n normal: function(open, side) {\n if(!open) return {\n frontRef: [side ? 8-4/3 : 8, 0],\n viewBox: [0, -3, 8, 6],\n kernstems: function(stemWidth) {\n return [0,stemWidth*4/3];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [];\n if(side === 'left')\n upoints.push({x: 0, y: 0});\n else\n upoints.push({x: 0, y: 3});\n switch(side) {\n case 'left':\n upoints.push({x: 8 - stemWidth*4/3, y: -stemWidth/2});\n break;\n case 'right':\n upoints.push({x: 8 - stemWidth*4/3, y: stemWidth/2});\n break;\n default:\n upoints.push({x: 8, y: 0});\n }\n if(side === 'right')\n upoints.push({x: 0, y: 0});\n else\n upoints.push({x: 0, y: -3});\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr('d', generate_path(points, 1, true))\n .attr('stroke-width', '0px');\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', ofs[0], 0,\n 'h', 8-4*stemWidth/3].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n }\n };\n else return {\n frontRef: [side ? 8-4/3 : 8, 0],\n viewBox: [0, -3, 8, 6],\n kernstems: function(stemWidth) {\n return [0,stemWidth*4/3];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [];\n if(!side) {\n upoints = [\n {x: 0.5, y: 2.28},\n {x: 6.57, y: 0},\n {x: 0.5, y: -2.28}\n ];\n } else {\n upoints = [\n {x: 0.5, y: 0},\n {x: 0.5, y: side === 'left' ? -2.28 : 2.28},\n {x: 8-4/3, y: 0}\n ];\n }\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr({\n d: generate_path(points, 1, !side),\n 'stroke-width': 1,\n fill: 'none'\n });\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', ofs[0], 0,\n 'h', 8-4/3].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n }\n };\n },\n inv: function(open, side) {\n if(!open) return {\n frontRef: [8,0],\n backRef: [side ? 4/3 : 0, 0],\n viewBox: [0, -3, 8, 6],\n kernstems: function(stemWidth) {\n return [stemWidth*4/3,0];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [];\n if(side === 'left')\n upoints.push({x: 8, y: 0});\n else\n upoints.push({x: 8, y: 3});\n switch(side) {\n case 'left':\n upoints.push({x: stemWidth*4/3, y: -stemWidth/2});\n break;\n case 'right':\n upoints.push({x: stemWidth*4/3, y: stemWidth/2});\n break;\n default:\n upoints.push({x: 0, y: 0});\n }\n if(side === 'right')\n upoints.push({x: 8, y: 0});\n else\n upoints.push({x: 8, y: -3});\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr('d', generate_path(points, 1, true))\n .attr('stroke-width', '0px');\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', 4*stemWidth/3 + ofs[0], 0,\n 'h', 8-4*stemWidth/3].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n }\n };\n else return {\n frontRef: [8,0],\n backRef: [side ? 4/3 : 0, 0],\n viewBox: [0, -3, 8, 6],\n kernstems: function(stemWidth) {\n return [stemWidth*4/3,0];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [];\n if(!side) {\n upoints = [\n {x: 7.5, y: 2.28},\n {x: 1.43, y: 0},\n {x: 7.5, y: -2.28}\n ];\n } else {\n upoints = [\n {x: 7.5, y: 0},\n {x: 7.5, y: side === 'left' ? -2.28 : 2.28},\n {x: 1.43, y: 0}\n ];\n }\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr({\n d: generate_path(points, 1, !side),\n 'stroke-width': 1,\n fill: 'none'\n });\n if(side) {\n marker.append('svg:path')\n .attr({\n d: ['M', 4*stemWidth/3 + ofs[0], 0,\n 'h', 8-4/3].join(' '),\n 'stroke-width': stemWidth,\n fill: 'none'\n });\n }\n }\n };\n },\n tee: function(open, side) {\n return {\n frontRef: [5,0],\n viewBox: [0, -5, 5, 10],\n stems: [true,false],\n drawFunction: function(marker, ofs, stemWidth) {\n var b = side === 'right' ? 0 : -5,\n t = side === 'left' ? 0 : 5;\n var points = [\n {x: 2, y: t},\n {x: 5, y: t},\n {x: 5, y: b},\n {x: 2, y: b}\n ].map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr('d', generate_path(points, 1, true))\n .attr('stroke-width', '0px');\n marker.append('svg:path')\n .attr('d', ['M', ofs[0], 0, 'h', 5].join(' '))\n .attr('stroke-width', stemWidth)\n .attr('fill', 'none');\n }\n };\n },\n vee: function(open, side) {\n return {\n stems: [true,false],\n kernstems: function(stemWidth) {\n return [0,stemWidth];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [\n {x: 0, y: -5},\n {x: 10, y: 0},\n {x: 0, y: 5},\n {x: 5, y: 0}\n ];\n if(side==='right')\n upoints.splice(0, 1,\n {x: 5, y: -stemWidth/2},\n {x: 10, y: -stemWidth/2});\n else if(side==='left')\n upoints.splice(2, 1,\n {x: 10, y: stemWidth/2},\n {x: 5, y: stemWidth/2});\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr('d', generate_path(points, 1, true))\n .attr('stroke-width', '0px');\n marker.append('svg:path')\n .attr('d', ['M', ofs[0]+5, 0, 'h',-5].join(' '))\n .attr('stroke-width', stemWidth);\n }\n };\n },\n crow: function(open, side) {\n return {\n stems: [false,true],\n kernstems: function(stemWidth) {\n return [stemWidth,0];\n },\n drawFunction: function(marker, ofs, stemWidth) {\n var upoints = [\n {x: 10, y: -5},\n {x: 0, y: 0},\n {x: 10, y: 5},\n {x: 5, y: 0}\n ];\n if(side==='right')\n upoints.splice(0, 1,\n {x: 5, y: -stemWidth/2},\n {x: 0, y: -stemWidth/2});\n else if(side==='left')\n upoints.splice(2, 1,\n {x: 0, y: stemWidth/2},\n {x: 5, y: stemWidth/2});\n var points = upoints.map(offsetx(ofs[0]));\n marker.append('svg:path')\n .attr('d', generate_path(points, 1, true))\n .attr('stroke-width', '0px');\n marker.append('svg:path')\n .attr('d', ['M', ofs[0]+5, 0, 'h',5].join(' '))\n .attr('stroke-width', stemWidth);\n }\n };\n }\n};\n\nfunction arrow_def(arrdefs, shape, open, side) {\n return arrdefs[shape](open, side);\n}\n\nfunction arrow_parts(arrdefs, desc) {\n // graphviz appears to use a real parser for this\n var parts = [];\n while(desc && desc.length) {\n var mods = /^o?(?:l|r)?/.exec(desc);\n var open = false, side = null;\n if(mods[0]) {\n mods = mods[0];\n desc = desc.slice(mods.length);\n open = mods[0] === 'o';\n switch(mods[mods.length-1]) {\n case 'l':\n side='left';\n break;\n case 'r':\n side='right';\n }\n }\n var ok = false;\n for(var aname in arrdefs)\n if(desc.substring(0, aname.length) === aname) {\n ok = true;\n parts.push(arrow_def(arrdefs, aname, open, side));\n desc = desc.slice(aname.length);\n break;\n }\n if(!ok) {\n console.warn(\"couldn't find arrow name in \" + desc);\n break;\n }\n }\n return parts;\n}\n\nfunction union_viewbox(vb1, vb2) {\n var left = Math.min(vb1[0], vb2[0]),\n bottom = Math.min(vb1[1], vb2[1]),\n right = Math.max(vb1[0] + vb1[2], vb2[0] + vb2[2]),\n top = Math.max(vb1[1] + vb1[3], vb2[1] + vb2[3]);\n return [left, bottom, right - left, top - bottom];\n}\n\nfunction subtract_points(p1, p2) {\n return [p1[0] - p2[0], p1[1] - p2[1]];\n}\n\nfunction add_points(p1, p2) {\n return [p1[0] + p2[0], p1[1] + p2[1]];\n}\n\nfunction mult_point(p, s) {\n return p.map(function(x) { return x*s; });\n}\n\nfunction defaulted(def) {\n return function(x) {\n return x || def;\n };\n}\n\nvar view_box = defaulted([0, -5, 10, 10]),\n front_ref = defaulted([10, 0]),\n back_ref = defaulted([0, 0]);\n\nfunction arrow_offsets(parts, stemWidth) {\n var frontRef = null, backRef = null;\n return parts.map(function(p, i) {\n var fr = front_ref(p.frontRef).slice(),\n br = back_ref(p.backRef).slice();\n if(p.kernstems) {\n var kernstems = p.kernstems;\n if(typeof kernstems === 'function')\n kernstems = kernstems(stemWidth);\n if(i !== 0 && kernstems[1]) {\n var last = parts[i-1];\n if(last.stems && last.stems[0])\n fr[0] -= kernstems[1];\n }\n if(kernstems[0]) {\n var kern = false;\n if(i === parts.length-1)\n kern = true;\n else {\n var next = parts[i+1];\n if(next.stems && next.stems[1])\n kern = true;\n }\n if(kern)\n br[0] += kernstems[0];\n }\n }\n if(i === 0) {\n frontRef = fr;\n backRef = br;\n return {backRef: backRef, offset: [0, 0]};\n } else {\n var ofs = subtract_points(backRef, fr);\n backRef = add_points(br, ofs);\n return {backRef: backRef, offset: ofs};\n }\n });\n}\n\nfunction arrow_bounds(parts, stemWidth) {\n var viewBox = null, offsets = arrow_offsets(parts, stemWidth);\n parts.forEach(function(p, i) {\n var vb = view_box(p.viewBox);\n var ofs = offsets[i].offset;\n if(!viewBox)\n viewBox = vb.slice();\n else\n viewBox = union_viewbox(viewBox, [vb[0] + ofs[0], vb[1] + ofs[1], vb[2], vb[3]]);\n });\n return {offsets: offsets, viewBox: viewBox};\n}\n\nfunction arrow_length(parts, stemWidth) {\n if(!parts.length)\n return 0;\n var offsets = arrow_offsets(parts, stemWidth);\n return front_ref(parts[0].frontRef)[0] - offsets[parts.length-1].backRef[0];\n}\n\n\nfunction scaled_arrow_lengths(diagram, e) {\n var arrowSize = diagram.edgeArrowSize.eval(e),\n stemWidth = diagram.edgeStrokeWidth.eval(e) / arrowSize;\n var headLength = arrowSize *\n (arrow_length(arrow_parts(diagram.arrows(), diagram.edgeArrowhead.eval(e)), stemWidth) +\n diagram.nodeStrokeWidth.eval(e.target) / 2),\n tailLength = arrowSize *\n (arrow_length(arrow_parts(diagram.arrows(), diagram.edgeArrowtail.eval(e)), stemWidth) +\n diagram.nodeStrokeWidth.eval(e.source) / 2);\n return {headLength: headLength, tailLength: tailLength};\n}\n\nfunction clip_path_to_arrows(headLength, tailLength, path) {\n var points0 = as_bezier3(path),\n points = chop_bezier(points0, 'head', headLength);\n return {\n bezDegree: 3,\n points: chop_bezier(points, 'tail', tailLength),\n sourcePort: path.sourcePort,\n targetPort: path.targetPort\n };\n}\n\nfunction place_arrows_on_spline(diagram, e, points) {\n var alengths = scaled_arrow_lengths(diagram, e);\n var path0 = {\n points: points,\n bezDegree: 3\n };\n var path = clip_path_to_arrows(alengths.headLength, alengths.tailLength, path0);\n return {\n path: path,\n full: path0,\n orienthead: angle_between_points(path.points[path.points.length-1], path0.points[path0.points.length-1]) + 'rad', //calculate_arrowhead_orientation(e.cola.points, 'head'),\n orienttail: angle_between_points(path.points[0], path0.points[0]) + 'rad' //calculate_arrowhead_orientation(e.cola.points, 'tail')\n };\n}\n\n\n// determine pre-transition orientation that won't spin a lot going to new orientation\nfunction unsurprising_orient(oldorient, neworient) {\n var oldang = +oldorient.slice(0, -3),\n newang = +neworient.slice(0, -3);\n if(Math.abs(oldang - newang) > Math.PI) {\n if(newang > oldang)\n oldang += 2*Math.PI;\n else oldang -= 2*Math.PI;\n }\n return oldang;\n}\n\n\nfunction edgeArrow(diagram, arrdefs, e, kind, desc) {\n var id = diagram.arrowId(e, kind);\n var strokeOfs, edgeStroke;\n function arrow_sig() {\n return desc + '-' + strokeOfs + '-' + edgeStroke;\n }\n if(desc) {\n strokeOfs = diagram.nodeStrokeWidth.eval(kind==='tail' ? e.source : e.target)/2;\n edgeStroke = diagram.edgeStroke.eval(e);\n if(e[kind + 'ArrowLast'] === arrow_sig())\n return id;\n }\n var parts = arrow_parts(arrdefs, desc),\n marker = diagram.addOrRemoveDef(id, !!parts.length, 'svg:marker');\n\n if(parts.length) {\n var arrowSize = diagram.edgeArrowSize.eval(e),\n stemWidth = diagram.edgeStrokeWidth.eval(e) / arrowSize,\n bounds = arrow_bounds(parts, stemWidth),\n frontRef = front_ref(parts[0].frontRef);\n bounds.viewBox[0] -= strokeOfs/arrowSize;\n bounds.viewBox[3] += strokeOfs/arrowSize;\n marker\n .attr('viewBox', bounds.viewBox.join(' '))\n .attr('refX', frontRef[0])\n .attr('refY', frontRef[1])\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', bounds.viewBox[2]*arrowSize)\n .attr('markerHeight', bounds.viewBox[3]*arrowSize)\n .attr('stroke', edgeStroke)\n .attr('fill', edgeStroke);\n marker.html(null);\n parts.forEach(function(p, i) {\n marker\n .call(p.drawFunction,\n add_points([-strokeOfs/arrowSize,0], bounds.offsets[i].offset),\n stemWidth);\n });\n }\n e[kind + 'ArrowLast'] = arrow_sig();\n return desc ? id : null;\n}\n","dc_graph.text_contents = function() {\n var _contents = {\n parent: property(null),\n update: function(container) {\n var text = container.selectAll('text.node-label')\n .data(function(n) { return [n]; });\n text.enter().append('text')\n .attr('class', 'node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _contents.parent().nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var lineHeight = _contents.parent().nodeLineHeight();\n var first = 0.5 - ((lines.length - 1) * lineHeight + 1)/2;\n // IE, Edge, and Safari do not seem to support\n // dominant-baseline: central although they say they do\n if(is_ie() || is_safari())\n first += 0.3;\n return lines.map(function(line, i) { return {node: n, line: line, yofs: (i==0 ? first : lineHeight) + 'em'}; });\n });\n tspan.enter().append('tspan');\n tspan.attr({\n 'text-anchor': 'start',\n 'text-decoration': function(line) {\n return _contents.parent().nodeLabelDecoration.eval(line.node);\n },\n x: 0\n }).html(function(s) { return s.line; });\n text\n .each(function(n) {\n n.xofs = 0;\n })\n .filter(function(n) {\n return _contents.parent().nodeLabelAlignment.eval(n) !== 'center';\n })\n .each(function(n) {\n var bbox = getBBoxNoThrow(this);\n n.bbox = {x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height};\n switch(_contents.parent().nodeLabelAlignment.eval(n)) {\n case 'left': n.xofs = -n.bbox.width/2;\n break;\n case 'right': n.xofs = n.bbox.width/2;\n break;\n }\n })\n .selectAll('tspan');\n tspan.attr({\n 'text-anchor': function(s) {\n switch(_contents.parent().nodeLabelAlignment.eval(s.node)) {\n case 'left': return 'start';\n case 'center': return 'middle';\n case 'right': return 'end';\n }\n return null;\n },\n x: function(s) {\n return s.node.xofs;\n },\n dy: function(d) { return d.yofs; }\n });\n\n tspan.exit().remove();\n text\n .attr('fill', _contents.parent().nodeLabelFill.eval);\n },\n textbox: function(container) {\n var bbox = getBBoxNoThrow(this.selectContent(container).node());\n return {x: bbox.x, y: bbox.y, width: bbox.width, height: bbox.height};\n },\n selectContent: function(container) {\n return container.select('text.node-label');\n },\n selectText: function(container) {\n return this.selectContent(container);\n }\n };\n return _contents;\n};\n\ndc_graph.with_icon_contents = function(contents, width, height) {\n var _contents = {\n parent: property(null).react(function(parent) {\n contents.parent(parent);\n }),\n padding: function(n) {\n var padding = node_label_padding(_contents.parent(), n);\n return {\n x: padding.x * 3,\n y: padding.y * 3\n };\n },\n update: function(container) {\n var g = container.selectAll('g.with-icon')\n .data(function(n) { return [n]; });\n var gEnter = g.enter();\n gEnter.append('g')\n .attr('class', 'with-icon')\n .append('image').attr({\n class: 'icon',\n width: width + 'px',\n height: height + 'px'\n });\n g.call(contents.update);\n contents.selectContent(g)\n .attr('transform', 'translate(' + width/2 + ')');\n g.selectAll('image.icon').attr({\n href: _contents.parent().nodeIcon.eval,\n x: function(n) {\n var totwid = width + contents.textbox(d3.select(this.parentNode)).width;\n return -totwid/2 - node_label_padding(_contents.parent(), n).x;\n },\n y: -height/2\n });\n },\n textbox: function(container) {\n var box = contents.textbox(container);\n box.x += width/2;\n return box;\n },\n selectContent: function(container) {\n return container.select('g.with-icon');\n },\n selectText: function(container) {\n return this.selectContent(container).select('text.node-label');\n }\n };\n return _contents;\n};\n\n","/**\n * `dc_graph.diagram` is a dc.js-compatible network visualization component. It registers in\n * the dc.js chart registry and its nodes and edges are generated from crossfilter groups. It\n * logically derives from the dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin},\n * but it does not physically derive from it since so much is different about network\n * visualization versus conventional charts.\n * @class diagram\n * @memberof dc_graph\n * @param {String|node} parent - Any valid\n * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector}\n * specifying a dom block element such as a div; or a dom element.\n * @param {String} [chartGroup] - The name of the dc.js chart group this diagram instance\n * should be placed in. Filter interaction with a diagram will only trigger events and redraws\n * within the diagram's group.\n * @return {dc_graph.diagram}\n **/\ndc_graph.diagram = function (parent, chartGroup) {\n // different enough from regular dc charts that we don't use dc.baseMixin\n // but attempt to implement most of that interface, copying some of the most basic stuff\n var _diagram = dc.marginMixin({});\n _diagram.__dcFlag__ = dc.utils.uniqueId();\n _diagram.margins({left: 10, top: 10, right: 10, bottom: 10});\n var _dispatch = d3.dispatch('preDraw', 'data', 'end', 'start', 'render', 'drawn', 'receivedLayout', 'transitionsStarted', 'zoomed', 'reset');\n var _nodes = {}, _edges = {}; // hold state between runs\n var _ports = {}; // id = node|edge/id/name\n var _clusters = {};\n var _nodePorts; // ports sorted by node id\n var _stats = {};\n var _nodes_snapshot, _edges_snapshot;\n var _arrows = {};\n var _running = false; // for detecting concurrency issues\n var _anchor, _chartGroup;\n var _animateZoom;\n\n var _minWidth = 200;\n var _defaultWidthCalc = function (element) {\n var width = element && element.getBoundingClientRect && element.getBoundingClientRect().width;\n return (width && width > _minWidth) ? width : _minWidth;\n };\n var _widthCalc = _defaultWidthCalc;\n\n var _minHeight = 200;\n var _defaultHeightCalc = function (element) {\n var height = element && element.getBoundingClientRect && element.getBoundingClientRect().height;\n return (height && height > _minHeight) ? height : _minHeight;\n };\n var _heightCalc = _defaultHeightCalc;\n var _width, _height, _lastWidth, _lastHeight;\n\n function deprecate_layout_algo_parameter(name) {\n return function(value) {\n if(!_diagram.layoutEngine())\n _diagram.layoutAlgorithm('cola', true);\n var engine = _diagram.layoutEngine();\n if(engine.getEngine)\n engine = engine.getEngine();\n if(engine[name]) {\n console.warn('property is deprecated, call on layout engine instead: dc_graph.diagram.%c' + name,\n 'font-weight: bold');\n if(!arguments.length)\n return engine[name]();\n engine[name](value);\n } else {\n console.warn('property is deprecated, and is not supported for Warning: dc_graph.diagram.<b>' + name + '</b> is deprecated, and it is not supported for the \"' + engine.layoutAlgorithm() + '\" layout algorithm: ignored.');\n if(!arguments.length)\n return null;\n }\n return this;\n };\n }\n\n /**\n * Set or get the height attribute of the diagram. If a value is given, then the diagram is\n * returned for method chaining. If no value is given, then the current value of the height\n * attribute will be returned.\n *\n * The width and height are applied to the SVG element generated by the diagram on render, or\n * when `resizeSvg` is called.\n *\n * If the value is falsy or a function, the height will be calculated the first time it is\n * needed, using the provided function or default height calculator, and then cached. The\n * default calculator uses the client rect of the element specified when constructing the chart,\n * with a minimum of `minHeight`. A custom calculator will be passed the element.\n *\n * If the value is `'auto'`, the height will be calculated every time the diagram is drawn, and\n * it will not be set on the `<svg>` element. Instead, the element will be pinned to the same\n * rectangle as its containing div using CSS.\n *\n * @method height\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} [height=200]\n * @return {Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.height = function (height) {\n if (!arguments.length) {\n if (!dc.utils.isNumber(_height)) {\n _lastHeight = _heightCalc(_diagram.root().node());\n if(_height === 'auto') // 'auto' => calculate every time\n return _lastHeight;\n // null/undefined => calculate once only\n _height = _lastHeight;\n }\n return _height;\n }\n if(dc.utils.isNumber(height) || !height || height === 'auto')\n _height = height;\n else if(typeof height === 'function') {\n _heightCalc = height;\n _height = undefined;\n }\n else throw new Error(\"don't know what to do with height type \" + typeof height + \" value \" + height);\n return _diagram;\n };\n _diagram.minHeight = function(height) {\n if(!arguments.length)\n return _minHeight;\n _minHeight = height;\n return _diagram;\n };\n /**\n * Set or get the width attribute of the diagram. If a value is given, then the diagram is\n * returned for method chaining. If no value is given, then the current value of the width\n * attribute will be returned.\n *\n * The width and height are applied to the SVG element generated by the diagram on render, or\n * when `resizeSvg` is called.\n *\n * If the value is falsy or a function, the width will be calculated the first time it is\n * needed, using the provided function or default width calculator, and then cached. The default\n * calculator uses the client rect of the element specified when constructing the chart, with a\n * minimum of `minWidth`. A custom calculator will be passed the element.\n *\n * If the value is `'auto'`, the width will be calculated every time the diagram is drawn, and\n * it will not be set on the `<svg>` element. Instead, the element will be pinned to the same\n * rectangle as its containing div using CSS.\n *\n * @method width\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} [width=200]\n * @return {Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.width = function (width) {\n if (!arguments.length) {\n if (!dc.utils.isNumber(_width)) {\n _lastWidth = _widthCalc(_diagram.root().node());\n if(_width === 'auto') // 'auto' => calculate every time\n return _lastWidth;\n // null/undefined => calculate once only\n _width = _lastWidth;\n }\n return _width;\n }\n if(dc.utils.isNumber(width) || !width || width === 'auto')\n _width = width;\n else if(typeof width === 'function') {\n _widthCalc = width;\n _width = undefined;\n }\n else throw new Error(\"don't know what to do with width type \" + typeof width + \" value \" + width);\n return _diagram;\n };\n _diagram.minWidth = function(width) {\n if(!arguments.length)\n return _minWidth;\n _minWidth = width;\n return _diagram;\n };\n\n /**\n * Get or set the root element, which is usually the parent div. Normally the root is set\n * when the diagram is constructed; setting it later may have unexpected consequences.\n * @method root\n * @memberof dc_graph.diagram\n * @instance\n * @param {node} [root=null]\n * @return {node}\n * @return {dc_graph.diagram}\n **/\n _diagram.root = property(null).react(function(e) {\n if(e.empty())\n console.log('Warning: parent selector ' + parent + \" doesn't seem to exist\");\n });\n\n /**\n * Get or set whether mouse wheel rotation or touchpad gestures will zoom the diagram, and\n * whether dragging on the background pans the diagram.\n * @method mouseZoomable\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [mouseZoomable=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.mouseZoomable = property(true);\n\n _diagram.zoomExtent = property([.1, 2]);\n\n /**\n * Whether zooming should only be enabled when the alt key is pressed.\n * @method altKeyZoom\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [altKeyZoom=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.modKeyZoom = _diagram.altKeyZoom = property(false);\n\n /**\n * Set or get the fitting strategy for the canvas, which affects how the translate\n * and scale get calculated when `autoZoom` is triggered.\n *\n * * `'default'` - simulates the preserveAspectRatio behavior of `xMidYMid meet`, but\n * with margins - the content is stretched or squished in the more constrained\n * direction, and centered in the other direction\n * * `'vertical'` - fits the canvas vertically (with vertical margins) and centers\n * it horizontally. If the canvas is taller than the viewport, it will meet\n * vertically and there will be blank areas to the left and right. If the canvas\n * is wider than the viewport, it will be sliced.\n * * `'horizontal'` - fits the canvas horizontally (with horizontal margins) and\n * centers it vertically. If the canvas is wider than the viewport, it will meet\n * horizontally and there will be blank areas above and below. If the canvas is\n * taller than the viewport, it will be sliced.\n *\n * Other options\n * * `null` - no attempt is made to fit the content in the viewport\n * * `'zoom'` - does not scale the content, but attempts to bring as much content\n * into view as possible, using using the same algorithm as `restrictPan`\n * * `'align_{tlbrc}[2]'` - does not scale; aligns up to two sides or centers them\n * @method fitStrategy\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [fitStrategy='default']\n * @return {String}\n * @return {dc_graph.diagram}\n **/\n _diagram.fitStrategy = property('default');\n\n /**\n * Do not allow panning (scrolling) to push the diagram out of the viewable area, if there\n * is space for it to be shown. */\n _diagram.restrictPan = property(false);\n\n /**\n * Auto-zoom behavior.\n * * `'always'` - zoom every time layout happens\n * * `'once'` - zoom the next time layout happens\n * * `null` - manual, call `zoomToFit` to fit\n * @method autoZoom\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [autoZoom=null]\n * @return {String}\n * @return {dc_graph.diagram}\n **/\n _diagram.autoZoom = property(null);\n _diagram.zoomToFit = function(animate) {\n // if(!(_nodeLayer && _edgeLayer))\n // return;\n auto_zoom(animate);\n };\n _diagram.zoomDuration = property(500);\n\n /**\n * Set or get the crossfilter dimension which represents the nodes (vertices) in the\n * diagram. Typically there will be a crossfilter instance for the nodes, and another for\n * the edges.\n *\n * *Dimensions are included on the diagram for similarity to dc.js, however the diagram\n * itself does not use them - but {@link dc_graph.filter_selection filter_selection} will.*\n * @method nodeDimension\n * @memberof dc_graph.diagram\n * @instance\n * @param {crossfilter.dimension} [nodeDimension]\n * @return {crossfilter.dimension}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeDimension = property();\n\n /**\n * Set or get the crossfilter group which is the data source for the nodes in the\n * diagram. The diagram will use the group's `.all()` method to get an array of `{key,\n * value}` pairs, where the key is a unique identifier, and the value is usually an object\n * containing the node's attributes. All accessors work with these key/value pairs.\n *\n * If the group is changed or returns different values, the next call to `.redraw()` will\n * reflect the changes incrementally.\n *\n * It is possible to pass another object with the same `.all()` interface instead of a\n * crossfilter group.\n * @method nodeGroup\n * @memberof dc_graph.diagram\n * @instance\n * @param {crossfilter.group} [nodeGroup]\n * @return {crossfilter.group}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeGroup = property();\n\n /**\n * Set or get the crossfilter dimension which represents the edges in the\n * diagram. Typically there will be a crossfilter instance for the nodes, and another for\n * the edges.\n *\n * *Dimensions are included on the diagram for similarity to dc.js, however the diagram\n * itself does not use them - but {@link dc_graph.filter_selection filter_selection} will.*\n * @method edgeDimension\n * @memberof dc_graph.diagram\n * @instance\n * @param {crossfilter.dimension} [edgeDimension]\n * @return {crossfilter.dimension}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeDimension = property();\n\n /**\n * Set or get the crossfilter group which is the data source for the edges in the\n * diagram. See `.nodeGroup` above for the way data is loaded from a crossfilter group.\n *\n * The values in the key/value pairs returned by `diagram.edgeGroup().all()` need to\n * support, at a minimum, the {@link dc_graph.diagram#nodeSource nodeSource} and\n * {@link dc_graph.diagram#nodeTarget nodeTarget}, which should return the same\n * keys as the {@link dc_graph.diagram#nodeKey nodeKey}\n *\n * @method edgeGroup\n * @memberof dc_graph.diagram\n * @instance\n * @param {crossfilter.group} [edgeGroup]\n * @return {crossfilter.group}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeGroup = property();\n\n _diagram.edgesInFront = property(false);\n\n /**\n * Set or get the function which will be used to retrieve the unique key for each node. By\n * default, this accesses the `key` field of the object passed to it. The keys should match\n * the keys returned by the {@link dc_graph.diagram#edgeSource edgeSource} and\n * {@link dc_graph.diagram#edgeTarget edgeTarget}.\n *\n * @method nodeKey\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [nodeKey=function(kv) { return kv.key }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeKey = _diagram.nodeKeyAccessor = property(function(kv) {\n return kv.key;\n });\n\n /**\n * Set or get the function which will be used to retrieve the unique key for each edge. By\n * default, this accesses the `key` field of the object passed to it.\n *\n * @method edgeKey\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [edgeKey=function(kv) { return kv.key }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeKey = _diagram.edgeKeyAccessor = property(function(kv) {\n return kv.key;\n });\n\n /**\n * Set or get the function which will be used to retrieve the source (origin/tail) key of\n * the edge objects. The key must equal the key returned by the `.nodeKey` for one of the\n * nodes; if it does not, or if the node is currently filtered out, the edge will not be\n * displayed. By default, looks for `.value.sourcename`.\n *\n * @method edgeSource\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [edgeSource=function(kv) { return kv.value.sourcename; }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeSource = _diagram.sourceAccessor = property(function(kv) {\n return kv.value.sourcename;\n });\n\n /**\n * Set or get the function which will be used to retrieve the target (destination/head) key\n * of the edge objects. The key must equal the key returned by the\n * {@link dc_graph.diagram#nodeKey nodeKey} for one of the nodes; if it does not, or if the node\n * is currently filtered out, the edge will not be displayed. By default, looks for\n * `.value.targetname`.\n * @method edgeTarget\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [edgeTarget=function(kv) { return kv.value.targetname; }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeTarget = _diagram.targetAccessor = property(function(kv) {\n return kv.value.targetname;\n });\n\n _diagram.portDimension = property(null);\n _diagram.portGroup = property(null);\n _diagram.portNodeKey = property(null);\n _diagram.portEdgeKey = property(null);\n _diagram.portName = property(null);\n _diagram.portStyleName = property(null);\n _diagram.portElastic = property(true);\n\n _diagram.portStyle = named_children();\n\n _diagram.portBounds = property(null); // position limits, in radians\n\n _diagram.edgeSourcePortName = property(null);\n _diagram.edgeTargetPortName = property(null);\n\n /**\n * Set or get the crossfilter dimension which represents the edges in the\n * diagram. Typically there will be a crossfilter instance for the nodes, and another for\n * the edges.\n *\n * *As with node and edge dimensions, the diagram will itself not filter on cluster dimensions;\n * this is included for symmetry, and for modes which may want to filter clusters.*\n * @method clusterDimension\n * @memberof dc_graph.diagram\n * @instance\n * @param {crossfilter.dimension} [clusterDimension]\n * @return {crossfilter.dimension}\n * @return {dc_graph.diagram}\n **/\n _diagram.clusterDimension = property(null);\n\n /**\n * Set or get the crossfilter group which is the data source for clusters in the\n * diagram.\n *\n * The key/value pairs returned by `diagram.clusterGroup().all()` need to support, at a minimum,\n * the {@link dc_graph.diagram#clusterKey clusterKey} and {@link dc_graph.diagram#clusterParent clusterParent}\n * accessors, which should return keys in this group.\n *\n * @method clusterGroup\n * @memberof dc_graph.diagram\n * @instance\n * @param {crossfilter.group} [clusterGroup]\n * @return {crossfilter.group}\n * @return {dc_graph.diagram}\n **/\n _diagram.clusterGroup = property(null);\n\n // cluster accessors\n /**\n * Set or get the function which will be used to retrieve the unique key for each cluster. By\n * default, this accesses the `key` field of the object passed to it.\n *\n * @method clusterKey\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [clusterKey=function(kv) { return kv.key }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.clusterKey = property(dc.pluck('key'));\n\n /**\n * Set or get the function which will be used to retrieve the key of the parent of a cluster,\n * which is another cluster.\n *\n * @method clusterParent\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [clusterParent=function(kv) { return kv.key }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.clusterParent = property(null);\n\n /**\n * Set or get the function which will be used to retrieve the padding, in pixels, around a cluster.\n *\n * **To be implemented.** If a single value is returned, it will be used on all sides; if two\n * values are returned they will be interpreted as the vertical and horizontal padding.\n *\n * @method clusterPadding\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [clusterPadding=function(kv) { return kv.key }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.clusterPadding = property(8);\n\n // node accessor\n /**\n * Set or get the function which will be used to retrieve the parent cluster of a node, or\n * `null` if the node is not in a cluster.\n *\n * @method nodeParentCluster\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [nodeParentCluster=function(kv) { return kv.key }]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeParentCluster = property(null);\n\n /**\n * Set or get the function which will be used to retrieve the radius, in pixels, for each\n * node. This determines the height of nodes,and if `nodeFitLabel` is false, the width too.\n * @method nodeRadius\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [nodeRadius=25]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeRadius = _diagram.nodeRadiusAccessor = property(25);\n\n /**\n * Set or get the function which will be used to retrieve the stroke width, in pixels, for\n * drawing the outline of each node. According to the SVG specification, the outline will\n * be drawn half on top of the fill, and half outside. Default: 1\n * @method nodeStrokeWidth\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [nodeStrokeWidth=1]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeStrokeWidth = _diagram.nodeStrokeWidthAccessor = property(1);\n\n /**\n * Set or get the function which will be used to retrieve the stroke color for the outline\n * of each node.\n * @method nodeStroke\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [nodeStroke='black']\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeStroke = _diagram.nodeStrokeAccessor = property('black');\n\n _diagram.nodeStrokeDashArray = property(null);\n\n /**\n * If set, the value returned from `nodeFill` will be processed through this\n * {@link https://github.com/mbostock/d3/wiki/Scales d3.scale}\n * to return the fill color. If falsy, uses the identity function (no scale).\n * @method nodeFillScale\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|d3.scale} [nodeFillScale]\n * @return {Function|d3.scale}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeFillScale = property(null);\n\n /**\n * Set or get the function which will be used to retrieve the fill color for the body of each\n * node.\n * @method nodeFill\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [nodeFill='white']\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeFill = _diagram.nodeFillAccessor = property('white');\n\n /**\n * Set or get the function which will be used to retrieve the opacity of each node.\n * @method nodeOpacity\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [nodeOpacity=1]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeOpacity = property(1);\n\n /**\n * Set or get the padding or minimum distance, in pixels, for a node. (Will be distributed\n * to both sides of the node.)\n * @method nodePadding\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [nodePadding=6]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodePadding = property(6);\n\n\n /**\n * Set or get the padding, in pixels, for a node's label. If an object, should contain fields\n * `x` and `y`. If a number, will be applied to both x and y.\n * @method nodeLabelPadding\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number|Object} [nodeLabelPadding=0]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeLabelPadding = property(0);\n\n /**\n * Set or get the line height for nodes with multiple lines of text, in ems.\n * @method nodeLineHeight\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [nodeLineHeight=1]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeLineHeight = property(1);\n\n /**\n * Set or get the function which will be used to retrieve the label text to display in each\n * node. By default, looks for a field `label` or `name` inside the `value` field.\n * @method nodeLabel\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [nodeLabel]\n * @return {Function|String}\n * @example\n * // Default behavior\n * diagram.nodeLabel(function(kv) {\n * return kv.value.label || kv.value.name;\n * });\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeLabel = _diagram.nodeLabelAccessor = property(function(kv) {\n return kv.value.label || kv.value.name;\n });\n\n _diagram.nodeLabelAlignment = property('center');\n _diagram.nodeLabelDecoration = property(null);\n\n /**\n * Set or get the function which will be used to retrieve the label fill color. Default: null\n * @method nodeLabelFill\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [nodeLabelFill=null]\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeLabelFill = _diagram.nodeLabelFillAccessor = property(null);\n\n /**\n * Whether to fit the node shape around the label\n * @method nodeFitLabel\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Boolean} [nodeFitLabel=true]\n * @return {Function|Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeFitLabel = _diagram.nodeFitLabelAccessor = property(true);\n\n /**\n * The shape to use for drawing each node, specified as an object with at least the field\n * `shape`. The names of shapes are mostly taken\n * [from graphviz](http://www.graphviz.org/doc/info/shapes.html); currently ellipse, egg,\n * triangle, rectangle, diamond, trapezium, parallelogram, pentagon, hexagon, septagon, octagon,\n * invtriangle, invtrapezium, square, polygon are supported.\n *\n * If `shape = polygon`:\n * * `sides`: number of sides for a polygon\n * @method nodeShape\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Object} [nodeShape={shape: 'ellipse'}]\n * @return {Function|Object}\n * @return {dc_graph.diagram}\n * @example\n * // set shape to diamond or parallelogram based on flag\n * diagram.nodeShape(function(kv) {\n * return {shape: kv.value.flag ? 'diamond' : 'parallelogram'};\n * });\n **/\n _diagram.nodeShape = property(default_shape);\n\n // for defining custom (and standard) shapes\n _diagram.shape = named_children();\n\n _diagram.shape('nothing', dc_graph.no_shape());\n _diagram.shape('ellipse', dc_graph.ellipse_shape());\n _diagram.shape('polygon', dc_graph.polygon_shape());\n _diagram.shape('rounded-rect', dc_graph.rounded_rectangle_shape());\n _diagram.shape('elaborated-rect', dc_graph.elaborated_rectangle_shape());\n\n _diagram.nodeContent = property('text');\n _diagram.content = named_children();\n _diagram.content('text', dc_graph.text_contents());\n\n // really looks like these should reside in an open namespace - this used only by an extension\n // but it's no less real than any other computed property\n _diagram.nodeIcon = property(null);\n\n /**\n * Set or get the function which will be used to retrieve the node title, usually rendered\n * as a tooltip. By default, uses the key of the node.\n * @method nodeTitle\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [nodeTitle]\n * @return {Function|String}\n * @example\n * // Default behavior\n * diagram.nodeTitle(function(kv) {\n * return _diagram.nodeKey()(kv);\n * });\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeTitle = _diagram.nodeTitleAccessor = property(function(kv) {\n return _diagram.nodeKey()(kv);\n });\n\n /**\n * By default, nodes are added to the layout in the order that `.nodeGroup().all()` returns\n * them. If specified, `.nodeOrdering` provides an accessor that returns a key to sort the\n * nodes on. *It would be better not to rely on ordering to affect layout, but it may\n * affect the layout in some cases.*\n * @method nodeOrdering\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [nodeOrdering=null]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeOrdering = property(null);\n\n /**\n * Specify an accessor that returns an {x,y} coordinate for a node that should be\n * {@link https://github.com/tgdwyer/WebCola/wiki/Fixed-Node-Positions fixed in place},\n * and returns falsy for other nodes.\n * @method nodeFixed\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Object} [nodeFixed=null]\n * @return {Function|Object}\n * @return {dc_graph.diagram}\n **/\n _diagram.nodeFixed = _diagram.nodeFixedAccessor = property(null);\n\n\n /**\n * Set or get the function which will be used to retrieve the stroke color for the edges.\n * @method edgeStroke\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [edgeStroke='black']\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeStroke = _diagram.edgeStrokeAccessor = property('black');\n\n /**\n * Set or get the function which will be used to retrieve the stroke width for the edges.\n * @method edgeStrokeWidth\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [edgeStrokeWidth=1]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeStrokeWidth = _diagram.edgeStrokeWidthAccessor = property(1);\n\n _diagram.edgeStrokeDashArray = property(null);\n\n /**\n * Set or get the function which will be used to retrieve the edge opacity, a number from 0\n * to 1.\n * @method edgeOpacity\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [edgeOpacity=1]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeOpacity = _diagram.edgeOpacityAccessor = property(1);\n\n /**\n * Set or get the function which will be used to retrieve the edge label text. The label is\n * displayed when an edge is hovered over. By default, uses the `edgeKey`.\n * @method edgeLabel\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [edgeLabel]\n * @example\n * // Default behavior\n * diagram.edgeLabel(function(e) {\n * return _diagram.edgeKey()(e);\n * });\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeLabel = _diagram.edgeLabelAccessor = property(function(e) {\n return _diagram.edgeKey()(e);\n });\n // vertical spacing when there are multiple lines of edge label\n _diagram.edgeLabelSpacing = property(12);\n\n /**\n * Set or get the function which will be used to retrieve the name of the arrowhead to use\n * for the target/ head/destination of the edge. Arrow symbols can be specified with\n * `.defineArrow()`. Return null to display no arrowhead.\n * @method edgeArrowhead\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [edgeArrowhead='vee']\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeArrowhead = _diagram.edgeArrowheadAccessor = property('vee');\n\n /**\n * Set or get the function which will be used to retrieve the name of the arrow tail to use\n * for the tail/source of the edge. Arrow symbols can be specified with\n * `.defineArrow()`. Return null to display no arrowtail.\n * @method edgeArrowtail\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [edgeArrowtail=null]\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeArrowtail = _diagram.edgeArrowtailAccessor = property(null);\n\n /**\n * Multiplier for arrow size.\n * @method edgeArrowSize\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [edgeArrowSize=1]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeArrowSize = property(1);\n\n /**\n * To draw an edge but not have it affect the layout, specify a function which returns\n * false for that edge. By default, will return false if the `notLayout` field of the edge\n * value is truthy, true otherwise.\n * @method edgeIsLayout\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Boolean} [edgeIsLayout]\n * @example\n * // Default behavior\n * diagram.edgeIsLayout(function(kv) {\n * return !kv.value.notLayout;\n * });\n * @return {Function|Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeIsLayout = _diagram.edgeIsLayoutAccessor = property(function(kv) {\n return !kv.value.notLayout;\n });\n\n // if false, don't draw or layout the edge. this is not documented because it seems like\n // the interface could be better and this combined with edgeIsLayout. (currently there is\n // no way to layout but not draw an edge.)\n _diagram.edgeIsShown = property(true);\n\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n *\n * **Deprecated**: Use {@link dc_graph.cola_layout#lengthStrategy cola_layout.lengthStrategy} instead.\n * @method lengthStrategy\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.diagram}\n **/\n _diagram.lengthStrategy = deprecate_layout_algo_parameter('lengthStrategy');\n\n /**\n * When the `.lengthStrategy` is 'individual', this accessor will be used to read the\n * length of each edge. By default, reads the `distance` field of the edge. If the\n * distance is falsy, uses the `baseLength`.\n * @method edgeLength\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [edgeLength]\n * @example\n * // Default behavior\n * diagram.edgeLength(function(kv) {\n * return kv.value.distance;\n * });\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeLength = _diagram.edgeDistanceAccessor = property(function(kv) {\n return kv.value.distance;\n });\n\n /**\n * This should be equivalent to rankdir and ranksep in the dagre/graphviz nomenclature, but for\n * now it is separate.\n *\n * **Deprecated**: use {@link dc_graph.cola_layout#flowLayout cola_layout.flowLayout} instead.\n * @method flowLayout\n * @memberof dc_graph.diagram\n * @instance\n * @param {Object} [flowLayout]\n * @example\n * // No flow (default)\n * diagram.flowLayout(null)\n * // flow in x with min separation 200\n * diagram.flowLayout({axis: 'x', minSeparation: 200})\n **/\n _diagram.flowLayout = deprecate_layout_algo_parameter('flowLayout');\n\n /**\n * Direction to draw ranks. Currently for dagre and expand_collapse, but I think cola could be\n * generated from graphviz-style since it is more general.\n *\n * **Deprecated**: use {@link dc_graph.dagre_layout#rankdir dagre_layout.rankdir} instead.\n * @method rankdir\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [rankdir]\n **/\n _diagram.rankdir = deprecate_layout_algo_parameter('rankdir');\n\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n *\n * **Deprecated**: use {@link dc_graph.cola_layout#baseLength cola_layout.baseLength} instead.\n * @method baseLength\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} [baseLength]\n * @return {Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.baseLength = deprecate_layout_algo_parameter('baseLength');\n\n /**\n * Gets or sets the transition duration, the length of time each change to the diagram will\n * be animated.\n * @method transitionDuration\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} [transitionDuration=500]\n * @return {Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.transitionDuration = property(500);\n\n /**\n * How transitions should be split into separate animations to emphasize\n * the delete, modify, and insert operations:\n * * `none`: modify and insert operations animate at the same time\n * * `modins`: modify operations happen before inserts\n * * `insmod`: insert operations happen before modifies\n *\n * Deletions always happen before/during layout computation.\n * @method stageTransitions\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [stageTransitions='none']\n * @return {String}\n * @return {dc_graph.diagram}\n **/\n _diagram.stageTransitions = property('none');\n\n /**\n * The delete transition happens simultaneously with layout, which can take longer\n * than the transition duration. Delaying it can bring it closer to the other\n * staged transitions.\n * @method deleteDelay\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} [deleteDelay=0]\n * @return {Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.deleteDelay = property(0);\n\n /**\n * Whether to put connected components each in their own group, to stabilize layout.\n * @method groupConnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [groupConnected=false]\n * @return {String}\n * @return {dc_graph.diagram}\n **/\n _diagram.groupConnected = deprecate_layout_algo_parameter('groupConnected');\n\n /**\n * Gets or sets the maximum time spent doing layout for a render or redraw. Set to 0 for no\n * limit.\n * @method timeLimit\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function|Number} [timeLimit=0]\n * @return {Function|Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.timeLimit = property(0);\n\n /**\n * Gets or sets a function which will be called with the current nodes and edges on each\n * redraw in order to derive new layout constraints. The constraints are built from scratch\n * on each redraw.\n *\n * This can be used to generate alignment (rank) or axis constraints. By default, no\n * constraints will be added, although cola.js uses constraints internally to implement\n * flow and overlap prevention. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/Constraints the cola.js wiki}\n * for more details.\n *\n * For convenience, dc.graph.js implements a other constraints on top of those implemented\n * by cola.js:\n * * 'ordering' - the nodes will be ordered on the specified `axis` according to the keys\n * returned by the `ordering` function, by creating separation constraints using the\n * specified `gap`.\n * * 'circle' - (experimental) the nodes will be placed in a circle using \"wheel\"\n * edge lengths similar to those described in\n * {@link http://www.csse.monash.edu.au/~tdwyer/Dwyer2009FastConstraints.pdf Scalable, Versatile, and Simple Constrained Graph Layout}\n * *Although this is not as performant or stable as might be desired, it may work for\n * simple cases. In particular, it should use edge length *constraints*, which don't yet\n * exist in cola.js.*\n *\n * Because it is tedious to write code to generate constraints for a graph, **dc.graph.js**\n * also includes a {@link #dc_graph+constraint_pattern constraint generator} to produce\n * this constrain function, specifying the constraints themselves in a graph.\n * @method constrain\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [constrain]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.constrain = property(function(nodes, edges) {\n return [];\n });\n\n /**\n * If there are multiple edges between the same two nodes, start them this many pixels away\n * from the original so they don't overlap.\n * @method parallelEdgeOffset\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} [parallelEdgeOffset=10]\n * @return {Number}\n * @return {dc_graph.diagram}\n **/\n _diagram.parallelEdgeOffset = property(10);\n\n /**\n * By default, edges are added to the layout in the order that `.edgeGroup().all()` returns\n * them. If specified, `.edgeOrdering` provides an accessor that returns a key to sort the\n * edges on.\n *\n * *It would be better not to rely on ordering to affect layout, but it may affect the\n * layout in some cases. (Probably less than node ordering, but it does affect which\n * parallel edge is which.)*\n * @method edgeOrdering\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [edgeOrdering=null]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.edgeOrdering = property(null);\n\n _diagram.edgeSort = property(null);\n\n _diagram.cascade = cascade(_diagram);\n\n /**\n * Currently there are some bugs when the same instance of cola.js is used multiple\n * times. (In particular, overlaps between nodes may not be eliminated\n * {@link https://github.com/tgdwyer/WebCola/issues/118 if cola is not reinitialized}\n * This flag can be set true to construct a new cola layout object on each redraw. However,\n * layout seems to be more stable if this is set false, so hopefully this will be fixed\n * soon.\n * @method initLayoutOnRedraw\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [initLayoutOnRedraw=false]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.initLayoutOnRedraw = property(false);\n\n /**\n * Whether to perform layout when the data is unchanged from the last redraw.\n * @method layoutUnchanged\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [layoutUnchanged=false]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.layoutUnchanged = property(false);\n\n /**\n * When `layoutUnchanged` is false, this will force layout to happen again. This may be needed\n * when changing a parameter but not changing the topology of the graph. (Yes, probably should\n * not be necessary.)\n * @method relayout\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _diagram.relayout = function() {\n _nodes_snapshot = _edges_snapshot = null;\n return this;\n };\n\n /**\n * Function to call to generate an initial layout. Takes (diagram, nodes, edges)\n *\n * **Deprecated**: The only layout that was using this was `tree_positions` and it never\n * worked as an initialization step for cola, as was originally intended. Now that\n * `tree_layout` is a layout algorithm, this should go away.\n *\n * In the future, there will be support for chaining layout algorithms. But that will be a\n * matter of composing them into a super-algorithm, not a special step like this was.\n * @method initialLayout\n * @memberof dc_graph.diagram\n * @instance\n * @param {Function} [initialLayout=null]\n * @return {Function}\n * @return {dc_graph.diagram}\n **/\n _diagram.initialLayout = deprecated_property('initialLayout is deprecated - use layout algorithms instead', null);\n\n _diagram.initialOnly = deprecated_property('initialOnly is deprecated - see the initialLayout deprecation notice in the documentation', false);\n\n /**\n * By default, all nodes are included, and edges are only included if both end-nodes are\n * visible. If `.induceNodes` is set, then only nodes which have at least one edge will be\n * shown.\n * @method induceNodes\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [induceNodes=false]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.induceNodes = property(false);\n\n /**\n * If this flag is true, the positions of nodes and will be updated while layout is\n * iterating. If false, the positions will only be updated once layout has\n * stabilized. Note: this may not be compatible with transitionDuration.\n * @method showLayoutSteps\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [showLayoutSteps=false]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.showLayoutSteps = property(false);\n\n /**\n * Assigns a legend object which will be displayed within the same SVG element and\n * according to the visual encoding of this diagram.\n * @method legend\n * @memberof dc_graph.diagram\n * @instance\n * @param {Object} [legend=null]\n * @return {Object}\n * @return {dc_graph.diagram}\n **/\n // (pre-deprecated; see below)\n\n /**\n * Specifies another kind of child layer or interface. For example, this can\n * be used to display tooltips on nodes using `dc_graph.tip`.\n\n * The child needs to support a `parent` method, the diagram to modify.\n * @method child\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [id] - the name of the child to modify or add\n * @param {Object} [object] - the child object to add, or null to remove\n * @example\n * // Display tooltips on node hover, via the d3-tip library\n * var tip = dc_graph.tip()\n * tip.content(function(n, k) {\n * // you can do an asynchronous call here, e.g. d3.json, if you need\n * // to fetch data to show the tooltip - just call k() with the content\n * k(\"This is <em>\" + n.orig.value.name + \"</em>\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _diagram.mode = _diagram.child = named_children();\n\n _diagram.mode.reject = function(id, object) {\n var rtype = _diagram.renderer().rendererType();\n if(!object)\n return false; // null is always a valid mode for any renderer\n if(!object.supportsRenderer)\n console.log('could not check if \"' + id + '\" is compatible with ' + rtype);\n else if(!object.supportsRenderer(rtype))\n return 'not installing \"' + id + '\" because it is not compatible with renderer ' + rtype;\n return false;\n };\n\n _diagram.legend = deprecate_function(\".legend() is deprecated; use .child() for more control & multiple legends\", function(_) {\n if(!arguments.length)\n return _diagram.child('node-legend');\n _diagram.child('node-legend', _);\n return _diagram;\n });\n\n /**\n * Specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it will replace the\n * back-end.\n *\n * **Deprecated**: use {@link dc_graph.diagram#layoutEngine diagram.layoutEngine} with the engine\n * object instead\n * @method layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo='cola'] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _diagram.layoutAlgorithm = function(value, skipWarning) {\n if(!arguments.length)\n return _diagram.layoutEngine() ? _diagram.layoutEngine().layoutAlgorithm() : 'cola';\n if(!skipWarning)\n console.warn('dc.graph.diagram.layoutAlgorithm is deprecated - pass the layout engine object to dc_graph.diagram.layoutEngine instead');\n\n var engine;\n switch(value) {\n case 'cola':\n engine = dc_graph.cola_layout();\n break;\n case 'dagre':\n engine = dc_graph.dagre_layout();\n }\n engine = dc_graph.webworker_layout(engine);\n _diagram.layoutEngine(engine);\n return this;\n };\n\n /**\n * The layout engine determines positions of nodes and edges.\n * @method layoutEngine\n * @memberof dc_graph.diagram\n * @instance\n * @param {Object} [engine=null] - the layout engine to use\n * @example\n * // use cola with no webworker\n * diagram.layoutEngine(dc_graph.cola_layout());\n * // use dagre with a webworker\n * diagram.layoutEngine(dc_graph.webworker_layout(dc_graph.dagre_layout()));\n **/\n _diagram.layoutEngine = property(null).react(function(val) {\n if(val && val.parent)\n val.parent(_diagram);\n if(_diagram.renderer().isRendered()) {\n // remove any calculated points, if engine did that\n Object.keys(_edges).forEach(function(k) {\n _edges[k].cola.points = null;\n });\n // initialize engine\n initLayout(val);\n }\n });\n\n _diagram.renderer = property(dc_graph.render_svg().parent(_diagram)).react(function(r) {\n if(_diagram.renderer())\n _diagram.renderer().parent(null);\n r.parent(_diagram);\n });\n\n // S-spline any edges that are not going in this direction\n _diagram.enforceEdgeDirection = property(null);\n\n _diagram.tickSize = deprecate_layout_algo_parameter('tickSize');\n\n\n _diagram.uniqueId = function() {\n return _diagram.anchorName().replace(/[ .#=\\[\\]\"]/g, '-');\n };\n\n _diagram.edgeId = function(e) {\n return 'edge-' + _diagram.edgeKey.eval(e).replace(/[^\\w-_]/g, '-');\n };\n\n _diagram.arrowId = function(e, kind) {\n return 'arrow-' + kind + '-' + _diagram.uniqueId() + '-' + _diagram.edgeId(e);\n };\n _diagram.textpathId = function(e) {\n return 'textpath-' + _diagram.uniqueId() + '-' + _diagram.edgeId(e);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _diagram.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n _diagram.getWholeNode = function(id) {\n return _nodes[id] ? _nodes[id] : null;\n };\n\n _diagram.getEdge = function(id) {\n return _edges[id] ? _edges[id].orig : null;\n };\n\n _diagram.getWholeEdge = function(id) {\n return _edges[id] ? _edges[id] : null;\n };\n\n // again, awful, we need an ADT\n _diagram.getPort = function(nid, eid, name) {\n return _ports[port_name(nid, eid, name)];\n };\n\n _diagram.nodePorts = function() {\n return _nodePorts;\n };\n\n _diagram.getWholeCluster = function(id) {\n return _clusters[id] || null;\n };\n\n /**\n * Instructs cola.js to fit the connected components.\n *\n * **Deprecated**: Use\n * {@link dc_graph.cola_layout#handleDisconnected cola_layout.handleDisconnected} instead.\n * @method handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _diagram.handleDisconnected = deprecate_layout_algo_parameter('handleDisconnected');\n\n function initLayout(engine) {\n if(!_diagram.layoutEngine())\n _diagram.layoutAlgorithm('cola', true);\n (engine || _diagram.layoutEngine()).init({\n width: _diagram.width(),\n height: _diagram.height()\n });\n }\n\n _diagram.forEachChild = function(node, children, idf, f) {\n children.enum().forEach(function(key) {\n f(children(key),\n node.filter(function(n) { return idf(n) === key; }));\n });\n };\n _diagram.forEachShape = function(node, f) {\n _diagram.forEachChild(node, _diagram.shape, function(n) { return n.dcg_shape.shape; }, f);\n };\n _diagram.forEachContent = function(node, f) {\n _diagram.forEachChild(node, _diagram.content, _diagram.nodeContent.eval, f);\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n _diagram.stagedDuration = function() {\n return (_diagram.stageTransitions() !== 'none') ?\n _diagram.transitionDuration() / 2 :\n _diagram.transitionDuration();\n };\n\n _diagram.stagedDelay = function(is_enter) {\n return _diagram.stageTransitions() === 'none' ||\n _diagram.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _diagram.transitionDuration() / 2;\n };\n\n _diagram.isRunning = function() {\n return _running;\n };\n\n function svg_specific(name) {\n return trace_function('trace', name + '() is specific to the SVG renderer', function() {\n return _diagram.renderer()[name].apply(this, arguments);\n });\n }\n\n function call_on_renderer(name) {\n return trace_function('trace', 'calling ' + name + '() on renderer', function() {\n return _diagram.renderer()[name].apply(this, arguments);\n });\n }\n\n _diagram.svg = svg_specific('svg');\n _diagram.g = svg_specific('g');\n _diagram.select = svg_specific('select');\n _diagram.selectAll = svg_specific('selectAll');\n _diagram.addOrRemoveDef = svg_specific('addOrRemoveDef');\n _diagram.selectAllNodes = svg_specific('selectAllNodes');\n _diagram.selectAllEdges = svg_specific('selectAllEdges');\n _diagram.selectNodePortsOfStyle = svg_specific('selectNodePortsOfStyle');\n _diagram.zoom = svg_specific('zoom');\n _diagram.translate = svg_specific('translate');\n _diagram.scale = svg_specific('scale');\n\n function renderer_specific(name) {\n return trace_function('trace', name + '() will have renderer-specific arguments', function() {\n return _diagram.renderer()[name].apply(this, arguments);\n });\n }\n _diagram.renderNode = svg_specific('renderNode');\n _diagram.renderEdge = svg_specific('renderEdge');\n _diagram.redrawNode = svg_specific('redrawNode');\n _diagram.redrawEdge = svg_specific('redrawEdge');\n _diagram.reposition = call_on_renderer('reposition');\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n *\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n *\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n * @method redraw\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n var _needsRedraw = false;\n _diagram.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _diagram.startLayout();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @method render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _diagram.render = function() {\n if(_diagram.renderer().isRendered())\n _dispatch.reset();\n if(!_diagram.initLayoutOnRedraw())\n initLayout();\n\n _nodes = {};\n _edges = {};\n _ports = {};\n _clusters = {};\n\n // start out with 1:1 zoom\n _diagram.x(d3.scale.linear()\n .domain([0, _diagram.width()])\n .range([0, _diagram.width()]));\n _diagram.y(d3.scale.linear()\n .domain([0, _diagram.height()])\n .range([0, _diagram.height()]));\n _diagram.renderer().initializeDrawing();\n _dispatch.render();\n _diagram.redraw();\n return this;\n };\n\n _diagram.refresh = call_on_renderer('refresh');\n\n _diagram.width_is_automatic = function() {\n return _width === 'auto';\n };\n\n _diagram.height_is_automatic = function() {\n return _height === 'auto';\n };\n\n function detect_size_change() {\n var oldWidth = _lastWidth, oldHeight = _lastHeight;\n var newWidth = _diagram.width(), newHeight = _diagram.height();\n if(oldWidth !== newWidth || oldHeight !== newHeight)\n _diagram.renderer().rezoom(oldWidth, oldHeight, newWidth, newHeight);\n }\n\n _diagram.startLayout = function () {\n var nodes = _diagram.nodeGroup().all();\n var edges = _diagram.edgeGroup().all();\n var ports = _diagram.portGroup() ? _diagram.portGroup().all() : [];\n var clusters = _diagram.clusterGroup() ? _diagram.clusterGroup().all() : [];\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n if(_diagram.width_is_automatic() || _diagram.height_is_automatic())\n detect_size_change();\n else\n _diagram.renderer().resize();\n\n if(_diagram.initLayoutOnRedraw())\n initLayout();\n _diagram.layoutEngine().stop();\n _dispatch.preDraw();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_diagram.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_diagram.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_diagram.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_diagram.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, null, function(v) {\n return _diagram.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _diagram.nodeKey.eval(v1);\n v1.cola.dcg_nodeParentCluster = _diagram.nodeParentCluster.eval(v1);\n _diagram.layoutEngine().populateLayoutNode(v1.cola, v1);\n });\n var wedges = regenerate_objects(_edges, edges, null, function(e) {\n return _diagram.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _diagram.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _diagram.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _diagram.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.sourcePort = e1.sourcePort || {};\n e1.targetPort = e1.targetPort || {};\n _diagram.layoutEngine().populateLayoutEdge(e1.cola, e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_diagram.edgeIsShown.eval);\n\n // now we know which ports should exist\n var needports = wedges.map(function(e) {\n if(_diagram.edgeSourcePortName.eval(e))\n return port_name(_diagram.edgeSource.eval(e), null, _diagram.edgeSourcePortName.eval(e));\n else return port_name(null, _diagram.edgeKey.eval(e), 'source');\n });\n needports = needports.concat(wedges.map(function(e) {\n if(_diagram.edgeTargetPortName.eval(e))\n return port_name(_diagram.edgeTarget.eval(e), null, _diagram.edgeTargetPortName.eval(e));\n else return port_name(null, _diagram.edgeKey.eval(e), 'target');\n }));\n // remove any invalid ports so they don't crash in confusing ways later\n ports = ports.filter(function(p) {\n return _diagram.portNodeKey() && _diagram.portNodeKey()(p) ||\n _diagram.portEdgeKey() && _diagram.portEdgeKey()(p);\n });\n var wports = regenerate_objects(_ports, ports, needports, function(p) {\n return port_name(_diagram.portNodeKey() && _diagram.portNodeKey()(p),\n _diagram.portEdgeKey() && _diagram.portEdgeKey()(p),\n _diagram.portName()(p));\n }, function(p1, p) {\n p1.orig = p;\n if(p1.named)\n p1.edges = [];\n }, function(k, p) {\n console.assert(k, 'should have screened out invalid ports');\n // it's dumb to parse the id we just created. as usual, i blame the lack of metagraphs\n var parse = split_port_name(k);\n if(parse.nodeKey) {\n p.node = _nodes[parse.nodeKey];\n p.named = true;\n }\n else {\n var e = _edges[parse.edgeKey];\n p.node = e[parse.name];\n p.edges = [e];\n p.named = false;\n }\n p.name = parse.name;\n });\n // remove any ports where the end-node was not found, to avoid crashing elsewhere\n wports = wports.filter(function(p) { return p.node; });\n\n // find all edges for named ports\n wedges.forEach(function(e) {\n var name = _diagram.edgeSourcePortName.eval(e);\n if(name)\n _ports[port_name(_diagram.nodeKey.eval(e.source), null, name)].edges.push(e);\n name = _diagram.edgeTargetPortName.eval(e);\n if(name)\n _ports[port_name(_diagram.nodeKey.eval(e.target), null, name)].edges.push(e);\n });\n\n // optionally, delete nodes that have no edges\n if(_diagram.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n var needclusters = d3.set(wnodes.map(function(n) {\n return _diagram.nodeParentCluster.eval(n);\n }).filter(identity)).values();\n\n var wclusters = regenerate_objects(_clusters, clusters, needclusters, function(c) {\n return _diagram.clusterKey()(c);\n }, function(c1, c) { // assign\n c1.orig = c;\n c1.cola = c1.cola || {\n dcg_clusterKey: _diagram.clusterKey.eval(c1),\n dcg_clusterParent: _diagram.clusterParent.eval(c1)\n };\n }, function(k, c) { // create\n });\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n // announce new data\n _dispatch.data(_diagram, _nodes, wnodes, _edges, wedges, _ports, wports);\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // fixed nodes may have been affected by .data() so calculate now\n wnodes.forEach(function(v) {\n if(_diagram.nodeFixed())\n v.cola.dcg_nodeFixed = _diagram.nodeFixed.eval(v);\n });\n\n // annotate parallel edges so we can draw them specially\n if(_diagram.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < wnodes.length; ++i)\n em[i] = new Array(i);\n wedges.forEach(function(e) {\n e.pos = e.pos || {};\n var min, max, minattr, maxattr;\n if(e.source.index < e.target.index) {\n min = e.source.index; max = e.target.index;\n minattr = 'edgeSourcePortName'; maxattr = 'edgeTargetPortName';\n } else {\n max = e.source.index; min = e.target.index;\n maxattr = 'edgeSourcePortName'; minattr = 'edgeTargetPortName';\n }\n var minport = _diagram[minattr].eval(e) || 'no port',\n maxport = _diagram[maxattr].eval(e) || 'no port';\n em[max][min] = em[max][min] || {};\n em[max][min][maxport] = em[max][min][maxport] || {};\n e.parallel = em[max][min][maxport][minport] = em[max][min][maxport][minport] || {\n rev: [],\n edges: []\n };\n e.parallel.edges.push(e);\n e.parallel.rev.push(min !== e.source.index);\n });\n }\n\n var drawState = _diagram.renderer().startRedraw(_dispatch, wnodes, wedges);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_diagram.initialLayout())\n _diagram.initialLayout()(_diagram, wnodes, wedges);\n\n // no layout if the topology and layout parameters haven't changed\n var skip_layout = false;\n if(!_diagram.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(function(n) {\n return {orig: get_original(n), cola: {dcg_nodeFixed: n.cola.dcg_nodeFixed}};\n }));\n var edges_snapshot = JSON.stringify(wedges.map(function(e) {\n return {orig: get_original(e), cola: e.cola};\n }));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // edge lengths may be affected by node sizes\n wedges.forEach(function(e) {\n e.cola.dcg_edgeLength = _diagram.edgeLength.eval(e);\n });\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _diagram.constrain()(_diagram, wnodes, wedges);\n\n // warn if there are any loops (before changing names to indices)\n // it would be better to do this in webcola\n // (for one thing, this duplicates logic in rectangle.ts)\n // but by that time it has lost the names of things,\n // so the output would be difficult to use\n var constraints_by_left = constraints.reduce(function(p, c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n var left = c.offsets[0].node;\n p[left] = p[left] || [];\n c.offsets.slice(1).forEach(function(o) {\n p[left].push({node: o.node, in_constraint: c});\n });\n break;\n }\n } else if(c.axis) {\n p[c.left] = p[c.left] || [];\n p[c.left].push({node: c.right, in_constraint: c});\n }\n return p;\n }, {});\n var touched = {};\n function find_constraint_loops(con, stack) {\n var left = con.node;\n stack = stack || [];\n var loop = stack.find(function(con) { return con.node === left; });\n stack = stack.concat([con]);\n if(loop)\n console.warn('found a loop in constraints', stack);\n if(touched[left])\n return;\n touched[left] = true;\n if(!constraints_by_left[left])\n return;\n constraints_by_left[left].forEach(function(right) {\n find_constraint_loops(right, stack);\n });\n }\n Object.keys(constraints_by_left).forEach(function(left) {\n if(!touched[left])\n find_constraint_loops({node: left, in_constraint: null});\n });\n\n // translate references from names to indices (ugly)\n var invalid_constraints = [];\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis && c.left && c.right) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n else invalid_constraints.push(c);\n });\n\n if(invalid_constraints.length)\n console.warn(invalid_constraints.length + ' invalid constraints', invalid_constraints);\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_diagram.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_diagram.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _diagram.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _diagram.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(skip_layout) {\n _running = false;\n // init_node_ports?\n _diagram.renderer().draw(drawState, true);\n _diagram.renderer().drawPorts(drawState);\n _diagram.renderer().fireTSEvent(_dispatch, drawState);\n check_zoom(drawState);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges, rclusters) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n if(!n) {\n console.warn('received node \"' + rn.dcg_nodeKey + '\" that we did not send, ignored');\n return;\n }\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n n.cola.z = rn.z;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n if(!e) {\n console.warn('received edge \"' + re.dcg_edgeKey + '\" that we did not send, ignored');\n return;\n }\n if(re.points)\n e.cola.points = re.points;\n });\n wclusters.forEach(function(c) {\n c.cola.bounds = null;\n });\n if(rclusters)\n rclusters.forEach(function(rc) {\n var c = _clusters[rc.dcg_clusterKey];\n if(!c) {\n console.warn('received cluster \"' + rc.dcg_clusterKey + '\" that we did not send, ignored');\n return;\n }\n if(rc.bounds)\n c.cola.bounds = rc.bounds;\n });\n }\n _diagram.layoutEngine()\n .on('tick.diagram', function(nodes, edges, clusters) {\n var elapsed = Date.now() - startTime;\n if(!_diagram.initialOnly())\n populate_cola(nodes, edges, clusters);\n if(_diagram.showLayoutSteps()) {\n init_node_ports(_nodes, wports);\n _dispatch.receivedLayout(_diagram, _nodes, wnodes, _edges, wedges, _ports, wports);\n propagate_port_positions(_nodes, wedges, _ports);\n _diagram.renderer().draw(drawState, true);\n _diagram.renderer().drawPorts(drawState);\n // should do this only once\n _diagram.renderer().fireTSEvent(_dispatch, drawState);\n }\n if(_needsRedraw || _diagram.timeLimit() && elapsed > _diagram.timeLimit()) {\n console.log('cancelled');\n _diagram.layoutEngine().stop();\n }\n })\n .on('end.diagram', function(nodes, edges, clusters) {\n if(!_diagram.showLayoutSteps()) {\n if(!_diagram.initialOnly())\n populate_cola(nodes, edges, clusters);\n init_node_ports(_nodes, wports);\n _dispatch.receivedLayout(_diagram, _nodes, wnodes, _edges, wedges, _ports, wports);\n propagate_port_positions(_nodes, wedges, _ports);\n _diagram.renderer().draw(drawState, true);\n _diagram.renderer().drawPorts(drawState);\n _diagram.renderer().fireTSEvent(_dispatch, drawState);\n }\n else _diagram.layoutDone(true);\n check_zoom(drawState);\n })\n .on('start.diagram', function() {\n console.log('algo ' + _diagram.layoutEngine().layoutAlgorithm() + ' started.');\n _dispatch.start();\n });\n\n if(_diagram.initialOnly())\n _diagram.layoutEngine().dispatch().end(wnodes, wedges);\n else {\n _dispatch.start(); // cola doesn't seem to fire this itself?\n var engine = _diagram.layoutEngine();\n engine.data(\n { width: _diagram.width(), height: _diagram.height() },\n wnodes.map(function(v) {\n var lv = Object.assign({}, v.cola, v.dcg_shape);\n if(engine.annotateNode)\n engine.annotateNode(lv, v);\n else if(engine.extractNodeAttrs)\n Object.keys(engine.extractNodeAttrs()).forEach(function(key) {\n lv[key] = engine.extractNodeAttrs()[key](v.orig);\n });\n return lv;\n }),\n layout_edges.map(function(e) {\n var le = e.cola;\n if(engine.annotateEdge)\n engine.annotateEdge(le, e);\n else if(engine.extractEdgeAttrs)\n Object.keys(engine.extractEdgeAttrs()).forEach(function(key) {\n le[key] = engine.extractEdgeAttrs()[key](e.orig);\n });\n return le;\n }),\n wclusters.map(function(c) {\n return c.cola;\n }),\n constraints\n );\n engine.start();\n }\n return this;\n };\n\n function check_zoom(drawState) {\n var do_zoom, animate = true;\n if(_diagram.width_is_automatic() || _diagram.height_is_automatic())\n detect_size_change();\n switch(_diagram.autoZoom()) {\n case 'always-skipanimonce':\n animate = false;\n _diagram.autoZoom('always');\n case 'always':\n do_zoom = true;\n break;\n case 'once-noanim':\n animate = false;\n case 'once':\n do_zoom = true;\n _diagram.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(drawState);\n if(do_zoom)\n auto_zoom(animate);\n }\n\n function norm(v) {\n var len = Math.hypot(v[0], v[1]);\n return [v[0]/len, v[1]/len];\n }\n function edge_vec(n, e) {\n var dy = e.target.cola.y - e.source.cola.y,\n dx = e.target.cola.x - e.source.cola.x;\n if(dy === 0 && dx === 0)\n return [1, 0];\n if(e.source !== n)\n dy = -dy, dx = -dx;\n if(e.parallel && e.parallel.edges.length > 1 && e.source.index > e.target.index)\n dy = -dy, dx = -dx;\n return norm([dx, dy]);\n }\n function init_node_ports(nodes, wports) {\n _nodePorts = {};\n // assemble port-lists for nodes, again because we don't have a metagraph.\n wports.forEach(function(p) {\n var nid = _diagram.nodeKey.eval(p.node);\n var np = _nodePorts[nid] = _nodePorts[nid] || [];\n np.push(p);\n });\n for(var nid in _nodePorts) {\n var n = nodes[nid],\n nports = _nodePorts[nid];\n // initial positions: use average of edge vectors, if any, or existing position\n nports.forEach(function(p) {\n if(_diagram.portElastic.eval(p) && p.edges.length) {\n var vecs = p.edges.map(edge_vec.bind(null, n));\n p.vec = [\n d3.sum(vecs, function(v) { return v[0]; })/vecs.length,\n d3.sum(vecs, function(v) { return v[1]; })/vecs.length\n ];\n } else p.vec = p.vec || undefined;\n p.pos = null;\n });\n }\n }\n function propagate_port_positions(nodes, wedges, ports) {\n // make sure we have projected vectors to positions\n for(var nid in _nodePorts) {\n var n = nodes[nid];\n _nodePorts[nid].forEach(function(p) {\n if(!p.pos)\n project_port(_diagram, n, p);\n });\n }\n\n // propagate port positions to edge endpoints\n wedges.forEach(function(e) {\n var name = _diagram.edgeSourcePortName.eval(e);\n e.sourcePort.pos = name ? ports[port_name(_diagram.nodeKey.eval(e.source), null, name)].pos :\n ports[port_name(null, _diagram.edgeKey.eval(e), 'source')].pos;\n name = _diagram.edgeTargetPortName.eval(e);\n e.targetPort.pos = name ? ports[port_name(_diagram.nodeKey.eval(e.target), null, name)].pos :\n ports[port_name(null, _diagram.edgeKey.eval(e), 'target')].pos;\n console.assert(e.sourcePort.pos && e.targetPort.pos);\n });\n }\n\n _diagram.requestRefresh = function(durationOverride) {\n window.requestAnimationFrame(function() {\n var transdur;\n if(durationOverride !== undefined) {\n transdur = _diagram.transitionDuration();\n _diagram.transitionDuration(durationOverride);\n }\n _diagram.renderer().refresh();\n if(durationOverride !== undefined)\n _diagram.transitionDuration(transdur);\n });\n };\n\n _diagram.layoutDone = function(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_diagram.isRunning()) // someone else may already have started\n _diagram.redraw();\n }, 0);\n }\n };\n\n function enforce_path_direction(path, spos, tpos) {\n var points = path.points, first = points[0], last = points[points.length-1];\n switch(_diagram.enforceEdgeDirection()) {\n case 'LR':\n if(spos.x >= tpos.x) {\n var dx = first.x - last.x;\n return {\n points: [\n first,\n {x: first.x + dx, y: first.y - dx/2},\n {x: last.x - dx, y: last.y - dx/2},\n last\n ],\n bezDegree: 3,\n sourcePort: path.sourcePort,\n targetPort: path.targetPort\n };\n }\n break;\n case 'TB':\n if(spos.y >= tpos.y) {\n var dy = first.y - last.y;\n return {\n points: [\n first,\n {x: first.x + dy/2, y: first.y + dy},\n {x: last.x + dy/2, y: last.y - dy},\n last\n ],\n bezDegree: 3,\n sourcePort: path.sourcePort,\n targetPort: path.targetPort\n };\n }\n break;\n }\n return path;\n }\n _diagram.calcEdgePath = function(e, age, sx, sy, tx, ty) {\n var parallel = e.parallel;\n var source = e.source, target = e.target;\n if(parallel.edges.length > 1 && e.source.index > e.target.index) {\n var t;\n t = target; target = source; source = t;\n t = tx; tx = sx; sx = t;\n t = ty; ty = sy; sy = t;\n }\n var source_padding = source.dcg_ry +\n _diagram.nodeStrokeWidth.eval(source) / 2,\n target_padding = target.dcg_ry +\n _diagram.nodeStrokeWidth.eval(target) / 2;\n for(var p = 0; p < parallel.edges.length; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port > 0 ? parallel.edges[p > 2 ? p - 2 : 0].pos[age].path : null;\n var path = draw_edge_to_shapes(_diagram, e, sx, sy, tx, ty,\n last, dir, _diagram.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(parallel.edges.length > 1 && parallel.rev[p])\n path.points.reverse();\n if(_diagram.enforceEdgeDirection())\n path = enforce_path_direction(path, source.cola, target.cola);\n var path0 = {\n points: path.points,\n bezDegree: path.bezDegree\n };\n var alengths = scaled_arrow_lengths(_diagram, parallel.edges[p]);\n path = clip_path_to_arrows(alengths.headLength, alengths.tailLength, path);\n var points = path.points, points0 = path0.points;\n parallel.edges[p].pos[age] = {\n path: path,\n full: path0,\n orienthead: angle_between_points(points[points.length-1], points0[points0.length-1]) + 'rad',\n orienttail: angle_between_points(points[0], points0[0]) + 'rad'\n };\n }\n };\n\n function node_bounds(n) {\n var bounds = {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n if(_diagram.portStyle.enum().length) {\n var ports = _nodePorts[_diagram.nodeKey.eval(n)];\n if(ports)\n ports.forEach(function(p) {\n var portStyle =_diagram.portStyleName.eval(p);\n if(!portStyle || !_diagram.portStyle(portStyle))\n return;\n var pb = _diagram.portStyle(portStyle).portBounds(p);\n pb.left += n.cola.x; pb.top += n.cola.y;\n pb.right += n.cola.x; pb.bottom += n.cola.y;\n bounds = union_bounds(bounds, pb);\n });\n }\n return bounds;\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.pos.new.path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n _diagram.calculateBounds = function(ndata, edata) {\n // assumption: there can be no edges without nodes\n var bounds = ndata.map(node_bounds).reduce(union_bounds);\n return edata.map(edge_bounds).reduce(union_bounds, bounds);\n };\n var _bounds;\n function calc_bounds(drawState) {\n if((_diagram.fitStrategy() || _diagram.restrictPan())) {\n _bounds = _diagram.renderer().calculateBounds(drawState);\n }\n }\n\n function auto_zoom(animate) {\n if(_diagram.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _diagram.width() - _diagram.margins().left - _diagram.margins().right,\n sheight = _diagram.height() - _diagram.margins().top - _diagram.margins().bottom;\n var fitS = _diagram.fitStrategy(), translate = [0,0], scale = 1;\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR<sAR, // view aspect ratio is less (wider)\n amv = (fitS === 'default') ? !vrl : (fitS === 'vertical'); // align margins vertically\n scale = amv ? sheight / vheight : swidth / vwidth;\n scale = Math.max(_diagram.zoomExtent()[0], Math.min(_diagram.zoomExtent()[1], scale));\n translate = [_diagram.margins().left - _bounds.left*scale + (swidth - vwidth*scale) / 2,\n _diagram.margins().top - _bounds.top*scale + (sheight - vheight*scale) / 2];\n }\n else if(typeof fitS === 'string' && fitS.match(/^align_/)) {\n var sides = fitS.split('_')[1].toLowerCase().split('');\n if(sides.length > 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _diagram.renderer().translate();\n scale = _diagram.renderer().scale();\n var vertalign = false, horzalign = false;\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n horzalign = true;\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n vertalign = true;\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n horzalign = true;\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n vertalign = true;\n break;\n case 'c': // handled below\n break;\n default:\n throw new Error(\"align_ expecting l t r b or c, not '\" + s + \"'\");\n }\n });\n if(sides.includes('c')) {\n if(!horzalign)\n translate[0] = center_horizontally(translate, bounds);\n if(!vertalign)\n translate[1] = center_vertically(translate, bounds);\n }\n }\n else if(fitS === 'zoom') {\n scale = _diagram.renderer().scale();\n translate = bring_in_bounds(_diagram.renderer().translate());\n }\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n _animateZoom = animate;\n _diagram.renderer().translate(translate).scale(scale).commitTranslateScale();\n _animateZoom = false;\n }\n }\n function namespace_event_reducer(msg_fun) {\n return function(p, ev) {\n var namespace = {};\n p[ev] = function(ns) {\n return namespace[ns] = namespace[ns] || onetime_trace('trace', msg_fun(ns, ev));\n };\n return p;\n };\n }\n var renderer_specific_events = ['drawn', 'transitionsStarted', 'zoomed']\n .reduce(namespace_event_reducer(function(ns, ev) {\n return 'subscribing \"' + ns + '\" to event \"' + ev + '\" which takes renderer-specific parameters';\n }), {});\n var inconsistent_arguments = ['end']\n .reduce(namespace_event_reducer(function(ns, ev) {\n return 'subscribing \"' + ns + '\" to event \"' + ev + '\" which may receive inconsistent arguments';\n }), {});\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @method on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _diagram.on = function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n var evns = event.split('.'),\n warning = renderer_specific_events[evns[0]] || inconsistent_arguments[evns[0]];\n if(warning)\n warning(evns[1] || '')();\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @method getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _diagram.getStats = function() {\n return _stats;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Gets or sets the x scale.\n * @method x\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.scale} [scale]\n * @return {d3.scale}\n * @return {dc_graph.diagram}\n\n **/\n _diagram.x = property(null);\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Gets or sets the y scale.\n * @method y\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.scale} [scale]\n * @return {d3.scale}\n * @return {dc_graph.diagram}\n\n **/\n _diagram.y = property(null);\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @method redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _diagram.redrawGroup = function () {\n dc.redrawAll(_chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @method renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _diagram.renderGroup = function () {\n dc.renderAll(_chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads.\n *\n * Sorry, this is not currently documented - please see\n * [arrows.js](https://github.com/dc-js/dc.graph.js/blob/develop/src/arrows.js)\n * for examples\n * @return {dc_graph.diagram}\n **/\n _diagram.defineArrow = function(name, defn) {\n if(typeof defn !== 'function')\n throw new Error('sorry, defineArrow no longer takes specific shape parameters, and the parameters have changed too much to convert them. it takes a name and a function returning a definition - please look at arrows.js for new format');\n _arrows[name] = defn;\n return _diagram;\n };\n\n // hmm\n _diagram.arrows = function() {\n return _arrows;\n };\n\n Object.keys(dc_graph.builtin_arrows).forEach(function(aname) {\n var defn = dc_graph.builtin_arrows[aname];\n _diagram.defineArrow(aname, defn);\n });\n\n function margined_bounds() {\n var bounds = _bounds || {left: 0, top: 0, right: 0, bottom: 0};\n var scale = _diagram.renderer().scale();\n return {\n left: bounds.left - _diagram.margins().left/scale,\n top: bounds.top - _diagram.margins().top/scale,\n right: bounds.right + _diagram.margins().right/scale,\n bottom: bounds.bottom + _diagram.margins().bottom/scale\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _diagram.x()(x) + _diagram.x().range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _diagram.y()(y) + _diagram.y().range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _diagram.x()(x) + _diagram.x().range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _diagram.y()(y) + _diagram.y().range()[1];;\n }\n function center_horizontally(translate, bounds) {\n return (align_left(translate, bounds.left) + align_right(translate, bounds.right))/2;\n }\n function center_vertically(translate, bounds) {\n return (align_top(translate, bounds.top) + align_bottom(translate, bounds.bottom))/2;\n }\n\n function bring_in_bounds(translate) {\n var xDomain = _diagram.x().domain(), yDomain = _diagram.y().domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n return translate;\n\n }\n\n _diagram.doZoom = function() {\n if(_diagram.width_is_automatic() || _diagram.height_is_automatic())\n detect_size_change();\n var translate, scale = d3.event.scale;\n if(_diagram.restrictPan())\n _diagram.renderer().translate(translate = bring_in_bounds(d3.event.translate));\n else translate = d3.event.translate;\n _diagram.renderer().globalTransform(translate, scale, _animateZoom);\n _dispatch.zoomed(translate, scale, _diagram.x().domain(), _diagram.y().domain());\n };\n\n _diagram.invertCoord = function(clientCoord) {\n return [\n _diagram.x().invert(clientCoord[0]),\n _diagram.y().invert(clientCoord[1])\n ];\n };\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on diagram initialization, but be called again to relocate the diagram. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _diagram.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _diagram.root(d3.select(_anchor));\n _diagram.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_diagram, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _diagram;\n };\n\n /**\n * Returns the internal numeric ID of the chart.\n * @method chartID\n * @memberof dc.baseMixin\n * @instance\n * @returns {String}\n */\n _diagram.chartID = function () {\n return _diagram.__dcFlag__;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _diagram.anchorName = function () {\n var a = _diagram.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _diagram.chartID();\n };\n\n return _diagram.anchor(parent, chartGroup);\n};\n","dc_graph.render_svg = function() {\n var _svg = null, _defs = null, _g = null, _nodeLayer = null, _edgeLayer = null;\n var _animating = false; // do not refresh during animations\n var _zoom;\n var _renderer = {};\n\n _renderer.rendererType = function() {\n return 'svg';\n };\n\n _renderer.parent = property(null);\n\n _renderer.renderNode = _renderer._enterNode = function(nodeEnter) {\n if(_renderer.parent().nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_renderer.parent()));\n _renderer.parent().forEachShape(nodeEnter, function(shape, node) {\n node.call(shape.create);\n });\n return _renderer;\n };\n _renderer.redrawNode = _renderer._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_renderer.parent()));\n changedShape.selectAll('.node-shape').remove();\n changedShape.each(infer_shape(_renderer.parent()));\n _renderer.parent().forEachShape(changedShape, function(shape, node) {\n node.call(shape.create);\n });\n node.select('title')\n .text(_renderer.parent().nodeTitle.eval);\n _renderer.parent().forEachContent(node, function(contentType, node) {\n node.call(contentType.update);\n _renderer.parent().forEachShape(contentType.selectContent(node), function(shape, content) {\n content\n .call(fit_shape(shape, _renderer.parent()));\n });\n });\n _renderer.parent().forEachShape(node, function(shape, node) {\n node.call(shape.update);\n });\n node.select('.node-shape')\n .attr({\n stroke: _renderer.parent().nodeStroke.eval,\n 'stroke-width': _renderer.parent().nodeStrokeWidth.eval,\n 'stroke-dasharray': _renderer.parent().nodeStrokeDashArray.eval,\n fill: compose(_renderer.parent().nodeFillScale() || identity, _renderer.parent().nodeFill.eval)\n });\n return _renderer;\n };\n _renderer.redrawEdge = _renderer._updateEdge = function(edge, edgeArrows) {\n edge\n .attr('stroke', _renderer.parent().edgeStroke.eval)\n .attr('stroke-width', _renderer.parent().edgeStrokeWidth.eval)\n .attr('stroke-dasharray', _renderer.parent().edgeStrokeDashArray.eval);\n edgeArrows\n .attr('marker-end', function(e) {\n var name = _renderer.parent().edgeArrowhead.eval(e),\n id = edgeArrow(_renderer.parent(), _renderer.parent().arrows(), e, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(e) {\n var name = _renderer.parent().edgeArrowtail.eval(e),\n arrow_id = edgeArrow(_renderer.parent(), _renderer.parent().arrows(), e, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n var fillEdgeStroke = _renderer.parent().edgeStroke.eval(e);\n _renderer.selectAll('#' + _renderer.parent().arrowId(e, 'head'))\n .attr('fill', _renderer.parent().edgeStroke.eval(e));\n _renderer.selectAll('#' + _renderer.parent().arrowId(e, 'tail'))\n .attr('fill', _renderer.parent().edgeStroke.eval(e));\n });\n };\n\n _renderer.selectAllNodes = function(selector) {\n selector = selector || '.node';\n return _nodeLayer && _nodeLayer.selectAll(selector).filter(function(n) {\n return !n.deleted;\n }) || d3.selectAll('.foo-this-does-not-exist');\n };\n\n _renderer.selectAllEdges = function(selector) {\n selector = selector || '.edge';\n return _edgeLayer && _edgeLayer.selectAll(selector).filter(function(e) {\n return !e.deleted;\n }) || d3.selectAll('.foo-this-does-not-exist');\n };\n\n _renderer.selectAllDefs = function(selector) {\n return _defs && _defs.selectAll(selector).filter(function(def) {\n return !def.deleted;\n }) || d3.selectAll('.foo-this-does-not-exist');\n };\n\n _renderer.resize = function(w, h) {\n if(_svg) {\n _svg.attr('width', w || (_renderer.parent().width_is_automatic() ? '100%' : _renderer.parent().width()))\n .attr('height', h || (_renderer.parent().height_is_automatic() ? '100%' : _renderer.parent().height()));\n }\n return _renderer;\n };\n\n _renderer.rezoom = function(oldWidth, oldHeight, newWidth, newHeight) {\n var scale = _zoom.scale(), translate = _zoom.translate();\n _zoom.scale(1).translate([0,0]);\n var xDomain = _renderer.parent().x().domain(), yDomain = _renderer.parent().y().domain();\n _renderer.parent().x()\n .domain([xDomain[0], xDomain[0] + (xDomain[1] - xDomain[0])*newWidth/oldWidth])\n .range([0, newWidth]);\n _renderer.parent().y()\n .domain([yDomain[0], yDomain[0] + (yDomain[1] - yDomain[0])*newHeight/oldHeight])\n .range([0, newHeight]);\n _zoom\n .x(_renderer.parent().x()).y(_renderer.parent().y())\n .translate(translate).scale(scale);\n };\n\n _renderer.globalTransform = function(pos, scale, animate) {\n // _translate = pos;\n // _scale = scale;\n var obj = _g;\n if(animate)\n obj = _g.transition().duration(_renderer.parent().zoomDuration());\n obj.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n };\n\n _renderer.translate = function(_) {\n if(!arguments.length)\n return _zoom.translate();\n _zoom.translate(_);\n return this;\n };\n\n _renderer.scale = function(_) {\n if(!arguments.length)\n return _zoom ? _zoom.scale() : 1;\n _zoom.scale(_);\n return this;\n };\n\n // argh\n _renderer.commitTranslateScale = function() {\n _zoom.event(_svg);\n };\n\n _renderer.zoom = function(_) {\n if(!arguments.length)\n return _zoom;\n _zoom = _; // is this a good idea?\n return _renderer;\n };\n\n _renderer.startRedraw = function(dispatch, wnodes, wedges) {\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _renderer.parent().edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _renderer.parent().edgeId,\n opacity: 0\n })\n .each(function(e) {\n e.deleted = false;\n });\n edge.exit().each(function(e) {\n e.deleted = true;\n }).transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(_renderer.parent().deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n var edgeArrows = _edgeLayer.selectAll('.edge-arrows')\n .data(wedges, _renderer.parent().edgeKey.eval);\n var edgeArrowsEnter = edgeArrows.enter().append('svg:path')\n .attr({\n class: 'edge-arrows',\n id: function(d) {\n return _renderer.parent().edgeId(d) + '-arrows';\n },\n fill: 'none',\n opacity: 0\n });\n edgeArrows.exit().transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(_renderer.parent().deleteDelay())\n .attr('opacity', 0)\n .remove()\n .each('end.delarrow', function(e) {\n edgeArrow(_renderer.parent(), _renderer.parent().arrows(), e, 'head', null);\n edgeArrow(_renderer.parent(), _renderer.parent().arrows(), e, 'tail', null);\n });\n\n if(_renderer.parent().edgeSort()) {\n edge.sort(function(a, b) {\n var as = _renderer.parent().edgeSort.eval(a), bs = _renderer.parent().edgeSort.eval(b);\n return as < bs ? -1 : bs < as ? 1 : 0;\n });\n }\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _renderer.parent().edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('fill', 'none')\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover.diagram', function(e) {\n _renderer.select('#' + _renderer.parent().edgeId(e) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout.diagram', function(e) {\n _renderer.select('#' + _renderer.parent().edgeId(e) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('g.edge-label-wrapper')\n .data(wedges, _renderer.parent().edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('g')\n .attr('class', 'edge-label-wrapper')\n .attr('visibility', 'hidden')\n .attr('id', function(e) {\n return _renderer.parent().edgeId(e) + '-label';\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _renderer.parent().textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _renderer.parent().textpathId\n });\n edgeLabels.exit().transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(_renderer.parent().deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _renderer.parent().nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0') // don't show until has layout\n .each(function(n) {\n n.deleted = false;\n });\n // .call(_d3cola.drag);\n\n _renderer.renderNode(nodeEnter);\n\n node.exit().each(function(n) {\n n.deleted = true;\n }).transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(_renderer.parent().deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n dispatch.drawn(node, edge, edgeHover);\n\n var drawState = {\n node: node,\n nodeEnter: nodeEnter,\n edge: edge,\n edgeEnter: edgeEnter,\n edgeHover: edgeHover,\n edgeHoverEnter: edgeHoverEnter,\n edgeLabels: edgeLabels,\n edgeLabelsEnter: edgeLabelsEnter,\n edgeArrows: edgeArrows,\n edgeArrowsEnter: edgeArrowsEnter,\n textPaths: textPaths,\n textPathsEnter: textPathsEnter\n };\n\n _refresh(drawState);\n\n return drawState;\n };\n\n function _refresh(drawState) {\n _renderer.redrawEdge(drawState.edge, drawState.edgeArrows);\n _renderer.redrawNode(drawState.node);\n _renderer.drawPorts(drawState);\n }\n\n _renderer.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n if(_animating)\n return this; // but what about changed attributes?\n node = node || _renderer.selectAllNodes();\n edge = edge || _renderer.selectAllEdges();\n var edgeArrows = _renderer.selectAllEdges('.edge-arrows');\n _refresh({node: node, edge: edge, edgeArrows: edgeArrows});\n\n edgeHover = edgeHover || _renderer.selectAllEdges('.edge-hover');\n edgeLabels = edgeLabels || _renderer.selectAllEdges('.edge-label-wrapper');\n textPaths = textPaths || _renderer.selectAllDefs('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, edgeArrows, nullSel, textPaths, nullSel, false);\n return this;\n };\n\n _renderer.reposition = function(node, edge) {\n node\n .attr('transform', function (n) {\n return 'translate(' + n.cola.x + ',' + n.cola.y + ')';\n });\n // reset edge ports\n edge.each(function(e) {\n e.pos.new = null;\n e.pos.old = null;\n _renderer.parent().calcEdgePath(e, 'new', e.source.cola.x, e.source.cola.y, e.target.cola.x, e.target.cola.y);\n if(_renderer.parent().edgeArrowhead.eval(e))\n _renderer.select('#' + _renderer.parent().arrowId(e, 'head'))\n .attr('orient', function() {\n return e.pos.new.orienthead;\n });\n if(_renderer.parent().edgeArrowtail.eval(e))\n _renderer.select('#' + _renderer.parent().arrowId(e, 'tail'))\n .attr('orient', function() {\n return e.pos.new.orienttail;\n });\n })\n .attr('d', generate_edge_path('new'));\n return this;\n };\n\n function generate_edge_path(age, full) {\n var field = full ? 'full' : 'path';\n return function(e) {\n var path = e.pos[age][field];\n return generate_path(path.points, path.bezDegree);\n };\n };\n\n function generate_edge_label_path(age) {\n return function(e) {\n var path = e.pos[age].path;\n var points = path.points[path.points.length-1].x < path.points[0].x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n };\n\n function with_rad(f) {\n return function() {\n return f.apply(this, arguments) + 'rad';\n };\n }\n\n function unsurprising_orient_rad(oldorient, neworient) {\n return with_rad(unsurprising_orient)(oldorient, neworient);\n }\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n _renderer.draw = function(drawState, animatePositions) {\n draw(drawState.node, drawState.nodeEnter,\n drawState.edge, drawState.edgeEnter,\n drawState.edgeHover, drawState.edgeHoverEnter,\n drawState.edgeLabels, drawState.edgeLabelsEnter,\n drawState.edgeArrows, drawState.edgeArrowsEnter,\n drawState.textPaths, drawState.textPathsEnter,\n animatePositions);\n };\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter,\n edgeLabels, edgeLabelsEnter, edgeArrows, edgeArrowsEnter,\n textPaths, textPathsEnter, animatePositions) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_renderer.parent().nodeKey.eval(n)] = true;\n })\n .attr('transform', function (n) {\n // start new nodes at their final position\n return 'translate(' + n.cola.x + ',' + n.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(function(n) {\n return _renderer.parent().stagedDelay(nodeEntered[_renderer.parent().nodeKey.eval(n)]);\n })\n .attr('opacity', _renderer.parent().nodeOpacity.eval);\n if(animatePositions)\n ntrans\n .attr('transform', function (n) {\n return 'translate(' + n.cola.x + ',' + n.cola.y + ')';\n })\n .each('end.record', function(n) {\n n.prevX = n.cola.x;\n n.prevY = n.cola.y;\n });\n\n // recalculate edge positions\n edge.each(function(e) {\n e.pos.new = null;\n });\n edge.each(function(e) {\n if(e.cola.points) {\n e.pos.new = place_arrows_on_spline(_renderer.parent(), e, e.cola.points);\n }\n else {\n if(!e.pos.old)\n _renderer.parent().calcEdgePath(e, 'old', e.source.prevX || e.source.cola.x, e.source.prevY || e.source.cola.y,\n e.target.prevX || e.target.cola.x, e.target.prevY || e.target.cola.y);\n if(!e.pos.new)\n _renderer.parent().calcEdgePath(e, 'new', e.source.cola.x, e.source.cola.y, e.target.cola.x, e.target.cola.y);\n }\n if(e.pos.old) {\n if(e.pos.old.path.bezDegree !== e.pos.new.path.bezDegree ||\n e.pos.old.path.points.length !== e.pos.new.path.points.length) {\n //console.log('old', e.pos.old.path.points.length, 'new', e.pos.new.path.points.length);\n if(is_one_segment(e.pos.old.path)) {\n e.pos.new.path.points = as_bezier3(e.pos.new.path);\n e.pos.old.path.points = split_bezier_n(as_bezier3(e.pos.old.path),\n (e.pos.new.path.points.length-1)/3);\n e.pos.old.path.bezDegree = e.pos.new.bezDegree = 3;\n }\n else if(is_one_segment(e.pos.new.path)) {\n e.pos.old.path.points = as_bezier3(e.pos.old.path);\n e.pos.new.path.points = split_bezier_n(as_bezier3(e.pos.new.path),\n (e.pos.old.path.points.length-1)/3);\n e.pos.old.path.bezDegree = e.pos.new.bezDegree = 3;\n }\n else console.warn(\"don't know how to interpolate two multi-segments\");\n }\n }\n else\n e.pos.old = e.pos.new;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_renderer.parent().edgeKey.eval(e)] = true;\n })\n .attr('d', generate_edge_path(_renderer.parent().stageTransitions() === 'modins' ? 'new' : 'old'));\n\n edgeArrowsEnter\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age = _renderer.parent().stageTransitions() === 'modins' ? 'new' : 'old';\n if(_renderer.parent().edgeArrowhead.eval(e))\n _renderer.select('#' + _renderer.parent().arrowId(e, 'head'))\n .attr('orient', function() {\n return e.pos[age].orienthead;\n });\n if(_renderer.parent().edgeArrowtail.eval(e))\n _renderer.select('#' + _renderer.parent().arrowId(e, 'tail'))\n .attr('orient', function() {\n return e.pos[age].orienttail;\n });\n })\n .attr('d', generate_edge_path(_renderer.parent().stageTransitions() === 'modins' ? 'new' : 'old', true));\n\n edgeArrows\n .each(function(e) {\n if(_renderer.parent().edgeArrowhead.eval(e))\n _renderer.select('#' + _renderer.parent().arrowId(e, 'head'))\n .attr('orient', unsurprising_orient_rad(e.pos.old.orienthead, e.pos.new.orienthead))\n .transition().duration(_renderer.parent().stagedDuration())\n .delay(_renderer.parent().stagedDelay(false))\n .attr('orient', function() {\n return e.pos.new.orienthead;\n });\n if(_renderer.parent().edgeArrowtail.eval(e))\n _renderer.select('#' + _renderer.parent().arrowId(e, 'tail'))\n .attr('orient', unsurprising_orient_rad(e.pos.old.orienttail, e.pos.new.orienttail))\n .transition().duration(_renderer.parent().stagedDuration())\n .delay(_renderer.parent().stagedDelay(false))\n .attr('orient', function() {\n return e.pos.new.orienttail;\n });\n });\n\n var etrans = edge\n .transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(function(e) {\n return _renderer.parent().stagedDelay(edgeEntered[_renderer.parent().edgeKey.eval(e)]);\n })\n .attr('opacity', _renderer.parent().edgeOpacity.eval);\n var arrowtrans = edgeArrows\n .transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(function(e) {\n return _renderer.parent().stagedDelay(edgeEntered[_renderer.parent().edgeKey.eval(e)]);\n })\n .attr('opacity', _renderer.parent().edgeOpacity.eval);\n (animatePositions ? etrans : edge)\n .attr('d', function(e) {\n var when = _renderer.parent().stageTransitions() === 'insmod' &&\n edgeEntered[_renderer.parent().edgeKey.eval(e)] ? 'old' : 'new';\n return generate_edge_path(when)(e);\n });\n (animatePositions ? arrowtrans : edgeArrows)\n .attr('d', function(e) {\n var when = _renderer.parent().stageTransitions() === 'insmod' &&\n edgeEntered[_renderer.parent().edgeKey.eval(e)] ? 'old' : 'new';\n return generate_edge_path(when, true)(e);\n });\n var elabels = edgeLabels\n .selectAll('text').data(function(e) {\n var labels = _renderer.parent().edgeLabel.eval(e);\n if(!labels)\n return [];\n else if(typeof labels === 'string')\n return [labels];\n else return labels;\n });\n elabels.enter()\n .append('text')\n .attr({\n 'class': 'edge-label',\n 'text-anchor': 'middle',\n dy: function(_, i) {\n return i * _renderer.parent().edgeLabelSpacing.eval(this.parentNode) -2;\n }\n })\n .append('textPath')\n .attr('startOffset', '50%');\n elabels\n .select('textPath')\n .html(function(t) { return t; })\n .attr('opacity', function() {\n return _renderer.parent().edgeOpacity.eval(d3.select(this.parentNode.parentNode).datum());\n })\n .attr('xlink:href', function(e) {\n var id = _renderer.parent().textpathId(d3.select(this.parentNode.parentNode).datum());\n // angular on firefox needs absolute paths for fragments\n return window.location.href.split('#')[0] + '#' + id;\n });\n textPathsEnter\n .attr('d', generate_edge_label_path(_renderer.parent().stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(_renderer.parent().stagedDuration())\n .delay(function(e) {\n return _renderer.parent().stagedDelay(edgeEntered[_renderer.parent().edgeKey.eval(e)]);\n });\n if(animatePositions)\n textTrans\n .attr('d', function(e) {\n var when = _renderer.parent().stageTransitions() === 'insmod' &&\n edgeEntered[_renderer.parent().edgeKey.eval(e)] ? 'old' : 'new';\n return generate_edge_label_path(when)(e);\n });\n if(_renderer.parent().stageTransitions() === 'insmod' && animatePositions) {\n // inserted edges transition twice in insmod mode\n if(_renderer.parent().stagedDuration() >= 50) {\n etrans = etrans.transition()\n .duration(_renderer.parent().stagedDuration())\n .attr('d', generate_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(_renderer.parent().stagedDuration())\n .attr('d', generate_edge_label_path('new'));\n arrowtrans.transition()\n .duration(_renderer.parent().stagedDuration())\n .attr('d', generate_edge_path('new', true));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', generate_edge_path('new'));\n textTrans\n .attr('d', generate_edge_path('new'));\n arrowtrans\n .attr('d', generate_edge_path('new', true));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n _animating = true;\n if(!_renderer.parent().showLayoutSteps())\n endall([ntrans, etrans, textTrans],\n function() {\n _animating = false;\n _renderer.parent().layoutDone(true);\n });\n\n if(animatePositions)\n edgeHover.attr('d', generate_edge_path('new'));\n\n edge.each(function(e) {\n e.pos.old = e.pos.new;\n });\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n _renderer.isRendered = function() {\n return !!_svg;\n };\n\n _renderer.initializeDrawing = function () {\n _renderer.resetSvg();\n _g = _svg.append('g')\n .attr('class', 'draw');\n\n var layers = ['edge-layer', 'node-layer'];\n if(_renderer.parent().edgesInFront())\n layers.reverse();\n _g.selectAll('g').data(layers)\n .enter().append('g')\n .attr('class', function(l) { return l; });\n _edgeLayer = _g.selectAll('g.edge-layer');\n _nodeLayer = _g.selectAll('g.node-layer');\n return this;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _renderer.select = function (s) {\n return _renderer.parent().root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n *\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n *\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _renderer.selectAll = function (s) {\n return _renderer.parent().root() ? _renderer.parent().root().selectAll(s) : null;\n };\n\n _renderer.selectNodePortsOfStyle = function(node, style) {\n return node.selectAll('g.port').filter(function(p) {\n return _renderer.parent().portStyleName.eval(p) === style;\n });\n };\n\n _renderer.drawPorts = function(drawState) {\n var nodePorts = _renderer.parent().nodePorts();\n if(!nodePorts)\n return;\n _renderer.parent().portStyle.enum().forEach(function(style) {\n var nodePorts2 = {};\n for(var nid in nodePorts)\n nodePorts2[nid] = nodePorts[nid].filter(function(p) {\n return _renderer.parent().portStyleName.eval(p) === style;\n });\n var port = _renderer.selectNodePortsOfStyle(drawState.node, style);\n _renderer.parent().portStyle(style).drawPorts(port, nodePorts2, drawState.node);\n });\n };\n\n _renderer.fireTSEvent = function(dispatch, drawState) {\n dispatch.transitionsStarted(drawState.node, drawState.edge, drawState.edgeHover);\n };\n\n _renderer.calculateBounds = function(drawState) {\n if(!drawState.node.size())\n return null;\n return _renderer.parent().calculateBounds(drawState.node.data(), drawState.edge.data());\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top `svg` element for this specific diagram. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @method svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _renderer.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _renderer;\n };\n\n /**\n * Returns the top `g` element for this specific diagram. This method is usually used to\n * retrieve the g element in order to overlay custom svg drawing\n * programatically. **Caution**: The root g element is usually generated internally, and\n * resetting it might produce unpredictable results.\n * @method g\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _renderer.g = function (_) {\n if (!arguments.length) {\n return _g;\n }\n _g = _;\n return _renderer;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @method resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _renderer.resetSvg = function () {\n // we might be re-initialized in a div, in which case\n // we already have an <svg> element to delete\n var svg = _svg || _renderer.select('svg');\n svg.remove();\n _svg = null;\n //_renderer.parent().x(null).y(null);\n return generateSvg();\n };\n\n _renderer.addOrRemoveDef = function(id, whether, tag, onEnter) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n if(selEnter.size() && onEnter)\n selEnter.call(onEnter);\n sel.exit().remove();\n return sel;\n };\n\n function enableZoom() {\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n function disableZoom() {\n _svg.on('.zoom', null);\n }\n\n function generateSvg() {\n _svg = _renderer.parent().root().append('svg');\n _renderer.resize();\n\n _defs = _svg.append('svg:defs');\n\n _zoom = d3.behavior.zoom()\n .on('zoom.diagram', _renderer.parent().doZoom)\n .x(_renderer.parent().x()).y(_renderer.parent().y())\n .scaleExtent(_renderer.parent().zoomExtent());\n if(_renderer.parent().mouseZoomable()) {\n var mod, mods;\n var brush = _renderer.parent().child('brush');\n if((mod = _renderer.parent().modKeyZoom())) {\n if (Array.isArray (mod))\n mods = mod.slice ();\n else if (typeof mod === \"string\")\n mods = [mod];\n else\n mods = ['Alt'];\n var mouseDown = false, modDown = false, zoomEnabled = false;\n _svg.on('mousedown.modkey-zoom', function() {\n mouseDown = true;\n }).on('mouseup.modkey-zoom', function() {\n mouseDown = false;\n if(!mouseDown && !modDown && zoomEnabled) {\n zoomEnabled = false;\n disableZoom();\n if(brush)\n brush.activate();\n }\n });\n d3.select(document)\n .on('keydown.modkey-zoom-' + _renderer.parent().anchorName(), function() {\n if(mods.indexOf (d3.event.key) > -1) {\n modDown = true;\n if(!mouseDown) {\n zoomEnabled = true;\n enableZoom();\n if(brush)\n brush.deactivate();\n }\n }\n })\n .on('keyup.modkey-zoom-' + _renderer.parent().anchorName(), function() {\n if(mods.indexOf (d3.event.key) > -1) {\n modDown = false;\n if(!mouseDown) {\n zoomEnabled = false;\n disableZoom();\n if(brush)\n brush.activate();\n }\n }\n });\n }\n else enableZoom();\n }\n\n return _svg;\n }\n\n _renderer.animating = function() {\n return _animating;\n };\n\n return _renderer;\n};\n\n","dc_graph.render_webgl = function() {\n //var _svg = null, _defs = null, _g = null, _nodeLayer = null, _edgeLayer = null;\n var _camera, _scene, _webgl_renderer;\n var _directionalLight, _ambientLight;\n var _controls;\n var _sphereGeometry;\n var _nodes = {}, _edges = {};\n var _animating = false; // do not refresh during animations\n var _renderer = {};\n\n _renderer.rendererType = function() {\n return 'webgl';\n };\n\n _renderer.parent = property(null);\n\n _renderer.isRendered = function() {\n return !!_camera;\n };\n\n _renderer.resize = function(w, h) {\n return _renderer;\n };\n\n _renderer.rezoom = function(oldWidth, oldHeight, newWidth, newHeight) {\n return _renderer;\n };\n\n _renderer.globalTransform = function(pos, scale, animate) {\n return _renderer;\n };\n\n _renderer.translate = function(_) {\n if(!arguments.length)\n return [0,0];\n return _renderer;\n };\n\n _renderer.scale = function(_) {\n if(!arguments.length)\n return 1;\n return _renderer;\n };\n\n // argh\n _renderer.commitTranslateScale = function() {\n };\n\n _renderer.initializeDrawing = function () {\n if(_scene) // just treat it as a redraw\n return _renderer;\n\n _camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);\n _camera.up = new THREE.Vector3(0, 0, 1);\n\n _scene = new THREE.Scene();\n\n _sphereGeometry = new THREE.SphereBufferGeometry(10, 32, 32);\n\n _directionalLight = new THREE.DirectionalLight(0xffffff, 1);\n _directionalLight.position.set(-1, -1, 1).normalize();\n _scene.add(_directionalLight);\n\n _ambientLight = new THREE.AmbientLight(0xaaaaaa);\n _scene.add(_ambientLight);\n\n _webgl_renderer = new THREE.WebGLRenderer({ antialias: true });\n _webgl_renderer.setPixelRatio(window.devicePixelRatio);\n var boundRect = _renderer.parent().root().node().getBoundingClientRect();\n _webgl_renderer.setSize(boundRect.width, boundRect.height);\n _renderer.parent().root().node().appendChild(_webgl_renderer.domElement);\n\n _controls = new THREE.OrbitControls(_camera, _webgl_renderer.domElement);\n _controls.minDistance = 300;\n _controls.maxDistance = 1000;\n return _renderer;\n };\n\n _renderer.startRedraw = function(dispatch, wnodes, wedges) {\n wnodes.forEach(infer_shape(_renderer.parent()));\n var rnodes = regenerate_objects(_nodes, wnodes, null, function(n) {\n return _renderer.parent().nodeKey.eval(n);\n }, function(rn, n) {\n rn.wnode = n;\n }, null, function(wnode, rnode) {\n _scene.remove(rnode.mesh);\n //rnode.mesh.dispose();\n rnode.material.dispose();\n });\n var redges = regenerate_objects(_edges, wedges, null, function(e) {\n return _renderer.parent().edgeKey.eval(e);\n }, function(re, e) {\n re.wedge = e;\n }, null, function(wedge, redge) {\n _scene.remove(redge.mesh);\n //redge.mesh.dispose();\n redge.geometry.dispose();\n redge.material.dispose();\n });\n animate();\n return {wnodes: wnodes, wedges: wedges, rnodes: rnodes, redges: redges};\n };\n\n function color_to_int(color) {\n // it better be 6 byte hex RGB\n if(color.length !== 7 || color[0] !== '#') {\n console.warn(\"don't know how to use color \" + color);\n color = '#888888';\n }\n return parseInt(color.slice(1), 16);\n }\n _renderer.color_to_int = color_to_int;\n\n _renderer.draw = function(drawState, animatePositions) {\n drawState.wedges.forEach(function(e) {\n if(!e.pos.old)\n _renderer.parent().calcEdgePath(e, 'old', e.source.prevX || e.source.cola.x, e.source.prevY || e.source.cola.y,\n e.target.prevX || e.target.cola.x, e.target.prevY || e.target.cola.y);\n if(!e.pos.new)\n _renderer.parent().calcEdgePath(e, 'new', e.source.cola.x, e.source.cola.y, e.target.cola.x, e.target.cola.y);\n });\n\n var MULT = _renderer.multiplier();\n drawState.rnodes.forEach(function(rn) {\n var color = _renderer.parent().nodeFill.eval(rn.wnode);\n var add = false;\n if(!rn.mesh) {\n add = true;\n if(_renderer.parent().nodeFillScale())\n color = _renderer.parent().nodeFillScale()(color);\n var cint = color_to_int(color);\n rn.material = new THREE.MeshLambertMaterial({color: cint});\n rn.mesh = new THREE.Mesh(_sphereGeometry, rn.material);\n rn.mesh.name = _renderer.parent().nodeKey.eval(rn.wnode);\n }\n rn.mesh.position.x = rn.wnode.cola.x * MULT;\n rn.mesh.position.y = -rn.wnode.cola.y * MULT;\n rn.mesh.position.z = rn.wnode.cola.z * MULT || 0;\n if(add)\n _scene.add(rn.mesh);\n });\n\n var xext = d3.extent(drawState.wnodes, function(n) { return n.cola.x * MULT; }),\n yext = d3.extent(drawState.wnodes, function(n) { return -n.cola.y * MULT; }),\n zext = d3.extent(drawState.wnodes, function(n) { return n.cola.z * MULT || 0; });\n var cx = (xext[0] + xext[1])/2,\n cy = (yext[0] + yext[1])/2,\n cz = (zext[0] + zext[1])/2;\n\n drawState.center = [cx, cy, cz];\n drawState.extents = [xext, yext, zext];\n _controls.target.set(cx, cy, cz);\n _controls.update();\n\n var vertices = [];\n drawState.redges.forEach(function(re) {\n if(!re.wedge.source || !re.wedge.target)\n return;\n var a = re.wedge.source.cola, b = re.wedge.target.cola;\n var add = false;\n var width = _renderer.parent().edgeStrokeWidth.eval(re.wedge);\n if(!re.mesh) {\n add = true;\n var color = _renderer.parent().edgeStroke.eval(re.wedge);\n var cint = color_to_int(color);\n re.material = new THREE.MeshLambertMaterial({ color: cint });\n re.curve = new THREE.LineCurve3(\n new THREE.Vector3(a.x*MULT, -a.y*MULT, a.z*MULT || 0),\n new THREE.Vector3(b.x*MULT, -b.y*MULT, b.z*MULT || 0));\n re.geometry = new THREE.TubeBufferGeometry(re.curve, 20, width/2, 8, false);\n re.mesh = new THREE.Mesh(re.geometry, re.material);\n re.mesh.name = _renderer.parent().edgeKey.eval(re.wedge);\n } else {\n re.curve = new THREE.LineCurve3(\n new THREE.Vector3(a.x*MULT, -a.y*MULT, a.z*MULT || 0),\n new THREE.Vector3(b.x*MULT, -b.y*MULT, b.z*MULT || 0));\n re.geometry.dispose();\n re.geometry = new THREE.TubeBufferGeometry(re.curve, 20, width/2, 8, false);\n re.mesh.geometry = re.geometry;\n }\n if(add)\n _scene.add(re.mesh);\n });\n _animating = false;\n _renderer.parent().layoutDone(true);\n return _renderer;\n };\n\n function animate() {\n window.requestAnimationFrame(animate);\n render();\n }\n\n function render() {\n _webgl_renderer.render(_scene, _camera);\n }\n\n _renderer.drawPorts = function(drawState) {\n var nodePorts = _renderer.parent().nodePorts();\n if(!nodePorts)\n return;\n _renderer.parent().portStyle.enum().forEach(function(style) {\n var nodePorts2 = {};\n for(var nid in nodePorts)\n nodePorts2[nid] = nodePorts[nid].filter(function(p) {\n return _renderer.parent().portStyleName.eval(p) === style;\n });\n // not implemented\n var port = _renderer.selectNodePortsOfStyle(drawState.node, style);\n //_renderer.parent().portStyle(style).drawPorts(port, nodePorts2, drawState.node);\n });\n };\n\n _renderer.fireTSEvent = function(dispatch, drawState) {\n dispatch.transitionsStarted(_scene, drawState);\n };\n\n _renderer.calculateBounds = function(drawState) {\n if(!drawState.wnodes.length)\n return null;\n return _renderer.parent().calculateBounds(drawState.wnodes, drawState.wedges);\n };\n\n _renderer.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n if(_animating)\n return _renderer; // but what about changed attributes?\n return _renderer;\n };\n\n _renderer.reposition = function(node, edge) {\n return _renderer;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n _renderer.animating = function() {\n return _animating;\n };\n\n _renderer.multiplier = property(3);\n\n return _renderer;\n};\n\n","dc_graph.spawn_engine = function(layout, args, worker) {\n args = args || {};\n worker = worker && !!window.Worker;\n var engine = dc_graph.engines.instantiate(layout, args, worker);\n if(!engine) {\n console.warn('layout engine ' + layout + ' not found; using default ' + dc_graph._default_engine);\n engine = dc_graph.engines.instantiate(dc_graph._default_engine, args, worker);\n }\n return engine;\n};\n\ndc_graph._engines = [\n {\n name: 'dagre',\n params: ['rankdir'],\n instantiate: function() {\n return dc_graph.dagre_layout();\n }\n },\n {\n name: 'd3force',\n instantiate: function() {\n return dc_graph.d3_force_layout();\n }\n },\n {\n name: 'd3v4force',\n instantiate: function() {\n return dc_graph.d3v4_force_layout();\n }\n },\n {\n name: 'tree',\n instantiate: function() {\n return dc_graph.tree_layout();\n }\n },\n {\n names: ['circo', 'dot', 'neato', 'osage', 'twopi', 'fdp'],\n instantiate: function(layout, args) {\n return dc_graph.graphviz_layout(null, layout, args.server);\n }\n },\n {\n name: 'cola',\n params: ['lengthStrategy'],\n instantiate: function() {\n return dc_graph.cola_layout();\n }\n },\n {\n name: 'manual',\n instantiate: function() {\n return dc_graph.manual_layout();\n }\n },\n {\n name: 'flexbox',\n instantiate: function() {\n return dc_graph.flexbox_layout();\n }\n },\n {\n name: 'layered',\n instantiate: function() {\n return dc_graph.layered_layout();\n }\n }\n];\ndc_graph._default_engine = 'cola';\n\ndc_graph.engines = {\n entry_pred: function(layoutName) {\n return function(e) {\n return e.name && e.name === layoutName || e.names && e.names.includes(layoutName);\n };\n },\n get: function(layoutName) {\n return dc_graph._engines.find(this.entry_pred(layoutName));\n },\n instantiate: function(layout, args, worker) {\n var entry = this.get(layout);\n if(!entry)\n return null;\n var engine = entry.instantiate(layout, args),\n params = entry.params || [];\n params.forEach(function(p) {\n if(args[p])\n engine[p](args[p]);\n });\n if(engine.supportsWebworker && engine.supportsWebworker() && worker)\n engine = dc_graph.webworker_layout(engine);\n return engine;\n },\n available: function() {\n return dc_graph._engines.reduce(function(avail, entry) {\n return avail.concat(entry.name ? [entry.name] : entry.names);\n }, []);\n },\n unregister: function(layoutName) {\n // meh. this is a bit much. there is such a thing as making the api too \"easy\".\n var i = dc_graph._engines.findIndex(this.entry_pred(layoutName));\n var remove = false;\n if(i < 0)\n return false;\n var entry = dc_graph._engines[i];\n if(entry.name === layoutName)\n remove = true;\n else {\n var j = entry.names.indexOf(layoutName);\n if(j >= 0)\n entry.names.splice(j, 1);\n else\n console.warn('search for engine failed', layoutName);\n if(entry.names.length === 0)\n remove = true;\n }\n if(remove)\n dc_graph._engines.splice(i, 1);\n return true;\n },\n register: function(entry) {\n var that = this;\n if(!entry.instantiate) {\n console.error('engine definition needs instantiate: function(layout, args) { ... }');\n return this;\n }\n if(entry.name)\n this.unregister(entry.name);\n else if(entry.names)\n entry.names.forEach(function(layoutName) {\n that.unregister(layoutName);\n });\n else {\n console.error('engine definition needs name or names[]');\n return this;\n }\n dc_graph._engines.push(entry);\n return this;\n }\n};\n","var _workers = {};\nvar NUMBER_RESULTS = 3;\nfunction create_worker(layoutAlgorithm) {\n if(!_workers[layoutAlgorithm]) {\n var worker = _workers[layoutAlgorithm] = {\n worker: new Worker(script_path() + 'dc.graph.' + layoutAlgorithm + '.worker.js'),\n layouts: {}\n };\n worker.worker.onmessage = function(e) {\n var layoutId = e.data.layoutId;\n if(!worker.layouts[layoutId])\n throw new Error('layoutId \"' + layoutId + '\" unknown!');\n var engine = worker.layouts[layoutId].getEngine();\n if(e.data.args.length > NUMBER_RESULTS && engine.processExtraWorkerResults)\n engine.processExtraWorkerResults.apply(engine, e.data.args.slice(NUMBER_RESULTS));\n worker.layouts[layoutId].dispatch()[e.data.response].apply(null, e.data.args);\n };\n }\n return _workers[layoutAlgorithm];\n}\n\ndc_graph.webworker_layout = function(layoutEngine) {\n var _tick, _done, _dispatch = d3.dispatch('init', 'start', 'tick', 'end');\n var _worker = create_worker(layoutEngine.layoutAlgorithm());\n var engine = {};\n _worker.layouts[layoutEngine.layoutId()] = engine;\n\n engine.parent = function(parent) {\n if(layoutEngine.parent)\n layoutEngine.parent(parent);\n };\n engine.init = function(options) {\n options = layoutEngine.optionNames().reduce(\n function(options, option) {\n options[option] = layoutEngine[option]();\n return options;\n }, options);\n if(layoutEngine.propagateOptions)\n layoutEngine.propagateOptions(options);\n _worker.worker.postMessage({\n command: 'init',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n return this;\n };\n engine.data = function(graph, nodes, edges, clusters, constraints) {\n _worker.worker.postMessage({\n command: 'data',\n args: {\n layoutId: layoutEngine.layoutId(),\n graph: graph,\n nodes: nodes,\n edges: edges,\n clusters: clusters,\n constraints: constraints\n }\n });\n };\n engine.start = function() {\n _worker.worker.postMessage({\n command: 'start',\n args: {\n layoutId: layoutEngine.layoutId()\n }\n });\n };\n engine.stop = function() {\n _worker.worker.postMessage({\n command: 'stop',\n args: {\n layoutId: layoutEngine.layoutId()\n }\n });\n return this;\n };\n // stopgap while layout options are still on diagram\n engine.getEngine = function() {\n return layoutEngine;\n };\n // somewhat sketchy - do we want this object to be transparent or not?\n var passthroughs = ['layoutAlgorithm', 'populateLayoutNode', 'populateLayoutEdge',\n 'rankdir', 'ranksep'];\n passthroughs.concat(layoutEngine.optionNames(),\n layoutEngine.passThru ? layoutEngine.passThru() : []).forEach(function(name) {\n engine[name] = function() {\n var ret = layoutEngine[name].apply(layoutEngine, arguments);\n return arguments.length ? this : ret;\n };\n });\n engine.on = function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n };\n engine.dispatch = function() {\n return _dispatch;\n };\n return engine;\n};\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not required, they make it easier for clients and\n * modes (like expand_collapse) to work with multiple layout engines.\n *\n * these attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between nodes in the same rank.\n * @method nodesep\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [nodesep=40]\n **/\n nodesep: property(40),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n\n// graphlib-dot seems to wrap nodes in an extra {value}\n// actually this is quite a common problem with generic libs\nfunction nvalue(n) {\n return n.value.value ? n.value.value : n.value;\n}\n\n// apply standard accessors to a diagram in order to style it as graphviz would\n// this is a work in progress\ndc_graph.apply_graphviz_accessors = function(diagram) {\n diagram\n .nodeLabel(function(n) {\n var label = nvalue(n).label;\n if(label === undefined)\n label = n.key;\n return label && label.split(/\\n|\\\\n/);\n })\n .nodeRadius(function(n) {\n // should do width & height instead, #25\n return nvalue(n).radius || 25;\n })\n .nodeShape(function(n) { return nvalue(n).shape; })\n .nodeFill(function(n) { return nvalue(n).fillcolor || 'white'; })\n .nodeOpacity(function(n) {\n // not standard gv\n return nvalue(n).opacity || 1;\n })\n .nodeLabelFill(function(n) { return nvalue(n).fontcolor || 'black'; })\n .nodeTitle(function(n) {\n return (nvalue(n).htmltip || nvalue(n).jsontip) ? null :\n nvalue(n).tooltip !== undefined ?\n nvalue(n).tooltip :\n diagram.nodeLabel()(n);\n })\n .nodeStrokeWidth(function(n) {\n // it is debatable whether a point === a pixel but they are close\n // https://graphicdesign.stackexchange.com/questions/199/point-vs-pixel-what-is-the-difference\n var penwidth = nvalue(n).penwidth;\n return penwidth !== undefined ? +penwidth : 1;\n })\n .edgeLabel(function(e) { return e.value.label ? e.value.label.split(/\\n|\\\\n/) : ''; })\n .edgeStroke(function(e) { return e.value.color || 'black'; })\n .edgeOpacity(function(e) {\n // not standard gv\n return e.value.opacity || 1;\n })\n .edgeArrowSize(function(e) {\n return e.value.arrowsize || 1;\n })\n // need directedness to default these correctly, see #106\n .edgeArrowhead(function(e) {\n var head = e.value.arrowhead;\n return head !== undefined ? head : 'vee';\n })\n .edgeArrowtail(function(e) {\n var tail = e.value.arrowtail;\n return tail !== undefined ? tail : null;\n })\n .edgeStrokeDashArray(function(e) {\n switch(e.value.style) {\n case 'dotted':\n return [1,5];\n }\n return null;\n });\n var draw_clusters = diagram.child('draw-clusters');\n if(draw_clusters) {\n draw_clusters\n .clusterStroke(function(c) {\n return c.value.color || 'black';\n })\n .clusterFill(function(c) {\n return c.value.style === 'filled' ? c.value.fillcolor || c.value.color || c.value.bgcolor : null;\n })\n .clusterLabel(function(c) {\n return c.value.label;\n });\n }\n};\n\ndc_graph.snapshot_graphviz = function(diagram) {\n var xDomain = diagram.x().domain(), yDomain = diagram.y().domain();\n return {\n nodes: diagram.nodeGroup().all().map(function(n) {\n return diagram.getWholeNode(n.key);\n })\n .filter(function(x) { return x; })\n .map(function(n) {\n return {\n key: diagram.nodeKey.eval(n),\n label: diagram.nodeLabel.eval(n),\n fillcolor: diagram.nodeFillScale()(diagram.nodeFill.eval(n)),\n penwidth: diagram.nodeStrokeWidth.eval(n),\n // not supported as input, see dc.graph.js#25\n // width: n.cola.dcg_rx*2,\n // height: n.cola.dcg_ry*2,\n\n // not graphviz attributes\n // until we have w/h\n radius: diagram.nodeRadius.eval(n),\n // does not seem to exist in gv\n opacity: diagram.nodeOpacity.eval(n),\n // should be pos\n x: n.cola.x,\n y: n.cola.y\n };\n }),\n edges: diagram.edgeGroup().all().map(function(e) {\n return diagram.getWholeEdge(e.key);\n }).map(function(e) {\n return {\n key: diagram.edgeKey.eval(e),\n source: diagram.edgeSource.eval(e),\n target: diagram.edgeTarget.eval(e),\n color: diagram.edgeStroke.eval(e),\n arrowsize: diagram.edgeArrowSize.eval(e),\n opacity: diagram.edgeOpacity.eval(e),\n // should support dir, see dc.graph.js#106\n arrowhead: diagram.edgeArrowhead.eval(e),\n arrowtail: diagram.edgeArrowtail.eval(e)\n };\n }),\n bounds: {\n left: xDomain[0],\n top: yDomain[0],\n right: xDomain[1],\n bottom: yDomain[1]\n }\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _setcola_nodes;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n var _options;\n\n function init(options) {\n _options = options;\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, clusters, constraints) {\n var wnodes = regenerate_objects(_nodes, nodes, null, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.dcg_nodeParentCluster = v.dcg_nodeParentCluster;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dcg_nodeFixed;\n _options.nodeAttrs.forEach(function(key) {\n v1[key] = v[key];\n });\n\n if(v1.fixed && typeof v.dcg_nodeFixed === 'object') {\n v1.x = v.dcg_nodeFixed.x;\n v1.y = v.dcg_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, null, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n _options.edgeAttrs.forEach(function(key) {\n e1[key] = e[key];\n });\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(engine.groupConnected()) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {\n dcg_autoGroup: true,\n leaves: g.array.map(function(n) { return n.index; })\n };\n });\n } else if(clusters) {\n var G = {};\n groups = clusters.filter(function(c) {\n return /^cluster/.test(c.dcg_clusterKey);\n }).map(function(c, i) {\n return G[c.dcg_clusterKey] = {\n dcg_clusterKey: c.dcg_clusterKey,\n index: i,\n groups: [],\n leaves: []\n };\n });\n clusters.forEach(function(c) {\n if(c.dcg_clusterParent && G[c.dcg_clusterParent])\n G[c.dcg_clusterParent].groups.push(G[c.dcg_clusterKey].index);\n });\n wnodes.forEach(function(n, i) {\n if(n.dcg_nodeParentCluster && G[n.dcg_nodeParentCluster])\n G[n.dcg_nodeParentCluster].leaves.push(i);\n });\n }\n\n function dispatchState(event) {\n // clean up extra setcola annotations\n wnodes.forEach(function(n) {\n Object.keys(n).forEach(function(key) {\n if(/^get/.test(key) && typeof n[key] === 'function')\n delete n[key];\n });\n });\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n }),\n groups.filter(function(g) {\n return !g.dcg_autoGroup;\n }).map(function(g) {\n g = Object.assign({}, g);\n g.bounds = {\n left: g.bounds.x,\n top: g.bounds.y,\n right: g.bounds.X,\n bottom: g.bounds.Y\n };\n return g;\n }),\n _setcola_nodes\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n\n if(_options.setcolaSpec && typeof setcola !== 'undefined') {\n console.log('generating setcola constrains');\n var setcola_result = setcola\n .nodes(wnodes)\n .links(wedges)\n .constraints(_options.setcolaSpec)\n .gap(10) //default value is 10, can be customized in setcolaSpec\n .layout();\n\n _setcola_nodes = setcola_result.nodes.filter(function(n) { return n._cid; });\n _d3cola.nodes(setcola_result.nodes)\n .links(setcola_result.links)\n .constraints(setcola_result.constraints)\n .groups(groups);\n } else {\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n }\n\n function start() {\n _d3cola.start(engine.unconstrainedIterations(),\n engine.userConstraintIterations(),\n engine.allConstraintsIterations(),\n engine.gridSnapIterations());\n }\n\n function stop() {\n if(_d3cola)\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return true;\n },\n parent: property(null),\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n this.propagateOptions(options);\n init(options);\n return this;\n },\n data: function(graph, nodes, edges, clusters, constraints) {\n data(nodes, edges, clusters, constraints);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout',\n 'tickSize', 'groupConnected', 'setcolaSpec', 'setcolaNodes']\n .concat(graphviz_keys);\n },\n passThru: function() {\n return ['extractNodeAttrs', 'extractEdgeAttrs'];\n },\n propagateOptions: function(options) {\n if(!options.nodeAttrs)\n options.nodeAttrs = Object.keys(engine.extractNodeAttrs());\n if(!options.edgeAttrs)\n options.edgeAttrs = Object.keys(engine.extractEdgeAttrs());\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * diagram.flowLayout(null)\n * // flow in x with min separation 200\n * diagram.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n switch(dir) {\n case 'LR': return {axis: 'x', minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2};\n case 'TB': return {axis: 'y', minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2};\n default: return null; // RL, BT do not appear to be possible (negative separation) (?)\n }\n }\n _flowLayout = flow;\n return this;\n },\n unconstrainedIterations: property(10),\n userConstraintIterations: property(20),\n allConstraintsIterations: property(20),\n gridSnapIterations: property(0),\n tickSize: property(1),\n groupConnected: property(false),\n setcolaSpec: property(null),\n setcolaNodes: function() {\n return _setcola_nodes;\n },\n extractNodeAttrs: property({}), // {attr: function(node)}\n extractEdgeAttrs: property({}),\n processExtraWorkerResults: function(setcolaNodes) {\n _setcola_nodes = setcolaNodes;\n }\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\ndc_graph.cola_layout.optional_scripts = ['setcola.js'];\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true, compound: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir, nodesep: options.nodesep, ranksep: options.ranksep});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, clusters) {\n var wnodes = regenerate_objects(_nodes, nodes, null, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n /*\n dagre does not seem to accept input positions\n if(v.dcg_nodeFixed) {\n v1.x = v.dcg_nodeFixed.x;\n v1.y = v.dcg_nodeFixed.y;\n }\n */\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, null, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n clusters = clusters.filter(function(c) {\n return /^cluster/.test(c.dcg_clusterKey);\n });\n clusters.forEach(function(c) {\n _dagreGraph.setNode(c.dcg_clusterKey, c);\n });\n clusters.forEach(function(c) {\n if(c.dcg_clusterParent)\n _dagreGraph.setParent(c.dcg_clusterKey, c.dcg_clusterParent);\n });\n nodes.forEach(function(n) {\n if(n.dcg_nodeParentCluster)\n _dagreGraph.setParent(n.dcg_nodeKey, n.dcg_nodeParentCluster);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n }),\n clusters.map(function(c) {\n var c = Object.assign({}, _dagreGraph.node(c.dcg_clusterKey));\n c.bounds = {\n left: c.x - c.width/2,\n top: c.y - c.height/2,\n right: c.x + c.width/2,\n bottom: c.y + c.height/2\n };\n return c;\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return true;\n },\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes, edges, clusters) {\n data(nodes, edges, clusters);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n};\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","/**\n * `dc_graph.tree_layout` is a very simple and not very bright tree layout. It can draw any DAG, but\n * tries to position the nodes as a tree.\n * @class tree_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.tree_layout}\n **/\ndc_graph.tree_layout = function(id) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _dfs;\n\n function init(options) {\n var x;\n var nodeWidth = d3.functor(options.nodeWidth);\n function best_dist(left, right) {\n return (nodeWidth(left) + nodeWidth(right)) / 2;\n }\n _dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.dcg_edgeTarget;\n },\n init: function() {\n x = options.offsetX;\n },\n row: function(n) {\n return n.dcg_rank;\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nodeWidth(left) + nodeWidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.y = r*options.gapY + options.offsetY;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.x = (n.hit_ins*n.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.x - b.x; });\n var badi = null, badl = null, want;\n for(var i=0; i<sort.length-1; ++i) {\n var left = sort[i], right = sort[i+1];\n if(!badi) {\n if(right.x - left.x < best_dist(left, right)) {\n badi = i;\n badl = left.x;\n want = best_dist(left, right);\n } // else still not bad\n } else {\n want += best_dist(left, right);\n if(i < sort.length - 2 && right.x < badl + want)\n continue; // still bad\n else {\n if(badi>0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.x - (badl + want);\n l = sort[badi].x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j<limit; ++j) {\n l += best_dist(sort[j-1], sort[j]);\n sort[j].x = l;\n }\n badi = badl = want = null;\n }\n }\n }\n });\n }\n });\n }\n\n var _nodes, _edges;\n function data(nodes, edges) {\n _nodes = nodes;\n _edges = edges;\n }\n\n function start() {\n _dfs(_nodes, _edges);\n _dispatch.end(_nodes, _edges);\n }\n\n function stop() {\n }\n\n var layout = {\n layoutAlgorithm: function() {\n return 'tree';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return false;\n },\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes, edges) {\n data(nodes, edges);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['nodeWidth', 'offsetX', 'offsetY', 'rowFunction', 'gapY'];\n },\n populateLayoutNode: function(layout, node) {\n if(this.rowFunction())\n layout.dcg_rank = this.rowFunction.eval(node);\n },\n populateLayoutEdge: function() {},\n nodeWidth: property(function(n) { return n.width; }),\n offsetX: property(30),\n offsetY: property(30),\n rowFunction: property(null),\n gapY: property(100)\n };\n return layout;\n};\n\ndc_graph.tree_layout.scripts = [];\n","/**\n * `dc_graph.graphviz_layout` is an adaptor for viz.js (graphviz) layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `graphviz_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class graphviz_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.graphviz_layout}\n **/\ndc_graph.graphviz_layout = function(id, layout, server) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _dotInput, _dotString;\n\n function init(options) {\n }\n\n function encode_name(name) {\n return name.replace(/^%/, '%');\n }\n function decode_name(name) {\n return name.replace(/^%/, '%');\n }\n function stringize_property(prop, value) {\n return [prop, '\"' + value + '\"'].join('=');\n }\n function stringize_properties(props) {\n return '[' + props.join(', ') + ']';\n }\n function data(nodes, edges, clusters) {\n if(_dotInput) {\n _dotString = _dotInput;\n return;\n }\n var lines = [];\n var directed = layout !== 'neato';\n lines.push((directed ? 'digraph' : 'graph') + ' g {');\n lines.push('graph ' + stringize_properties([\n stringize_property('nodesep', graphviz.nodesep()/72),\n stringize_property('ranksep', graphviz.ranksep()/72),\n stringize_property('rankdir', graphviz.rankdir())\n ]));\n var cluster_nodes = {};\n nodes.forEach(function(n) {\n var cl = n.dcg_nodeParentCluster;\n if(cl) {\n cluster_nodes[cl] = cluster_nodes[cl] || [];\n cluster_nodes[cl].push(n.dcg_nodeKey);\n }\n });\n var cluster_children = {}, tops = [];\n clusters.forEach(function(c) {\n var p = c.dcg_clusterParent;\n if(p) {\n cluster_children[p] = cluster_children[p] || [];\n cluster_children[p].push(c.dcg_clusterKey);\n } else tops.push(c.dcg_clusterKey);\n });\n\n function print_subgraph(i, c) {\n var indent = ' '.repeat(i*2);\n lines.push(indent + 'subgraph \"' + c + '\" {');\n if(cluster_children[c])\n cluster_children[c].forEach(print_subgraph.bind(null, i+1));\n lines.push(indent + ' ' + cluster_nodes[c].join(' '));\n lines.push(indent + '}');\n }\n tops.forEach(print_subgraph.bind(null, 1));\n\n lines = lines.concat(nodes.map(function(v) {\n var props = [\n stringize_property('width', v.width/72),\n stringize_property('height', v.height/72),\n stringize_property('fixedsize', 'shape'),\n stringize_property('shape', v.abstract.shape)\n ];\n if(v.dcg_nodeFixed)\n props.push(stringize_property('pos', [\n v.dcg_nodeFixed.x,\n 1000-v.dcg_nodeFixed.y\n ].join(',')));\n return ' \"' + encode_name(v.dcg_nodeKey) + '\" ' + stringize_properties(props);\n }));\n lines = lines.concat(edges.map(function(e) {\n return ' \"' + encode_name(e.dcg_edgeSource) + (directed ? '\" -> \"' : '\" -- \"') +\n encode_name(e.dcg_edgeTarget) + '\" ' + stringize_properties([\n stringize_property('id', encode_name(e.dcg_edgeKey)),\n stringize_property('arrowhead', 'none'),\n stringize_property('arrowtail', 'none')\n ]);\n }));\n lines.push('}');\n lines.push('');\n _dotString = lines.join('\\n');\n }\n\n function process_response(error, result) {\n if(error) {\n console.warn(\"graphviz layout failed: \", error);\n return;\n }\n _dispatch.start();\n var bb = result.bb.split(',').map(function(x) { return +x; });\n var nodes = (result.objects || []).filter(function(n) {\n return n.pos; // remove non-nodes like clusters\n }).map(function(n) {\n var pos = n.pos.split(',');\n if(isNaN(pos[0]) || isNaN(pos[1])) {\n console.warn('got a NaN position from graphviz');\n pos[0] = pos[1] = 0;\n }\n return {\n dcg_nodeKey: decode_name(n.name),\n x: +pos[0],\n y: bb[3] - pos[1]\n };\n });\n var clusters = (result.objects || []).filter(function(n) {\n return /^cluster/.test(n.name);\n });\n clusters.forEach(function(c) {\n c.dcg_clusterKey = c.name;\n\n // gv: llx, lly, urx, ury, up-positive\n var cbb = c.bb.split(',').map(function(s) { return +s; });\n c.bounds = {left: cbb[0], top: bb[3] - cbb[3],\n right: cbb[2], bottom: bb[3] - cbb[1]};\n });\n var edges = (result.edges || []).map(function(e) {\n var e2 = {\n dcg_edgeKey: decode_name(e.id || 'n' + e._gvid)\n };\n if(e._draw_) {\n var directive = e._draw_.find(function(d) { return d.op && d.points; });\n e2.points = directive.points.map(function(p) { return {x: p[0], y: bb[3] - p[1]}; });\n }\n return e2;\n });\n _dispatch.end(nodes, edges, clusters);\n }\n\n function start() {\n if(server) {\n d3.json(server)\n .header(\"Content-type\", \"application/x-www-form-urlencoded\")\n .post('layouttool=' + layout + '&' + encodeURIComponent(_dotString), process_response);\n }\n else {\n var result = Viz(_dotString, {format: 'json', engine: layout, totalMemory: 1 << 25});\n result = JSON.parse(result);\n process_response(null, result);\n }\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return layout;\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return false;\n },\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes, edges, clusters) {\n data(nodes, edges, clusters);\n },\n dotInput: function(text) {\n _dotInput = text;\n return this;\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\n","/**\n * `dc_graph.d3_force_layout` is an adaptor for d3-force layouts in dc.graph.js\n * @class d3_force_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.d3_force_layout}\n **/\ndc_graph.d3_force_layout = function(id) {\n var _layoutId = id || uuid();\n var _simulation = null; // d3-force simulation\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects shared with d3-force, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n var _wnodes = [], _wedges = [];\n var _options = null;\n var _paths = null;\n\n function init(options) {\n _options = options;\n\n _simulation = d3.layout.force()\n .size([options.width, options.height]);\n if(options.linkDistance) {\n if(typeof options.linkDistance === 'number')\n _simulation.linkDistance(options.linkDistance);\n else if(options.linkDistance === 'auto')\n _simulation.linkDistance(function(e) {\n return e.dcg_edgeLength;\n });\n }\n\n _simulation.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n _wnodes,\n _wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n\n function data(nodes, edges, constraints) {\n var nodeIDs = {};\n nodes.forEach(function(d, i) {\n nodeIDs[d.dcg_nodeKey] = i;\n });\n\n _wnodes = regenerate_objects(_nodes, nodes, null, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.id = v.dcg_nodeKey;\n if(v.dcg_nodeFixed) {\n v1.fixed = true;\n v1.x = v.dcg_nodeFixed.x;\n v1.y = v.dcg_nodeFixed.y;\n } else v1.fixed = false;\n });\n\n _wedges = regenerate_objects(_edges, edges, null, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.source.id = nodeIDs[e1.source.dcg_nodeKey];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.target.id = nodeIDs[e1.target.dcg_nodeKey];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n _simulation.nodes(_wnodes);\n _simulation.links(_wedges);\n }\n\n function start() {\n installForces();\n runSimulation(_options.iterations);\n }\n\n function stop() {\n if(_simulation)\n _simulation.stop();\n }\n\n function savePositions() {\n var data = {};\n Object.keys(_nodes).forEach(function(key) {\n data[key] = {x: _nodes[key].x, y: _nodes[key].y};\n });\n return data;\n }\n\n function restorePositions(data) {\n Object.keys(data).forEach(function(key) {\n if(_nodes[key]) {\n _nodes[key].fixed = false;\n _nodes[key].x = data[key].x;\n _nodes[key].y = data[key].y;\n }\n });\n }\n\n function installForces() {\n if(_paths === null)\n _simulation.gravity(_options.gravityStrength)\n .charge(_options.initialCharge);\n else {\n if(_options.fixOffPathNodes) {\n var nodesOnPath = d3.set(); // nodes on path\n _paths.forEach(function(path) {\n path.forEach(function(nid) {\n nodesOnPath.add(nid);\n });\n });\n\n // fix nodes not on paths\n Object.keys(_nodes).forEach(function(key) {\n if(!nodesOnPath.has(key)) {\n _nodes[key].fixed = true;\n } else {\n _nodes[key].fixed = false;\n }\n });\n }\n\n // enlarge charge force to separate nodes on paths\n _simulation.charge(_options.chargeForce);\n }\n };\n\n function runSimulation(iterations) {\n if(!iterations) {\n dispatchState('end');\n return;\n }\n _simulation.start();\n for (var i = 0; i < 300; ++i) {\n _simulation.tick();\n if(_paths)\n applyPathAngleForces();\n }\n _simulation.stop();\n }\n\n function applyPathAngleForces() {\n function _dot(v1, v2) { return v1.x*v2.x + v1.y*v2.y; };\n function _len(v) { return Math.sqrt(v.x*v.x + v.y*v.y); };\n function _angle(v1, v2) {\n var a = _dot(v1, v2) / (_len(v1)*_len(v2));\n a = Math.min(a, 1);\n a = Math.max(a, -1);\n return Math.acos(a);\n };\n // perpendicular unit length vector\n function _pVec(v) {\n var xx = -v.y/v.x, yy = 1;\n var length = _len({x: xx, y: yy});\n return {x: xx/length, y: yy/length};\n };\n\n function updateNode(node, angle, pVec, alpha) {\n node.x += pVec.x*(Math.PI-angle)*alpha;\n node.y += pVec.y*(Math.PI-angle)*alpha;\n }\n\n _paths.forEach(function(path) {\n if(path.length < 3) return; // at least 3 nodes (and 2 edges): A->B->C\n for(var i = 1; i < path.length-1; ++i) {\n var current = _nodes[path[i]];\n var prev = _nodes[path[i-1]];\n var next = _nodes[path[i+1]];\n\n // calculate the angle\n var vPrev = {x: prev.x - current.x, y: prev.y - current.y};\n var vNext = {x: next.x - current.x, y: next.y - current.y};\n\n var angle = _angle(vPrev, vNext); // angle in [0, PI]\n\n var pvecPrev = _pVec(vPrev);\n var pvecNext = _pVec(vNext);\n\n // make sure the perpendicular vector is in the\n // direction that makes the angle more towards 180 degree\n // 1. calculate the middle point of node 'prev' and 'next'\n var mid = {x: (prev.x+next.x)/2.0, y: (prev.y+next.y)/2.0};\n // 2. calculate the vectors: 'prev' pointing to 'mid', 'next' pointing to 'mid'\n var prev_mid = {x: mid.x-prev.x, y: mid.y-prev.y};\n var next_mid = {x: mid.x-next.x, y: mid.y-next.y};\n // 3. the 'correct' vector: the angle between pvec and prev_mid(next_mid) should\n // be an obtuse angle\n pvecPrev = _angle(prev_mid, pvecPrev) >= Math.PI/2.0 ? pvecPrev : {x: -pvecPrev.x, y: -pvecPrev.y};\n pvecNext = _angle(next_mid, pvecNext) >= Math.PI/2.0 ? pvecNext : {x: -pvecNext.x, y: -pvecNext.y};\n\n // modify positions of prev and next\n updateNode(prev, angle, pvecPrev, _options.angleForce);\n updateNode(next, angle, pvecNext, _options.angleForce);\n }\n\n });\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'd3-force';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return true;\n },\n parent: property(null),\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes, edges, constraints) {\n data(nodes, edges, constraints);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n paths: function(paths) {\n _paths = paths;\n },\n savePositions: savePositions,\n restorePositions: restorePositions,\n optionNames: function() {\n return ['iterations', 'angleForce', 'chargeForce', 'gravityStrength',\n 'initialCharge', 'linkDistance', 'fixOffPathNodes']\n .concat(graphviz_keys);\n },\n iterations: property(300),\n angleForce: property(0.02),\n chargeForce: property(-500),\n gravityStrength: property(1.0),\n initialCharge: property(-400),\n linkDistance: property(20),\n fixOffPathNodes: property(false),\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n return engine;\n};\n\ndc_graph.d3_force_layout.scripts = ['d3.js'];\n","/**\n * `dc_graph.d3v4_force_layout` is an adaptor for d3-force version 4 layouts in dc.graph.js\n * @class d3v4_force_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.d3v4_force_layout}\n **/\ndc_graph.d3v4_force_layout = function(id) {\n var _layoutId = id || uuid();\n var _simulation = null; // d3-force simulation\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects shared with d3-force, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n var _wnodes = [], _wedges = [];\n var _options = null;\n var _paths = null;\n\n function init(options) {\n _options = options;\n\n _simulation = d3v4.forceSimulation()\n .force('link', d3v4.forceLink())\n .force('center', d3v4.forceCenter(options.width / 2, options.height / 2))\n .force('gravityX', d3v4.forceX(options.width / 2).strength(_options.gravityStrength))\n .force('gravityY', d3v4.forceY(options.height / 2).strength(_options.gravityStrength))\n .force('collision', d3v4.forceCollide(_options.collisionRadius))\n .force('charge', d3v4.forceManyBody())\n .stop();\n }\n\n function dispatchState(event) {\n _dispatch[event](\n _wnodes,\n _wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n\n function data(nodes, edges) {\n var nodeIDs = {};\n nodes.forEach(function(d, i) {\n nodeIDs[d.dcg_nodeKey] = i;\n });\n\n _wnodes = regenerate_objects(_nodes, nodes, null, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.id = v.dcg_nodeKey;\n if(v.dcg_nodeFixed) {\n v1.fx = v.dcg_nodeFixed.x;\n v1.fy = v.dcg_nodeFixed.y;\n } else v1.fx = v1.fy = null;\n });\n\n _wedges = regenerate_objects(_edges, edges, null, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.source = nodeIDs[_nodes[e.dcg_edgeSource].dcg_nodeKey];\n e1.target = nodeIDs[_nodes[e.dcg_edgeTarget].dcg_nodeKey];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n _simulation.force('straighten', null);\n _simulation.nodes(_wnodes);\n _simulation.force('link').links(_wedges);\n }\n\n function start() {\n _dispatch.start();\n installForces(_paths);\n runSimulation(_options.iterations);\n }\n\n function stop() {\n // not running asynchronously, no _simulation.stop();\n }\n\n function savePositions() {\n var data = {};\n Object.keys(_nodes).forEach(function(key) {\n data[key] = {x: _nodes[key].x, y: _nodes[key].y};\n });\n return data;\n }\n function restorePositions(data) {\n Object.keys(data).forEach(function(key) {\n if(_nodes[key]) {\n _nodes[key].fx = data[key].x;\n _nodes[key].fy = data[key].y;\n }\n });\n }\n function installForces(paths) {\n if(paths)\n paths = paths.filter(function(path) {\n return path.nodes.every(function(nk) { return _nodes[nk]; });\n });\n if(paths === null || !paths.length) {\n _simulation.force('charge').strength(_options.initialCharge);\n } else {\n var nodesOnPath;\n if(_options.fixOffPathNodes) {\n nodesOnPath = d3.set();\n paths.forEach(function(path) {\n path.nodes.forEach(function(nid) {\n nodesOnPath.add(nid);\n });\n });\n }\n\n // fix nodes not on paths\n Object.keys(_nodes).forEach(function(key) {\n if(_options.fixOffPathNodes && !nodesOnPath.has(key)) {\n _nodes[key].fx = _nodes[key].x;\n _nodes[key].fy = _nodes[key].y;\n } else {\n _nodes[key].fx = null;\n _nodes[key].fy = null;\n }\n });\n\n _simulation.force('charge').strength(_options.chargeForce);\n _simulation.force('straighten', d3v4.forceStraightenPaths()\n .id(function(n) { return n.dcg_nodeKey; })\n .angleForce(_options.angleForce)\n .pathNodes(function(p) { return p.nodes; })\n .pathStrength(function(p) { return p.strength; })\n .paths(paths));\n }\n };\n\n function runSimulation(iterations) {\n _simulation.alpha(1);\n for (var i = 0; i < iterations; ++i) {\n _simulation.tick();\n dispatchState('tick');\n }\n dispatchState('end');\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'd3v4-force';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return true;\n },\n parent: property(null),\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes, edges, constraints) {\n data(nodes, edges, constraints);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n paths: function(paths) {\n _paths = paths;\n },\n savePositions: savePositions,\n restorePositions: restorePositions,\n optionNames: function() {\n return ['iterations', 'angleForce', 'chargeForce', 'gravityStrength', 'collisionRadius',\n 'initialCharge', 'fixOffPathNodes']\n .concat(graphviz_keys);\n },\n iterations: property(300),\n angleForce: property(0.01),\n chargeForce: property(-600),\n gravityStrength: property(0.3),\n collisionRadius: property(8),\n initialCharge: property(-100),\n fixOffPathNodes: property(false),\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n engine.pathStraightenForce = engine.angleForce;\n return engine;\n};\n\ndc_graph.d3v4_force_layout.scripts = ['d3.js', 'd3v4-force.js'];\n","/**\n * `dc_graph.flexbox_layout` lays out nodes in accordance with the\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox flexbox layout algorithm}.\n * Nodes fit into a containment hierarchy based on their keys; edges do not affect the layout but\n * are drawn from node to node.\n *\n * Since the flexbox algorithm is not ordinarily available in SVG, this class uses the\n * {@link https://npmjs.com/package/css-layout css-layout}\n * package. (It does not currently support css-layout's successor\n * {@link https://github.com/facebook/yoga yoga} but that should be straightforward to add if\n * there is interest.)\n *\n * Unlike conventional graph layout, where positions are determined based on a few attributes and\n * the topological structure of the eedges, flexbox layout is determined based on the node hierarchy\n * and a large number of attributes on the nodes. See css-layout's\n * {@link https://npmjs.com/package/css-layout#supported-attributes Supported Attributes}\n * for a list of those attributes, and see below to understand how the hierarchy is inferred from\n * node keys.\n *\n * `flexbox_layout` does not require all internal nodes to be specified. The node keys are parsed as\n * \"addresses\" or paths (arrays of strings) and the tree is built from those paths. Wherever a\n * node's path terminates is where that node's data will be applied.\n *\n * Since flexbox supports a vast number of attributes, we don't attempt to create accessors for\n * every one. Instead, any attributes in the node data are copied which match the names of flexbox\n * attributes.\n *\n * @class flexbox_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.flexbox_layout}\n **/\ndc_graph.flexbox_layout = function(id, options) {\n var _layoutId = id || uuid();\n options = options || {algo: 'yoga-layout'};\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n\n var _graph, _tree, _nodes = {}, _wnodes;\n\n function init(options) {\n }\n // like d3.nest but address can be of arbitrary (and different) length\n // probably less efficient too\n function add_node(adhead, adtail, n, tree) {\n tree.address = adhead.slice();\n tree.children = tree.children || {};\n if(!adtail.length) {\n tree.node = n;\n return;\n }\n var t = tree.children[adtail[0]] = tree.children[adtail[0]] || {};\n adhead.push(adtail.shift());\n add_node(adhead, adtail, n, t);\n }\n function all_keys(tree) {\n var key = _engine.addressToKey()(tree.address);\n return Array.prototype.concat.apply([key], Object.keys(tree.children || {}).map(function(k) {\n return all_keys(tree.children[k]);\n }));\n }\n function data(graph, nodes) {\n _graph = graph;\n _tree = {address: [], children: {}};\n nodes.forEach(function(n) {\n var ad = _engine.keyToAddress()(n.dcg_nodeKey);\n add_node([], ad, n, _tree);\n });\n var need = all_keys(_tree);\n _wnodes = nodes;\n }\n function ensure_inner_nodes(tree) {\n if(!tree.node)\n tree.node = {dcg_nodeKey: tree.address.length ? tree.address[tree.address.length-1] : null};\n Object.values(tree.children).forEach(ensure_inner_nodes);\n }\n var yoga_constants = {\n alignItems: {\n stretch: yogaLayout.ALIGN_STRETCH,\n 'flex-start': yogaLayout.ALIGN_FLEX_START,\n center: yogaLayout.ALIGN_CENTER,\n 'flex-end': yogaLayout.ALIGN_FLEX_END,\n baseline: yogaLayout.ALIGN_BASELINE\n },\n alignSelf: {\n stretch: yogaLayout.ALIGN_STRETCH,\n 'flex-start': yogaLayout.ALIGN_FLEX_START,\n center: yogaLayout.ALIGN_CENTER,\n 'flex-end': yogaLayout.ALIGN_FLEX_END,\n baseline: yogaLayout.ALIGN_BASELINE\n },\n alignContent: {\n 'flex-start': yogaLayout.ALIGN_FLEX_START,\n 'flex-end': yogaLayout.ALIGN_FLEX_END,\n stretch: yogaLayout.ALIGN_STRETCH,\n center: yogaLayout.ALIGN_CENTER,\n 'space-between': yogaLayout.ALIGN_SPACE_BETWEEN,\n 'space-around': yogaLayout.ALIGN_SPACE_AROUND\n },\n flexDirection: {\n column: yogaLayout.FLEX_DIRECTION_COLUMN,\n 'column-reverse': yogaLayout.FLEX_DIRECTION_COLUMN_REVERSE,\n row: yogaLayout.FLEX_DIRECTION_ROW,\n 'row-reverse': yogaLayout.FLEX_DIRECTION_ROW_REVERSE\n },\n justifyContent: {\n 'flex-start': yogaLayout.JUSTIFY_FLEX_START,\n center: yogaLayout.JUSTIFY_CENTER,\n 'flex-end': yogaLayout.JUSTIFY_FLEX_END,\n 'space-between': yogaLayout.JUSTIFY_SPACE_BETWEEN,\n 'space-around': yogaLayout.JUSTIFY_SPACE_AROUND,\n 'space-evenly': yogaLayout.JUSTIFY_SPACE_EVENLY\n }\n };\n function set_yoga_attr(flexnode, attr, value) {\n var fname = 'set' + attr.charAt(0).toUpperCase() + attr.slice(1);\n if(typeof flexnode[fname] !== 'function')\n throw new Error('Could not set yoga attr \"' + attr + '\" (' + fname + ')');\n if(yoga_constants[attr])\n value = yoga_constants[attr][value];\n flexnode['set' + attr.charAt(0).toUpperCase() + attr.slice(1)](value);\n }\n function get_yoga_attr(flexnode, attr) {\n var fname = 'getComputed' + attr.charAt(0).toUpperCase() + attr.slice(1);\n if(typeof flexnode[fname] !== 'function')\n throw new Error('Could not get yoga attr \"' + attr + '\" (' + fname + ')');\n return flexnode[fname]();\n }\n var internal_attrs = ['sort', 'order', 'dcg_nodeKey', 'dcg_nodeParentCluster', 'shape', 'abstract', 'rx', 'ry', 'x', 'y', 'z'],\n skip_on_parents = ['width', 'height'];\n function create_flextree(attrs, tree) {\n var flexnode;\n switch(options.algo) {\n case 'css-layout':\n flexnode = {name: _engine.addressToKey()(tree.address), style: {}};\n break;\n case 'yoga-layout':\n flexnode = yogaLayout.Node.create();\n break;\n }\n var attrs2 = Object.assign({}, attrs);\n var isParent = Object.keys(tree.children).length;\n if(tree.node)\n Object.assign(attrs, tree.node);\n for(var attr in attrs) {\n if(internal_attrs.includes(attr))\n continue;\n if(isParent && skip_on_parents.includes(attr))\n continue;\n var value = attrs[attr];\n if(typeof value === 'function')\n value = value(tree.node);\n switch(options.algo) {\n case 'css-layout':\n flexnode.style[attr] = value;\n break;\n case 'yoga-layout':\n set_yoga_attr(flexnode, attr, value);\n break;\n }\n }\n if(isParent) {\n var children = Object.values(tree.children)\n .sort(attrs.sort)\n .map(function(c) { return c.address[c.address.length-1]; })\n .map(function(key) {\n return create_flextree(Object.assign({}, attrs2), tree.children[key]);\n });\n switch(options.algo) {\n case 'css-layout':\n flexnode.children = children;\n break;\n case 'yoga-layout':\n children.forEach(function(child, i) {\n flexnode.insertChild(child, i);\n });\n break;\n }\n }\n tree.flexnode = flexnode;\n return flexnode;\n }\n function apply_layout(offset, tree) {\n var left, top, width, height;\n switch(options.algo) {\n case 'css-layout':\n if(_engine.logStuff())\n console.log(tree.node.dcg_nodeKey + ': '+ JSON.stringify(tree.flexnode.layout));\n left = tree.flexnode.layout.left; width = tree.flexnode.layout.width;\n top = tree.flexnode.layout.top; height = tree.flexnode.layout.height;\n break;\n case 'yoga-layout':\n left = get_yoga_attr(tree.flexnode, 'left'); width = get_yoga_attr(tree.flexnode, 'width');\n top = get_yoga_attr(tree.flexnode, 'top'); height = get_yoga_attr(tree.flexnode, 'height');\n break;\n }\n tree.node.x = offset.x + left + width/2;\n tree.node.y = offset.y + top + height/2;\n Object.keys(tree.children)\n .map(function(key) { return tree.children[key]; })\n .forEach(function(child) {\n apply_layout({x: offset.x + left, y: offset.y + top}, child);\n });\n }\n function dispatchState(wnodes, wedges, event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n function start() {\n var defaults = {\n sort: function(a, b) {\n return d3.ascending(a.node.dcg_nodeKey, b.node.dcg_nodeKey);\n }\n };\n ensure_inner_nodes(_tree);\n var flexTree = create_flextree(defaults, _tree);\n switch(options.algo) {\n case 'css-layout':\n flexTree.style.width = _graph.width;\n flexTree.style.height = _graph.height;\n break;\n case 'yoga-layout':\n set_yoga_attr(flexTree, 'width', _graph.width);\n set_yoga_attr(flexTree, 'height', _graph.height);\n break;\n }\n if(_engine.logStuff())\n console.log(JSON.stringify(flexTree, null, 2));\n switch(options.algo) {\n case 'css-layout':\n computeLayout(flexTree);\n break;\n case 'yoga-layout':\n flexTree.calculateLayout();\n break;\n }\n apply_layout({x: 0, y: 0}, _tree);\n dispatchState(_wnodes, [], 'end');\n }\n function stop() {\n }\n\n // currently dc.graph populates the \"cola\" (really \"layout\") member with the attributes\n // needed for layout and does not pass in the original data. flexbox has a huge number of attributes\n // and it might be more appropriate for it to look at the original data.\n // (Especially because it also computes some attributes based on data.)\n var supportedAttributes = [\n 'width', 'height', // positive number\n 'minWidth', 'minHeight', // positive number\n 'maxWidth', 'maxHeight', // positive number\n 'left', 'right', 'top', 'bottom', // number\n 'margin', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', // number\n 'padding', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', // positive number\n 'borderWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth', // positive number\n 'flexDirection', // 'column', 'row'\n 'justifyContent', // 'flex-start', 'center', 'flex-end', 'space-between', 'space-around'\n 'alignItems', 'alignSelf', // 'flex-start', 'center', 'flex-end', 'stretch'\n 'flex', // positive number\n 'flexWrap', // 'wrap', 'nowrap'\n 'position' // 'relative', 'absolute'\n ];\n\n var _engine = {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return true;\n },\n parent: property(null),\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes) {\n data(graph, nodes);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return [];\n },\n populateLayoutNode: function(n1, n) {\n ['sort', 'order'].concat(supportedAttributes).forEach(function(attr) {\n if(n.orig.value[attr])\n n1[attr] = n.orig.value[attr];\n });\n },\n populateLayoutEdge: function() {},\n /**\n * This function constructs a node key string from an \"address\". An address is an array of\n * strings identifying the path from the root to the node.\n *\n * By default, it joins the address with commas.\n * @method addressToKey\n * @memberof dc_graph.flexbox_layout\n * @instance\n * @param {Function} [addressToKey = function(ad) { return ad.join(','); }]\n * @return {Function}\n * @return {dc_graph.flexbox_layout}\n **/\n addressToKey: property(function(ad) { return ad.join(','); }),\n /**\n * This function constructs an \"address\" from a node key string. An address is an array of\n * strings identifying the path from the root to the node.\n *\n * By default, it splits the key by its commas.\n * @method keyToAddress\n * @memberof dc_graph.flexbox_layout\n * @instance\n * @param {Function} [keyToAddress = function(nid) { return nid.split(','); }]\n * @return {Function}\n * @return {dc_graph.flexbox_layout}\n **/\n keyToAddress: property(function(nid) { return nid.split(','); }),\n yogaConstants: function() {\n // in case any are missing, they can be added\n // please file PRs for any missing constants!\n return yoga_constants;\n },\n logStuff: property(false)\n };\n return _engine;\n};\n\ndc_graph.flexbox_layout.scripts = ['css-layout.js'];\n","dc_graph.manual_layout = function(id) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n\n var _wnodes;\n\n function init(options) {\n }\n function data(nodes) {\n _wnodes = nodes;\n }\n function dispatchState(wnodes, wedges, event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n function start() {\n dispatchState(_wnodes, [], 'end');\n }\n function stop() {\n }\n\n var _engine = {\n layoutAlgorithm: function() {\n return 'manual';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return false;\n },\n parent: property(null),\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes, edges) {\n data(nodes);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return [];\n },\n populateLayoutNode: function(n1, n) {\n ['x', 'y'].forEach(function(attr) {\n if(n.orig.value[attr] !== undefined)\n n1[attr] = n.orig.value[attr];\n });\n },\n populateLayoutEdge: function() {},\n addressToKey: property(function(ad) { return ad.join(','); }),\n keyToAddress: property(function(nid) { return nid.split(','); })\n };\n return _engine;\n};\n\ndc_graph.manual_layout.scripts = ['css-layout.js'];\n","/**\n * `dc_graph.layered_layout` produces 3D layered layouts, utilizing another layout\n * that supports fixed nodes and position hints for the layers\n * @class layered_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.layered_layout}\n **/\ndc_graph.layered_layout = function(id) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _supergraph, _subgraphs;\n var _layers;\n var _options = null;\n\n function init(options) {\n _options = options;\n\n }\n\n function data(nodes, edges, constraints) {\n _supergraph = dc_graph.supergraph({nodes: nodes, edges: edges}, {\n nodeKey: function(n) { return n.dcg_nodeKey; },\n edgeKey: function(n) { return n.dcg_edgeKey; },\n nodeValue: function(n) { return n; },\n edgeValue: function(e) { return e; },\n edgeSource: function(e) { return e.dcg_edgeSource; },\n edgeTarget: function(e) { return e.dcg_edgeTarget; }\n });\n\n // every node belongs natively in one rank\n var nranks = _supergraph.nodes().reduce(function(p, n) {\n var rank = engine.layerAccessor()(n.value());\n p[rank] = p[rank] || [];\n p[rank].push(n);\n return p;\n }, {});\n var eranks = Object.keys(nranks).reduce(function(p, r) {\n p[r] = [];\n return p;\n }, {});\n\n // nodes are shadowed into any layers to which they are adjacent\n // edges are induced from the native&shadow nodes in each layer\n _supergraph.edges().forEach(function(e) {\n var srank = engine.layerAccessor()(e.source().value()),\n trank = engine.layerAccessor()(e.target().value());\n if(srank == trank) {\n eranks[srank].push(e);\n return;\n }\n nranks[trank].push(e.source());\n eranks[trank].push(e);\n nranks[srank].push(e.target());\n eranks[srank].push(e);\n });\n\n // produce a subgraph for each layer\n _subgraphs = Object.keys(nranks).reduce(function(p, r) {\n p[r] = _supergraph.subgraph(\n nranks[r].map(function(n) { return n.key(); }),\n eranks[r].map(function(e) { return e.key(); }));\n return p;\n }, {});\n\n // start from the most populous layer\n var max = null;\n Object.keys(nranks).forEach(function(r) {\n if(max === null ||\n _subgraphs[r].nodes().length > _subgraphs[max].nodes().length)\n max = +r;\n });\n\n // travel up and down from there, each time fixing the nodes from the last layer\n var ranks = Object.keys(nranks).map(function(r) { return +r; }).sort();\n _layers = ranks.map(function(r) {\n return {\n rank: r,\n z: -r * engine.layerSeparationZ()\n };\n });\n var mi = ranks.indexOf(max);\n var ups = ranks.slice(mi+1), downs = ranks.slice(0, mi).reverse();\n layout_layer(max, -1).then(function(layout) {\n Promise.all([\n layout_layers(layout, max, ups),\n layout_layers(layout, max, downs)\n ]).then(function() {\n _dispatch.end(\n _supergraph.nodes().map(function(n) { return n.value(); }),\n _supergraph.edges().map(function(e) { return e.value(); }));\n });\n });\n }\n\n function layout_layers(layout, last, layers) {\n if(layers.length === 0)\n return Promise.resolve(layout);\n var curr = layers.shift();\n return layout_layer(curr, last).then(function(layout) {\n return layout_layers(layout, curr, layers);\n });\n }\n\n function layout_layer(r, last) {\n _subgraphs[r].nodes().forEach(function(n) {\n if(engine.layerAccessor()(n.value()) !== r &&\n n.value().x !== undefined &&\n n.value().y !== undefined)\n n.value().dcg_nodeFixed = {\n x: n.value().x,\n y: n.value().y\n };\n else n.value().dcg_nodeFixed = null;\n });\n var subengine = engine.engineFactory()();\n subengine.init(_options);\n subengine.data(\n {},\n _subgraphs[r].nodes().map(function(n) {\n return n.value();\n }),\n _subgraphs[r].edges().map(function(e) {\n return e.value();\n }));\n return promise_layout(r, subengine);\n }\n\n function promise_layout(r, subengine) {\n // stopgap - engine.start() should return a promise\n return new Promise(function(resolve, reject) {\n subengine.on('end', function(nodes, edges) {\n resolve({nodes: nodes, edges: edges});\n });\n subengine.start();\n }).then(function(layout) {\n // copy positions back into the subgraph (and hence supergraph)\n layout.nodes.forEach(function(ln) {\n var n = _subgraphs[r].node(ln.dcg_nodeKey);\n // do not copy positions for shadow nodes\n if(engine.layerAccessor()(n.value()) !== r)\n return;\n n.value().x = ln.x;\n n.value().y = ln.y;\n n.value().z = -r * engine.layerSeparationZ(); // lowest rank at top\n });\n return layout;\n });\n }\n\n function start() {\n _dispatch.start();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'layered';\n },\n layoutId: function() {\n return _layoutId;\n },\n supportsWebworker: function() {\n return false;\n },\n parent: property(null),\n on: function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(graph, nodes, edges, constraints) {\n data(nodes, edges, constraints);\n },\n start: function() {\n start();\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return []\n .concat(graphviz_keys);\n },\n engineFactory: property(null),\n layerAccessor: property(null),\n layerSeparationZ: property(50),\n layers: function() {\n return _layers;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n extractNodeAttrs: property({}), // {attr: function(node)}\n extractEdgeAttrs: property({})\n });\n return engine;\n};\n\n\n","function port_name(nodeId, edgeId, portName) {\n if(!(nodeId || edgeId))\n return null; // must have one key or the other\n if(nodeId) nodeId = nodeId.replace(/\\//g, '%2F');\n if(edgeId) edgeId = edgeId.replace(/\\//g, '%2F');\n return (nodeId ? 'node/' + nodeId : 'edge/' + edgeId) + '/' + portName;\n};\nfunction split_port_name(portname) {\n var parts = portname.split('/');\n console.assert(parts.length === 3);\n parts = parts.map(function(p) {\n return p.replace(/%2F/g, '/');\n });\n if(parts[0] === 'node')\n return {\n nodeKey: parts[1],\n name: parts[2]\n };\n else return {\n edgeKey: parts[1],\n name: parts[2]\n };\n}\nfunction project_port(diagram, n, p) {\n if(!p.vec) {\n console.assert(!p.edges.length);\n throw new Error(\"port has not been placed, maybe install place_ports? \" + p.name);\n }\n p.pos = diagram.shape(n.dcg_shape.shape).intersect_vec(n, p.vec[0]*1000, p.vec[1]*1000);\n}\n\ndc_graph.place_ports = function() {\n function received_layout(diagram, nodes, wnodes, edges, wedges, ports, wports) {\n var node_ports = diagram.nodePorts();\n\n function is_ccw(u, v) {\n return u[0]*v[1] - u[1]*v[0] > 0;\n }\n function in_bounds(v, bounds) {\n // assume bounds are ccw\n return is_ccw(bounds[0], v) && is_ccw(v, bounds[1]);\n }\n function clip(v, bounds) {\n if(is_ccw(v, bounds[0]))\n return bounds[0];\n else if(is_ccw(bounds[1], v))\n return bounds[1];\n else return v;\n }\n function a_to_v(a) {\n return [Math.cos(a), Math.sin(a)];\n }\n function v_to_a(v) {\n return Math.atan2(v[1], v[0]);\n }\n function distance(p, p2) {\n return Math.hypot(p2.pos.x - p.pos.x, p2.pos.y - p.pos.y);\n }\n function misses(p, p2) {\n var dist = distance(p, p2);\n var misses = dist > _mode.minDistance();\n return misses;\n }\n function rand_within(a, b) {\n return a + Math.random()*(b-a);\n }\n // calculate port positions\n for(var nid in node_ports) {\n var n = nodes[nid],\n nports = node_ports[nid];\n\n // make sure that we have vector and angle bounds for any ports with specification\n nports.forEach(function(p) {\n var bounds = p.orig && diagram.portBounds.eval(p) || [0, 2*Math.PI];\n if(Array.isArray(bounds[0])) {\n p.vbounds = bounds;\n p.abounds = bounds.map(v_to_a);\n }\n else {\n p.vbounds = bounds.map(a_to_v);\n p.abounds = bounds;\n }\n if(p.abounds[0] > p.abounds[1])\n p.abounds[1] += 2*Math.PI;\n console.assert(p.orig || p.vec, 'unplaced unspecified port');\n });\n\n // determine which ports satisfy bounds or are unplaced\n var inside = [], outside = [], unplaced = [];\n nports.forEach(function(p) {\n if(!p.vec)\n unplaced.push(p);\n else if(p.vbounds && !in_bounds(p.vec, p.vbounds))\n outside.push(p);\n else\n inside.push(p);\n });\n\n // shunt outside ports into their bounds\n outside.forEach(function(p) {\n p.vec = clip(p.vec, p.vbounds);\n inside.push(p);\n });\n\n // for all unplaced ports that share a bounds, evenly distribute them within those bounds.\n // assume that bounds are disjoint.\n var boundses = {}, boundports = {};\n unplaced.forEach(function(p) {\n var boundskey = p.abounds.map(function(x) { return x.toFixed(3); }).join(',');\n boundses[boundskey] = p.abounds;\n boundports[boundskey] = boundports[boundskey] || [];\n boundports[boundskey].push(p);\n });\n for(var b in boundports) {\n var bounds = boundses[b], bports = boundports[b];\n if(bports.length === 1)\n bports[0].vec = a_to_v((bounds[0] + bounds[1])/2);\n else {\n var slice = (bounds[1] - bounds[0]) / (boundports[b].length - 1);\n boundports[b].forEach(function(p, i) {\n p.vec = a_to_v(bounds[0] + i*slice);\n });\n }\n }\n inside = inside.concat(unplaced);\n unplaced = [];\n\n // determine positions of all satisfied\n inside.forEach(function(p) {\n project_port(diagram, n, p);\n });\n\n // detect any existing collisions, unplace the one without edges or second one\n for(var i = 0; i < inside.length; ++i) {\n var x = inside[i];\n if(unplaced.includes(x))\n continue;\n for(var j = i+1; j < inside.length; ++j) {\n var y = inside[j];\n if(unplaced.includes(y))\n continue;\n if(!misses(x, y)) {\n if(!x.edges.length) {\n unplaced.push(x);\n continue;\n }\n else\n unplaced.push(y);\n }\n }\n }\n inside = inside.filter(function(p) { return !unplaced.includes(p); });\n\n // place any remaining by trying random spots within the range until it misses all or we give up\n var patience = _mode.patience(), maxdist = 0, maxvec;\n while(unplaced.length) {\n var p = unplaced[0];\n p.vec = a_to_v(rand_within(p.abounds[0], p.abounds[1]));\n project_port(diagram, n, p);\n var mindist = d3.min(inside, function(p2) { return distance(p, p2); });\n if(mindist > maxdist) {\n maxdist = mindist;\n maxvec = p.vec;\n }\n if(!patience-- || mindist > _mode.minDistance()) {\n if(patience<0) {\n console.warn('ran out of patience placing a port');\n p.vec = maxvec;\n project_port(diagram, n, p);\n }\n inside.push(p);\n unplaced.shift();\n patience = _mode.patience();\n maxdist = 0;\n }\n }\n }\n };\n var _mode = {\n parent: property(null).react(function(p) {\n if(p) {\n p.on('receivedLayout.place-ports', received_layout);\n } else if(_mode.parent())\n _mode.parent().on('receivedLayout.place-ports', null);\n }),\n // minimum distance between ports\n minDistance: property(20),\n // number of random places to try when resolving collision\n patience: property(20)\n };\n\n return _mode;\n};\n","dc_graph.grid = function() {\n var _gridLayer = null;\n var _translate, _scale, _xDomain, _yDomain;\n\n function draw(diagram, node, edge, ehover) {\n //infer_and_draw(diagram);\n }\n\n function remove(diagram, node, edge, ehover) {\n if(_gridLayer)\n _gridLayer.remove();\n }\n\n function draw(diagram) {\n _gridLayer = diagram.g().selectAll('g.grid-layer').data([0]);\n _gridLayer.enter().append('g').attr('class', 'grid-layer');\n var ofs = _mode.wholeOnLines() ? 0 : 0.5;\n var vline_data = _scale >= _mode.threshold() ? d3.range(Math.floor(_xDomain[0]), Math.ceil(_xDomain[1]) + 1) : [];\n var vlines = _gridLayer.selectAll('line.grid-line.vertical')\n .data(vline_data, function(d) { return d - ofs; });\n vlines.exit().remove();\n vlines.enter().append('line')\n .attr({\n class: 'grid-line vertical',\n x1: function(d) { return d - ofs; },\n x2: function(d) { return d - ofs; }\n });\n vlines.attr({\n 'stroke-width': 1/_scale,\n y1: _yDomain[0],\n y2: _yDomain[1]\n });\n var hline_data = _scale >= _mode.threshold() ? d3.range(Math.floor(_yDomain[0]), Math.ceil(_yDomain[1]) + 1) : [];\n var hlines = _gridLayer.selectAll('line.grid-line.horizontal')\n .data(hline_data, function(d) { return d - ofs; });\n hlines.exit().remove();\n hlines.enter().append('line')\n .attr({\n class: 'grid-line horizontal',\n y1: function(d) { return d - ofs; },\n y2: function(d) { return d - ofs; }\n });\n hlines.attr({\n 'stroke-width': 1/_scale,\n x1: _xDomain[0],\n x2: _xDomain[1]\n });\n }\n\n function on_zoom(translate, scale, xDomain, yDomain) {\n _translate = translate;\n _scale = scale;\n _xDomain = xDomain,\n _yDomain = yDomain;\n draw(_mode.parent());\n }\n\n function infer_and_draw(diagram) {\n _translate = diagram.translate();\n _scale = diagram.scale();\n _xDomain = diagram.x().domain();\n _yDomain = diagram.y().domain();\n draw(diagram);\n }\n\n var _mode = dc_graph.mode('highlight-paths', {\n draw: draw,\n remove: remove,\n parent: function(p) {\n if(p) {\n p.on('zoomed.grid', on_zoom);\n infer_and_draw(p);\n }\n }\n });\n\n _mode.threshold = property(4);\n _mode.wholeOnLines = property(true);\n\n return _mode;\n};\n\n\n","dc_graph.annotate_layers = function() {\n // svg-specific\n var _drawLayer;\n // wegl-specific\n var _planes = [];\n var _planeGeometry;\n var _mode = dc_graph.mode('annotate-layers', {\n laterDraw: true,\n renderers: ['svg', 'webgl'],\n draw: draw,\n remove: remove\n });\n function draw(diagram) {\n var rendererType = _mode.parent().renderer().rendererType();\n var engine = _mode.parent().layoutEngine();\n if(rendererType === 'svg') {\n if(engine.layoutAlgorithm() === 'cola' &&\n engine.setcolaSpec() && engine.setcolaNodes()) {\n _drawLayer = _mode.parent().select('g.draw').selectAll('g.divider-layer').data([0]);\n _drawLayer.enter().append('g').attr('class', 'divider-layer');\n var boundary_nodes = engine.setcolaNodes().filter(function(n) {\n return /^sort_order_boundary/.test(n.name);\n });\n var lines = _drawLayer.selectAll('line.divider').data(boundary_nodes);\n lines.exit().remove();\n lines.enter().append('line')\n .attr('class', 'divider');\n lines.attr({\n stroke: _mode.stroke(),\n 'stroke-width': _mode.strokeWidth(),\n 'stroke-dasharray': _mode.strokeDashArray(),\n x1: -5000,\n y1: function(n) {\n return n.y;\n },\n x2: 5000,\n y2: function(n) {\n return n.y;\n }\n });\n }\n } else if(rendererType === 'webgl') {\n var MULT = _mode.parent().renderer().multiplier();\n var scene = arguments[1], drawState = arguments[2];\n if(engine.layoutAlgorithm() === 'layered' && engine.layers()) {\n var width = drawState.extents[0][1] - drawState.extents[0][0] + _mode.planePadding()*MULT*2,\n height = drawState.extents[1][1] - drawState.extents[1][0] + _mode.planePadding()*MULT*2;\n var delGeom;\n var shape = new THREE.Shape();\n shape.moveTo(0, 0);\n shape.lineTo(0, height);\n shape.lineTo(width, height);\n shape.lineTo(width, 0);\n shape.lineTo(0, 0);\n if(_planeGeometry)\n delGeom = _planeGeometry;\n _planeGeometry = new THREE.ShapeBufferGeometry(shape);\n\n var layers = engine.layers();\n if(layers.length < _planes.length) {\n for(var i = layers.length; i < _planes.length; ++i)\n scene.remove(_planes[i].mesh);\n _planes = _planes.slice(0, layers.length);\n }\n layers.forEach(function(layer, i) {\n if(!_planes[i])\n _planes[i] = Object.assign({}, layer);\n if(_planes[i].mesh)\n scene.remove(_planes[i].mesh);\n var mesh = _planes[i].mesh = new THREE.Mesh(_planeGeometry, new THREE.MeshStandardMaterial({\n opacity: _mode.planeOpacity(),\n transparent: true,\n color: _mode.parent().renderer().color_to_int(_mode.planeColor()),\n side: THREE.DoubleSide\n }));\n mesh.position.set(drawState.extents[0][0] - _mode.planePadding()*MULT,\n drawState.extents[1][0] - _mode.planePadding()*MULT,\n layer.z * MULT);\n scene.add(mesh);\n });\n if(delGeom)\n delGeom.dispose();\n }\n } else throw new Error(\"annotate_layers doesn't know how to work with renderer \" + rendererType);\n }\n function remove() {\n if(_drawLayer)\n _drawLayer.remove();\n }\n\n // line properties for svg\n _mode.stroke = property('black');\n _mode.strokeWidth = property(2);\n _mode.strokeDashArray = property([5,5]);\n\n // plane properties\n _mode.planePadding = property(5);\n _mode.planeOpacity = property(0.2);\n _mode.planeColor = property('#ffffdd');\n return _mode;\n};\n","dc_graph.troubleshoot = function() {\n var _debugLayer = null;\n var _translate, _scale = 1, _xDomain, _yDomain;\n\n function draw(diagram, node, edge, ehover) {\n if(!_debugLayer)\n _debugLayer = diagram.g().append('g').attr({\n class: 'troubleshoot',\n 'pointer-events': 'none'\n });\n var centers = node.data().map(function(n) {\n return {\n x: n.cola.x,\n y: n.cola.y\n };\n });\n var crosshairs = _debugLayer.selectAll('path.nodecenter').data(centers);\n crosshairs.exit().remove();\n crosshairs.enter().append('path').attr('class', 'nodecenter');\n crosshairs.attr({\n d: function(c) {\n return 'M' + (c.x - _mode.xhairWidth()/2) + ',' + c.y + ' h' + _mode.xhairWidth() +\n ' M' + c.x + ',' + (c.y - _mode.xhairHeight()/2) + ' v' + _mode.xhairHeight();\n },\n opacity: _mode.xhairOpacity() !== null ? _mode.xhairOpacity() : _mode.opacity(),\n stroke: _mode.xhairColor(),\n 'stroke-width': 1/_scale\n });\n function cola_point(n) {\n return {x: n.cola.x, y: n.cola.y};\n }\n var colabounds = node.data().map(function(n) {\n return boundary(cola_point(n), n.cola.width, n.cola.height);\n });\n var colaboundary = _debugLayer.selectAll('path.colaboundary').data(colabounds);\n draw_corners(colaboundary, 'colaboundary', _mode.boundsColor());\n\n var textbounds = node.data().map(function(n) {\n if(!n.bbox || (!n.bbox.width && !n.bbox.height))\n return null;\n return boundary(cola_point(n), n.bbox.width, n.bbox.height);\n }).filter(function(n) { return !!n; });\n var textboundary = _debugLayer.selectAll('path.textboundary').data(textbounds);\n draw_corners(textboundary, 'textboundary', _mode.boundsColor());\n\n var radiibounds = node.data().map(function(n) {\n if(typeof n.dcg_rx !== 'number')\n return null;\n return boundary(cola_point(n), n.dcg_rx*2, n.dcg_ry*2);\n }).filter(function(n) { return !!n; });\n var radiiboundary = _debugLayer.selectAll('path.radiiboundary').data(radiibounds);\n draw_corners(radiiboundary, 'radiiboundary', _mode.boundsColor());\n\n diagram.addOrRemoveDef('debug-orient-marker-head',\n true,\n 'svg:marker',\n orient_marker.bind(null, _mode.arrowHeadColor()));\n diagram.addOrRemoveDef('debug-orient-marker-tail',\n true,\n 'svg:marker',\n orient_marker.bind(null, _mode.arrowTailColor()));\n var heads = _mode.arrowLength() ? edge.data().map(function(e) {\n return {pos: e.pos.new.path.points[e.pos.new.path.points.length-1], orient: e.pos.new.orienthead};\n }) : [];\n var headOrients = _debugLayer.selectAll('line.heads').data(heads);\n draw_arrow_orient(headOrients, 'heads', _mode.arrowHeadColor(), '#debug-orient-marker-head');\n\n var tails = _mode.arrowLength() ? edge.data().map(function(e) {\n return {pos: e.pos.new.path.points[0], orient: e.pos.new.orienttail};\n }) : [];\n var tailOrients = _debugLayer.selectAll('line.tails').data(tails);\n draw_arrow_orient(tailOrients, 'tails', _mode.arrowTailColor(), '#debug-orient-marker-tail');\n\n var headpts = Array.prototype.concat.apply([], edge.data().map(function(e) {\n var arrowSize = diagram.edgeArrowSize.eval(e);\n return edge_arrow_points(\n diagram.arrows(),\n diagram.edgeArrowhead.eval(e),\n arrowSize,\n diagram.edgeStrokeWidth.eval(e) / arrowSize,\n unrad(e.pos.new.orienthead),\n e.pos.new.full.points[e.pos.new.full.points.length-1],\n diagram.nodeStrokeWidth.eval(e.target)\n );\n }));\n var hp = _debugLayer.selectAll('path.head-point').data(headpts);\n draw_x(hp, 'head-point', _mode.arrowHeadColor());\n\n var tailpts = Array.prototype.concat.apply([], edge.data().map(function(e) {\n var arrowSize = diagram.edgeArrowSize.eval(e);\n return edge_arrow_points(\n diagram.arrows(),\n diagram.edgeArrowtail.eval(e),\n arrowSize,\n diagram.edgeStrokeWidth.eval(e) / arrowSize,\n unrad(e.pos.new.orienttail),\n e.pos.new.full.points[0],\n diagram.nodeStrokeWidth.eval(e.source)\n );\n }));\n var tp = _debugLayer.selectAll('path.tail-point').data(tailpts);\n draw_x(tp, 'tail-point', _mode.arrowTailColor());\n\n var domain = _debugLayer.selectAll('rect.domain').data([0]);\n domain.enter().append('rect');\n var xd = _mode.parent().x().domain(), yd = _mode.parent().y().domain();\n domain.attr({\n class: 'domain',\n fill: 'none',\n opacity: _mode.domainOpacity(),\n stroke: _mode.domainColor(),\n 'stroke-width': _mode.domainStrokeWidth()/_scale,\n x: xd[0],\n y: yd[0],\n width: xd[1] - xd[0],\n height: yd[1] - yd[0]\n });\n }\n function on_zoom(translate, scale, xDomain, yDomain) {\n _translate = translate;\n _scale = scale;\n _xDomain = xDomain;\n _yDomain = yDomain;\n draw(_mode.parent(), _mode.parent().selectAllNodes(), _mode.parent().selectAllEdges());\n }\n\n function boundary(point, wid, hei) {\n return {\n left: point.x - wid/2,\n top: point.y - hei/2,\n right: point.x + wid/2,\n bottom: point.y + hei/2\n };\n };\n function bound_tick(x, y, dx, dy) {\n return 'M' + x + ',' + (y + dy) + ' v' + -dy + ' h' + dx;\n }\n function corners(bounds) {\n return [\n bound_tick(bounds.left, bounds.top, _mode.boundsWidth(), _mode.boundsHeight()),\n bound_tick(bounds.right, bounds.top, -_mode.boundsWidth(), _mode.boundsHeight()),\n bound_tick(bounds.right, bounds.bottom, -_mode.boundsWidth(), -_mode.boundsHeight()),\n bound_tick(bounds.left, bounds.bottom, _mode.boundsWidth(), -_mode.boundsHeight()),\n ].join(' ');\n }\n function draw_corners(binding, classname, color) {\n binding.exit().remove();\n binding.enter().append('path').attr('class', classname);\n binding.attr({\n d: corners,\n opacity: _mode.boundsOpacity() !== null ? _mode.boundsOpacity() : _mode.opacity(),\n stroke: color,\n 'stroke-width': 1/_scale,\n fill: 'none'\n });\n }\n function unrad(orient) {\n return +orient.replace('rad','');\n }\n function draw_arrow_orient(binding, classname, color, markerUrl) {\n binding.exit().remove();\n binding.enter().append('line').attr('class', classname);\n binding.attr({\n x1: function(d) { return d.pos.x; },\n y1: function(d) { return d.pos.y; },\n x2: function(d) { return d.pos.x - Math.cos(unrad(d.orient))*_mode.arrowLength(); },\n y2: function(d) { return d.pos.y - Math.sin(unrad(d.orient))*_mode.arrowLength(); },\n stroke: color,\n 'stroke-width': _mode.arrowStrokeWidth()/_scale,\n opacity: _mode.arrowOpacity() !== null ? _mode.arrowOpacity() : _mode.opacity(),\n 'marker-end': 'url(' + markerUrl + ')'\n });\n }\n function orient_marker(color, markerEnter) {\n markerEnter\n .attr({\n viewBox: '0 -3 3 6',\n refX: 3,\n refY: 0,\n orient: 'auto'\n });\n markerEnter.append('path')\n .attr('stroke', color)\n .attr('fill', 'none')\n .attr('d', 'M0,3 L3,0 L0,-3');\n }\n function edge_arrow_points(arrows, defn, arrowSize, stemWidth, orient, endp, strokeWidth) {\n var parts = arrow_parts(arrows, defn),\n offsets = arrow_offsets(parts, stemWidth),\n xunit = [Math.cos(orient), Math.sin(orient)];\n endp = [endp.x, endp.y];\n if(!parts.length)\n return [[endp[0] - xunit[0]*strokeWidth/2,\n endp[1] - xunit[1]*strokeWidth/2]];\n var globofs = add_points(\n [-strokeWidth/arrowSize/2,0],\n mult_point(front_ref(parts[0].frontRef), -1));\n var pts = offsets.map(function(ofs, i) {\n return mult_point([\n globofs,\n front_ref(parts[i].frontRef),\n ofs.offset\n ].reduce(add_points), arrowSize);\n });\n pts.push(mult_point([\n globofs,\n back_ref(parts[parts.length-1].backRef),\n offsets[parts.length-1].offset\n ].reduce(add_points), arrowSize));\n return pts.map(function(p) {\n return add_points(\n endp,\n [p[0]*xunit[0] - p[1]*xunit[1], p[0]*xunit[1] + p[1]*xunit[0]]\n );\n });\n }\n\n\n function draw_x(binding, classname, color) {\n var xw = _mode.xWidth()/2, xh = _mode.xHeight()/2;\n binding.exit().remove();\n binding.enter().append('path').attr('class', classname);\n binding.attr({\n d: function(pos) {\n return [[[-xw,-xh],[xw,xh]], [[xw,-xh], [-xw,xh]]].map(function(seg) {\n return 'M' + seg.map(function(p) {\n return (pos[0] + p[0]) + ',' + (pos[1] + p[1]);\n }).join(' L');\n }).join(' ');\n },\n 'stroke-width': 2/_scale,\n stroke: color,\n opacity: _mode.xOpacity()\n });\n }\n function remove(diagram, node, edge, ehover) {\n if(_debugLayer)\n _debugLayer.remove();\n }\n\n var _mode = dc_graph.mode('highlight-paths', {\n laterDraw: true,\n draw: draw,\n remove: remove,\n parent: function(p) {\n if(p) {\n _translate = p.translate();\n _scale = p.scale();\n p.on('zoomed.troubleshoot', on_zoom);\n }\n else if(_mode.parent())\n _mode.parent().on('zoomed.troubleshoot', null);\n }\n });\n _mode.opacity = property(0.75);\n\n _mode.xhairOpacity = property(null);\n _mode.xhairWidth = property(10);\n _mode.xhairHeight = property(10);\n _mode.xhairColor = property('blue');\n\n _mode.boundsOpacity = property(null);\n _mode.boundsWidth = property(10);\n _mode.boundsHeight = property(10);\n _mode.boundsColor = property('green');\n\n _mode.arrowOpacity = property(null);\n _mode.arrowStrokeWidth = property(3);\n _mode.arrowColor = _mode.arrowHeadColor = property('darkorange');\n _mode.arrowTailColor = property('red');\n _mode.arrowLength = property(100);\n\n _mode.xWidth = property(1);\n _mode.xHeight = property(1);\n _mode.xOpacity = property(0.8);\n\n _mode.domainOpacity = property(0.6);\n _mode.domainColor = property('darkorange');\n _mode.domainStrokeWidth = property(4);\n\n return _mode;\n};\n\n"," dc_graph.validate = function(title) {\n function falsy(objects, accessor, what, who) {\n var f = objects.filter(function(o) {\n return !accessor(o);\n });\n return f.length ?\n [what + ' is empty for ' + f.length + ' of ' + objects.length + ' ' + who, f] :\n null;\n }\n function build_index(objects, accessor) {\n return objects.reduce(function(m, o) {\n m[accessor(o)] = o;\n return m;\n }, {});\n }\n function not_found(index, objects, accessor, what, where, who) {\n var nf = objects.filter(function(o) {\n return !index[accessor(o)];\n }).map(function(o) {\n return {key: accessor(o), value: o};\n });\n return nf.length ?\n [what + ' was not found in ' + where, Object.keys(index), 'for ' + nf.length + ' of ' + objects.length + ' ' + who, nf] :\n null;\n }\n function validate() {\n var diagram = _mode.parent();\n var nodes = diagram.nodeGroup().all(),\n edges = diagram.edgeGroup().all(),\n ports = diagram.portGroup() ? diagram.portGroup().all() : [];\n var errors = [];\n\n function check(error) {\n if(error)\n errors.push(error);\n }\n\n check(falsy(nodes, diagram.nodeKey(), 'nodeKey', 'nodes'));\n check(falsy(edges, diagram.edgeSource(), 'edgeSource', 'edges'));\n check(falsy(edges, diagram.edgeTarget(), 'edgeTarget', 'edges'));\n\n var contentTypes = d3.set(diagram.content.enum());\n var ct = dc_graph.functor_wrap(diagram.nodeContent());\n var noContentNodes = nodes.filter(function(kv) {\n return !contentTypes.has(ct(kv));\n });\n if(noContentNodes.length)\n errors.push(['there are ' + noContentNodes.length + ' nodes with nodeContent not matching any content', noContentNodes]);\n\n var nindex = build_index(nodes, diagram.nodeKey()),\n eindex = build_index(edges, diagram.edgeKey());\n check(not_found(nindex, edges, diagram.edgeSource(), 'edgeSource', 'nodes', 'edges'));\n check(not_found(nindex, edges, diagram.edgeTarget(), 'edgeTarget', 'nodes', 'edges'));\n\n check(falsy(ports, function(p) {\n return diagram.portNodeKey() && diagram.portNodeKey()(p) ||\n diagram.portEdgeKey() && diagram.portEdgeKey()(p);\n }, 'portNodeKey||portEdgeKey', 'ports'));\n\n var named_ports = !diagram.portNodeKey() && [] || ports.filter(function(p) {\n return diagram.portNodeKey()(p);\n });\n var anonymous_ports = !diagram.portEdgeKey() && [] || ports.filter(function(p) {\n return diagram.portEdgeKey()(p);\n });\n check(not_found(nindex, named_ports, diagram.portNodeKey(), 'portNodeKey', 'nodes', 'ports'));\n check(not_found(eindex, anonymous_ports, diagram.portEdgeKey(), 'portEdgeKey', 'edges', 'ports'));\n\n if(diagram.portName()) {\n var pindex = build_index(named_ports, function(p) {\n return diagram.portNodeKey()(p) + ' - ' + diagram.portName()(p);\n });\n if(diagram.edgeSourcePortName())\n check(not_found(pindex, edges, function(e) {\n return diagram.edgeSource()(e) + ' - ' + d3.functor(diagram.edgeSourcePortName())(e);\n }, 'edgeSourcePortName', 'ports', 'edges'));\n if(diagram.edgeTargetPortName())\n check(not_found(pindex, edges, function(e) {\n return diagram.edgeTarget()(e) + ' - ' + d3.functor(diagram.edgeTargetPortName())(e);\n }, 'edgeTargetPortName', 'ports', 'edges'));\n }\n\n function count_text() {\n return nodes.length + ' nodes, ' + edges.length + ' edges, ' + ports.length + ' ports';\n }\n if(errors.length) {\n console.warn('validation of ' + title + ' failed with ' + count_text() + ':');\n errors.forEach(function(err) {\n console.warn.apply(console, err);\n });\n }\n else\n console.log('validation of ' + title + ' succeeded with ' + count_text() + '.');\n }\n var _mode = {\n parent: property(null).react(function(p) {\n if(p)\n p.on('data.validate', validate);\n else\n _mode.parent().on('data.validate', null);\n })\n };\n\n return _mode;\n};\n","/**\n## Legend\n\nThe dc_graph.legend shows labeled examples of nodes & edges, within the frame of a dc_graph.diagram.\n**/\ndc_graph.legend = function(legend_namespace) {\n legend_namespace = legend_namespace || 'node-legend';\n var _items, _included = [];\n var _dispatch = d3.dispatch('filtered');\n var _totals, _counts;\n\n var _svg_renderer;\n\n function apply_filter() {\n if(_legend.dimension()) {\n if(_legend.isTagDimension()) {\n _legend.dimension().filterFunction(function(ks) {\n return !_included.length || ks.filter(function(k) {\n return _included.includes(k);\n }).length;\n });\n } else {\n _legend.dimension().filterFunction(function(k) {\n return !_included.length || _included.includes(k);\n });\n }\n _legend.parent().redraw();\n }\n }\n\n var _legend = dc_graph.mode(legend_namespace, {\n renderers: ['svg', 'webgl'],\n draw: redraw,\n remove: function() {},\n parent: function(p) {\n if(p) {\n p\n .on('render.' + legend_namespace, render)\n .on('data.' + legend_namespace, on_data);\n }\n else {\n _legend.parent()\n .on('render.' + legend_namespace, null)\n .on('data.' + legend_namespace, null);\n }\n }\n });\n\n /**\n #### .type([value])\n Set or get the handler for the specific type of item to be displayed. Default: dc_graph.legend.node_legend()\n **/\n _legend.type = property(dc_graph.legend.node_legend());\n\n /**\n #### .x([value])\n Set or get x coordinate for legend widget. Default: 0.\n **/\n _legend.x = property(0);\n\n /**\n #### .y([value])\n Set or get y coordinate for legend widget. Default: 0.\n **/\n _legend.y = property(0);\n\n /**\n #### .gap([value])\n Set or get gap between legend items. Default: 5.\n **/\n _legend.gap = property(5);\n\n /**\n #### .itemWidth([value])\n Set or get width to reserve for legend item. Default: 30.\n **/\n _legend.itemWidth = _legend.nodeWidth = property(40);\n\n /**\n #### .itemHeight([value])\n Set or get height to reserve for legend item. Default: 30.\n **/\n _legend.itemHeight = _legend.nodeHeight = property(40);\n\n _legend.dyLabel = property('0.3em');\n\n _legend.omitEmpty = property(false);\n\n /**\n #### .noLabel([value])\n Remove item labels, since legend labels are displayed outside of the items. Default: true\n **/\n _legend.noLabel = property(true);\n\n _legend.counter = property(null);\n\n _legend.replaceFilter = function(filter) {\n if(filter && filter.length === 1)\n _included = filter[0];\n else\n _included = [];\n return _legend;\n };\n\n _legend.filters = function() {\n return _included;\n };\n\n _legend.on = function(type, f) {\n _dispatch.on(type, f);\n return _legend;\n };\n\n /**\n #### .exemplars([object])\n Specifies an object where the keys are the names of items to add to the legend, and the values are\n objects which will be passed to the accessors of the attached diagram in order to determine the\n drawing attributes. Alternately, if the key needs to be specified separately from the name, the\n function can take an array of {name, key, value} objects.\n **/\n _legend.exemplars = property({});\n\n function on_data(diagram, nodes, wnodes, edges, wedges, ports, wports) {\n if(_legend.counter())\n _counts = _legend.counter()(wnodes.map(get_original), wedges.map(get_original), wports.map(get_original));\n }\n\n _legend.redraw = deprecate_function(\"dc_graph.legend is an ordinary mode now; redraw will go away soon\", redraw);\n function redraw() {\n var legend = (_svg_renderer || _legend.parent()).svg()\n .selectAll('g.dc-graph-legend.' + legend_namespace)\n .data([0]);\n legend.enter().append('g')\n .attr('class', 'dc-graph-legend ' + legend_namespace)\n .attr('transform', 'translate(' + _legend.x() + ',' + _legend.y() + ')');\n\n var items = !_legend.omitEmpty() || !_counts ? _items : _items.filter(function(i) {\n return _included.length && !_included.includes(i.orig.key) || _counts[i.orig.key];\n });\n var item = legend.selectAll(_legend.type().itemSelector())\n .data(items, function(n) { return n.name; });\n item.exit().remove();\n var itemEnter = _legend.type().create(_legend.parent(), item.enter(), _legend.itemWidth(), _legend.itemHeight());\n itemEnter.append('text')\n .attr('dy', _legend.dyLabel())\n .attr('class', 'legend-label');\n item\n .attr('transform', function(n, i) {\n return 'translate(' + _legend.itemWidth()/2 + ',' + (_legend.itemHeight() + _legend.gap())*(i+0.5) + ')';\n });\n item.select('text.legend-label')\n .attr('transform', 'translate(' + (_legend.itemWidth()/2+_legend.gap()) + ',0)')\n .attr('pointer-events', _legend.dimension() ? 'auto' : 'none')\n .text(function(d) {\n return d.name + (_legend.counter() && _counts ? (' (' + (_counts[d.orig.key] || 0) + (_counts[d.orig.key] !== _totals[d.orig.key] ? '/' + (_totals[d.orig.key] || 0) : '') + ')') : '');\n });\n _legend.type().draw(_svg_renderer || _legend.parent(), itemEnter, item);\n if(_legend.noLabel())\n item.selectAll(_legend.type().labelSelector()).remove();\n\n if(_legend.dropdown()) {\n var caret = item.selectAll('text.dropdown-caret').data(function(x) { return [x]; });\n caret\n .enter().append('text')\n .attr('dy', '0.3em')\n .attr('font-size', '75%')\n .attr('fill', 'blue')\n .attr('class', 'dropdown-caret')\n .style('visibility', 'hidden')\n .html(' ▼');\n caret\n .attr('dx', function(d) {\n return (_legend.itemWidth()/2+_legend.gap()) + getBBoxNoThrow(d3.select(this.parentNode).select('text.legend-label').node()).width;\n })\n .on('mouseenter.' + legend_namespace, function(n) {\n var rect = this.getBoundingClientRect();\n var key = _legend.parent().nodeKey.eval(n);\n _legend.dropdown()\n .show(key, rect.x, rect.y);\n });\n item\n .on('mouseenter.' + legend_namespace, function(d) {\n if(_counts && _counts[d.orig.key]) {\n d3.select(this).selectAll('.dropdown-caret')\n .style('visibility', 'visible');\n }\n })\n .on('mouseleave.' + legend_namespace, function(d) {\n d3.select(this).selectAll('.dropdown-caret')\n .style('visibility', 'hidden');\n });\n }\n\n if(_legend.dimension()) {\n item.attr('cursor', 'pointer')\n .on('click.' + legend_namespace, function(d) {\n var key = _legend.parent().nodeKey.eval(d);\n if(!_included.length)\n _included = _items.map(_legend.parent().nodeKey.eval);\n if(_included.includes(key))\n _included = _included.filter(function(x) { return x !== key; });\n else\n _included.push(key);\n apply_filter();\n _dispatch.filtered(_legend, key);\n if(_svg_renderer)\n window.setTimeout(redraw, 250);\n });\n } else {\n item.attr('cursor', 'auto')\n .on('click.' + legend_namespace, null);\n }\n item.transition().duration(1000)\n .attr('opacity', function(d) {\n return (!_included.length || _included.includes(_legend.parent().nodeKey.eval(d))) ? 1 : 0.25;\n });\n };\n\n _legend.countBaseline = function() {\n if(_legend.counter())\n _totals = _legend.counter()(\n _legend.parent().nodeGroup().all(),\n _legend.parent().edgeGroup().all(),\n _legend.parent().portGroup() && _legend.parent().portGroup().all());\n };\n\n _legend.render = deprecate_function(\"dc_graph.legend is an ordinary mode now; render will go away soon\", render);\n function render() {\n if(_legend.parent().renderer().rendererType() !== 'svg') {\n _svg_renderer = dc_graph.render_svg();\n _svg_renderer.parent(_legend.parent())\n .svg(_legend.parent().root().append('svg')\n .style({\n position: 'absolute',\n left: 0, top: 0,\n width: '100%', height: '100%',\n fill: 'wheat',\n 'pointer-events': 'none'\n }));\n }\n\n\n var exemplars = _legend.exemplars();\n _legend.countBaseline();\n if(exemplars instanceof Array) {\n _items = exemplars.map(function(v) { return {name: v.name, orig: {key: v.key, value: v.value}, cola: {}}; });\n }\n else {\n _items = [];\n for(var item in exemplars)\n _items.push({name: item, orig: {key: item, value: exemplars[item]}, cola: {}});\n }\n redraw();\n };\n\n _legend.dropdown = property(null).react(function(v) {\n if(!!v !== !!_legend.dropdown() && _legend.parent() && (_svg_renderer || _legend.parent()).svg())\n window.setTimeout(_legend.redraw, 0);\n });\n\n /* enables filtering */\n _legend.dimension = property(null)\n .react(function(v) {\n if(!v) {\n _included = [];\n apply_filter();\n }\n });\n _legend.isTagDimension = property(false);\n\n return _legend;\n};\n\n\ndc_graph.legend.node_legend = function() {\n return {\n itemSelector: function() {\n return '.node';\n },\n labelSelector: function() {\n return '.node-label';\n },\n create: function(diagram, selection) {\n return selection.append('g')\n .attr('class', 'node');\n },\n draw: function(renderer, itemEnter, item) {\n renderer\n .renderNode(itemEnter)\n .redrawNode(item);\n }\n };\n};\n\ndc_graph.legend.edge_legend = function() {\n var _type = {\n itemSelector: function() {\n return '.edge-container';\n },\n labelSelector: function() {\n return '.edge-label';\n },\n create: function(diagram, selection, w, h) {\n var edgeEnter = selection.append('g')\n .attr('class', 'edge-container')\n .attr('opacity', 0);\n edgeEnter\n .append('rect')\n .attr({\n x: -w/2,\n y: -h/2,\n width: w,\n height: h,\n fill: 'green',\n opacity: 0\n });\n edgeEnter\n .selectAll('circle')\n .data([-1, 1])\n .enter()\n .append('circle')\n .attr({\n r: _type.fakeNodeRadius(),\n fill: 'none',\n stroke: 'black',\n \"stroke-dasharray\": \"4,4\",\n opacity: 0.15,\n transform: function(d) {\n return 'translate(' + [d * _type.length() / 2, 0].join(',') + ')';\n }\n });\n var edgex = _type.length()/2 - _type.fakeNodeRadius();\n edgeEnter.append('svg:path')\n .attr({\n class: 'edge',\n id: function(d) { return d.name; },\n d: 'M' + -edgex + ',0 L' + edgex + ',0',\n opacity: diagram.edgeOpacity.eval\n });\n\n return edgeEnter;\n },\n fakeNodeRadius: property(10),\n length: property(50),\n draw: function(renderer, itemEnter, item) {\n renderer.redrawEdge(itemEnter.select('path.edge'), renderer.selectAllEdges('.edge-arrows'));\n }\n };\n return _type;\n};\n\ndc_graph.legend.symbol_legend = function(symbolScale) {\n return {\n itemSelector: function() {\n return '.symbol';\n },\n labelSelector: function() {\n return '.symbol-label';\n },\n create: function(diagram, selection, w, h) {\n var symbolEnter = selection.append('g')\n .attr('class', 'symbol');\n return symbolEnter;\n },\n draw: function(renderer, symbolEnter, symbol) {\n symbolEnter.append('text')\n .html(function(d) {\n return symbolScale(d.orig.key);\n });\n return symbolEnter;\n }\n };\n};\n","/**\n * In cola.js there are three factors which influence the positions of nodes:\n * * *edge length* suggestions, controlled by the\n * {@link #dc_graph.diagram+lengthStrategy lengthStrategy},\n * {@link #dc_graph.diagram+baseLength baseLength}, and\n * {@link #dc_graph.diagram+edgeLength edgeLength} parameters in dc.graph.js\n * * *automatic constraints* based on the global edge flow direction (`cola.flowLayout`) and overlap\n * avoidance parameters (`cola.avoidOverlaps`)\n * * *manual constraints* such as alignment, inequality and equality constraints in a dimension/axis.\n *\n * Generally when the\n * {@link https://github.com/tgdwyer/WebCola/wiki/Constraints cola.js documentation mentions constraints},\n * it means the manual constraints.\n *\n * dc.graph.js allows generation of manual constraints using\n * {@link #dc_graph.diagram+constrain diagram.constrain} but it can be tedious to write these\n * functions because it usually means looping over the nodes and edges multiple times to\n * determine what classes or types of nodes to apply constraints to, and which edges should\n * take additional constraints.\n *\n * This utility creates a constraint generator function from a *pattern*, a graph where:\n * 1. Nodes represent *types* or classes of layout nodes, annotated with a specification\n * of how to match the nodes belonging each type.\n * 2. Edges represent *rules* to generate constraints. There are two kinds of rules:\n * <ol type='a'>\n * <li>To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n * <li>To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n * </ol>\n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @class constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n console.warn('dc_graph.tree_positions is deprecated; use the layout engine tree_layout instead');\n if(rootf || treef) {\n console.warn('dc_graph.tree_positions: rootf and treef are ignored');\n }\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.cola.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.cola.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.cola.dcg_edgeTarget;\n },\n init: function() {\n x = ofsx;\n },\n row: function(n) {\n return rowf(n.orig);\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i<sort.length-1; ++i) {\n var left = sort[i], right = sort[i+1];\n if(!badi) {\n if(right.cola.x - left.cola.x < best_dist(left, right)) {\n badi = i;\n badl = left.cola.x;\n want = best_dist(left, right);\n } // else still not bad\n } else {\n want += best_dist(left, right);\n if(i < sort.length - 2 && right.cola.x < badl + want)\n continue; // still bad\n else {\n if(badi>0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j<limit; ++j) {\n l += best_dist(sort[j-1], sort[j]);\n sort[j].cola.x = l;\n }\n badi = badl = want = null;\n }\n }\n }\n });\n }\n });\n\n return function(diagram, nodes, edges) {\n return dfs(nodes, edges);\n };\n};\n\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_constraints = function(rootf, treef, xgap, ygap) {\n console.warn('dc_graph.tree_constraints is deprecated - it never worked right and may not be a good idea');\n return function(diagram, nodes, edges) {\n var constraints = [];\n var x = 0;\n var dfs = dc_graph.depth_first_traversal({\n root: rootf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var last = row[row.length-1];\n constraints.push({\n left: diagram.nodeKey.eval(last),\n right: diagram.nodeKey.eval(n),\n axis: 'x',\n gap: x-last.foo_x,\n equality: true\n });\n }\n n.foo_x = x;\n // n.cola.x = x;\n // n.cola.y = r*ygap;\n },\n sib: function() {\n x += xgap;\n }\n });\n dfs(diagram, nodes, edges);\n return constraints;\n };\n};\n","dc_graph.mode = function(event_namespace, options) {\n var _mode = {};\n var _eventName = options.laterDraw ? 'transitionsStarted' : 'drawn';\n var draw = options.draw, remove = options.remove;\n var supported_renderers = options.renderers || ['svg'];\n\n if(!draw) {\n console.warn('behavior.add_behavior has been replaced by mode.draw');\n draw = options.add_behavior;\n }\n if(!remove) {\n console.warn('behavior.remove_behavior has been replaced by mode.remove');\n remove = options.remove_behavior;\n }\n\n /**\n #### .parent([object])\n Assigns this mode to a diagram.\n **/\n _mode.parent = property(null)\n .react(function(p) {\n var diagram;\n if(p) {\n var first = true;\n diagram = p;\n p.on(_eventName + '.' + event_namespace, function() {\n var args2 = [diagram].concat(Array.prototype.slice.call(arguments));\n draw.apply(null, args2);\n if(first && options.first) {\n options.first.apply(null, args2);\n first = false;\n }\n else if(options.rest)\n options.rest.apply(null, args2);\n });\n p.on('reset.' + event_namespace, function() {\n var rend = diagram.renderer(),\n node = rend.selectAllNodes ? rend.selectAllNodes() : null,\n edge = rend.selectAllEdges ? rend.selectAllEdges() : null,\n edgeHover = rend.selectAllEdges ? rend.selectAllEdges('.edge-hover') : null;\n remove(diagram, node, edge, edgeHover);\n });\n }\n else if(_mode.parent()) {\n diagram = _mode.parent();\n diagram.on(_eventName + '.' + event_namespace, function(node, edge, ehover) {\n remove(diagram, node, edge, ehover);\n diagram.on(_eventName + '.' + event_namespace, null);\n });\n }\n options.parent && options.parent(p);\n });\n\n _mode.supportsRenderer = function(rendererType) {\n return supported_renderers.includes(rendererType);\n };\n\n return _mode;\n};\n\ndc_graph.behavior = deprecate_function('dc_graph.behavior has been renamed dc_graph.mode', dc_graph.mode);\n","/**\n * Asynchronous [d3.tip](https://github.com/Caged/d3-tip) support for dc.graph.js\n *\n * Add tooltips to the nodes and edges of a graph using an asynchronous callback to get\n * the html to show.\n *\n * Optional - requires separately loading the d3.tip script and CSS (which are included in\n * dc.graph.js in `web/js/d3-tip/index.js` and `web/css/d3-tip/example-styles.css`)\n *\n * @class tip\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.tip = function(options) {\n options = options || {};\n var _namespace = options.namespace || 'tip';\n var _d3tip = null;\n var _showTimeout, _hideTimeout;\n var _dispatch = d3.dispatch('tipped');\n\n function init(parent) {\n if(!_d3tip) {\n _d3tip = d3.tip()\n .attr('class', options.class || 'd3-tip')\n .html(function(d) { return \"<span>\" + d + \"</span>\"; })\n .direction(_mode.direction());\n if(_mode.offset())\n _d3tip.offset(_mode.offset());\n parent.svg().call(_d3tip);\n }\n }\n function fetch_and_show_content(d) {\n if(_mode.disabled() || _mode.selection().exclude && _mode.selection().exclude(d3.event.target)) {\n hide_tip.call(this);\n return;\n }\n var target = this,\n next = function() {\n _mode.content()(d, function(content) {\n _d3tip.show.call(target, content, target);\n d3.select('div.d3-tip')\n .selectAll('a.tip-link')\n .on('click.' + _namespace, function() {\n d3.event.preventDefault();\n if(_mode.linkCallback())\n _mode.linkCallback()(this.id);\n });\n _dispatch.tipped(d);\n });\n };\n if(_hideTimeout)\n window.clearTimeout(_hideTimeout);\n if(_mode.delay()) {\n window.clearTimeout(_showTimeout);\n _showTimeout = window.setTimeout(next, _mode.delay());\n }\n else next();\n }\n\n function check_hide_tip() {\n if(d3.event.relatedTarget &&\n (!_mode.selection().exclude || !_mode.selection().exclude(d3.event.target)) &&\n (this && this.contains(d3.event.relatedTarget) || // do not hide when mouse is still over a child\n _mode.clickable() && d3.event.relatedTarget.classList.contains('d3-tip')))\n return false;\n return true;\n }\n\n function preempt_tip() {\n if(_showTimeout) {\n window.clearTimeout(_showTimeout);\n _showTimeout = null;\n }\n }\n\n function hide_tip() {\n if(!check_hide_tip.apply(this))\n return;\n preempt_tip();\n _d3tip.hide();\n }\n\n function hide_tip_delay() {\n if(!check_hide_tip.apply(this))\n return;\n preempt_tip();\n if(_mode.hideDelay())\n _hideTimeout = window.setTimeout(function () {\n _d3tip.hide();\n }, _mode.hideDelay());\n else\n _d3tip.hide();\n }\n\n function draw(diagram, node, edge, ehover) {\n init(diagram);\n _mode.programmatic() || _mode.selection().select(diagram, node, edge, ehover)\n .on('mouseover.' + _namespace, fetch_and_show_content)\n .on('mouseout.' + _namespace, hide_tip_delay);\n if(_mode.clickable()) {\n d3.select('div.d3-tip')\n .on('mouseover.' + _namespace, function() {\n if(_hideTimeout)\n window.clearTimeout(_hideTimeout);\n })\n .on('mouseout.' + _namespace, hide_tip_delay);\n }\n }\n function remove(diagram, node, edge, ehover) {\n _mode.programmatic() || _mode.selection().select(diagram, node, edge, ehover)\n .on('mouseover.' + _namespace, null)\n .on('mouseout.' + _namespace, null);\n }\n\n var _mode = dc_graph.mode(_namespace, {\n draw: draw,\n remove: remove,\n laterDraw: true\n });\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinal directions](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n **/\n _mode.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the thing being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default mode: assume it's a node, show node title\n * var tip = dc_graph.tip().content(function(n, k) {\n * k(_mode.parent() ? _mode.parent().nodeTitle.eval(n) : '');\n * });\n **/\n _mode.content = property(function(n, k) {\n k(_mode.parent() ? _mode.parent().nodeTitle.eval(n) : '');\n });\n\n _mode.on = function(event, f) {\n return _dispatch.on(event, f);\n };\n\n _mode.disabled = property(false);\n _mode.programmatic = property(false);\n\n _mode.displayTip = function(filter, n, cb) {\n if(typeof filter !== 'function') {\n var d = filter;\n filter = function(d2) { return d2 === d; };\n }\n var found = _mode.selection().select(_mode.parent(), _mode.parent().selectAllNodes(), _mode.parent().selectAllEdges(), null)\n .filter(filter);\n if(found.size() > 0) {\n var action = fetch_and_show_content;\n // we need to flatten e.g. for ports, which will have nested selections\n // .nodes() does this better in D3v4\n var flattened = found.reduce(function(p, v) {\n return p.concat(v);\n }, []);\n var which = (n || 0) % flattened.length;\n action.call(flattened[which], d3.select(flattened[which]).datum());\n d = d3.select(flattened[which]).datum();\n if(cb)\n cb(d);\n if(_mode.programmatic())\n found.on('mouseout.' + _namespace, hide_tip_delay);\n }\n return _mode;\n };\n\n _mode.hideTip = function(delay) {\n if(_d3tip) {\n if(delay)\n hide_tip_delay();\n else\n hide_tip();\n }\n return _mode;\n };\n _mode.selection = property(dc_graph.tip.select_node_and_edge());\n _mode.showDelay = _mode.delay = property(0);\n _mode.hideDelay = property(200);\n _mode.offset = property(null);\n _mode.clickable = property(false);\n _mode.linkCallback = property(null);\n\n return _mode;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(dc_graph.tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = gen.fetch()(d);\n if(!d)\n return; // don't display tooltip if no content\n var data, keys;\n if(Array.isArray(d))\n data = d;\n else if(typeof d === 'number' || typeof d === 'string')\n data = [d];\n else { // object\n data = keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k] !== undefined;\n });\n }\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(data);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(item) {\n if(keys && typeof item === 'string')\n return item;\n return JSON.stringify(item);\n });\n if(keys)\n rowsEnter.append('td').text(function(item) {\n return JSON.stringify(d[item]);\n });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n gen.fetch = property(function(d) {\n return d.orig.value;\n });\n return gen;\n};\n\ndc_graph.tip.json_table = function() {\n var table = dc_graph.tip.table().fetch(function(d) {\n var jsontip = table.json()(d);\n if(!jsontip) return null;\n try {\n return JSON.parse(jsontip);\n } catch(xep) {\n return [jsontip];\n }\n });\n table.json = property(function(d) {\n return (d.orig.value.value || d.orig.value).jsontip;\n });\n return table;\n};\n\ndc_graph.tip.html_or_json_table = function() {\n var json_table = dc_graph.tip.json_table();\n var gen = function(d, k) {\n var html = gen.html()(d);\n if(html)\n k(html);\n else\n json_table(d, k);\n };\n gen.json = json_table.json;\n gen.html = property(function(d) {\n return (d.orig.value.value || d.orig.value).htmltip;\n });\n return gen;\n};\n\ndc_graph.tip.select_node_and_edge = function() {\n return {\n select: function(diagram, node, edge, ehover) {\n // hack to merge selections, not supported d3v3\n var selection = diagram.selectAll('.foo-this-does-not-exist');\n selection[0] = node[0].concat(ehover ? ehover[0] : []);\n return selection;\n },\n exclude: function(element) {\n return ancestor_has_class(element, 'port');\n }\n };\n};\n\ndc_graph.tip.select_node = function() {\n return {\n select: function(diagram, node, edge, ehover) {\n return node;\n },\n exclude: function(element) {\n return ancestor_has_class(element, 'port');\n }\n };\n};\n\ndc_graph.tip.select_edge = function() {\n return {\n select: function(diagram, node, edge, ehover) {\n return edge;\n }\n };\n};\n\ndc_graph.tip.select_port = function() {\n return {\n select: function(diagram, node, edge, ehover) {\n return node.selectAll('g.port');\n }\n };\n};\n","dc_graph.dropdown = function() {\n dc_graph.dropdown.unique_id = (dc_graph.dropdown.unique_id || 16) + 1;\n var _dropdown = {\n id: 'id' + dc_graph.dropdown.unique_id,\n parent: property(null),\n show: function(key, x, y) {\n var dropdown = _dropdown.parent().root()\n .selectAll('div.dropdown.' + _dropdown.id).data([0]);\n var dropdownEnter = dropdown\n .enter().append('div')\n .attr('class', 'dropdown ' + _dropdown.id);\n dropdown\n .style('visibility', 'visible')\n .style('left', x + 'px')\n .style('top', y + 'px');\n var capture;\n var hides = _dropdown.hideOn().split('|');\n var selects = _dropdown.selectOn().split('|');\n if(hides.includes('leave'))\n dropdown.on('mouseleave', function() {\n dropdown.style('visibility', 'hidden');\n });\n else if(hides.includes('clickout')) {\n var diagram = _dropdown.parent();\n capture = diagram.svg().append('rect')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', diagram.width())\n .attr('height', diagram.height())\n .attr('opacity', 0)\n .on('click', function() {\n capture.remove();\n dropdown.style('visibility', 'hidden');\n });\n }\n var container = dropdown;\n if(_dropdown.scrollHeight()) {\n var height = _dropdown.scrollHeight();\n if(typeof height === 'number')\n height = height + 'px';\n dropdown\n .style('max-height', height)\n .property('scrollTop', 0);\n dropdownEnter\n .style('overflow-y', 'auto')\n .append('div')\n .attr('class', 'scroller');\n container = dropdown.selectAll('div.scroller');\n }\n var values = _dropdown.fetchValues()(key, function(values) {\n var items = container\n .selectAll('div.dropdown-item').data(values);\n items\n .enter().append('div')\n .attr('class', 'dropdown-item');\n items.exit().remove();\n var select_event = null;\n if(selects.includes('click'))\n select_event = 'click';\n else if(selects.includes('hover'))\n select_event = 'mouseenter';\n items\n .text(function(item) { return _dropdown.itemText()(item); });\n if(select_event) {\n items\n .on(select_event + '.select', function(d) {\n _dropdown.itemSelected()(d);\n });\n }\n if(hides.includes('clickitem')) {\n items\n .on('click.hide', function(d) {\n capture.remove();\n dropdown.style('visibility', 'hidden');\n });\n }\n });\n },\n hideOn: property('clickout|clickitem'),\n selectOn: property('click'),\n height: property(10),\n itemText: property(function(x) { return x; }),\n itemSelected: property(function() {}),\n fetchValues: property(function(key, k) { k([]); }),\n scrollHeight: property('12em')\n };\n return _dropdown;\n};\n","dc_graph.keyboard = function() {\n var _input_anchor, _dispatch = d3.dispatch('keydown', 'keyup');\n\n function keydown() {\n _dispatch.keydown();\n }\n function keyup() {\n _dispatch.keyup();\n }\n function draw(diagram) {\n _input_anchor = diagram.svg().selectAll('a#dcgraph-keyboard').data([1]);\n _input_anchor.enter()\n .insert('a', ':first-child').attr({\n id: 'dcgraph-keyboard',\n href: '#'\n });\n _input_anchor.on('keydown.keyboard', keydown);\n _input_anchor.on('keyup.keyboard', keyup);\n\n // grab focus whenever svg is interacted with (?)\n diagram.svg().on('mouseup.keyboard', function() {\n _mode.focus();\n });\n }\n function remove(diagram) {\n _input_anchor.remove();\n }\n var _mode = dc_graph.mode('brush', {\n draw: draw,\n remove: remove\n });\n\n _mode.on = function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n };\n\n _mode.focus = function() {\n if(!_mode.disableFocus()) {\n _input_anchor.node().focus && _input_anchor.node().focus();\n }\n };\n\n _mode.disableFocus = property(false);\n\n return _mode;\n};\n","// adapted from\n// http://stackoverflow.com/questions/9308938/inline-text-editing-in-svg/#26644652\n\ndc_graph.edit_text = function(parent, options) {\n var foreign = parent.append('foreignObject').attr({\n height: '100%',\n width: '100%' // don't wrap\n });\n var padding = options.padding !== undefined ? options.padding : 2;\n function reposition() {\n var pos;\n switch(options.align) {\n case 'left':\n pos = [options.box.x-padding, options.box.y-padding];\n break;\n default:\n case 'center':\n pos = [\n options.box.x + (options.box.width - textdiv.node().offsetWidth)/2,\n options.box.y + (options.box.height - textdiv.node().offsetHeight)/2\n ];\n break;\n }\n foreign.attr('transform', 'translate(' + pos.join(' ') + ')');\n }\n var textdiv = foreign.append('xhtml:div');\n var text = options.text || \"type on me\";\n textdiv.text(text).attr({\n contenteditable: true,\n width: 'auto',\n class: options.class || null\n }).style({\n display: 'inline-block',\n 'background-color': 'white',\n padding: padding + 'px'\n });\n\n function stopProp() {\n d3.event.stopPropagation();\n }\n foreign\n .on('mousedown.edit-text', stopProp)\n .on('mousemove.edit-text', stopProp)\n .on('mouseup.edit-text', stopProp)\n .on('dblclick.edit-text', stopProp);\n\n function accept() {\n options.accept && options.accept(textdiv.text());\n textdiv.on('blur.edit-text', null);\n foreign.remove();\n options.finally && options.finally();\n }\n function cancel() {\n options.cancel && options.cancel();\n textdiv.on('blur.edit-text', null);\n foreign.remove();\n options.finally && options.finally();\n }\n\n textdiv.on('keydown.edit-text', function() {\n if(d3.event.keyCode===13) {\n d3.event.preventDefault();\n }\n }).on('keyup.edit-text', function() {\n if(d3.event.keyCode===13) {\n accept();\n } else if(d3.event.keyCode===27) {\n cancel();\n }\n reposition();\n }).on('blur.edit-text', cancel);\n reposition();\n textdiv.node().focus();\n\n var range = document.createRange();\n if(options.selectText) {\n range.selectNodeContents(textdiv.node());\n } else {\n range.setStart(textdiv.node(), 1);\n range.setEnd(textdiv.node(), 1);\n }\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n};\n","/**\n * `dc_graph.brush` is a {@link dc_graph.mode mode} providing a simple wrapper over\n * [d3.svg.brush](https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Controls.md#brush)\n * @class brush\n * @memberof dc_graph\n * @return {dc_graph.brush}\n **/\ndc_graph.brush = function() {\n var _brush = null, _gBrush, _dispatch = d3.dispatch('brushstart', 'brushmove', 'brushend');\n\n function brushstart() {\n _dispatch.brushstart();\n }\n function brushmove() {\n var ext = _brush.extent();\n _dispatch.brushmove(ext);\n }\n function brushend() {\n _dispatch.brushend();\n _gBrush.call(_brush.clear());\n }\n function install_brush(diagram) {\n if(!_brush) {\n _brush = d3.svg.brush()\n .x(diagram.x()).y(diagram.y())\n .on('brushstart.brush-mode', brushstart)\n .on('brush.brush-mode', brushmove)\n .on('brushend.brush-mode', brushend);\n }\n if(!_gBrush) {\n _gBrush = diagram.svg().insert('g', ':first-child')\n .attr('class', 'brush')\n .call(_brush);\n }\n }\n function remove_brush() {\n if(_gBrush) {\n _gBrush.remove();\n _gBrush = null;\n }\n }\n var _mode = dc_graph.mode('brush', {\n draw: function() {},\n remove: remove_brush\n });\n\n /**\n * Subscribe to a brush event, currently `brushstart`, `brushmove`, or `brushend`\n * @method on\n * @memberof dc_graph.brush\n * @instance\n * @param {String} event the name of the event; please namespace with `'namespace.event'`\n * @param {Function} [f] the handler function; if omitted, returns the current handler\n * @return {dc_graph.brush}\n * @return {Function}\n **/\n _mode.on = function(event, f) {\n if(arguments.length === 1)\n return _dispatch.on(event);\n _dispatch.on(event, f);\n return this;\n };\n /**\n * Add the brush to the parent diagram's SVG\n * @method activate\n * @memberof dc_graph.brush\n * @instance\n * @return {dc_graph.brush}\n **/\n _mode.activate = function() {\n install_brush(_mode.parent());\n return this;\n };\n /**\n * Remove the brush from the parent diagram's SVG\n * @method deactivate\n * @memberof dc_graph.brush\n * @instance\n * @return {dc_graph.brush}\n **/\n _mode.deactivate = function() {\n remove_brush();\n return this;\n };\n /**\n * Retrieve whether the brush is currently active\n * @method isActive\n * @memberof dc_graph.brush\n * @instance\n * @return {Boolean}\n **/\n _mode.isActive = function () {\n return !!_gBrush;\n };\n\n return _mode;\n};\n","dc_graph.select_things = function(things_group, things_name, thinginess) {\n var _selected = [], _oldSelected;\n var _mousedownThing = null;\n\n var contains_predicate = thinginess.keysEqual ?\n function(k1) {\n return function(k2) {\n return thinginess.keysEqual(k1, k2);\n };\n } :\n function(k1) {\n return function(k2) {\n return k1 === k2;\n };\n };\n function contains(array, key) {\n return !!_selected.find(contains_predicate(key));\n }\n function isUnion(event) {\n return event.shiftKey;\n }\n function isToggle(event) {\n return is_a_mac ? event.metaKey : event.ctrlKey;\n }\n function add_array(array, key) {\n return contains(array, key) ? array : array.concat([key]);\n }\n function toggle_array(array, key) {\n return contains(array, key) ? array.filter(function(x) { return x != key; }) : array.concat([key]);\n }\n\n function selection_changed(diagram) {\n return function(selection, refresh) {\n if(refresh === undefined)\n refresh = true;\n _selected = selection;\n if(refresh)\n diagram.requestRefresh();\n };\n }\n var _have_bce = false;\n function background_click_event(diagram, v) {\n // we seem to have nodes-background interrupting edges-background by reinstalling uselessly\n if(_have_bce === v)\n return;\n diagram.svg().on('click.' + things_name, v ? function(t) {\n if(d3.event.target === this)\n things_group.set_changed([]);\n } : null);\n _have_bce = v;\n }\n function brushstart() {\n if(isUnion(d3.event.sourceEvent) || isToggle(d3.event.sourceEvent))\n _oldSelected = _selected.slice();\n else {\n _oldSelected = [];\n things_group.set_changed([]);\n }\n }\n function brushmove(ext) {\n if(!thinginess.intersectRect)\n return;\n var rectSelect = thinginess.intersectRect(ext);\n var newSelected;\n if(isUnion(d3.event.sourceEvent))\n newSelected = rectSelect.reduce(add_array, _oldSelected);\n else if(isToggle(d3.event.sourceEvent))\n newSelected = rectSelect.reduce(toggle_array, _oldSelected);\n else\n newSelected = rectSelect;\n things_group.set_changed(newSelected);\n }\n\n function draw(diagram, node, edge) {\n var condition = _mode.noneIsAll() ? function(t) {\n return !_selected.length || contains(_selected, thinginess.key(t));\n } : function(t) {\n return contains(_selected, thinginess.key(t));\n };\n thinginess.applyStyles(condition);\n\n thinginess.clickables(diagram, node, edge).on('mousedown.' + things_name, function(t) {\n _mousedownThing = t;\n });\n\n thinginess.clickables(diagram, node, edge).on('mouseup.' + things_name, function(t) {\n if(thinginess.excludeClick && thinginess.excludeClick(d3.event.target))\n return;\n // it's only a click if the same target was mousedown & mouseup\n // but we can't use click event because things may have been reordered\n if(_mousedownThing !== t)\n return;\n var key = thinginess.key(t), newSelected;\n if(_mode.multipleSelect()) {\n if(isUnion(d3.event))\n newSelected = add_array(_selected, key);\n else if(isToggle(d3.event))\n newSelected = toggle_array(_selected, key);\n }\n if(!newSelected)\n newSelected = [key];\n things_group.set_changed(newSelected);\n });\n\n if(_mode.multipleSelect()) {\n var brush_mode = diagram.child('brush');\n brush_mode.activate();\n }\n else\n background_click_event(diagram, _mode.clickBackgroundClears());\n\n if(_mode.autoCropSelection()) {\n // drop any selected which no longer exist in the diagram\n var present = thinginess.clickables(diagram, node, edge).data().map(thinginess.key);\n var now_selected = _selected.filter(function(k) { return contains(present, k); });\n if(_selected.length !== now_selected.length)\n things_group.set_changed(now_selected, false);\n }\n }\n\n function remove(diagram, node, edge) {\n thinginess.clickables(diagram, node, edge).on('click.' + things_name, null);\n diagram.svg().on('click.' + things_name, null);\n thinginess.removeStyles();\n }\n\n var _mode = dc_graph.mode(things_name, {\n draw: draw,\n remove: remove,\n parent: function(p) {\n things_group.on('set_changed.' + things_name, p ? selection_changed(p) : null);\n if(p && _mode.multipleSelect()) {\n var brush_mode = p.child('brush');\n if(!brush_mode) {\n brush_mode = dc_graph.brush();\n p.child('brush', brush_mode);\n }\n brush_mode\n .on('brushstart.' + things_name, brushstart)\n .on('brushmove.' + things_name, brushmove);\n }\n },\n laterDraw: thinginess.laterDraw || false\n });\n\n _mode.multipleSelect = property(true);\n _mode.clickBackgroundClears = property(true, false).react(function(v) {\n if(!_mode.multipleSelect() && _mode.parent())\n background_click_event(_mode.parent(), v);\n });\n _mode.noneIsAll = property(false);\n // if you're replacing the data, you probably want the selection not to be preserved when a thing\n // with the same key re-appears later (true). however, if you're filtering dc.js-style, you\n // probably want filters to be independent between diagrams (false)\n _mode.autoCropSelection = property(true);\n // if you want to do the cool things select_things can do\n _mode.thinginess = function() {\n return thinginess;\n };\n return _mode;\n};\n\ndc_graph.select_things_group = function(brushgroup, type) {\n window.chart_registry.create_type(type, function() {\n return d3.dispatch('set_changed');\n });\n\n return window.chart_registry.create_group(type, brushgroup);\n};\n","dc_graph.select_nodes = function(props, options) {\n options = options || {};\n var select_nodes_group = dc_graph.select_things_group(options.select_nodes_group || 'select-nodes-group', 'select-nodes');\n\n var thinginess = {\n intersectRect: function(ext) {\n return _mode.parent().selectAllNodes().data().filter(function(n) {\n return n && ext[0][0] < n.cola.x && n.cola.x < ext[1][0] &&\n ext[0][1] < n.cola.y && n.cola.y < ext[1][1];\n }).map(this.key);\n },\n clickables: function(diagram, node, edge) {\n return node;\n },\n excludeClick: function(element) {\n return ancestor_has_class(element, 'port');\n },\n key: function(n) {\n return _mode.parent().nodeKey.eval(n);\n },\n applyStyles: function(pred) {\n _mode.parent().cascade(50, true, node_edge_conditions(pred, null, props));\n },\n removeStyles: function() {\n _mode.parent().cascade(50, false, props);\n }\n };\n var _mode = dc_graph.select_things(select_nodes_group, 'select-nodes', thinginess);\n return _mode;\n};\n","dc_graph.select_edges = function(props, options) {\n options = options || {};\n var select_edges_group = dc_graph.select_things_group(options.select_edges_group || 'select-edges-group', 'select-edges');\n var thinginess = {\n intersectRect: function(ext) {\n return this.clickables().data().filter(function(e) {\n // this nonsense because another select_things may have invalidated the edge positions (!!)\n var sp = {\n x: e.source.cola.x + e.sourcePort.pos.x,\n y: e.source.cola.y + e.sourcePort.pos.y\n },\n tp = {\n x: e.target.cola.x + e.targetPort.pos.x,\n y: e.target.cola.y + e.targetPort.pos.y\n };\n return [sp, tp].some(function(p) {\n return ext[0][0] < p.x && p.x < ext[1][0] &&\n ext[0][1] < p.y && p.y < ext[1][1];\n });\n }).map(this.key);\n },\n clickables: function() {\n return _mode.parent().selectAllEdges('.edge-hover');\n },\n key: function(e) {\n return _mode.parent().edgeKey.eval(e);\n },\n applyStyles: function(pred) {\n _mode.parent().cascade(50, true, node_edge_conditions(null, pred, props));\n },\n removeStyles: function() {\n _mode.parent().cascade(50, false, props);\n }\n };\n var _mode = dc_graph.select_things(select_edges_group, 'select-edges', thinginess);\n return _mode;\n};\n","dc_graph.select_ports = function(props, options) {\n options = options || {};\n var port_style = options.portStyle || 'symbols';\n var select_ports_group = dc_graph.select_things_group(options.select_ports_group || 'select-ports-group', 'select-ports');\n var thinginess = {\n laterDraw: true,\n intersectRect: null, // multiple selection not supported for now\n clickables: function() {\n return _mode.parent().selectAllNodes('g.port');\n },\n key: function(p) {\n // this scheme also won't work with multiselect\n return p.named ?\n {node: _mode.parent().nodeKey.eval(p.node), name: p.name} :\n {edge: _mode.parent().edgeKey.eval(p.edges[0]), name: p.name};\n },\n applyStyles: function(pred) {\n _mode.parent().portStyle(port_style).cascade(50, true, conditional_properties(pred, props));\n },\n removeStyles: function() {\n _mode.parent().portStyle(port_style).cascade(50, false, props);\n },\n keysEqual: function(k1, k2) {\n return k1.name === k2.name && (k1.node ? k1.node === k2.node : k1.edge === k2.edge);\n }\n };\n var _mode = dc_graph.select_things(select_ports_group, 'select-ports', thinginess);\n return _mode;\n};\n","dc_graph.move_nodes = function(options) {\n options = options || {};\n var select_nodes_group = dc_graph.select_things_group(options.select_nodes_group || 'select-nodes-group', 'select-nodes');\n var fix_nodes_group = dc_graph.fix_nodes_group('fix-nodes-group');\n var _selected = [], _startPos = null, _downNode, _moveStarted;\n var _brush, _drawGraphs, _selectNodes, _restoreBackgroundClick;\n var _maybeSelect = null;\n\n function isUnion(event) {\n return event.shiftKey;\n }\n function isToggle(event) {\n return is_a_mac ? event.metaKey : event.ctrlKey;\n }\n\n function selection_changed(diagram) {\n return function(selection, refresh) {\n if(refresh === undefined)\n refresh = true;\n _selected = selection;\n };\n }\n function for_each_selected(f, selected) {\n selected = selected || _selected;\n selected.forEach(function(key) {\n var n = _mode.parent().getWholeNode(key);\n f(n, key);\n });\n }\n function draw(diagram, node, edge) {\n node.on('mousedown.move-nodes', function(n) {\n // Need a more general way for modes to say \"I got this\"\n if(_drawGraphs && _drawGraphs.usePorts() && _drawGraphs.usePorts().eventPort())\n return;\n _startPos = dc_graph.event_coords(diagram);\n _downNode = d3.select(this);\n // if the node under the mouse is not in the selection, need to\n // make that node selected\n var key = diagram.nodeKey.eval(n);\n var selected = _selected;\n if(_selected.indexOf(key)<0) {\n selected = [key];\n _maybeSelect = key;\n }\n else _maybeSelect = null;\n for_each_selected(function(n) {\n n.original_position = [n.cola.x, n.cola.y];\n }, selected);\n if(_brush)\n _brush.deactivate();\n });\n function mouse_move() {\n if(_startPos) {\n if(!(d3.event.buttons & 1)) {\n mouse_up();\n return;\n }\n if(_maybeSelect)\n select_nodes_group.set_changed([_maybeSelect]);\n var pos = dc_graph.event_coords(diagram);\n var dx = pos[0] - _startPos[0],\n dy = pos[1] - _startPos[1];\n if(!_moveStarted && Math.hypot(dx, dy) > _mode.dragSize()) {\n _moveStarted = true;\n // prevent click event for this node setting selection just to this\n if(_downNode)\n _downNode.style('pointer-events', 'none');\n }\n if(_moveStarted) {\n for_each_selected(function(n) {\n n.cola.x = n.original_position[0] + dx;\n n.cola.y = n.original_position[1] + dy;\n });\n diagram.reposition(node, edge);\n }\n }\n }\n function mouse_up() {\n if(_startPos) {\n if(_moveStarted) {\n _moveStarted = false;\n if(_downNode) {\n _downNode.style('pointer-events', null);\n _downNode = null;\n }\n var fixes = [];\n for_each_selected(function(n, id) {\n fixes.push({\n id: id,\n pos: {x: n.cola.x, y: n.cola.y}\n });\n });\n fix_nodes_group.request_fixes(fixes);\n }\n if(_brush)\n _brush.activate();\n _startPos = null;\n }\n }\n node\n .on('mousemove.move-nodes', mouse_move)\n .on('mouseup.move-nodes', mouse_up);\n diagram.svg()\n .on('mousemove.move-nodes', mouse_move)\n .on('mouseup.move-nodes', mouse_up);\n }\n\n function remove(diagram, node, edge) {\n node.on('mousedown.move-nodes', null);\n node.on('mousemove.move-nodes', null);\n node.on('mouseup.move-nodes', null);\n }\n\n var _mode = dc_graph.mode('move-nodes', {\n draw: draw,\n remove: remove,\n parent: function(p) {\n select_nodes_group.on('set_changed.move-nodes', p ? selection_changed(p) : null);\n if(p) {\n _brush = p.child('brush');\n _drawGraphs = p.child('draw-graphs');\n _selectNodes = p.child('select-nodes');\n }\n else _brush = _drawGraphs = _selectNodes = null;\n }\n });\n\n // minimum distance that is considered a drag, not a click\n _mode.dragSize = property(5);\n\n return _mode;\n};\n","dc_graph.fix_nodes = function(options) {\n options = options || {};\n var fix_nodes_group = dc_graph.fix_nodes_group('fix-nodes-group');\n var _fixedPosTag = options.fixedPosTag || 'fixedPos';\n var _fixes = [], _nodes, _wnodes, _edges, _wedges;\n\n var _execute = {\n nodeid: function(n) {\n return _mode.parent().nodeKey.eval(n);\n },\n sourceid: function(e) {\n return _mode.parent().edgeSource.eval(e);\n },\n targetid: function(e) {\n return _mode.parent().edgeTarget.eval(e);\n },\n get_fix: function(n) {\n return _mode.parent().nodeFixed.eval(n);\n },\n fix_node: function(n, pos) {\n n[_fixedPosTag] = pos;\n },\n unfix_node: function(n) {\n n[_fixedPosTag] = null;\n },\n clear_fixes: function() {\n _fixes = {};\n },\n register_fix: function(id, pos) {\n _fixes[id] = pos;\n }\n };\n\n function request_fixes(fixes) {\n _mode.strategy().request_fixes(_execute, fixes);\n tell_then_set(find_changes()).then(function() {\n _mode.parent().redraw();\n });\n }\n function new_node(nid, n, pos) {\n _mode.strategy().new_node(_execute, nid, n, pos);\n }\n function new_edge(eid, sourceid, targetid) {\n var source = _nodes[sourceid], target = _nodes[targetid];\n _mode.strategy().new_edge(_execute, eid, source, target);\n }\n function find_changes() {\n var changes = [];\n _wnodes.forEach(function(n) {\n var key = _mode.parent().nodeKey.eval(n),\n fixPos = _fixes[key],\n oldFixed = n.orig.value[_fixedPosTag],\n changed = false;\n if(oldFixed) {\n if(!fixPos || fixPos.x !== oldFixed.x || fixPos.y !== oldFixed.y)\n changed = true;\n }\n else changed = fixPos;\n if(changed)\n changes.push({n: n, fixed: fixPos ? {x: fixPos.x, y: fixPos.y} : null});\n });\n return changes;\n }\n function execute_change(n, fixed) {\n if(fixed)\n _execute.fix_node(n.orig.value, fixed);\n else\n _execute.unfix_node(n.orig.value);\n }\n function tell_then_set(changes) {\n var callback = _mode.fixNode() || function(n, pos) { return Promise.resolve(pos); };\n var promises = changes.map(function(change) {\n var key = _mode.parent().nodeKey.eval(change.n);\n return callback(key, change.fixed)\n .then(function(fixed) {\n execute_change(change.n, fixed);\n });\n });\n return Promise.all(promises);\n }\n function set_changes(changes) {\n changes.forEach(function(change) {\n execute_change(change.n, change.fixed);\n });\n }\n function tell_changes(changes) {\n var callback = _mode.fixNode() || function(n, pos) { return Promise.resolve(pos); };\n var promises = changes.map(function(change) {\n var key = _mode.parent().nodeKey.eval(change.n);\n return callback(key, change.fixed);\n });\n return Promise.all(promises);\n }\n function fix_all_nodes(tell) {\n if(tell === undefined)\n tell = true;\n var changes = _wnodes.map(function(n) {\n return {n: n, fixed: {x: n.cola.x, y: n.cola.y}};\n });\n if(tell)\n return tell_then_set(changes);\n else {\n set_changes(changes);\n return Promise.resolve(undefined);\n }\n }\n function clear_fixes() {\n _mode.strategy().clear_all_fixes && _mode.strategy().clear_all_fixes();\n _execute.clear_fixes();\n }\n function on_data(diagram, nodes, wnodes, edges, wedges, ports, wports) {\n _nodes = nodes;\n _wnodes = wnodes;\n _edges = edges;\n _wedges = wedges;\n if(_mode.strategy().on_data) {\n _mode.strategy().on_data(_execute, nodes, wnodes, edges, wedges, ports, wports); // ghastly\n var changes = find_changes();\n set_changes(changes);\n // can't wait for backend to acknowledge/approve so just set then blast\n if(_mode.reportOverridesAsynchronously())\n tell_changes(changes); // dangling promise\n }\n }\n\n var _mode = {\n parent: property(null).react(function(p) {\n fix_nodes_group\n .on('request_fixes.fix-nodes', p ? request_fixes : null)\n .on('new_node.fix_nodes', p ? new_node : null)\n .on('new_edge.fix_nodes', p ? new_edge : null);\n if(p) {\n p.on('data.fix-nodes', on_data);\n } else if(_mode.parent())\n _mode.parent().on('data.fix-nodes', null);\n }),\n // callback for setting & fixing node position\n fixNode: property(null),\n // save/load may want to nail everything / start from scratch\n // (should probably be automatic though)\n fixAllNodes: fix_all_nodes,\n clearFixes: clear_fixes,\n strategy: property(dc_graph.fix_nodes.strategy.fix_last()),\n reportOverridesAsynchronously: property(true)\n };\n\n return _mode;\n};\n\ndc_graph.fix_nodes.strategy = {};\ndc_graph.fix_nodes.strategy.fix_last = function() {\n return {\n request_fixes: function(exec, fixes) {\n exec.clear_fixes();\n fixes.forEach(function(fix) {\n exec.register_fix(fix.id, fix.pos);\n });\n },\n new_node: function(exec, nid, n, pos) {\n exec.fix_node(n, pos);\n },\n new_edge: function(exec, eid, source, target) {\n exec.unfix_node(source.orig.value);\n exec.unfix_node(target.orig.value);\n }\n };\n};\ndc_graph.fix_nodes.strategy.last_N_per_component = function(maxf) {\n maxf = maxf || 1;\n var _age = 0;\n var _allFixes = {};\n return {\n clear_all_fixes: function() {\n _allFixes = {};\n },\n request_fixes: function(exec, fixes) {\n ++_age;\n fixes.forEach(function(fix) {\n _allFixes[fix.id] = {id: fix.id, age: _age, pos: fix.pos};\n });\n },\n new_node: function(exec, nid, n, pos) {\n ++_age;\n _allFixes[nid] = {id: nid, age: _age, pos: pos};\n exec.fix_node(n, pos);\n },\n new_edge: function() {},\n on_data: function(exec, nodes, wnodes, edges, wedges, ports, wports) {\n ++_age;\n // add any existing fixes as requests\n wnodes.forEach(function(n) {\n var nid = exec.nodeid(n), pos = exec.get_fix(n);\n if(pos && !_allFixes[nid])\n _allFixes[nid] = {id: nid, age: _age, pos: pos};\n });\n // determine components\n var components = [];\n var dfs = dc_graph.undirected_dfs({\n nodeid: exec.nodeid,\n sourceid: exec.sourceid,\n targetid: exec.targetid,\n comp: function() {\n components.push([]);\n },\n node: function(compid, n) {\n components[compid].push(n);\n }\n });\n dfs(wnodes, wedges);\n // start from scratch\n exec.clear_fixes();\n // keep or produce enough fixed nodes per component\n components.forEach(function(comp, i) {\n var oldcomps = comp.reduce(function(cc, n) {\n if(n.last_component) {\n var counts = cc[n.last_component] = cc[n.last_component] || {\n total: 0,\n fixed: 0\n };\n counts.total++;\n if(_allFixes[exec.nodeid(n)])\n counts.fixed++;\n }\n return cc;\n }, {});\n var fixed_by_size = Object.keys(oldcomps).reduce(function(ff, compid) {\n if(oldcomps[compid].fixed)\n ff.push({compid: +compid, total: oldcomps[compid].total, fixed: oldcomps[compid].fixed});\n return ff;\n }, []).sort(function(coa, cob) {\n return cob.total - coa.total;\n });\n var largest_fixed = fixed_by_size.length && fixed_by_size[0].compid;\n var fixes = comp.filter(function(n) {\n return !n.last_component || n.last_component === largest_fixed;\n }).map(function(n) {\n return _allFixes[exec.nodeid(n)];\n }).filter(function(fix) {\n return fix;\n });\n if(fixes.length > maxf) {\n fixes.sort(function(f1, f2) {\n return f2.age - f1.age;\n });\n fixes = fixes.slice(0, maxf);\n }\n fixes.forEach(function(fix) {\n exec.register_fix(fix.id, fix.pos);\n });\n var kept = fixes.reduce(function(m, fix) {\n m[fix.id] = true;\n return m;\n }, {});\n comp.forEach(function(n) {\n var nid = exec.nodeid(n);\n if(!kept[nid])\n _allFixes[nid] = null;\n n.last_component = i+1;\n });\n });\n }\n };\n};\n\ndc_graph.fix_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('fix-nodes', function() {\n return d3.dispatch('request_fixes', 'new_node', 'new_edge');\n });\n\n return window.chart_registry.create_group('fix-nodes', brushgroup);\n};\n","dc_graph.filter_selection = function(things_group, things_name) {\n things_name = things_name || 'select-nodes';\n var select_nodes_group = dc_graph.select_things_group(things_group || 'select-nodes-group', things_name);\n\n function selection_changed(diagram) {\n return function(selection) {\n if(selection.length) {\n var set = d3.set(selection);\n _mode.dimensionAccessor()(diagram).filterFunction(function(k) {\n return set.has(k);\n });\n } else _mode.dimensionAccessor()(diagram).filter(null);\n diagram.redrawGroup();\n };\n }\n\n var _mode = {\n parent: property(null).react(function(p) {\n select_nodes_group.on('set_changed.filter-selection-' + things_name, p ? selection_changed(p) : null);\n })\n };\n _mode.dimensionAccessor = property(function(diagram) {\n return diagram.nodeDimension();\n });\n return _mode;\n};\n","dc_graph.delete_things = function(things_group, mode_name, id_tag) {\n id_tag = id_tag || 'id';\n var _deleteKey = is_a_mac ? 'Backspace' : 'Delete';\n var _keyboard, _selected = [];\n function selection_changed(selection) {\n _selected = selection;\n }\n function row_id(r) {\n return r[id_tag];\n }\n function delete_selection(selection) {\n if(!_mode.crossfilterAccessor())\n throw new Error('need crossfilterAccessor');\n if(!_mode.dimensionAccessor())\n throw new Error('need dimensionAccessor');\n selection = selection || _selected;\n if(selection.length === 0)\n return Promise.resolve([]);\n var promise = _mode.preDelete() ? _mode.preDelete()(selection) : Promise.resolve(selection);\n if(_mode.onDelete())\n promise = promise.then(_mode.onDelete());\n return promise.then(function(selection) {\n if(selection && selection.length) {\n var crossfilter = _mode.crossfilterAccessor()(_mode.parent()),\n dimension = _mode.dimensionAccessor()(_mode.parent());\n var all = crossfilter.all().slice(), n = all.length;\n dimension.filter(null);\n crossfilter.remove();\n var filtered = all.filter(function(r) {\n return selection.indexOf(row_id(r)) === -1;\n });\n if(all.length !== filtered.length + selection.length)\n console.warn('size after deletion is not previous size minus selection size',\n filtered.map(row_id), all.map(row_id), selection);\n crossfilter.add(filtered);\n\n _mode.parent().redrawGroup();\n }\n return true;\n });\n }\n function draw(diagram) {\n _keyboard.on('keyup.' + mode_name, function() {\n if(d3.event.code === _deleteKey)\n delete_selection();\n });\n }\n function remove(diagram) {\n }\n var _mode = dc_graph.mode(mode_name, {\n draw: draw,\n remove: remove,\n parent: function(p) {\n things_group.on('set_changed.' + mode_name, selection_changed);\n if(p) {\n _keyboard = p.child('keyboard');\n if(!_keyboard)\n p.child('keyboard', _keyboard = dc_graph.keyboard());\n }\n }\n });\n _mode.preDelete = property(null);\n _mode.onDelete = property(null);\n _mode.crossfilterAccessor = property(null);\n _mode.dimensionAccessor = property(null);\n _mode.deleteSelection = delete_selection;\n return _mode;\n};\n","dc_graph.delete_nodes = function(id_tag, options) {\n options = options || {};\n var select_nodes_group = dc_graph.select_things_group(options.select_nodes_group || 'select-nodes-group', 'select-nodes');\n var select_edges_group = dc_graph.select_things_group(options.select_edges_group || 'select-edges-group', 'select-edges');\n var _mode = dc_graph.delete_things(select_nodes_group, 'delete-nodes', id_tag);\n\n _mode.preDelete(function(nodes) {\n // request a delete of all attached edges, using the delete edges mode\n // kind of horrible\n var diagram = _mode.parent();\n var deleteEdgesMode = diagram.child('delete-edges');\n if(!deleteEdgesMode)\n return null; // reject if we can't delete the edges\n // it is likely that the delete_edges mode is listening to the same keyup event we\n // are. introduce a pause to let it process the delete key now, deleting any selected edges.\n // then select any remaining edges connected to the selected nodes and delete those.\n //\n // more evidence that modes need to be able to say \"i got this\", or that we should have\n // batch deletion. otoh, given the current behavior, delete_nodes deferring to delete_edges\n // makes about as much sense as anything\n return Promise.resolve(undefined).then(function() {\n var deleteEdges = diagram.edgeGroup().all().filter(function(e) {\n return nodes.indexOf(diagram.edgeSource()(e)) !== -1 ||\n nodes.indexOf(diagram.edgeTarget()(e)) !== -1;\n }).map(diagram.edgeKey());\n select_edges_group.set_changed(deleteEdges);\n return deleteEdgesMode.deleteSelection().then(function() {\n return nodes;\n });\n });\n });\n return _mode;\n};\n","dc_graph.label_things = function(options) {\n options = options || {};\n var select_things_group = dc_graph.select_things_group(options.select_group, options.select_type),\n label_things_group = dc_graph.label_things_group(options.label_group, options.label_type);\n var _selected = [];\n var _keyboard, _selectThings;\n\n function selection_changed_listener(diagram) {\n return function(selection) {\n _selected = selection;\n };\n }\n\n function grab_focus() {\n _keyboard.focus();\n }\n\n function edit_label_listener(diagram) {\n return function(thing, eventOptions) {\n var box = options.thing_box(thing);\n options.hide_thing_label(thing, true);\n dc_graph.edit_text(\n diagram.g(),\n {\n text: eventOptions.text || options.thing_label(thing) || options.default_label,\n align: options.align,\n class: options.class,\n box: box,\n selectText: eventOptions.selectText,\n accept: function(text) {\n return options.accept(thing, text);\n },\n finally: function() {\n options.hide_thing_label(thing, false);\n grab_focus();\n }\n });\n };\n }\n\n function edit_selection(node, edge, eventOptions) {\n // less than ideal interface.\n // what if there are other things? can i blame the missing metagraph?\n var thing = options.find_thing(_selected[0], node, edge);\n if(thing.empty()) {\n console.error(\"couldn't find thing '\" + _selected[0] + \"'!\");\n return;\n }\n if(thing.size()>1) {\n console.error(\"found too many things for '\" + _selected[0] + \"' (\" + thing.size() + \")!\");\n return;\n }\n label_things_group.edit_label(thing, eventOptions);\n }\n function draw(diagram, node, edge) {\n _keyboard.on('keyup.' + options.label_type, function() {\n if(_selected.length) {\n // printable characters should start edit\n if(d3.event.key.length !== 1)\n return;\n edit_selection(node, edge, {text: d3.event.key, selectText: false});\n }\n });\n if(_selectThings)\n _selectThings.thinginess().clickables(diagram, node, edge).on('dblclick.' + options.label_type, function() {\n edit_selection(node, edge, {selectText: true});\n });\n }\n\n function remove(diagram, node, edge) {\n }\n\n var _mode = dc_graph.mode(options.label_type, {\n draw: draw,\n remove: remove,\n parent: function(p) {\n select_things_group.on('set_changed.' + options.label_type, p ? selection_changed_listener(p) : null);\n label_things_group.on('edit_label.' + options.label_type, p ? edit_label_listener(p) : null);\n if(p) {\n _keyboard = p.child('keyboard');\n if(!_keyboard)\n p.child('keyboard', _keyboard = dc_graph.keyboard());\n _selectThings = p.child(options.select_type);\n }\n }\n });\n _mode.editSelection = function(eventOptions) {\n edit_selection(_mode.parent().selectAllNodes(), _mode.parent().selectAllEdges(), eventOptions);\n };\n return _mode;\n};\n\ndc_graph.label_things_group = function(brushgroup, type) {\n window.chart_registry.create_type(type, function() {\n return d3.dispatch('edit_label');\n });\n\n return window.chart_registry.create_group(type, brushgroup);\n};\n","dc_graph.label_nodes = function(options) {\n options = options || {};\n var _labelTag = options.labelTag || 'label';\n options.select_group = options.select_group || 'select-nodes-group';\n options.select_type = options.select_type || 'select-nodes';\n options.label_group = options.label_group || 'label-nodes-group';\n options.label_type = options.label_type || 'label-nodes';\n options.default_label = \"node name\";\n\n options.find_thing = function(key, node, edge) {\n return node.filter(function(n) {\n return _mode.parent().nodeKey.eval(n) === key;\n });\n };\n options.hide_thing_label = function(node, whether) {\n var contents = _mode.parent().content(_mode.parent().nodeContent.eval(node.datum()));\n contents.selectText(node).attr('visibility', whether ? 'hidden' : 'visible');\n };\n options.thing_box = function(node, eventOptions) {\n var contents = _mode.parent().content(_mode.parent().nodeContent.eval(node.datum())),\n box = contents.textbox(node);\n box.x += node.datum().cola.x;\n box.y += node.datum().cola.y;\n return box;\n };\n options.thing_label = function(node) {\n return _mode.parent().nodeLabel.eval(node.datum());\n };\n options.accept = function(node, text) {\n var callback = _mode.changeNodeLabel() ?\n _mode.changeNodeLabel()(_mode.parent().nodeKey.eval(node.datum()), text) :\n Promise.resolve(text);\n return callback.then(function(text2) {\n var n = node.datum();\n n.orig.value[_labelTag] = text2;\n _mode.parent().redrawGroup();\n });\n };\n\n var _mode = dc_graph.label_things(options);\n _mode.changeNodeLabel = property(null);\n return _mode;\n};\n","dc_graph.label_edges = function(options) {\n options = options || {};\n var _labelTag = options.labelTag || 'label';\n options.select_group = options.select_group || 'select-edges-group';\n options.select_type = options.select_type || 'select-edges';\n options.label_group = options.label_group || 'label-edges-group';\n options.label_type = options.label_type || 'label-edges';\n options.default_label = \"edge name\";\n\n options.find_thing = function(key, node, edge) {\n return edge.filter(function(e) {\n return _mode.parent().edgeKey.eval(e) === key;\n });\n };\n options.hide_thing_label = function(edge, whether) {\n var label = _mode.parent().selectAll('#' + _mode.parent().edgeId(edge.datum()) + '-label textPath');\n label.attr('visibility', whether ? 'hidden' : 'visible');\n };\n options.thing_box = function(edge, eventOptions) {\n var points = edge.datum().pos.new.path.points,\n x = (points[0].x + points[1].x)/2,\n y = (points[0].y + points[1].y)/2;\n return {x: x, y: y-10, width:0, height: 20};\n };\n options.thing_label = function(edge) {\n return _mode.parent().edgeLabel.eval(edge.datum());\n };\n options.accept = function(edge, text) {\n var callback = _mode.changeEdgeLabel() ?\n _mode.changeEdgeLabel()(_mode.parent().edgeKey.eval(edge.datum()), text) :\n Promise.resolve(text);\n return callback.then(function(text2) {\n var e = edge.datum();\n e.orig.value[_labelTag] = text2;\n _mode.parent().redrawGroup();\n });\n };\n\n var _mode = dc_graph.label_things(options);\n _mode.changeEdgeLabel = property(null);\n return _mode;\n};\n","dc_graph.register_highlight_things_group = function(thingsgroup) {\n window.chart_registry.create_type('highlight-things', function() {\n return d3.dispatch('highlight');\n });\n\n return window.chart_registry.create_group('highlight-things', thingsgroup);\n};\n","dc_graph.highlight_things = function(includeprops, excludeprops, modename, groupname, cascbase) {\n var highlight_things_group = dc_graph.register_highlight_things_group(groupname || 'highlight-things-group');\n var _active, _nodeset = {}, _edgeset = {};\n cascbase = cascbase || 150;\n\n function highlight(nodeset, edgeset) {\n _active = nodeset || edgeset;\n _nodeset = nodeset || {};\n _edgeset = edgeset || {};\n _mode.parent().requestRefresh(_mode.durationOverride());\n }\n function draw(diagram) {\n diagram.cascade(cascbase, true, node_edge_conditions(\n function(n) {\n return _nodeset[_mode.parent().nodeKey.eval(n)];\n }, function(e) {\n return _edgeset[_mode.parent().edgeKey.eval(e)];\n }, includeprops));\n diagram.cascade(cascbase+10, true, node_edge_conditions(\n function(n) {\n return _active && !_nodeset[_mode.parent().nodeKey.eval(n)];\n }, function(e) {\n return _active && !_edgeset[_mode.parent().edgeKey.eval(e)];\n }, excludeprops));\n }\n function remove(diagram) {\n diagram.cascade(cascbase, false, includeprops);\n diagram.cascade(cascbase + 10, false, excludeprops);\n }\n var _mode = dc_graph.mode(modename, {\n draw: draw,\n remove: remove,\n parent: function(p) {\n highlight_things_group.on('highlight.' + modename, p ? highlight : null);\n }\n });\n _mode.durationOverride = property(undefined);\n return _mode;\n};\n","dc_graph.register_highlight_neighbors_group = function(neighborsgroup) {\n window.chart_registry.create_type('highlight-neighbors', function() {\n return d3.dispatch('highlight_node');\n });\n\n return window.chart_registry.create_group('highlight-neighbors', neighborsgroup);\n};\n","dc_graph.highlight_neighbors = function(includeprops, excludeprops, neighborsgroup, thingsgroup) {\n var highlight_neighbors_group = dc_graph.register_highlight_neighbors_group(neighborsgroup || 'highlight-neighbors-group');\n var highlight_things_group = dc_graph.register_highlight_things_group(thingsgroup || 'highlight-things-group');\n\n function highlight_node(nodeid) {\n var diagram = _mode.parent();\n var nodeset = {}, edgeset = {};\n if(nodeid) {\n nodeset[nodeid] = true;\n _mode.parent().selectAllEdges().each(function(e) {\n if(diagram.nodeKey.eval(e.source) === nodeid) {\n edgeset[diagram.edgeKey.eval(e)] = true;\n nodeset[diagram.nodeKey.eval(e.target)] = true;\n }\n if(diagram.nodeKey.eval(e.target) === nodeid) {\n edgeset[diagram.edgeKey.eval(e)] = true;\n nodeset[diagram.nodeKey.eval(e.source)] = true;\n }\n });\n highlight_things_group.highlight(nodeset, edgeset);\n }\n else highlight_things_group.highlight(null, null);\n }\n function draw(diagram, node, edge) {\n node\n .on('mouseover.highlight-neighbors', function(n) {\n highlight_neighbors_group.highlight_node(_mode.parent().nodeKey.eval(n));\n })\n .on('mouseout.highlight-neighbors', function(n) {\n highlight_neighbors_group.highlight_node(null);\n });\n }\n\n function remove(diagram, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n highlight_neighbors_group.highlight_node(null);\n }\n\n var _mode = dc_graph.mode('highlight-neighbors', {\n draw: draw,\n remove: function(diagram, node, edge) {\n remove(diagram, node, edge);\n },\n parent: function(p) {\n highlight_neighbors_group.on('highlight_node.highlight-neighbors', p ? highlight_node : null);\n if(p && !p.child('highlight-things'))\n p.child('highlight-things',\n dc_graph.highlight_things(includeprops, excludeprops)\n .durationOverride(_mode.durationOverride()));\n }\n });\n _mode.durationOverride = property(undefined);\n return _mode;\n};\n\n","dc_graph.highlight_radius = function(options) {\n options = options || {};\n var select_nodes_group = dc_graph.select_things_group(options.select_nodes_group || 'select-nodes-group', 'select-nodes');\n var highlight_things_group = dc_graph.register_highlight_things_group(options.highlight_things_group || 'highlight-things-group');\n var _graph, _selection = [];\n\n function recurse(n, r, nodeset, edgeset) {\n nodeset[n.key()] = true;\n if(r) {\n n.outs().filter(function(e) {\n return !edgeset[e.key()];\n }).forEach(function(e) {\n edgeset[e.key()] = true;\n recurse(e.target(), r-1, nodeset, edgeset);\n });\n n.ins().filter(function(e) {\n return !edgeset[e.key()];\n }).forEach(function(e) {\n edgeset[e.key()] = true;\n recurse(e.source(), r-1, nodeset, edgeset);\n });\n }\n }\n function selection_changed(nodes) {\n _selection = nodes;\n console.assert(_graph);\n var nodeset = {}, edgeset = {};\n nodes.forEach(function(nkey) {\n recurse(_graph.node(nkey), _mode.radius(), nodeset, edgeset);\n });\n if(!Object.keys(nodeset).length && !Object.keys(edgeset).length)\n nodeset = edgeset = null;\n highlight_things_group.highlight(nodeset, edgeset);\n }\n\n function on_data(diagram, nodes, wnodes, edges, wedges, ports, wports) {\n _graph = metagraph.graph(wnodes, wedges, {\n nodeKey: diagram.nodeKey.eval,\n edgeKey: diagram.edgeKey.eval,\n edgeSource: diagram.edgeSource.eval,\n edgeTarget: diagram.edgeTarget.eval\n });\n var sel2 = _selection.filter(function(nk) {\n return !!_graph.node(nk);\n });\n if(sel2.length < _selection.length)\n window.setTimeout(function() {\n select_nodes_group.set_changed(sel2);\n }, 0);\n }\n var _mode = {\n parent: function(p) {\n if(p) {\n p.on('data.highlight-radius', on_data);\n } else if(_mode.parent())\n _mode.parent().on('data.highlight-radius', null);\n select_nodes_group.on('set_changed.highlight-radius', selection_changed);\n }\n };\n _mode.radius = property(1);\n return _mode;\n};\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n var _anchor;\n\n function refresh() {\n if(_mode.doRedraw())\n _mode.parent().relayout().redraw();\n else\n _mode.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n selected = hoverpaths = null;\n // it would be difficult to check if no change, but at least check if changing from empty to empty\n if(Object.keys(node_on_paths).length === 0 && Object.keys(nop).length === 0 &&\n Object.keys(edge_on_paths).length === 0 && Object.keys(eop).length === 0)\n return;\n node_on_paths = nop;\n edge_on_paths = eop;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function draw(diagram, node, edge, ehover) {\n diagram\n .cascade(200, true, node_edge_conditions(function(n) {\n return !!node_on_paths[diagram.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[diagram.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, node_edge_conditions(function(n) {\n return intersect_paths(node_on_paths[diagram.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[diagram.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, node_edge_conditions(function(n) {\n return intersect_paths(node_on_paths[diagram.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[diagram.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[diagram.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[diagram.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[diagram.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[diagram.nodeKey.eval(n)]));\n });\n }\n\n function remove(diagram, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n diagram\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _mode = dc_graph.mode('highlight-paths', {\n draw: draw,\n remove: function(diagram, node, edge, ehover) {\n remove(diagram, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n if(p)\n _anchor = p.anchorName();\n // else we should have received anchor earlier\n highlight_paths_group.on('paths_changed.highlight-paths-' + _anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.highlight-paths-' + _anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.highlight-paths-' + _anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _mode.doRedraw = property(false);\n\n return _mode;\n};\n\n","dc_graph.spline_paths = function(pathreader, pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n var _paths = null, _hoverpaths = null, _selected = null;\n var _anchor;\n var _layer = null;\n var _savedPositions = null;\n\n function paths_changed(nop, eop, paths) {\n _paths = paths;\n\n var engine = _mode.parent().layoutEngine(),\n localPaths = paths.filter(pathIsPresent);\n if(localPaths.length) {\n var nidpaths = localPaths.map(function(lpath) {\n var strength = pathreader.pathStrength.eval(lpath);\n if(typeof strength !== 'number')\n strength = 1;\n if(_selected && _selected.indexOf(lpath) !== -1)\n strength *= _mode.selectedStrength();\n return {\n nodes: path_keys(lpath),\n strength: strength\n };\n });\n engine.paths(nidpaths);\n } else {\n engine.paths(null);\n if(_savedPositions)\n engine.restorePositions(_savedPositions);\n }\n if(_selected)\n _selected = _selected.filter(function(p) { return localPaths.indexOf(p) !== -1; });\n _mode.parent().redraw();\n }\n\n function select_changed(sp) {\n if(sp !== _selected) {\n _selected = sp;\n paths_changed(null, null, _paths);\n }\n }\n\n function path_keys(path, unique) {\n unique = unique !== false;\n var keys = pathreader.elementList.eval(path).filter(function(elem) {\n return pathreader.elementType.eval(elem) === 'node';\n }).map(function(elem) {\n return pathreader.nodeKey.eval(elem);\n });\n return unique ? uniq(keys) : keys;\n }\n\n // check if entire path is present in this view\n function pathIsPresent(path) {\n return pathreader.elementList.eval(path).every(function(element) {\n return pathreader.elementType.eval(element) !== 'node' ||\n _mode.parent().getWholeNode(pathreader.nodeKey.eval(element));\n });\n }\n\n // get the positions of nodes on path\n function getNodePositions(path, old) {\n return path_keys(path, false).map(function(key) {\n var node = _mode.parent().getWholeNode(key);\n return {x: old && node.prevX !== undefined ? node.prevX : node.cola.x,\n y: old && node.prevY !== undefined ? node.prevY : node.cola.y};\n });\n };\n\n // insert fake nodes to avoid sharp turns\n function insertDummyNodes(path_coord) {\n function _distance(node1, node2) {\n return Math.sqrt(Math.pow((node1.x-node2.x),2) + Math.pow((node1.y-node2.y),2));\n }\n\n var new_path_coord = [];\n\n for(var i = 0; i < path_coord.length; i ++) {\n if (i-1 >= 0 && i+1 < path_coord.length) {\n if (path_coord[i-1].x === path_coord[i+1].x &&\n path_coord[i-1].y === path_coord[i+1].y ) {\n // insert node when the previous and next nodes are the same\n var x1 = path_coord[i-1].x, y1 = path_coord[i-1].y;\n var x2 = path_coord[i].x, y2 = path_coord[i].y;\n var dx = x1 - x2, dy = y1 - y2;\n\n var v1 = dy / Math.sqrt(dx*dx + dy*dy);\n var v2 = - dx / Math.sqrt(dx*dx + dy*dy);\n\n var insert_p1 = {'x': null, 'y': null};\n var insert_p2 = {'x': null, 'y': null};\n\n var offset = 10;\n\n insert_p1.x = (x1+x2)/2.0 + offset*v1;\n insert_p1.y = (y1+y2)/2.0 + offset*v2;\n\n insert_p2.x = (x1+x2)/2.0 - offset*v1;\n insert_p2.y = (y1+y2)/2.0 - offset*v2;\n\n new_path_coord.push(insert_p1);\n new_path_coord.push(path_coord[i]);\n new_path_coord.push(insert_p2);\n } else if (_distance(path_coord[i-1], path_coord[i+1]) < pathprops.nearNodesDistance){\n // insert node when the previous and next nodes are very close\n // first node\n var x1 = path_coord[i-1].x, y1 = path_coord[i-1].y;\n var x2 = path_coord[i].x, y2 = path_coord[i].y;\n var dx = x1 - x2, dy = y1 - y2;\n\n var v1 = dy / Math.sqrt(dx*dx + dy*dy);\n var v2 = - dx / Math.sqrt(dx*dx + dy*dy);\n\n var insert_p1 = {'x': null, 'y': null};\n\n var offset = 10;\n\n insert_p1.x = (x1+x2)/2.0 + offset*v1;\n insert_p1.y = (y1+y2)/2.0 + offset*v2;\n\n // second node\n x1 = path_coord[i].x;\n y1 = path_coord[i].y;\n x2 = path_coord[i+1].x;\n y2 = path_coord[i+1].y;\n dx = x1 - x2;\n dy = y1 - y2;\n\n v1 = dy / Math.sqrt(dx*dx + dy*dy);\n v2 = - dx / Math.sqrt(dx*dx + dy*dy);\n\n var insert_p2 = {'x': null, 'y': null};\n\n insert_p2.x = (x1+x2)/2.0 + offset*v1;\n insert_p2.y = (y1+y2)/2.0 + offset*v2;\n\n new_path_coord.push(insert_p1);\n new_path_coord.push(path_coord[i]);\n new_path_coord.push(insert_p2);\n\n }\n else {\n new_path_coord.push(path_coord[i]);\n }\n } else {\n new_path_coord.push(path_coord[i]);\n }\n }\n return new_path_coord;\n }\n\n // helper functions\n var vecDot = function(v0, v1) { return v0.x*v1.x+v0.y*v1.y; };\n var vecMag = function(v) { return Math.sqrt(v.x*v.x + v.y*v.y); };\n var l2Dist = function(p1, p2) {\n return Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));\n };\n\n function drawCardinalSpline(points, lineTension, avoidSharpTurn, angleThreshold) {\n var c = lineTension || 0;\n avoidSharpTurn = avoidSharpTurn !== false;\n angleThreshold = angleThreshold || 0.02;\n\n // get the path without self loops\n var path_list = [points[0]];\n for(var i = 1; i < points.length; i ++) {\n if(l2Dist(points[i], path_list[path_list.length-1]) > 1e-6) {\n path_list.push(points[i]);\n }\n }\n\n // repeat first and last node\n points = [path_list[0]];\n points = points.concat(path_list);\n points.push(path_list[path_list.length-1]);\n\n // a segment is a list of three points: [c0, c1, p1],\n // representing the coordinates in \"C x0,y0,x1,y1,x,y\" in svg:path\n var segments = []; // control points\n for(var i = 1; i < points.length-2; i ++) {\n // generate svg:path\n var m_0_x = (1-c)*(points[i+1].x - points[i-1].x)/2;\n var m_0_y = (1-c)*(points[i+1].y - points[i-1].y)/2;\n\n var m_1_x = (1-c)*(points[i+2].x - points[i].x)/2;\n var m_1_y = (1-c)*(points[i+2].y - points[i].y)/2;\n\n var p0 = points[i];\n var p1 = points[i+1];\n var c0 = p0;\n if(i !== 1) {\n c0 = {x: p0.x+(m_0_x/3), y:p0.y+(m_0_y/3)};\n }\n var c1 = p1;\n if(i !== points.length-3) {\n c1 = {x: p1.x-(m_1_x/3), y:p1.y-(m_1_y/3)};\n }\n\n // detect special case by calculating the angle\n if(avoidSharpTurn) {\n var v0 = {x:points[i-1].x - points[i].x, y:points[i-1].y - points[i].y};\n var v1 = {x:points[i+1].x - points[i].x, y:points[i+1].y - points[i].y};\n var acosValue = vecDot(v0,v1) / (vecMag(v0)*vecMag(v1));\n acosValue = Math.max(-1, Math.min(1, acosValue));\n var angle = Math.acos( acosValue );\n\n if(angle <= angleThreshold ){\n var m_x = (1-c)*(points[i].x - points[i-1].x)/2;\n var m_y = (1-c)*(points[i].y - points[i-1].y)/2;\n var k = 2;\n\n var cp1 = {x: p0.x+k*(-m_y/3), y:p0.y+k*(m_x/3)};\n var cp2 = {x: p0.x-k*(-m_y/3), y:p0.y-k*(m_x/3)};\n // CP_1CP_2\n var vCP = {x: cp1.x-cp2.x, y:cp1.y-cp2.y}; // vector cp1->cp2\n var vPN = {x: points[i-2].x - points[i+2].x, y:points[i-2].y-points[i+2].y}; // vector Previous->Next\n if(vecDot(vCP, vPN) > 0) {\n c0 = cp1;\n segments[segments.length-1][1] = cp2;\n } else {\n c0 = cp2;\n segments[segments.length-1][1] = cp1;\n }\n }\n }\n\n segments.push([c0,c1,p1]);\n }\n\n var path_d = \"M\"+points[0].x+\",\"+points[0].y;\n for(var i = 0; i < segments.length; i ++) {\n var s = segments[i];\n path_d += \"C\"+s[0].x+\",\"+s[0].y;\n path_d += \",\"+s[1].x+\",\"+s[1].y;\n path_d += \",\"+s[2].x+\",\"+s[2].y;\n }\n return path_d;\n }\n\n function drawDedicatedLoops(points, lineTension, avoidSharpTurn, angleThreshold) {\n // get loops as segments\n var p1 = 0, p2 = 1;\n var seg_list = []; // (start, end)\n while(p1 < points.length-1 && p2 < points.length) {\n if(l2Dist(points[p1], points[p2]) < 1e-6) {\n var repeated = points[p2];\n while(p2 < points.length && l2Dist(points[p2], repeated) < 1e-6) p2++;\n seg_list.push({'start': Math.max(0, p1-1), 'end': Math.min(points.length-1, p2)});\n p1 = p2;\n p2 = p1+1;\n } else {\n p1++;\n p2++;\n }\n }\n\n var loopCurves = \"\";\n for(var i = 0; i < seg_list.length; i ++) {\n var segment = seg_list[i];\n var loopCount = segment.end - segment.start - 2;\n var anchorPoint = points[segment.start+1];\n\n // the vector from previous node to next node\n var vec_pre_next = {\n x: points[segment.end].x-points[segment.start].x,\n y: points[segment.end].y-points[segment.start].y\n };\n\n // when previous node and next node are the same node, we need to handle\n // them differently.\n // e.g. for a loop segment A->B->B->A, we use the perpendicular vector perp_AB\n // instead of vector AA(which is vec_pre_next in this case).\n if(vecMag(vec_pre_next) == 0) {\n vec_pre_next = {\n x: -(points[segment.end].y-anchorPoint.y),\n y: points[segment.end].x-anchorPoint.x\n };\n }\n\n // unit length vector\n var vec_pre_next_unit = {\n x: vec_pre_next.x / vecMag(vec_pre_next),\n y: vec_pre_next.y / vecMag(vec_pre_next)\n };\n var vec_pre_next_perp = {\n x: -vec_pre_next.y / vecMag(vec_pre_next),\n y: vec_pre_next.x / vecMag(vec_pre_next)\n };\n\n var insertP;\n for(var j = 0; j < loopCount; j ++) {\n var c1,c2,c3,c4;\n\n // change the control points every time this loop appears\n var cp_k = 15+2*j;\n\n // calculate c1 and c4, their tangent match the tangent at anchorPoint\n c1 = {\n x: anchorPoint.x + cp_k*vec_pre_next_unit.x,\n y: anchorPoint.y + cp_k*vec_pre_next_unit.y\n };\n\n c4 = {\n x: anchorPoint.x - cp_k*vec_pre_next_unit.x,\n y: anchorPoint.y - cp_k*vec_pre_next_unit.y\n };\n\n // change the location of inserted virtual point every time this loop appears\n var control_k = 25+5*j;\n var insertP1 = {\n x: anchorPoint.x+vec_pre_next_perp.x*control_k,\n y: anchorPoint.y+vec_pre_next_perp.y*control_k\n };\n var insertP2 = {\n x: anchorPoint.x-vec_pre_next_perp.x*control_k,\n y: anchorPoint.y-vec_pre_next_perp.y*control_k\n };\n var vec_i_to_next = {\n x: points[segment.end].x - anchorPoint.x,\n y: points[segment.end].y - anchorPoint.y\n };\n var vec_i_to_insert = {\n x: insertP1.x - anchorPoint.x,\n y: insertP1.y - anchorPoint.y\n };\n insertP = insertP1;\n if(vecDot(vec_i_to_insert, vec_i_to_next) > 0) {\n insertP = insertP2;\n }\n\n // calculate c2 and c3 based on insertP\n c2 = {\n x: insertP.x + cp_k*vec_pre_next_unit.x,\n y: insertP.y + cp_k*vec_pre_next_unit.y\n };\n\n c3 = {\n x: insertP.x - cp_k*vec_pre_next_unit.x,\n y: insertP.y - cp_k*vec_pre_next_unit.y\n };\n\n var curve = \"M\"+anchorPoint.x+\",\"+anchorPoint.y;\n curve += \"C\"+c1.x+\",\"+c1.y+\",\"+c2.x+\",\"+c2.y+\",\"+insertP.x+\",\"+insertP.y;\n curve += \"C\"+c3.x+\",\"+c3.y+\",\"+c4.x+\",\"+c4.y+\",\"+anchorPoint.x+\",\"+anchorPoint.y;\n\n loopCurves += curve;\n }\n }\n return loopCurves;\n }\n\n // convert original path data into <d>\n function genPath(originalPoints, old, lineTension, avoidSharpTurn, angleThreshold) {\n // get coordinates\n var path_coord = getNodePositions(originalPoints, old);\n if(path_coord.length < 2) return \"\";\n\n var result = \"\";\n // process the points and treat them differently:\n // 1. sub-path without self loop\n result += drawCardinalSpline(path_coord, lineTension, avoidSharpTurn, angleThreshold);\n\n // 2. a list of loop segments\n result += drawDedicatedLoops(path_coord, lineTension, avoidSharpTurn, angleThreshold);\n\n return result;\n }\n\n // draw the spline for paths\n function drawSpline(paths) {\n if(paths === null) {\n _savedPositions = _mode.parent().layoutEngine().savePositions();\n return;\n }\n\n paths = paths.filter(pathIsPresent);\n var hoverpaths = _hoverpaths || [],\n selected = _selected || [];\n\n // edge spline\n var edge = _layer.selectAll(\".spline-edge\").data(paths, function(path) { return path_keys(path).join(','); });\n edge.exit().remove();\n var edgeEnter = edge.enter().append(\"svg:path\")\n .attr('class', 'spline-edge')\n .attr('id', function(d, i) { return \"spline-path-\"+i; })\n .attr('stroke-width', pathprops.edgeStrokeWidth || 1)\n .attr('fill', 'none')\n .attr('d', function(d) { return genPath(d, true, pathprops.lineTension, _mode.avoidSharpTurns()); });\n edge\n .attr('stroke', function(p) {\n return selected.indexOf(p) !== -1 && selectprops.edgeStroke ||\n hoverpaths.indexOf(p) !== -1 && hoverprops.edgeStroke ||\n pathprops.edgeStroke || 'black';\n })\n .attr('opacity', function(p) {\n return selected.indexOf(p) !== -1 && selectprops.edgeOpacity ||\n hoverpaths.indexOf(p) !== -1 && hoverprops.edgeOpacity ||\n pathprops.edgeOpacity || 1;\n });\n function path_order(p) {\n return hoverpaths.indexOf(p) !== -1 ? 2 :\n selected.indexOf(p) !== -1 ? 1 :\n 0;\n }\n edge.sort(function(a, b) {\n return path_order(a) - path_order(b);\n });\n _layer.selectAll('.spline-edge-hover')\n .each(function() {this.parentNode.appendChild(this);});\n edge.transition().duration(_mode.parent().transitionDuration())\n .attr('d', function(d) { return genPath(d, false, pathprops.lineTension, _mode.avoidSharpTurns()); });\n\n // another wider copy of the edge just for hover events\n var edgeHover = _layer.selectAll('.spline-edge-hover')\n .data(paths, function(path) { return path_keys(path).join(','); });\n edgeHover.exit().remove();\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'spline-edge-hover')\n .attr('d', function(d) { return genPath(d, true, pathprops.lineTension, _mode.avoidSharpTurns()); })\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', (pathprops.edgeStrokeWidth || 1) + 4)\n .attr('fill', 'none')\n .on('mouseover.spline-paths', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout.spline-paths', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.spline-paths', function(d) {\n var selected = _selected && _selected.slice(0) || [],\n i = selected.indexOf(d);\n if(i !== -1)\n selected.splice(i, 1);\n else if(d3.event.shiftKey)\n selected.push(d);\n else\n selected = [d];\n highlight_paths_group.select_changed(selected);\n });\n edgeHover.transition().duration(_mode.parent().transitionDuration())\n .attr('d', function(d) { return genPath(d, false, pathprops.lineTension, _mode.avoidSharpTurns()); });\n };\n\n function draw(diagram, node, edge, ehover) {\n _layer = _mode.parent().select('g.draw').selectAll('g.spline-layer').data([0]);\n _layer.enter().append('g').attr('class', 'spline-layer');\n\n drawSpline(_paths);\n }\n\n function remove(diagram, node, edge, ehover) {\n }\n\n var _mode = dc_graph.mode('draw-spline-paths', {\n laterDraw: true,\n draw: draw,\n remove: function(diagram, node, edge, ehover) {\n remove(diagram, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n if(p)\n _anchor = p.anchorName();\n highlight_paths_group\n .on('paths_changed.draw-spline-paths-' + _anchor, p ? paths_changed : null)\n .on('select_changed.draw-spline-paths-' + _anchor, p ? select_changed : null)\n .on('hover_changed.draw-spline-paths-' + _anchor, p ? function(hpaths) {\n _hoverpaths = hpaths;\n drawSpline(_paths);\n } : null);\n }\n });\n _mode.selectedStrength = property(1);\n _mode.avoidSharpTurns = property(true);\n\n return _mode;\n};\n\ndc_graph.draw_spline_paths = deprecate_function(\"draw_spline_paths has been renamed spline_paths, please update\", dc_graph.spline_paths);\n","dc_graph.draw_clusters = function() {\n\n function apply_bounds(rect) {\n rect.attr({\n x: function(c) {\n return c.cola.bounds.left;\n },\n y: function(c) {\n return c.cola.bounds.top;\n },\n width: function(c) {\n return c.cola.bounds.right - c.cola.bounds.left;\n },\n height: function(c) {\n return c.cola.bounds.bottom - c.cola.bounds.top;\n }\n });\n }\n function draw(diagram) {\n if(!diagram.clusterGroup())\n return;\n var clayer = diagram.g().selectAll('g.cluster-layer').data([0]);\n clayer.enter().insert('g', ':first-child')\n .attr('class', 'cluster-layer');\n var clusters = diagram.clusterGroup().all().map(function(kv) {\n return _mode.parent().getWholeCluster(kv.key);\n }).filter(function(c) {\n return c && c.cola.bounds;\n });\n var rects = clayer.selectAll('rect.cluster')\n .data(clusters, function(c) { return c.orig.key; });\n rects.exit().remove();\n rects.enter().append('rect')\n .attr({\n class: 'cluster',\n opacity: 0,\n stroke: _mode.clusterStroke.eval,\n 'stroke-width': _mode.clusterStrokeWidth.eval,\n fill: function(c) {\n return _mode.clusterFill.eval(c) || 'none';\n }\n })\n .call(apply_bounds);\n rects.transition()\n .duration(_mode.parent().stagedDuration())\n .attr('opacity', _mode.clusterOpacity.eval)\n .call(apply_bounds);\n }\n function remove(diagram, node, edge, ehover) {\n }\n var _mode = dc_graph.mode('draw-clusters', {\n laterDraw: true,\n draw: draw,\n remove: remove\n });\n _mode.clusterOpacity = property(0.25);\n _mode.clusterStroke = property('black');\n _mode.clusterStrokeWidth = property(1);\n _mode.clusterFill = property(null);\n _mode.clusterLabel = property(null);\n _mode.clusterLabelFill = property('black');\n _mode.clusterLabelAlignment = property(['bottom','right']);\n\n return _mode;\n};\n\n","dc_graph.expand_collapse = function(options) {\n if(typeof options === 'function') {\n options = {\n get_degree: arguments[0],\n expand: arguments[1],\n collapse: arguments[2],\n dirs: arguments[3]\n };\n }\n var _keyboard, _overNode, _overDir, _overEdge, _expanded = {};\n var expanded_highlight_group = dc_graph.register_highlight_things_group(options.expanded_highlight_group || 'expanded-highlight-group');\n var collapse_highlight_group = dc_graph.register_highlight_things_group(options.collapse_highlight_group || 'collapse-highlight-group');\n var hide_highlight_group = dc_graph.register_highlight_things_group(options.hide_highlight_group || 'hide-highlight-group');\n options.dirs = options.dirs || ['both'];\n options.dirs.forEach(function(dir) {\n _expanded[dir] = {};\n });\n options.hideKey = options.hideKey || 'Alt';\n options.linkKey = options.linkKey || (is_a_mac ? 'Meta' : 'Control');\n if(options.dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n var _gradients_added = {};\n function add_gradient_def(color, diagram) {\n if(_gradients_added[color])\n return;\n _gradients_added[color] = true;\n diagram.addOrRemoveDef('spike-gradient-' + color, true, 'linearGradient', function(gradient) {\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0, color, 1], [100, color, '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n });\n }\n\n function visible_edges(diagram, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return diagram.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return diagram.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return diagram.edgeSource.eval(e) === key || diagram.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).data();\n }\n\n function spike_directioner(rankdir, dir, N) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / N - 0.5);\n };\n else {\n var sweep = (N-1)*Math.PI/N, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (N > 1 ? i / (N-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_stubs(diagram, node, edge, n, spikes) {\n if(n && _expanded[spikes.dir][diagram.nodeKey.eval(n)])\n spikes = null;\n var spike = node\n .selectAll('g.spikes')\n .data(function(n2) {\n return spikes && n === n2 ?\n [n2] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(n) {\n var key = diagram.nodeKey.eval(n);\n var dir = spikes.dir,\n N = spikes.n,\n af = spike_directioner(diagram.layoutEngine().rankdir(), dir, N),\n ret = Array(N);\n for(var i = 0; i<N; ++i) {\n var a = af(i);\n ret[i] = {\n a: a * 180 / Math.PI,\n x: Math.cos(a) * n.dcg_rx*.9,\n y: Math.sin(a) * n.dcg_ry*.9,\n edge: spikes.invisible ? spikes.invisible[i] : null\n };\n }\n return ret;\n });\n rect\n .enter().append('rect')\n .classed('spike', true)\n .attr({\n width: 25,\n height: 3,\n fill: function(s) {\n var color = s.edge ? dc_graph.functor_wrap(diagram.edgeStroke())(s.edge) : 'black';\n add_gradient_def(color, diagram);\n return 'url(#spike-gradient-' + color + ')';\n },\n rx: 1,\n ry: 1,\n x: 0,\n y: 0\n });\n rect.attr('transform', function(d) {\n return 'translate(' + d.x + ',' + d.y + ') rotate(' + d.a + ')';\n });\n rect.exit().remove();\n }\n\n function clear_stubs(diagram, node, edge) {\n draw_stubs(diagram, node, edge, null, null);\n }\n\n function zonedir(diagram, event, dirs, n) {\n if(dirs.length === 1) // we assume it's ['out', 'in']\n return dirs[0];\n var bound = diagram.root().node().getBoundingClientRect();\n var invert = diagram.invertCoord([event.clientX - bound.left,event.clientY - bound.top]),\n x = invert[0],\n y = invert[1];\n switch(diagram.layoutEngine().rankdir()) {\n case 'TB':\n return y > n.cola.y ? 'out' : 'in';\n case 'BT':\n return y < n.cola.y ? 'out' : 'in';\n case 'LR':\n return x > n.cola.x ? 'out' : 'in';\n case 'RL':\n return x < n.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + diagram.layoutEngine().rankdir());\n }\n\n function detect_key(key) {\n switch(key) {\n case 'Alt':\n return d3.event.altKey;\n case 'Meta':\n return d3.event.metaKey;\n case 'Shift':\n return d3.event.shiftKey;\n case 'Control':\n return d3.event.ctrlKey;\n }\n return false;\n }\n\n function highlight_hiding_node(diagram, n, edge) {\n var nk = diagram.nodeKey.eval(n);\n var hide_nodes_set = {}, hide_edges_set = {};\n hide_nodes_set[nk] = true;\n edge.each(function(e) {\n if(diagram.edgeSource.eval(e) === nk || diagram.edgeTarget.eval(e) === nk)\n hide_edges_set[diagram.edgeKey.eval(e)] = true;\n });\n hide_highlight_group.highlight(hide_nodes_set, hide_edges_set);\n }\n function highlight_hiding_edge(diagram, e) {\n var hide_edges_set = {};\n hide_edges_set[diagram.edgeKey.eval(e)] = true;\n hide_highlight_group.highlight({}, hide_edges_set);\n }\n\n function highlight_collapse(diagram, n, node, edge, dir) {\n var nk = diagram.nodeKey.eval(n);\n var p;\n if(options.get_edges)\n p = Promise.resolve(options.get_edges(nk, dir));\n else\n p = Promise.resolve(options.get_degree(nk, dir));\n p.then(function(de) {\n var degree, edges;\n if(typeof de === 'number')\n degree = de;\n else {\n edges = de;\n degree = edges.length;\n }\n var spikes = {\n dir: dir,\n visible: visible_edges(diagram, edge, dir, nk)\n };\n spikes.n = Math.max(0, degree - spikes.visible.length); // be tolerant of inconsistencies\n if(edges) {\n var shown = spikes.visible.reduce(function(p, e) {\n p[diagram.edgeKey.eval(e)] = true;\n return p;\n }, {});\n spikes.invisible = edges.filter(function(e) { return !shown[diagram.edgeKey()(e)]; });\n }\n draw_stubs(diagram, node, edge, n, spikes);\n var collapse_nodes_set = {}, collapse_edges_set = {};\n if(_expanded[dir][nk] && options.collapsibles) {\n var clps = options.collapsibles(nk, dir);\n collapse_nodes_set = clps.nodes;\n collapse_edges_set = clps.edges;\n }\n collapse_highlight_group.highlight(collapse_nodes_set, collapse_edges_set);\n });\n }\n\n function draw(diagram, node, edge, ehover) {\n function over_node(n) {\n var dir = zonedir(diagram, d3.event, options.dirs, n);\n _overNode = n;\n _overDir = dir;\n if(options.hideNode && detect_key(options.hideKey))\n highlight_hiding_node(diagram, n, edge);\n else if(_mode.nodeURL.eval(_overNode) && detect_key(options.linkKey)) {\n diagram.selectAllNodes()\n .filter(function(n) {\n return n === _overNode;\n }).attr('cursor', 'pointer');\n diagram.requestRefresh(0);\n }\n else\n highlight_collapse(diagram, n, node, edge, dir);\n }\n function leave_node(n) {\n diagram.selectAllNodes()\n .filter(function(n) {\n return n === _overNode;\n }).attr('cursor', null);\n _overNode = null;\n clear_stubs(diagram, node, edge);\n collapse_highlight_group.highlight({}, {});\n hide_highlight_group.highlight({}, {});\n }\n function click_node(n) {\n var nk = diagram.nodeKey.eval(n);\n if(options.hideNode && detect_key(options.hideKey))\n options.hideNode(nk);\n else if(detect_key(options.linkKey)) {\n if(_mode.nodeURL.eval(n) && _mode.urlOpener)\n _mode.urlOpener()(_mode, n, _mode.nodeURL.eval(n));\n } else {\n clear_stubs(diagram, node, edge);\n var dir = zonedir(diagram, d3.event, options.dirs, n);\n expand(dir, nk, !_expanded[dir][nk]);\n }\n }\n\n function enter_edge(e) {\n _overEdge = e;\n if(options.hideEdge && detect_key(options.hideKey))\n highlight_hiding_edge(diagram, e);\n }\n function leave_edge(e) {\n _overEdge = null;\n hide_highlight_group.highlight({}, {});\n }\n function click_edge(e) {\n if(options.hideEdge && detect_key(options.hideKey))\n options.hideEdge(diagram.edgeKey.eval(e));\n }\n\n node\n .on('mouseenter.expand-collapse', over_node)\n .on('mousemove.expand-collapse', over_node)\n .on('mouseout.expand-collapse', leave_node)\n .on('click.expand-collapse', click_node)\n .on('dblclick.expand-collapse', click_node);\n\n ehover\n .on('mouseenter.expand-collapse', enter_edge)\n .on('mouseout.expand-collapse', leave_edge)\n .on('click.expand-collapse', click_edge);\n\n _keyboard\n .on('keydown.expand-collapse', function() {\n if(d3.event.key === options.hideKey && (_overNode && options.hideNode || _overEdge && options.hideEdge)) {\n if(_overNode)\n highlight_hiding_node(diagram, _overNode, edge);\n if(_overEdge)\n highlight_hiding_edge(diagram, _overEdge);\n clear_stubs(diagram, node, edge);\n collapse_highlight_group.highlight({}, {});\n }\n else if(d3.event.key === options.linkKey && _overNode) {\n if(_overNode && _mode.nodeURL.eval(_overNode)) {\n diagram.selectAllNodes()\n .filter(function(n) {\n return n === _overNode;\n }).attr('cursor', 'pointer');\n }\n hide_highlight_group.highlight({}, {});\n clear_stubs(diagram, node, edge);\n collapse_highlight_group.highlight({}, {});\n }\n })\n .on('keyup.expand_collapse', function() {\n if((d3.event.key === options.hideKey || d3.event.key === options.linkKey) && (_overNode || _overEdge)) {\n hide_highlight_group.highlight({}, {});\n if(_overNode) {\n highlight_collapse(diagram, _overNode, node, edge, _overDir);\n if(_mode.nodeURL.eval(_overNode)) {\n diagram.selectAllNodes()\n .filter(function(n) {\n return n === _overNode;\n }).attr('cursor', null);\n }\n }\n }\n });\n diagram.cascade(97, true, conditional_properties(\n function(n) {\n return n === _overNode && n.orig.value.value && n.orig.value.value.URL;\n },\n {\n nodeLabelDecoration: 'underline'\n }\n ));\n }\n\n function remove(diagram, node, edge, ehover) {\n node\n .on('mouseenter.expand-collapse', null)\n .on('mousemove.expand-collapse', null)\n .on('mouseout.expand-collapse', null)\n .on('click.expand-collapse', null)\n .on('dblclick.expand-collapse', null);\n ehover\n .on('mouseenter.expand-collapse', null)\n .on('mouseout.expand-collapse', null)\n .on('click.expand-collapse', null);\n clear_stubs(diagram, node, edge);\n }\n\n function expand(dir, nk, whether) {\n if(dir === 'both' && !_expanded.both)\n options.dirs.forEach(function(dir2) {\n _expanded[dir2][nk] = whether;\n });\n else\n _expanded[dir][nk] = whether;\n var bothmap;\n if(_expanded.both)\n bothmap = _expanded.both;\n else {\n bothmap = Object.keys(_expanded.in).filter(function(nk2) {\n return _expanded.in[nk2] && _expanded.out[nk2];\n }).reduce(function(p, v) {\n p[v] = true;\n return p;\n }, {});\n }\n expanded_highlight_group.highlight(bothmap, {});\n if(dir === 'both' && !_expanded.both)\n options.dirs.forEach(function(dir2, i) {\n if(whether)\n options.expand(nk, dir2, i !== options.dirs.length-1);\n else\n options.collapse(nk, dir2, i !== options.dirs.length-1);\n });\n else {\n if(whether)\n options.expand(nk, dir);\n else\n options.collapse(nk, dir);\n }\n }\n\n function expandNodes(nks) {\n var map = nks.reduce(function(p, v) {\n p[v] = true;\n return p;\n }, {});\n options.dirs.forEach(function(dir) {\n _expanded[dir] = Object.assign({}, map);\n });\n expanded_highlight_group.highlight(map, {});\n options.expandedNodes(map);\n }\n\n var _mode = dc_graph.mode('expand-collapse', {\n draw: draw,\n remove: remove,\n parent: function(p) {\n if(p) {\n _keyboard = p.child('keyboard');\n if(!_keyboard)\n p.child('keyboard', _keyboard = dc_graph.keyboard());\n }\n }\n });\n\n _mode.expand = expand;\n _mode.expandNodes = expandNodes;\n _mode.clickableLinks = deprecated_property(\"warning - clickableLinks doesn't belong in collapse_expand and will be moved\", false);\n _mode.nodeURL = property(function(n) {\n return n.value && n.value.value && n.value.value.URL;\n });\n _mode.urlTargetWindow = property('dcgraphlink');\n _mode.urlOpener = property(dc_graph.expand_collapse.default_url_opener);\n return _mode;\n};\n\ndc_graph.expand_collapse.default_url_opener = function(mode, node, url) {\n window.open(mode.nodeURL.eval(node), mode.urlTargetWindow());\n};\n","dc_graph.expand_collapse.shown_hidden = function(opts) {\n var options = Object.assign({\n nodeKey: function(n) { return n.key; }, // this one is raw rows, others are post-crossfilter-group\n edgeKey: function(e) { return e.key; },\n edgeSource: function(e) { return e.value.source; },\n edgeTarget: function(e) { return e.value.target; }\n }, opts);\n var _nodeShown = {}, _nodeHidden = {};\n\n // independent dimension on keys so that the diagram dimension will observe it\n var _filter = options.nodeCrossfilter.dimension(options.nodeKey);\n function apply_filter() {\n _filter.filterFunction(function(nk) {\n return _nodeShown[nk];\n });\n }\n function adjacent_edges(nk) {\n return options.edgeGroup.all().filter(function(e) {\n return options.edgeSource(e) === nk || options.edgeTarget(e) === nk;\n });\n }\n function adjacent_nodes(nk) {\n return adjacent_edges(nk).map(function(e) {\n return options.edgeSource(e) === nk ? options.edgeTarget(e) : options.edgeSource(e);\n });\n }\n function adjacencies(nk) {\n return adjacent_edges(nk).map(function(e) {\n return options.edgeSource(e) === nk ? [e,options.edgeTarget(e)] : [e,options.edgeSource(e)];\n });\n }\n function out_edges(nk) {\n return options.edgeGroup.all().filter(function(e) {\n return options.edgeSource(e) === nk;\n });\n }\n function in_edges(nk) {\n return options.edgeGroup.all().filter(function(e) {\n return options.edgeTarget(e) === nk;\n });\n }\n function is_collapsible(n1, n2) {\n return options.edgeGroup.all().every(function(e2) {\n var n3;\n if(options.edgeSource(e2) === n2)\n n3 = options.edgeTarget(e2);\n else if(options.edgeTarget(e2) === n2)\n n3 = options.edgeSource(e2);\n return !n3 || n3 === n1 || !_nodeShown[n3];\n });\n }\n apply_filter();\n var _strategy = {};\n if(options.directional)\n Object.assign(_strategy, {\n get_degree: function(nk, dir) {\n switch(dir) {\n case 'out': return out_edges(nk).length;\n case 'in': return in_edges(nk).length;\n default: throw new Error('unknown direction ' + dir);\n }\n },\n expand: function(nk, dir, skip_draw) {\n _nodeShown[nk] = true;\n switch(dir) {\n case 'out':\n out_edges(nk).forEach(function(e) {\n if(!_nodeHidden[options.edgeTarget(e)])\n _nodeShown[options.edgeTarget(e)] = true;\n });\n break;\n case 'in':\n in_edges(nk).forEach(function(e) {\n if(!_nodeHidden[options.edgeSource(e)])\n _nodeShown[options.edgeSource(e)] = true;\n });\n break;\n default: throw new Error('unknown direction ' + dir);\n }\n if(!skip_draw) {\n apply_filter();\n dc.redrawAll();\n }\n },\n expandedNodes: function(_) {\n if(!arguments.length)\n throw new Error('not supported'); // should not be called\n var that = this;\n _nodeShown = {};\n Object.keys(_).forEach(function(nk) {\n that.expand(nk, 'out', true);\n that.expand(nk, 'in', true);\n });\n apply_filter();\n dc.redrawAll();\n return this;\n },\n collapsibles: function(nk, dir) {\n var nodes = {}, edges = {};\n (dir === 'out' ? out_edges(nk) : in_edges(nk)).forEach(function(e) {\n var n2 = dir === 'out' ? options.edgeTarget(e) : options.edgeSource(e);\n if(is_collapsible(nk, n2)) {\n nodes[n2] = true;\n adjacent_edges(n2).forEach(function(e) {\n edges[options.edgeKey(e)] = true;\n });\n }\n });\n return {nodes: nodes, edges: edges};\n },\n collapse: function(nk, dir) {\n Object.keys(this.collapsibles(nk, dir).nodes).forEach(function(nk) {\n _nodeShown[nk] = false;\n });\n apply_filter();\n dc.redrawAll();\n },\n hideNode: function(nk) {\n _nodeHidden[nk] = true;\n _nodeShown[nk] = false;\n apply_filter();\n dc.redrawAll();\n },\n dirs: ['out', 'in']\n });\n else\n Object.assign(_strategy, {\n get_degree: function(nk) {\n return adjacent_edges(nk).length;\n },\n expand: function(nk) {\n _nodeShown[nk] = true;\n adjacent_nodes(nk).forEach(function(nk) {\n if(!_nodeHidden[nk])\n _nodeShown[nk] = true;\n });\n apply_filter();\n dc.redrawAll();\n },\n expandedNodes: function(_) {\n if(!arguments.length)\n throw new Error('not supported'); // should not be called\n var that = this;\n _nodeShown = {};\n Object.keys(_).forEach(function(nk) {\n that.expand(nk);\n });\n return this;\n },\n collapsibles: function(nk, dir) {\n var nodes = {}, edges = {};\n adjacencies(nk).forEach(function(adj) {\n var e = adj[0], n2 = adj[1];\n if(is_collapsible(nk, n2)) {\n nodes[n2] = true;\n edges[options.edgeKey(e)] = true;\n }\n });\n return {nodes: nodes, edges: edges};\n },\n collapse: function(nk, dir) {\n Object.keys(_strategy.collapsibles(nk, dir).nodes).forEach(function(nk) {\n _nodeShown[nk] = false;\n });\n apply_filter();\n dc.redrawAll();\n },\n hideNode: function(nk) {\n _nodeHidden[nk] = true;\n _nodeShown[nk] = false;\n apply_filter();\n dc.redrawAll();\n }\n });\n return _strategy;\n};\n","dc_graph.expand_collapse.expanded_hidden = function(opts) {\n var options = Object.assign({\n nodeKey: function(n) { return n.key; },\n edgeKey: function(e) { return e.key; },\n edgeSource: function(e) { return e.value.source; },\n edgeTarget: function(e) { return e.value.target; }\n }, opts);\n var _nodeExpanded = {}, _nodeHidden = {}, _edgeHidden = {};\n\n // independent dimension on keys so that the diagram dimension will observe it\n var _nodeDim = options.nodeCrossfilter.dimension(options.nodeKey),\n _edgeDim = options.edgeCrossfilter && options.edgeCrossfilter.dimension(options.edgeRawKey);\n\n function get_shown(expanded) {\n return Object.keys(expanded).reduce(function(p, nk) {\n p[nk] = true;\n adjacent_nodes(nk).forEach(function(nk2) {\n if(!_nodeHidden[nk2])\n p[nk2] = true;\n });\n return p;\n }, {});\n }\n function apply_filter() {\n var _shown = get_shown(_nodeExpanded);\n _nodeDim.filterFunction(function(nk) {\n return _shown[nk];\n });\n _edgeDim && _edgeDim.filterFunction(function(ek) {\n return !_edgeHidden[ek];\n });\n }\n function adjacent_edges(nk) {\n return options.edgeGroup.all().filter(function(e) {\n return options.edgeSource(e) === nk || options.edgeTarget(e) === nk;\n });\n }\n // function out_edges(nk) {\n // return options.edgeGroup.all().filter(function(e) {\n // return options.edgeSource(e) === nk;\n // });\n // }\n // function in_edges(nk) {\n // return options.edgeGroup.all().filter(function(e) {\n // return options.edgeTarget(e) === nk;\n // });\n // }\n function adjacent_nodes(nk) {\n return adjacent_edges(nk).map(function(e) {\n return options.edgeSource(e) === nk ? options.edgeTarget(e) : options.edgeSource(e);\n });\n }\n\n apply_filter();\n var _strategy = {\n get_degree: function(nk) {\n return adjacent_edges(nk).length;\n },\n get_edges: function(nk) {\n return adjacent_edges(nk);\n },\n expand: function(nk) {\n _nodeExpanded[nk] = true;\n apply_filter();\n dc.redrawAll();\n },\n expandedNodes: function(_) {\n if(!arguments.length)\n return _nodeExpanded;\n _nodeExpanded = _;\n apply_filter();\n dc.redrawAll();\n return this;\n },\n collapsibles: function(nk, dir) {\n var whatif = Object.assign({}, _nodeExpanded);\n delete whatif[nk];\n var shown = get_shown(_nodeExpanded), would = get_shown(whatif);\n var going = Object.keys(shown)\n .filter(function(nk2) { return !would[nk2]; })\n .reduce(function(p, v) {\n p[v] = true;\n return p;\n }, {});\n return {\n nodes: going,\n edges: options.edgeGroup.all().filter(function(e) {\n return going[options.edgeSource(e)] || going[options.edgeTarget(e)];\n }).reduce(function(p, e) {\n p[options.edgeKey(e)] = true;\n return p;\n }, {})\n };\n },\n collapse: function(nk, collapsible) {\n delete _nodeExpanded[nk];\n apply_filter();\n dc.redrawAll();\n },\n hideNode: function(nk) {\n _nodeHidden[nk] = true;\n this.collapse(nk); // in case\n },\n hideEdge: function(ek) {\n if(!options.edgeCrossfilter)\n console.warn('expanded_hidden needs edgeCrossfilter to hide edges');\n _edgeHidden[ek] = true;\n apply_filter();\n dc.redrawAll();\n }\n };\n return _strategy;\n};\n","dc_graph.draw_graphs = function(options) {\n var select_nodes_group = dc_graph.select_things_group(options.select_nodes_group || 'select-nodes-group', 'select-nodes'),\n select_edges_group = dc_graph.select_things_group(options.select_edges_group || 'select-edges-group', 'select-edges'),\n label_nodes_group = dc_graph.label_things_group('label-nodes-group', 'label-nodes'),\n label_edges_group = dc_graph.label_things_group('label-edges-group', 'label-edges'),\n fix_nodes_group = dc_graph.fix_nodes_group('fix-nodes-group');\n var _nodeIdTag = options.idTag || 'id',\n _edgeIdTag = options.edgeIdTag || _nodeIdTag,\n _sourceTag = options.sourceTag || 'source',\n _targetTag = options.targetTag || 'target',\n _nodeLabelTag = options.labelTag || 'label',\n _edgeLabelTag = options.edgeLabelTag || _nodeLabelTag;\n\n var _sourceDown = null, _targetMove = null, _targetValid = false, _edgeLayer = null, _hintData = [], _crossout;\n\n function update_hint() {\n var data = _hintData.filter(function(h) {\n return h.source && h.target;\n });\n var line = _edgeLayer.selectAll('line.hint-edge').data(data);\n line.exit().remove();\n line.enter().append('line')\n .attr('class', 'hint-edge')\n .style({\n fill: 'none',\n stroke: 'black',\n 'pointer-events': 'none'\n });\n\n line.attr({\n x1: function(n) { return n.source.x; },\n y1: function(n) { return n.source.y; },\n x2: function(n) { return n.target.x; },\n y2: function(n) { return n.target.y; }\n });\n }\n\n function port_pos(p) {\n var style = _mode.parent().portStyle(_mode.parent().portStyleName.eval(p));\n var pos = style.portPosition(p);\n pos.x += p.node.cola.x;\n pos.y += p.node.cola.y;\n return pos;\n }\n\n function update_crossout() {\n var data;\n if(_crossout) {\n if(_mode.usePorts())\n data = [port_pos(_crossout)];\n else\n data = [{x: _crossout.node.cola.x, y: _crossout.node.cola.y}];\n }\n else data = [];\n\n var size = _mode.crossSize(), wid = _mode.crossWidth();\n var cross = _edgeLayer.selectAll('polygon.graph-draw-crossout').data(data);\n cross.exit().remove();\n cross.enter().append('polygon')\n .attr('class', 'graph-draw-crossout');\n cross\n .attr('points', function(d) {\n var x = d.x, y = d.y;\n return [\n [x-size/2, y+size/2], [x-size/2+wid, y+size/2], [x, y+wid/2],\n [x+size/2-wid, y+size/2], [x+size/2, y+size/2], [x+wid/2, y],\n [x+size/2, y-size/2], [x+size/2-wid, y-size/2], [x, y-wid/2],\n [x-size/2+wid, y-size/2], [x-size/2, y-size/2], [x-wid/2, y]\n ]\n .map(function(p) { return p.join(','); })\n .join(' ');\n });\n }\n function erase_hint() {\n _hintData = [];\n _targetValid = false;\n _sourceDown = _targetMove = null;\n update_hint();\n }\n\n function create_node(diagram, pos, data) {\n if(!_mode.nodeCrossfilter())\n throw new Error('need nodeCrossfilter');\n var node, callback = _mode.addNode() || promise_identity;\n if(data)\n node = data;\n else {\n node = {};\n node[_nodeIdTag] = uuid();\n node[_nodeLabelTag] = '';\n }\n if(pos)\n fix_nodes_group.new_node(node[_nodeIdTag], node, {x: pos[0], y: pos[1]});\n callback(node).then(function(node2) {\n if(!node2)\n return;\n _mode.nodeCrossfilter().add([node2]);\n diagram.redrawGroup();\n select_nodes_group.set_changed([node2[_nodeIdTag]]);\n });\n }\n\n function create_edge(diagram, source, target) {\n if(!_mode.edgeCrossfilter())\n throw new Error('need edgeCrossfilter');\n var edge = {}, callback = _mode.addEdge() || promise_identity;\n edge[_edgeIdTag] = uuid();\n edge[_edgeLabelTag] = '';\n if(_mode.conduct().detectReversedEdge && _mode.conduct().detectReversedEdge(edge, source.port, target.port)) {\n edge[_sourceTag] = target.node.orig.key;\n edge[_targetTag] = source.node.orig.key;\n var t;\n t = source; source = target; target = t;\n } else {\n edge[_sourceTag] = source.node.orig.key;\n edge[_targetTag] = target.node.orig.key;\n }\n callback(edge, source.port, target.port).then(function(edge2) {\n if(!edge2)\n return;\n fix_nodes_group.new_edge(edge[_edgeIdTag], edge2[_sourceTag], edge2[_targetTag]);\n _mode.edgeCrossfilter().add([edge2]);\n select_nodes_group.set_changed([], false);\n select_edges_group.set_changed([edge2[_edgeIdTag]], false);\n diagram.redrawGroup();\n });\n }\n\n function check_invalid_drag(coords) {\n var msg;\n if(!(d3.event.buttons & 1)) {\n // mouse button was released but we missed it\n _crossout = null;\n if(_mode.conduct().cancelDragEdge)\n _mode.conduct().cancelDragEdge(_sourceDown);\n erase_hint();\n update_crossout();\n return true;\n }\n if(!_sourceDown.started && Math.hypot(coords[0] - _hintData[0].source.x, coords[1] - _hintData[0].source.y) > _mode.dragSize()) {\n if(_mode.conduct().startDragEdge) {\n if(_mode.conduct().startDragEdge(_sourceDown)) {\n _sourceDown.started = true;\n } else {\n if(_mode.conduct().invalidSourceMessage) {\n msg = _mode.conduct().invalidSourceMessage(_sourceDown);\n console.log(msg);\n if(options.negativeTip) {\n options.negativeTip\n .content(function(_, k) { k(msg); })\n .displayTip(_mode.usePorts() ? _sourceDown.port : _sourceDown.node);\n }\n }\n erase_hint();\n return true;\n }\n }\n }\n return false;\n }\n\n function draw(diagram, node, edge, ehover) {\n var select_nodes = diagram.child('select-nodes');\n if(select_nodes) {\n if(_mode.clickCreatesNodes())\n select_nodes.clickBackgroundClears(false);\n }\n node\n .on('mousedown.draw-graphs', function(n) {\n d3.event.stopPropagation();\n if(!_mode.dragCreatesEdges())\n return;\n if(options.tipsDisable)\n options.tipsDisable.forEach(function(tip) {\n tip\n .hideTip()\n .disabled(true);\n });\n if(_mode.usePorts()) {\n var activePort;\n if(typeof _mode.usePorts() === 'object' && _mode.usePorts().eventPort)\n activePort = _mode.usePorts().eventPort();\n else activePort = diagram.getPort(diagram.nodeKey.eval(n), null, 'out')\n || diagram.getPort(diagram.nodeKey.eval(n), null, 'in');\n if(!activePort)\n return;\n _sourceDown = {node: n, port: activePort};\n _hintData = [{source: port_pos(activePort)}];\n } else {\n _sourceDown = {node: n};\n _hintData = [{source: {x: _sourceDown.node.cola.x, y: _sourceDown.node.cola.y}}];\n }\n })\n .on('mousemove.draw-graphs', function(n) {\n var msg;\n d3.event.stopPropagation();\n if(_sourceDown) {\n var coords = dc_graph.event_coords(diagram);\n if(check_invalid_drag(coords))\n return;\n var oldTarget = _targetMove;\n if(n === _sourceDown.node) {\n _mode.conduct().invalidTargetMessage &&\n console.log(_mode.conduct().invalidTargetMessage(_sourceDown, _sourceDown));\n _targetMove = null;\n _hintData[0].target = null;\n }\n else if(_mode.usePorts()) {\n var activePort;\n if(typeof _mode.usePorts() === 'object' && _mode.usePorts().eventPort)\n activePort = _mode.usePorts().eventPort();\n else activePort = diagram.getPort(diagram.nodeKey.eval(n), null, 'in')\n || diagram.getPort(diagram.nodeKey.eval(n), null, 'out');\n if(activePort)\n _targetMove = {node: n, port: activePort};\n else\n _targetMove = null;\n } else if(!_targetMove || n !== _targetMove.node) {\n _targetMove = {node: n};\n }\n if(_mode.conduct().changeDragTarget) {\n var change;\n if(_mode.usePorts()) {\n var oldPort = oldTarget && oldTarget.port,\n newPort = _targetMove && _targetMove.port;\n change = oldPort !== newPort;\n } else {\n var oldNode = oldTarget && oldTarget.node,\n newNode = _targetMove && _targetMove.node;\n change = oldNode !== newNode;\n }\n if(change)\n if(_mode.conduct().changeDragTarget(_sourceDown, _targetMove)) {\n _crossout = null;\n if(options.negativeTip)\n options.negativeTip.hideTip();\n msg = _mode.conduct().validTargetMessage && _mode.conduct().validTargetMessage() ||\n 'matches';\n if(options.positiveTip) {\n options.positiveTip\n .content(function(_, k) { k(msg); })\n .displayTip(_mode.usePorts() ? _targetMove.port : _targetMove.node);\n }\n _targetValid = true;\n } else {\n _crossout = _mode.usePorts() ?\n _targetMove && _targetMove.port :\n _targetMove && _targetMove.node;\n if(_targetMove && _mode.conduct().invalidTargetMessage) {\n if(options.positiveTip)\n options.positiveTip.hideTip();\n msg = _mode.conduct().invalidTargetMessage(_sourceDown, _targetMove);\n console.log(msg);\n if(options.negativeTip) {\n options.negativeTip\n .content(function(_, k) { k(msg); })\n .displayTip(_mode.usePorts() ? _targetMove.port : _targetMove.node);\n }\n }\n _targetValid = false;\n }\n } else _targetValid = true;\n if(_targetMove) {\n if(_targetMove.port)\n _hintData[0].target = port_pos(activePort);\n else\n _hintData[0].target = {x: n.cola.x, y: n.cola.y};\n }\n else {\n _hintData[0].target = {x: coords[0], y: coords[1]};\n }\n update_hint();\n update_crossout();\n }\n })\n .on('mouseup.draw-graphs', function(n) {\n _crossout = null;\n if(options.negativeTip)\n options.negativeTip.hideTip(true);\n if(options.positiveTip)\n options.positiveTip.hideTip(true);\n if(options.tipsDisable)\n options.tipsDisable.forEach(function(tip) {\n tip.disabled(false);\n });\n // allow keyboard mode to hear this one (again, we need better cooperation)\n // d3.event.stopPropagation();\n if(_sourceDown && _targetValid) {\n var finishPromise;\n if(_mode.conduct().finishDragEdge)\n finishPromise = _mode.conduct().finishDragEdge(_sourceDown, _targetMove);\n else finishPromise = Promise.resolve(true);\n var source = _sourceDown, target = _targetMove;\n finishPromise.then(function(ok) {\n if(ok)\n create_edge(diagram, source, target);\n });\n }\n else if(_sourceDown) {\n if(_mode.conduct().cancelDragEdge)\n _mode.conduct().cancelDragEdge(_sourceDown);\n }\n erase_hint();\n update_crossout();\n });\n diagram.svg()\n .on('mousedown.draw-graphs', function() {\n _sourceDown = null;\n })\n .on('mousemove.draw-graphs', function() {\n var data = [];\n if(_sourceDown) { // drawing edge\n var coords = dc_graph.event_coords(diagram);\n _crossout = null;\n if(check_invalid_drag(coords))\n return;\n if(_mode.conduct().dragCanvas)\n _mode.conduct().dragCanvas(_sourceDown, coords);\n if(_mode.conduct().changeDragTarget && _targetMove)\n _mode.conduct().changeDragTarget(_sourceDown, null);\n _targetMove = null;\n _hintData[0].target = {x: coords[0], y: coords[1]};\n update_hint();\n update_crossout();\n }\n })\n .on('mouseup.draw-graphs', function() {\n _crossout = null;\n if(options.negativeTip)\n options.negativeTip.hideTip(true);\n if(options.positiveTip)\n options.positiveTip.hideTip(true);\n if(options.tipsDisable)\n options.tipsDisable.forEach(function(tip) {\n tip.disabled(false);\n });\n if(_sourceDown) { // drag-edge\n if(_mode.conduct().cancelDragEdge)\n _mode.conduct().cancelDragEdge(_sourceDown);\n erase_hint();\n } else { // click-node\n if(d3.event.target === this && _mode.clickCreatesNodes())\n create_node(diagram, dc_graph.event_coords(diagram));\n }\n update_crossout();\n });\n if(!_edgeLayer)\n _edgeLayer = diagram.g().append('g').attr('class', 'draw-graphs');\n }\n\n function remove(diagram, node, edge, ehover) {\n node\n .on('mousedown.draw-graphs', null)\n .on('mousemove.draw-graphs', null)\n .on('mouseup.draw-graphs', null);\n diagram.svg()\n .on('mousedown.draw-graphs', null)\n .on('mousemove.draw-graphs', null)\n .on('mouseup.draw-graphs', null);\n }\n\n var _mode = dc_graph.mode('highlight-paths', {\n draw: draw,\n remove: remove\n });\n\n // update the data source/destination\n _mode.nodeCrossfilter = property(options.nodeCrossfilter);\n _mode.edgeCrossfilter = property(options.edgeCrossfilter);\n\n // modeal options\n _mode.usePorts = property(null);\n _mode.clickCreatesNodes = property(true);\n _mode.dragCreatesEdges = property(true);\n _mode.dragSize = property(5);\n\n // draw attributes of indicator for failed edge\n _mode.crossSize = property(15);\n _mode.crossWidth = property(5);\n\n // really this is a behavior or strategy\n _mode.conduct = property({});\n\n // callbacks to modify data as it's being added\n // as of 0.6, function returns a promise of the new data\n _mode.addNode = property(null); // node -> promise(node2)\n _mode.addEdge = property(null); // edge, sourceport, targetport -> promise(edge2)\n\n // or, if you want to drive..\n _mode.createNode = function(pos, data) {\n create_node(_mode.parent(), pos, data);\n };\n\n return _mode;\n};\n\n","dc_graph.match_ports = function(diagram, symbolPorts) {\n var _ports, _wports, _wedges, _validTargets;\n diagram.on('data.match-ports', function(diagram, nodes, wnodes, edges, wedges, ports, wports) {\n _ports = ports;\n _wports = wports;\n _wedges = wedges;\n });\n diagram.on('transitionsStarted.match-ports', function() {\n symbolPorts.enableHover(true);\n });\n function change_state(ports, state) {\n return ports.map(function(p) {\n p.state = state;\n return diagram.portNodeKey.eval(p);\n });\n }\n function reset_ports(source) {\n var nids = change_state(_validTargets, 'small');\n source.port.state = 'small';\n nids.push(diagram.portNodeKey.eval(source.port));\n symbolPorts.animateNodes(nids);\n }\n function has_parallel(sourcePort, targetPort) {\n return _wedges.some(function(e) {\n return sourcePort.edges.indexOf(e) >= 0 && targetPort.edges.indexOf(e) >= 0;\n });\n }\n function is_valid(sourcePort, targetPort) {\n return (_strategy.allowParallel() || !has_parallel(sourcePort, targetPort))\n && _strategy.isValid()(sourcePort, targetPort);\n }\n function why_invalid(sourcePort, targetPort) {\n return !_strategy.allowParallel() && has_parallel(sourcePort, targetPort) && \"can't connect two edges between the same two ports\" ||\n _strategy.whyInvalid()(sourcePort, targetPort);\n }\n var _strategy = {\n isValid: property(function(sourcePort, targetPort) {\n return targetPort !== sourcePort && targetPort.name === sourcePort.name;\n }),\n whyInvalid: property(function(sourcePort, targetPort) {\n return targetPort === sourcePort && \"can't connect port to itself\" ||\n targetPort.name !== sourcePort.name && \"must connect ports of the same type\";\n }),\n allowParallel: property(false),\n hoverPort: function(port) {\n if(port) {\n _validTargets = _wports.filter(is_valid.bind(null, port));\n if(_validTargets.length)\n return change_state(_validTargets, 'shimmer-medium');\n } else if(_validTargets)\n return change_state(_validTargets, 'small');\n return null;\n },\n startDragEdge: function(source) {\n _validTargets = _wports.filter(is_valid.bind(null, source.port));\n var nids = change_state(_validTargets, 'shimmer');\n if(_validTargets.length) {\n symbolPorts.enableHover(false);\n source.port.state = 'large';\n nids.push(diagram.portNodeKey.eval(source.port));\n symbolPorts.animateNodes(nids);\n }\n console.log('valid targets', nids);\n return _validTargets.length !== 0;\n },\n invalidSourceMessage: function(source) {\n return \"no valid matches for this port\";\n },\n changeDragTarget: function(source, target) {\n var nids, valid = target && is_valid(source.port, target.port), before;\n if(valid) {\n nids = change_state(_validTargets, 'small');\n target.port.state = 'large'; // it's one of the valid\n }\n else {\n nids = change_state(_validTargets, 'small');\n before = symbolPorts.animateNodes(nids);\n nids = change_state(_validTargets, 'shimmer');\n }\n symbolPorts.animateNodes(nids, before);\n return valid;\n },\n validTargetMessage: function(source, target) {\n return \"it's a match!\";\n },\n invalidTargetMessage: function(source, target) {\n return why_invalid(source.port, target.port);\n },\n finishDragEdge: function(source, target) {\n symbolPorts.enableHover(true);\n reset_ports(source);\n return Promise.resolve(is_valid(source.port, target.port));\n },\n cancelDragEdge: function(source) {\n symbolPorts.enableHover(true);\n reset_ports(source);\n return true;\n }\n };\n return _strategy;\n};\n","dc_graph.match_opposites = function(diagram, deleteProps, options) {\n options = Object.assign({\n multiplier: 2,\n ease: d3.ease('cubic')\n }, options);\n var _ports, _wports, _wedges, _validTargets;\n\n diagram.cascade(100, true, multiply_properties(function(e) {\n return options.ease(e.deleting || 0);\n }, deleteProps, property_interpolate));\n diagram.on('data.match-opposites', function(diagram, nodes, wnodes, edges, wedges, ports, wports) {\n _ports = ports;\n _wports = wports;\n _wedges = wedges;\n });\n function port_pos(p) {\n return { x: p.node.cola.x + p.pos.x, y: p.node.cola.y + p.pos.y };\n }\n function is_valid(sourcePort, targetPort) {\n return (_strategy.allowParallel() || !_wedges.some(function(e) {\n return sourcePort.edges.indexOf(e) >= 0 && targetPort.edges.indexOf(e) >= 0;\n })) && _strategy.isValid()(sourcePort, targetPort);\n }\n function reset_deletables(source, targets) {\n targets.forEach(function(p) {\n p.edges.forEach(function(e) {\n e.deleting = 0;\n });\n });\n if(source)\n source.port.edges.forEach(function(e) {\n e.deleting = 0;\n });\n }\n var _strategy = {\n isValid: property(function(sourcePort, targetPort) {\n // draw_graphs is already enforcing this, but this makes more sense and i use xor any chance i get\n return (diagram.portName.eval(sourcePort) === 'in') ^ (diagram.portName.eval(targetPort) === 'in');\n }),\n allowParallel: property(false),\n hoverPort: function(port) {\n // could be called by draw_graphs when node is hovered, isn't\n },\n startDragEdge: function(source) {\n _validTargets = _wports.filter(is_valid.bind(null, source.port));\n console.log('valid targets', _validTargets.map(diagram.portNodeKey.eval));\n return _validTargets.length !== 0;\n },\n dragCanvas: function(source, coords) {\n var closest = _validTargets.map(function(p) {\n var ppos = port_pos(p);\n return {\n distance: Math.hypot(coords[0] - ppos.x, coords[1] - ppos.y),\n port: p\n };\n }).sort(function(a, b) {\n return a.distance - b.distance;\n });\n var cpos = port_pos(closest[0].port), spos = port_pos(source.port);\n closest.forEach(function(c) {\n c.port.edges.forEach(function(e) {\n e.deleting = 1 - options.multiplier * c.distance / Math.hypot(cpos.x - spos.x, cpos.y - spos.y);\n });\n });\n source.port.edges.forEach(function(e) {\n e.deleting = 1 - options.multiplier * closest[0].distance / Math.hypot(cpos.x - spos.x, cpos.y - spos.y);\n });\n diagram.requestRefresh(0);\n },\n changeDragTarget: function(source, target) {\n var valid = target && is_valid(source.port, target.port);\n if(valid) {\n target.port.edges.forEach(function(e) {\n e.deleting = 1;\n });\n source.port.edges.forEach(function(e) {\n e.deleting = 1;\n });\n reset_deletables(null, _validTargets.filter(function(p) {\n return p !== target.port;\n }));\n diagram.requestRefresh(0);\n }\n return valid;\n },\n finishDragEdge: function(source, target) {\n if(is_valid(source.port, target.port)) {\n reset_deletables(null, _validTargets.filter(function(p) {\n return p !== target.port;\n }));\n if(options.delete_edges) {\n var edgeKeys = source.port.edges.map(diagram.edgeKey.eval).concat(target.port.edges.map(diagram.edgeKey.eval));\n return options.delete_edges.deleteSelection(edgeKeys);\n }\n return Promise.resolve(true);\n }\n reset_deletables(source, _validTargets || []);\n return Promise.resolve(false);\n },\n cancelDragEdge: function(source) {\n reset_deletables(source, _validTargets || []);\n return true;\n },\n detectReversedEdge: function(edge, sourcePort, targetPort) {\n return diagram.portName.eval(sourcePort) === 'in';\n }\n };\n return _strategy;\n};\n","dc_graph.wildcard_ports = function(options) {\n var diagram = options.diagram,\n get_type = options.get_type || function(p) { return p.orig.value.type; },\n set_type = options.set_type || function(p, src) { p.orig.value.type = src.orig.value.type; },\n get_name = options.get_name || function(p) { return p.orig.value.name; },\n is_wild = options.is_wild || function(p) { return p.orig.value.wild; },\n update_ports = options.update_ports || function() {},\n get_linked = options.get_linked || function() { return []; };\n function linked_ports(n, port) {\n if(!diagram)\n return [];\n var nid = diagram.nodeKey.eval(n);\n var name = get_name(port);\n var links = get_linked(n) || [];\n var found = links.find(function(set) {\n return set.includes(name);\n });\n if(!found) return [];\n return found.filter(function(link) { return link !== name; }).map(function(link) {\n return diagram.getPort(nid, null, link);\n });\n }\n function no_edges(ports) {\n return ports.every(function(lp) {\n return lp.edges.length === 0;\n });\n }\n return {\n isValid: function(p1, p2) {\n return get_type(p1) === null ^ get_type(p2) === null ||\n get_type(p1) !== null && get_type(p1) === get_type(p2);\n },\n whyInvalid: function(p1, p2) {\n return get_type(p1) === null && get_type(p2) === null && \"can't connect wildcard to wildcard\" ||\n get_type(p1) !== get_type(p2) && \"the types of ports must match\";\n },\n copyLinked: function(n, port) {\n linked_ports(n, port).forEach(function(lp) {\n set_type(lp, port);\n });\n },\n copyType: function(e, sport, tport) {\n if(get_type(sport) === null) {\n set_type(sport, tport);\n this.copyLinked(sport.node, sport);\n update_ports();\n } else if(get_type(tport) === null) {\n set_type(tport, sport);\n this.copyLinked(tport.node, tport);\n update_ports();\n }\n return Promise.resolve(e);\n },\n resetTypes: function(edges) {\n // backward compatibility: this used to take diagram as\n // first arg, which was wrong\n var dia = diagram;\n if(arguments.length === 2) {\n dia = arguments[0];\n edges = arguments[1];\n }\n edges.forEach(function(eid) {\n var e = dia.getWholeEdge(eid),\n spname = dia.edgeSourcePortName.eval(e),\n tpname = dia.edgeTargetPortName.eval(e);\n var update = false;\n var p = dia.getPort(dia.nodeKey.eval(e.source), null, spname);\n var linked = linked_ports(e.source, p);\n if(is_wild(p) && p.edges.length === 1 && no_edges(linked)) {\n set_type(p, null);\n linked.forEach(function(lp) {\n set_type(lp, null);\n update = true;\n });\n }\n p = dia.getPort(dia.nodeKey.eval(e.target), null, tpname);\n linked = linked_ports(e.target, p);\n if(is_wild(p) && p.edges.length === 1 && no_edges(linked)) {\n set_type(p, null);\n linked.forEach(function(lp) {\n set_type(lp, null);\n update = true;\n });\n }\n if(update)\n update_ports();\n });\n return Promise.resolve(edges);\n }\n };\n};\n","dc_graph.symbol_port_style = function() {\n var _style = {};\n var _nodePorts, _node;\n var _drawConduct;\n\n _style.symbolScale = property(null);\n _style.colorScale = property(d3.scale.ordinal().range(\n // colorbrewer light qualitative scale\n d3.shuffle(['#8dd3c7','#ffffb3','#bebada','#fb8072','#80b1d3','#fdb462',\n '#b3de69','#fccde5','#d9d9d9','#bc80bd','#ccebc5','#ffed6f'])));\n\n function name_or_edge(p) {\n return p.named ? p.name : _style.parent().edgeKey.eval(p.edges[0]);\n }\n _style.symbol = _style.portSymbol = property(name_or_edge, false); // non standard properties taking \"outer datum\"\n _style.color = _style.portColor = property(name_or_edge, false);\n _style.outline = property(dc_graph.symbol_port_style.outline.circle());\n _style.content = property(dc_graph.symbol_port_style.content.d3symbol());\n _style.smallRadius = _style.portRadius = property(7);\n _style.mediumRadius = _style.portHoverNodeRadius = property(10);\n _style.largeRadius = _style.portHoverPortRadius = property(14);\n _style.displacement = _style.portDisplacement = property(2);\n _style.outlineFillScale = _style.portBackgroundScale = property(null);\n _style.outlineFill = _style.portBackgroundFill = property(null);\n _style.outlineStroke = _style.portBackgroundStroke = property(null);\n _style.outlineStrokeWidth = _style.portBackgroundStrokeWidth = property(null);\n _style.padding = _style.portPadding = property(2);\n _style.label = _style.portLabel = _style.portText = property(function(p) {\n return p.name;\n });\n _style.portLabelPadding = property({x: 5, y: 5});\n _style.cascade = cascade(_style);\n\n _style.portPosition = function(p) {\n var l = Math.hypot(p.pos.x, p.pos.y),\n u = {x: p.pos.x / l, y: p.pos.y / l},\n disp = _style.displacement.eval(p);\n return {x: p.pos.x + disp * u.x, y: p.pos.y + disp * u.y};\n };\n\n _style.portBounds = function(p) {\n var R = _style.largeRadius.eval(p),\n pos = _style.portPosition(p);\n return {\n left: pos.x - R/2,\n top: pos.y - R/2,\n right: pos.x + R/2,\n bottom: pos.y + R/2\n };\n };\n\n function symbol_fill(p) {\n var symcolor = _style.color.eval(p);\n return symcolor ?\n (_style.colorScale() ? _style.colorScale()(symcolor) : symcolor) :\n 'none';\n }\n function port_transform(p) {\n var pos = _style.portPosition(p);\n return 'translate(' + pos.x + ',' + pos.y + ')';\n }\n function port_symbol(p) {\n if(!_style.symbolScale())\n _style.symbolScale(d3.scale.ordinal().range(d3.shuffle(_style.content().enum())));\n var symname = _style.symbol.eval(p);\n return symname && (_style.symbolScale() ? _style.symbolScale()(symname) : symname);\n }\n function is_left(p) {\n return p.vec[0] < 0;\n }\n function hover_radius(p) {\n switch(p.state) {\n case 'large':\n return _style.largeRadius.eval(p);\n case 'medium':\n return _style.mediumRadius.eval(p);\n case 'small':\n default:\n return _style.smallRadius.eval(p);\n }\n }\n function shimmer_radius(p) {\n return /-medium$/.test(p.state) ?\n _style.mediumRadius.eval(p) :\n _style.largeRadius.eval(p);\n }\n // fall back to node aesthetics if not defined for port\n function outline_fill(p) {\n var scale, fill;\n if(_style.outlineFill.eval(p)) {\n scale = _style.outlineFillScale() || identity;\n fill = _style.outlineFill.eval(p);\n }\n else {\n scale = _style.parent().nodeFillScale() || identity;\n fill = _style.parent().nodeFill.eval(p.node);\n }\n return fill === 'none' ? 'none' : scale(fill);\n }\n function outline_stroke(p) {\n return _style.outlineStroke.eval(p) || _style.parent().nodeStroke.eval(p.node);\n }\n function outline_stroke_width(p) {\n var sw = _style.outlineStrokeWidth.eval(p);\n return typeof sw === 'number' ? sw : _style.parent().nodeStrokeWidth.eval(p.node);\n }\n _style.animateNodes = function(nids, before) {\n var setn = d3.set(nids);\n var node = _node\n .filter(function(n) {\n return setn.has(_style.parent().nodeKey.eval(n));\n });\n var symbol = _style.parent().selectNodePortsOfStyle(node, _style.parent().portStyle.nameOf(this));\n var shimmer = symbol.filter(function(p) { return /^shimmer/.test(p.state); }),\n nonshimmer = symbol.filter(function(p) { return !/^shimmer/.test(p.state); });\n if(shimmer.size()) {\n if(before)\n before.each('end', repeat);\n else repeat();\n }\n\n function repeat() {\n var shimin = shimmer.transition()\n .duration(1000)\n .ease(\"bounce\");\n shimin.selectAll('.port-outline')\n .call(_style.outline().draw(function(p) {\n return shimmer_radius(p) + _style.portPadding.eval(p);\n }));\n shimin.selectAll('.port-symbol')\n .call(_style.content().draw(port_symbol, shimmer_radius));\n var shimout = shimin.transition()\n .duration(1000)\n .ease('sin');\n shimout.selectAll('.port-outline')\n .call(_style.outline().draw(function(p) {\n return _style.smallRadius.eval(p) + _style.portPadding.eval(p);\n }));\n shimout.selectAll('.port-symbol')\n .call(_style.content().draw(port_symbol, _style.smallRadius.eval));\n shimout.each(\"end\", repeat);\n }\n\n var trans = nonshimmer.transition()\n .duration(250);\n trans.selectAll('.port-outline')\n .call(_style.outline().draw(function(p) {\n return hover_radius(p) + _style.portPadding.eval(p);\n }));\n trans.selectAll('.port-symbol')\n .call(_style.content().draw(port_symbol, hover_radius));\n\n function text_showing(p) {\n return p.state === 'large' || p.state === 'medium';\n }\n trans.selectAll('text.port-label')\n .attr({\n opacity: function(p) {\n return text_showing(p) ? 1 : 0;\n },\n 'pointer-events': function(p) {\n return text_showing(p) ? 'auto' : 'none';\n }\n });\n trans.selectAll('rect.port-label-background')\n .attr('opacity', function(p) {\n return text_showing(p) ? 1 : 0;\n });\n // bring all nodes which have labels showing to the front\n _node.filter(function(n) {\n var ports = _nodePorts[_style.parent().nodeKey.eval(n)];\n return ports && ports.some(text_showing);\n }).each(function() {\n this.parentNode.appendChild(this);\n });\n // bring all active ports to the front\n symbol.filter(function(p) {\n return p.state !== 'small';\n }).each(function() {\n this.parentNode.appendChild(this);\n });\n return trans;\n };\n _style.eventPort = function() {\n var parent = d3.select(d3.event.target.parentNode);\n if(d3.event.target.parentNode.tagName === 'g' && parent.classed('port'))\n return parent.datum();\n return null;\n };\n _style.drawPorts = function(ports, nodePorts, node) {\n _nodePorts = nodePorts; _node = node;\n var port = ports.data(function(n) {\n return nodePorts[_style.parent().nodeKey.eval(n)] || [];\n }, name_or_edge);\n port.exit().remove();\n var portEnter = port.enter().append('g')\n .attr({\n class: 'port',\n transform: port_transform\n });\n port.transition('port-position')\n .duration(_style.parent().stagedDuration())\n .delay(_style.parent().stagedDelay(false)) // need to account for enters as well\n .attr({\n transform: port_transform\n });\n\n var outline = port.selectAll('.port-outline').data(function(p) {\n return outline_fill(p) !== 'none' ? [p] : [];\n });\n outline.exit().remove();\n var outlineEnter = outline.enter().append(_style.outline().tag())\n .attr({\n class: 'port-outline',\n fill: outline_fill,\n 'stroke-width': outline_stroke_width,\n stroke: outline_stroke\n });\n if(_style.outline().init)\n outlineEnter.call(_style.outline().init);\n outlineEnter\n .call(_style.outline().draw(function(p) {\n return _style.smallRadius.eval(p) + _style.portPadding.eval(p);\n }));\n // only position and size are animated (?) - anyway these are not on the node\n // and they are typically used to indicate selection which should be fast\n outline\n .attr({\n fill: outline_fill,\n 'stroke-width': outline_stroke_width,\n stroke: outline_stroke\n });\n outline.transition()\n .duration(_style.parent().stagedDuration())\n .delay(_style.parent().stagedDelay(false)) // need to account for enters as well\n .call(_style.outline().draw(function(p) {\n return _style.smallRadius.eval(p) + _style.portPadding.eval(p);\n }));\n\n var symbolEnter = portEnter.append(_style.content().tag())\n .attr('class', 'port-symbol')\n .call(_style.content().draw(port_symbol, _style.smallRadius.eval));\n\n var symbol = port.select('.port-symbol');\n symbol.attr('fill', symbol_fill);\n symbol.transition()\n .duration(_style.parent().stagedDuration())\n .delay(_style.parent().stagedDelay(false)) // need to account for enters as well\n .call(_style.content().draw(port_symbol, _style.smallRadius.eval));\n\n var label = port.selectAll('text.port-label').data(function(p) {\n return _style.portLabel.eval(p) ? [p] : [];\n });\n label.exit().remove();\n var labelEnter = label.enter();\n labelEnter.append('rect')\n .attr({\n class: 'port-label-background',\n 'pointer-events': 'none'\n });\n labelEnter.append('text')\n .attr({\n class: 'port-label',\n 'dominant-baseline': 'middle',\n 'pointer-events': 'none',\n cursor: 'default',\n opacity: 0\n });\n label\n .each(function(p) {\n p.offset = (is_left(p) ? -1 : 1) * (_style.largeRadius.eval(p) + _style.portPadding.eval(p));\n })\n .attr({\n 'text-anchor': function(p) {\n return is_left(p) ? 'end' : 'start';\n },\n transform: function(p) {\n return 'translate(' + p.offset + ',0)';\n }\n })\n .text(_style.portLabel.eval)\n .each(function(p) {\n p.bbox = getBBoxNoThrow(this);\n });\n port.selectAll('rect.port-label-background')\n .attr({\n x: function(p) {\n return (p.offset < 0 ? p.offset - p.bbox.width : p.offset) - _style.portLabelPadding.eval(p).x;\n },\n y: function(p) {\n return -p.bbox.height/2 - _style.portLabelPadding.eval(p).y;\n },\n width: function(p) {\n return p.bbox.width + 2*_style.portLabelPadding.eval(p).x;\n },\n height: function(p) {\n return p.bbox.height + 2*_style.portLabelPadding.eval(p).y;\n },\n fill: 'white',\n opacity: 0\n });\n return _style;\n };\n\n _style.enableHover = function(whether) {\n if(!_drawConduct) {\n if(_style.parent()) {\n var draw = _style.parent().child('draw-graphs');\n if(draw)\n _drawConduct = draw.conduct();\n }\n }\n var namespace = 'grow-ports-' + _style.parent().portStyle.nameOf(this);\n if(whether) {\n _node.on('mouseover.' + namespace, function(n) {\n var nid = _style.parent().nodeKey.eval(n);\n var activePort = _style.eventPort();\n if(_nodePorts[nid])\n _nodePorts[nid].forEach(function(p) {\n p.state = p === activePort ? 'large' : activePort ? 'small' : 'medium';\n });\n var nids = _drawConduct && _drawConduct.hoverPort(activePort) || [];\n nids.push(nid);\n _style.animateNodes(nids);\n });\n _node.on('mouseout.' + namespace, function(n) {\n var nid = _style.parent().nodeKey.eval(n);\n if(_nodePorts[nid])\n _nodePorts[nid].forEach(function(p) {\n p.state = 'small';\n });\n var nids = _drawConduct && _drawConduct.hoverPort(null) || [];\n nids.push(nid);\n _style.animateNodes(nids);\n });\n } else {\n _node.on('mouseover.' + namespace, null);\n _node.on('mouseout.' + namespace, null);\n }\n return _style;\n };\n\n _style.parent = property(null);\n return _style;\n};\n\ndc_graph.symbol_port_style.outline = {};\ndc_graph.symbol_port_style.outline.circle = function() {\n return {\n tag: function() {\n return 'circle';\n },\n draw: function(rf) {\n return function(outlines) {\n outlines.attr('r', function(p) { return rf(p); });\n };\n }\n };\n};\ndc_graph.symbol_port_style.outline.square = function() {\n return {\n tag: function() {\n return 'rect';\n },\n init: function(outlines) {\n // crispEdges can make outline off-center from symbols\n // outlines.attr('shape-rendering', 'crispEdges');\n },\n draw: function(rf) {\n return function(outlines) {\n outlines.attr({\n x: function(p) { return -rf(p); },\n y: function(p) { return -rf(p); },\n width: function(p) { return 2*rf(p); },\n height: function(p) { return 2*rf(p); }\n });\n };\n }\n };\n};\ndc_graph.symbol_port_style.outline.arrow = function() {\n // offset needed for body in order to keep centroid at 0,0\n var left_portion = 3/4 - Math.PI/8;\n var _outline = {\n tag: function() {\n return 'path';\n },\n init: function(outlines) {\n //outlines.attr('shape-rendering', 'crispEdges');\n },\n draw: function(rf) {\n return function(outlines) {\n outlines.attr('d', function(p) {\n var r = rf(p);\n if(!_outline.outie() || _outline.outie()(p.orig))\n return 'M' + -left_portion*r + ',' + -r + ' h' + r +\n ' l' + r + ',' + r + ' l' + -r + ',' + r +\n ' h' + -r +\n ' a' + r + ',' + r + ' 0 1,1 0,' + -2*r;\n else\n return 'M' + -(2-left_portion)*r + ',' + -r + ' h' + 2*r +\n ' a' + r + ',' + r + ' 0 1,1 0,' + 2*r +\n ' h' + -2*r +\n ' l' + r + ',' + -r + ' l' + -r + ',' + -r;\n });\n };\n },\n outie: property(null)\n };\n return _outline;\n};\n\ndc_graph.symbol_port_style.content = {};\ndc_graph.symbol_port_style.content.d3symbol = function() {\n var _symbol = {\n tag: function() {\n return 'path';\n },\n enum: function() {\n return d3.svg.symbolTypes;\n },\n draw: function(symf, rf) {\n return function(symbols) {\n symbols.attr('d', function(p) {\n var sym = symf(p), r = rf(p);\n return sym ? d3.svg.symbol()\n .type(sym)\n .size(r*r)\n () : '';\n });\n symbols.attr('transform', function(p) {\n switch(symf(p)) {\n case 'triangle-up':\n return 'translate(0, -1)';\n case 'triangle-down':\n return 'translate(0, 1)';\n default: return null;\n }\n });\n };\n }\n };\n return _symbol;\n};\ndc_graph.symbol_port_style.content.letter = function() {\n var _symbol = {\n tag: function() {\n return 'text';\n },\n enum: function() {\n return d3.range(65, 91).map(String.fromCharCode);\n },\n draw: function(symf, rf) {\n return function(symbols) {\n symbols.text(symf)\n .attr({\n 'dominant-baseline': 'middle',\n 'text-anchor': 'middle'\n });\n symbols.each(function(p) {\n if(!p.symbol_size)\n p.symbol_size = getBBoxNoThrow(this);\n });\n symbols.attr('transform', function(p) {\n return 'scale(' + (2*rf(p)/p.symbol_size.height) +\n ') translate(' + [0,2].join(',') + ')';\n });\n };\n }\n };\n return _symbol;\n};\n","function process_dot(callback, error, text) {\n if(error) {\n callback(error, null);\n return;\n }\n var nodes, edges, node_cluster = {}, clusters = [];\n if(graphlibDot.parse) { // graphlib-dot 1.1.0 (where did i get it from?)\n var digraph = graphlibDot.parse(text);\n\n var nodeNames = digraph.nodes();\n nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push(Object.assign({}, edge.value, {\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n }));\n });\n // TODO: if this version exists in the wild, look at how it does subgraphs/clusters\n } else { // graphlib-dot 0.6\n digraph = graphlibDot.read(text);\n\n nodeNames = digraph.nodes();\n nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n edges = [];\n digraph.edges().forEach(function(e) {\n edges.push(Object.assign({}, digraph.edge(e.v, e.w), {\n source: digraph._nodes[e.v].id,\n target: digraph._nodes[e.w].id,\n sourcename: e.v,\n targetname: e.w\n }));\n });\n\n // iterative bfs for variety (recursion would work just as well)\n var cluster_names = {};\n var queue = digraph.children().map(function(c) { return Object.assign({parent: null, key: c}, digraph.node(c)); });\n while(queue.length) {\n var item = queue.shift(),\n children = digraph.children(item.key);\n if(children.length) {\n clusters.push(item);\n cluster_names[item.key] = true;\n }\n else\n node_cluster[item.key] = item.parent;\n queue = queue.concat(children.map(function(c) { return {parent: item.key, key: c}; }));\n }\n // clusters as nodes not currently supported\n nodes = nodes.filter(function(n) {\n return !cluster_names[n.name];\n });\n }\n var graph = {nodes: nodes, links: edges, node_cluster: node_cluster, clusters: clusters};\n callback(null, graph);\n}\n\nfunction process_dsv(callback, error, data) {\n if(error) {\n callback(error, null);\n return;\n }\n var keys = Object.keys(data[0]);\n var source = keys[0], target = keys[1];\n var nodes = d3.set(data.map(function(r) { return r[source]; }));\n data.forEach(function(r) {\n nodes.add(r[target]);\n });\n nodes = nodes.values().map(function(k) { return {name: k}; });\n callback(null, {\n nodes: nodes,\n links: data.map(function(r, i) {\n return {\n key: i,\n sourcename: r[source],\n targetname: r[target]\n };\n })\n });\n}\n\ndc_graph.file_formats = [\n {\n exts: 'json',\n mimes: 'application/json',\n from_url: d3.json,\n from_text: function(text, callback) {\n callback(null, JSON.parse(text));\n }\n },\n {\n exts: ['gv', 'dot'],\n mimes: 'text/vnd.graphviz',\n from_url: function(url, callback) {\n d3.text(url, process_dot.bind(null, callback));\n },\n from_text: function(text, callback) {\n process_dot(callback, null, text);\n }\n },\n {\n exts: 'psv',\n mimes: 'text/psv',\n from_url: function(url, callback) {\n d3.dsv('|', 'text/plain')(url, process_dsv.bind(null, callback));\n },\n from_text: function(text, callback) {\n process_dsv(callback, null, d3.dsv('|').parse(text));\n }\n },\n {\n exts: 'csv',\n mimes: 'text/csv',\n from_url: function(url, callback) {\n d3.csv(url, process_dsv.bind(null, callback));\n },\n from_text: function(text, callback) {\n process_dsv(callback, null, d3.csv.parse(text));\n }\n }\n];\n\ndc_graph.match_file_format = function(filename) {\n return dc_graph.file_formats.find(function(format) {\n var exts = format.exts;\n if(!Array.isArray(exts))\n exts = [exts];\n return exts.find(function(ext) {\n return new RegExp('\\.' + ext + '$').test(filename);\n });\n });\n};\n\ndc_graph.match_mime_type = function(mime) {\n return dc_graph.file_formats.find(function(format) {\n var mimes = format.mimes;\n if(!Array.isArray(mimes))\n mimes = [mimes];\n return mimes.includes(mime);\n });\n};\n\nfunction unknown_format_error(filename) {\n var spl = filename.split('.');\n if(spl.length)\n return new Error('do not know how to process graph file extension ' + spl[spl.length-1]);\n else\n return new Error('need file extension to process graph file automatically, filename ' + filename);\n}\n\nfunction unknown_mime_error(mime) {\n return new Error('do not know how to process mime type ' + mime);\n}\n\n// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else {\n var format;\n if(/^data:/.test(file1)) {\n var parts = file1.slice(5).split(/,(.+)/);\n format = dc_graph.match_mime_type(parts[0]);\n if(format)\n format.from_text(parts[1], callback);\n else callback(unknown_mime_error(parts[0]));\n } else {\n var file1noq = ignore_query(file1);\n format = dc_graph.match_file_format(file1noq);\n if(format)\n format.from_url(file1, callback);\n else callback(unknown_format_error(file1noq));\n }\n }\n};\n\ndc_graph.load_graph_text = function(text, filename, callback) {\n var format = dc_graph.match_file_format(filename);\n if(format)\n format.from_text(text, callback);\n else callback(unknown_format_error(filename));\n};\n\ndc_graph.data_url = function(data) {\n return 'data:application/json,' + JSON.stringify(data);\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id', 'key'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/**\n * `dc_graph.flat_group` implements a\n * [\"fake crossfilter group\"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups)\n * for the case of a group which is 1:1 with the rows of the data array.\n *\n * Although `dc_graph` can be used with aggregated or reduced data, typically the nodes and edges\n * are rows of two data arrays, and each row has a column which contains the unique identifier for\n * the node or edge.\n *\n * @namespace flat_group\n * @memberof dc_graph\n * @type {{}}\n**/\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n /**\n * Create a crossfilter, dimension, and flat group. Returns an object containing all three.\n *\n * 1. If `source` is an array, create a crossfilter from it. Otherwise assume it is a\n * crossfilter instance.\n * 2. Create a dimension on the crossfilter keyed by `id_accessor`\n * 3. Create a group from the dimension, reducing to the row when it's filtered in, or\n * `null` when it's out.\n * 4. Wrap the group in a fake group which filters out the nulls.\n *\n * The resulting fake group's `.all()` method returns an array of the currently filtered-in\n * `{key, value}` pairs where the key is `id_accessor(row)` and the value is the row.\n * @method make\n * @memberof dc_graph.flat_group\n * @param {Array} source - the data array for crossfilter, or a crossfilter\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n make: function(source, id_accessor) {\n var cf;\n if(Array.isArray(source))\n cf = crossfilter(source);\n else cf = source;\n return dim_group(cf, id_accessor);\n },\n /**\n * Create a flat dimension and group from an existing crossfilter.\n *\n * @method another\n * @memberof dc_graph.flat_group\n * @deprecated use .make() instead\n * @param {Object} ndx - crossfilter instance\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n another: deprecate_function('use .make() instead', function(cf, id_accessor) {\n return this.make(cf, id_accessor);\n })\n };\n})();\n\n\n","var convert_tree_helper = function(data, attrs, options, parent, level, inherit) {\n level = level || 0;\n if(attrs.length > (options.valuesByAttr ? 1 : 0)) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = data.map(function(v) {\n var key = v[options.nestKey];\n var childKey = options.nestKeysUnique ? key : uuid();\n if(childKey) {\n var node;\n if(options.ancestorKeys) {\n inherit = inherit || {};\n if(attr)\n inherit[attr] = key;\n node = Object.assign({}, inherit);\n } else node = {};\n node[options.nodeKey] = childKey;\n if(options.label && options.labelFun)\n node[options.label] = options.labelFun(key, attr, v);\n if(options.level)\n node[options.level] = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = childKey;\n edges.push(edge);\n }\n }\n var children = options.valuesByAttr ? v[attrs[0]] : v.values;\n var recurse = convert_tree_helper(children, attrs.slice(0), options,\n childKey, level+1, Object.assign({}, inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: data.map(function(v) {\n v = Object.assign({}, v);\n if(options.level)\n v[options.level] = level+1;\n return v;\n }), edges: data.map(function(v) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = v[options.nodeKey];\n return edge;\n })};\n};\n\ndc_graph.convert_tree = function(data, attrs, options) {\n options = Object.assign({\n nodeKey: 'key',\n edgeKey: 'key',\n edgeSource: 'sourcename',\n edgeTarget: 'targetname',\n nestKey: 'key'\n }, options);\n if(Array.isArray(data))\n return convert_tree_helper(data, attrs, options, options.root, 0, options.inherit);\n else {\n attrs = [''].concat(attrs);\n return convert_tree_helper([data], attrs, options, options.root, 0, options.inherit);\n }\n};\n\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n return dc_graph.convert_tree(nest, attrs, {\n nodeKey: nodeKeyAttr,\n edgeSource: edgeSourceAttr,\n edgeTarget: edgeTargetAttr,\n root: parent,\n inherit: inherit,\n ancestorKeys: true,\n label: 'name',\n labelFun: function(key, attr, v) { return attr + ':' + key; },\n level: '_level'\n });\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","// collapse edges between same source and target\ndc_graph.deparallelize = function(group, sourceTag, targetTag, options) {\n options = options || {};\n var both = options.both || false,\n reduce = options.reduce || null;\n return {\n all: function() {\n var ST = {};\n group.all().forEach(function(kv) {\n var source = kv.value[sourceTag],\n target = kv.value[targetTag];\n var dir = both ? true : source < target;\n var min = dir ? source : target, max = dir ? target : source;\n ST[min] = ST[min] || {};\n var entry;\n if(ST[min][max]) {\n entry = ST[min][max];\n if(reduce)\n entry.original = reduce(entry.original, kv);\n } else ST[min][max] = entry = {in: 0, out: 0, original: Object.assign({}, kv)};\n if(dir)\n ++entry.in;\n else\n ++entry.out;\n });\n var ret = [];\n Object.keys(ST).forEach(function(source) {\n Object.keys(ST[source]).forEach(function(target) {\n var entry = ST[source][target];\n entry[sourceTag] = source;\n entry[targetTag] = target;\n ret.push({key: entry.original.key, value: entry});\n });\n });\n return ret;\n }\n };\n};\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n pathStrength: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent).append('svg');\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(diagram, paths) {\n if(paths.length === 0) return;\n var xpadding = 30;\n var space = 30;\n var radius = 8;\n // set the height of SVG accordingly\n root.attr('height', 20*(paths.length+1))\n .attr('width', xpadding+(space+2*radius)*(paths.length/2+1)+20);\n\n root.selectAll('.path-selector').remove();\n\n var pathlist = root.selectAll('g.path-selector').data(paths);\n pathlist.enter()\n .append('g')\n .attr('class', 'path-selector')\n .attr(\"transform\", function(path, i) { return \"translate(0, \" + i*20 + \")\"; })\n .each(function(path_data, i) {\n var nodes = path_data.element_list.filter(function(d) { return d.element_type === 'node'; });\n // line\n var line = d3.select(this).append('line');\n line.attr('x1', xpadding+space)\n .attr('y1', radius+1)\n .attr('x2', xpadding+space*nodes.length)\n .attr('y2', radius+1)\n .attr('opacity', 0.4)\n .attr('stroke-width', 5)\n .attr('stroke', '#bdbdbd');\n\n // dots\n var path = d3.select(this).selectAll('circle').data(nodes);\n path.enter()\n .append('circle')\n .attr('cx', function(d, i) { return xpadding+space*(i+1); })\n .attr('cy', radius+1)\n .attr('r', radius)\n .attr('opacity', 0.4)\n .attr('fill', function(d) {\n // TODO path_selector shouldn't know the data structure of orignal node objects\n var regeneratedNode = {key:d.property_map.ecomp_uid, value:d.property_map};\n return diagram.nodeStroke()(regeneratedNode);\n });\n\n // label\n var text = d3.select(this).append('text');\n text.text('Path '+i)\n .attr('class', 'path_label')\n .attr('x', 0)\n .attr('y', radius*1.7)\n .on('mouseover.path-selector', function() {\n highlight_paths_group.hover_changed([path_data]);\n })\n .on('mouseout.path-selector', function() {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.path-selector', function() {\n highlight_paths_group.select_changed(toggle_paths(selected, [path_data]));\n });\n });\n pathlist.exit().transition(1000).attr('opacity', 0).remove();\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('g.path-selector')\n .each(function(d, i) {\n var textColor = is_hovered(d) ? '#e41a1c' : 'black';\n var lineColor = is_hovered(d) ? 'black' : '#bdbdbd';\n var opacity = is_hovered(d) ? '1' : '0.4';\n d3.select(this).select('.path_label').attr('fill', textColor);\n d3.select(this).selectAll('line')\n .attr('stroke', lineColor)\n .attr('opacity', opacity);\n d3.select(this).selectAll('circle').attr('opacity', opacity);\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('g.path-selector')\n .each(function(d, i) {\n var textWeight = is_selected(d) ? 'bold' : 'normal';\n var lineColor = is_selected(d) ? 'black' : '#bdbdbd';\n var opacity = is_selected(d) ? '1' : '0.4';\n d3.select(this).select('.path_label')\n .attr('font-weight', textWeight);\n d3.select(this).selectAll('line')\n .attr('stroke', lineColor)\n .attr('opacity', opacity);\n d3.select(this).selectAll('circle').attr('opacity', opacity);\n });\n }\n\n highlight_paths_group\n .on('paths_changed.path-selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.path-selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.path-selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(diagram, paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n};\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i<N; ++i) {\n nodes[i] = dc_graph.node_object(i, {circle: \"A\", name: nodePrefix+dc_graph.node_name(i)});\n for(j=0; j<i; ++j)\n edges.push(dc_graph.edge_object(namef, i, j, {notLayout: true, undirected: true}));\n }\n if(type==='cliquestf')\n for(i = 0; i<N; ++i) {\n nodes[i+N] = dc_graph.node_object(i+N);\n nodes[i+2*N] = dc_graph.node_object(i+2*N);\n edges.push(dc_graph.edge_object(namef, i, i+N, {undirected: true}));\n edges.push(dc_graph.edge_object(namef, i, i+2*N, {undirected: true}));\n }\n break;\n case 'wheel':\n nodes = new Array(N);\n for(i = 0; i < N; ++i)\n nodes[i] = dc_graph.node_object(i, {name: nodePrefix+dc_graph.node_name(i)});\n edges = dc_graph.wheel_edges(namef, _.range(N), N*linkLength/2);\n var rimLength = edges[0].distance;\n for(i = 0; i < args[1]; ++i)\n for(j = 0; j < N; ++j) {\n var a = j, b = (j+1)%N, t;\n if(i%2 === 1) {\n t = a;\n a = b;\n b = t;\n }\n edges.push(dc_graph.edge_object(namef, a, b, {distance: rimLength, par: i+2}));\n }\n break;\n default:\n throw new Error(\"unknown generation type \"+type);\n }\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n};\n\ndc_graph.wheel_edges = function(namef, nindices, R) {\n var N = nindices.length;\n var edges = [];\n var strutSkip = Math.floor(N/2),\n rimLength = 2 * R * Math.sin(Math.PI / N),\n strutLength = 2 * R * Math.sin(strutSkip * Math.PI / N);\n for(var i = 0; i < N; ++i)\n edges.push(dc_graph.edge_object(namef, nindices[i], nindices[(i+1)%N], {distance: rimLength}));\n for(i = 0; i < N/2; ++i) {\n edges.push(dc_graph.edge_object(namef, nindices[i], nindices[(i+strutSkip)%N], {distance: strutLength}));\n if(N%2 && i != Math.floor(N/2))\n edges.push(dc_graph.edge_object(namef, nindices[i], nindices[(i+N-strutSkip)%N], {distance: strutLength}));\n }\n return edges;\n};\n\ndc_graph.random_graph = function(options) {\n options = Object.assign({\n ncolors: 5,\n ndashes: 4,\n nodeKey: 'key',\n edgeKey: 'key',\n sourceKey: 'sourcename',\n targetKey: 'targetname',\n colorTag: 'color',\n dashTag: 'dash',\n nodeKeyGen: function(i) { return 'n' + i; },\n edgeKeyGen: function(i) { return 'e' + i; },\n newComponentProb: 0.1,\n newNodeProb: 0.9,\n removeEdgeProb: 0.75,\n log: false\n }, options);\n if(isNaN(options.newNodeProb))\n options.newNodeProb = 0.9;\n if(options.newNodProb <= 0)\n options.newNodeProb = 0.1;\n var _nodes = [], _edges = [];\n function new_node() {\n var n = {};\n n[options.nodeKey] = options.nodeKeyGen(_nodes.length);\n n[options.colorTag] = Math.floor(Math.random()*options.ncolors);\n _nodes.push(n);\n return n;\n }\n function random_node() {\n return _nodes[Math.floor(Math.random()*_nodes.length)];\n }\n return {\n nodes: function() {\n return _nodes;\n },\n edges: function() {\n return _edges;\n },\n generate: function(N) {\n while(N-- > 0) {\n var choice = Math.random();\n var n1, n2;\n if(!_nodes.length || choice < options.newComponentProb)\n n1 = new_node();\n else\n n1 = random_node();\n if(choice < options.newNodeProb)\n n2 = new_node();\n else\n n2 = random_node();\n if(n1 && n2) {\n var edge = {};\n edge[options.edgeKey] = options.edgeKeyGen(_edges.length);\n edge[options.sourceKey] = n1[options.nodeKey];\n edge[options.targetKey] = n2[options.nodeKey];\n edge[options.dashTag] = Math.floor(Math.random()*options.ndashes);\n if(options.log)\n console.log(n1[options.nodeKey] + ' -> ' + n2[options.nodeKey]);\n _edges.push(edge);\n }\n }\n },\n remove: function(N) {\n while(N-- > 0) {\n var choice = Math.random();\n if(choice < options.removeEdgeProb)\n _edges.splice(Math.floor(Math.random()*_edges.length), 1);\n else {\n var n = _nodes[Math.floor(Math.random()*_nodes.length)];\n var eis = [];\n _edges.forEach(function(e, ei) {\n if(e[options.sourceKey] === n[options.nodeKey] ||\n e[options.targetKey] === n[options.nodeKey])\n eis.push(ei);\n });\n eis.reverse().forEach(function(ei) {\n _edges.splice(ei, 1);\n });\n }\n }\n }\n };\n};\n","dc_graph.supergraph = function(data, options) {\n if(!dc_graph.supergraph.pattern) {\n var mg = metagraph;\n var graph_and_subgraph = {\n nodes: {\n graph: mg.graph_pattern(options),\n sg: mg.subgraph_pattern(options),\n subgraph: mg.graph_pattern(options)\n },\n edges: {\n to_sg: {\n source: 'graph',\n target: 'sg',\n input: 'parent'\n },\n from_sg: {\n source: 'subgraph',\n target: 'sg',\n input: 'child'\n }\n }\n };\n dc_graph.supergraph.pattern = mg.compose(mg.graph_detect(graph_and_subgraph));\n }\n return dc_graph.supergraph.pattern.node('graph.Graph').value().create(data);\n};\n","var dont_use_key = deprecation_warning('dc_graph.line_breaks now takes a string - d.key behavior is deprecated and will be removed in a later version');\n\ndc_graph.line_breaks = function(charexp, max_line_length) {\n var regexp = new RegExp(charexp, 'g');\n return function(s) {\n if(typeof s === 'object') { // backward compatibility\n dont_use_key();\n s = s.key;\n }\n var result;\n var line = '', lines = [], part, i = 0;\n do {\n result = regexp.exec(s);\n if(result)\n part = s.slice(i, regexp.lastIndex);\n else\n part = s.slice(i);\n if(line.length + part.length > max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file -- GitLab