diff --git a/dist/index.html b/dist/index.html index 2e12c86..e1129d6 100644 --- a/dist/index.html +++ b/dist/index.html @@ -9,8 +9,8 @@ - - + + - - + + + iocaine diff --git a/dist/v-1459503555751/fonts/OpenSans-Bold.ttf b/dist/v-1460103845046/fonts/OpenSans-Bold.ttf similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-Bold.ttf rename to dist/v-1460103845046/fonts/OpenSans-Bold.ttf diff --git a/dist/v-1459503555751/fonts/OpenSans-CondLight.eot b/dist/v-1460103845046/fonts/OpenSans-CondLight.eot similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-CondLight.eot rename to dist/v-1460103845046/fonts/OpenSans-CondLight.eot diff --git a/dist/v-1459503555751/fonts/OpenSans-CondLight.svg b/dist/v-1460103845046/fonts/OpenSans-CondLight.svg similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-CondLight.svg rename to dist/v-1460103845046/fonts/OpenSans-CondLight.svg diff --git a/dist/v-1459503555751/fonts/OpenSans-CondLight.ttf b/dist/v-1460103845046/fonts/OpenSans-CondLight.ttf similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-CondLight.ttf rename to dist/v-1460103845046/fonts/OpenSans-CondLight.ttf diff --git a/dist/v-1459503555751/fonts/OpenSans-CondLight.woff b/dist/v-1460103845046/fonts/OpenSans-CondLight.woff similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-CondLight.woff rename to dist/v-1460103845046/fonts/OpenSans-CondLight.woff diff --git a/dist/v-1459503555751/fonts/OpenSans-Light.ttf b/dist/v-1460103845046/fonts/OpenSans-Light.ttf similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-Light.ttf rename to dist/v-1460103845046/fonts/OpenSans-Light.ttf diff --git a/dist/v-1459503555751/fonts/OpenSans-Regular.ttf b/dist/v-1460103845046/fonts/OpenSans-Regular.ttf similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-Regular.ttf rename to dist/v-1460103845046/fonts/OpenSans-Regular.ttf diff --git a/dist/v-1459503555751/fonts/OpenSans-Semibold.ttf b/dist/v-1460103845046/fonts/OpenSans-Semibold.ttf similarity index 100% rename from dist/v-1459503555751/fonts/OpenSans-Semibold.ttf rename to dist/v-1460103845046/fonts/OpenSans-Semibold.ttf diff --git a/dist/v-1459503555751/fonts/taiga.eot b/dist/v-1460103845046/fonts/taiga.eot similarity index 100% rename from dist/v-1459503555751/fonts/taiga.eot rename to dist/v-1460103845046/fonts/taiga.eot diff --git a/dist/v-1459503555751/fonts/taiga.svg b/dist/v-1460103845046/fonts/taiga.svg similarity index 100% rename from dist/v-1459503555751/fonts/taiga.svg rename to dist/v-1460103845046/fonts/taiga.svg diff --git a/dist/v-1459503555751/fonts/taiga.ttf b/dist/v-1460103845046/fonts/taiga.ttf similarity index 100% rename from dist/v-1459503555751/fonts/taiga.ttf rename to dist/v-1460103845046/fonts/taiga.ttf diff --git a/dist/v-1459503555751/fonts/taiga.woff b/dist/v-1460103845046/fonts/taiga.woff similarity index 100% rename from dist/v-1459503555751/fonts/taiga.woff rename to dist/v-1460103845046/fonts/taiga.woff diff --git a/dist/v-1459503555751/images/attachment-gallery.png b/dist/v-1460103845046/images/attachment-gallery.png similarity index 100% rename from dist/v-1459503555751/images/attachment-gallery.png rename to dist/v-1460103845046/images/attachment-gallery.png diff --git a/dist/v-1459503555751/images/backlog-empty.png b/dist/v-1460103845046/images/backlog-empty.png similarity index 100% rename from dist/v-1459503555751/images/backlog-empty.png rename to dist/v-1460103845046/images/backlog-empty.png diff --git a/dist/v-1459503555751/images/bg.png b/dist/v-1460103845046/images/bg.png similarity index 100% rename from dist/v-1459503555751/images/bg.png rename to dist/v-1460103845046/images/bg.png diff --git a/dist/v-1459503555751/images/discover.png b/dist/v-1460103845046/images/discover.png similarity index 100% rename from dist/v-1459503555751/images/discover.png rename to dist/v-1460103845046/images/discover.png diff --git a/dist/v-1459503555751/images/favicon.png b/dist/v-1460103845046/images/favicon.png similarity index 100% rename from dist/v-1459503555751/images/favicon.png rename to dist/v-1460103845046/images/favicon.png diff --git a/dist/v-1459503555751/images/invitation_bg.jpg b/dist/v-1460103845046/images/invitation_bg.jpg similarity index 100% rename from dist/v-1459503555751/images/invitation_bg.jpg rename to dist/v-1460103845046/images/invitation_bg.jpg diff --git a/dist/v-1459503555751/images/issues-empty.png b/dist/v-1460103845046/images/issues-empty.png similarity index 100% rename from dist/v-1459503555751/images/issues-empty.png rename to dist/v-1460103845046/images/issues-empty.png diff --git a/dist/v-1459503555751/images/logo-color.png b/dist/v-1460103845046/images/logo-color.png similarity index 100% rename from dist/v-1459503555751/images/logo-color.png rename to dist/v-1460103845046/images/logo-color.png diff --git a/dist/v-1459503555751/images/logo.png b/dist/v-1460103845046/images/logo.png similarity index 100% rename from dist/v-1459503555751/images/logo.png rename to dist/v-1460103845046/images/logo.png diff --git a/dist/v-1459503555751/images/looking-for-people.png b/dist/v-1460103845046/images/looking-for-people.png similarity index 100% rename from dist/v-1459503555751/images/looking-for-people.png rename to dist/v-1460103845046/images/looking-for-people.png diff --git a/dist/v-1459503555751/images/markitup/bg-container.png b/dist/v-1460103845046/images/markitup/bg-container.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-container.png rename to dist/v-1460103845046/images/markitup/bg-container.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-bbcode.png b/dist/v-1460103845046/images/markitup/bg-editor-bbcode.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-bbcode.png rename to dist/v-1460103845046/images/markitup/bg-editor-bbcode.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-dotclear.png b/dist/v-1460103845046/images/markitup/bg-editor-dotclear.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-dotclear.png rename to dist/v-1460103845046/images/markitup/bg-editor-dotclear.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-html.png b/dist/v-1460103845046/images/markitup/bg-editor-html.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-html.png rename to dist/v-1460103845046/images/markitup/bg-editor-html.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-json.png b/dist/v-1460103845046/images/markitup/bg-editor-json.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-json.png rename to dist/v-1460103845046/images/markitup/bg-editor-json.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-markdown.png b/dist/v-1460103845046/images/markitup/bg-editor-markdown.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-markdown.png rename to dist/v-1460103845046/images/markitup/bg-editor-markdown.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-textile.png b/dist/v-1460103845046/images/markitup/bg-editor-textile.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-textile.png rename to dist/v-1460103845046/images/markitup/bg-editor-textile.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-wiki.png b/dist/v-1460103845046/images/markitup/bg-editor-wiki.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-wiki.png rename to dist/v-1460103845046/images/markitup/bg-editor-wiki.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor-xml.png b/dist/v-1460103845046/images/markitup/bg-editor-xml.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor-xml.png rename to dist/v-1460103845046/images/markitup/bg-editor-xml.png diff --git a/dist/v-1459503555751/images/markitup/bg-editor.png b/dist/v-1460103845046/images/markitup/bg-editor.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bg-editor.png rename to dist/v-1460103845046/images/markitup/bg-editor.png diff --git a/dist/v-1459503555751/images/markitup/body.png b/dist/v-1460103845046/images/markitup/body.png similarity index 100% rename from dist/v-1459503555751/images/markitup/body.png rename to dist/v-1460103845046/images/markitup/body.png diff --git a/dist/v-1459503555751/images/markitup/bold.png b/dist/v-1460103845046/images/markitup/bold.png similarity index 100% rename from dist/v-1459503555751/images/markitup/bold.png rename to dist/v-1460103845046/images/markitup/bold.png diff --git a/dist/v-1459503555751/images/markitup/clean.png b/dist/v-1460103845046/images/markitup/clean.png similarity index 100% rename from dist/v-1459503555751/images/markitup/clean.png rename to dist/v-1460103845046/images/markitup/clean.png diff --git a/dist/v-1459503555751/images/markitup/code.png b/dist/v-1460103845046/images/markitup/code.png similarity index 100% rename from dist/v-1459503555751/images/markitup/code.png rename to dist/v-1460103845046/images/markitup/code.png diff --git a/dist/v-1459503555751/images/markitup/h1.png b/dist/v-1460103845046/images/markitup/h1.png similarity index 100% rename from dist/v-1459503555751/images/markitup/h1.png rename to dist/v-1460103845046/images/markitup/h1.png diff --git a/dist/v-1459503555751/images/markitup/h2.png b/dist/v-1460103845046/images/markitup/h2.png similarity index 100% rename from dist/v-1459503555751/images/markitup/h2.png rename to dist/v-1460103845046/images/markitup/h2.png diff --git a/dist/v-1459503555751/images/markitup/h3.png b/dist/v-1460103845046/images/markitup/h3.png similarity index 100% rename from dist/v-1459503555751/images/markitup/h3.png rename to dist/v-1460103845046/images/markitup/h3.png diff --git a/dist/v-1459503555751/images/markitup/h4.png b/dist/v-1460103845046/images/markitup/h4.png similarity index 100% rename from dist/v-1459503555751/images/markitup/h4.png rename to dist/v-1460103845046/images/markitup/h4.png diff --git a/dist/v-1459503555751/images/markitup/h5.png b/dist/v-1460103845046/images/markitup/h5.png similarity index 100% rename from dist/v-1459503555751/images/markitup/h5.png rename to dist/v-1460103845046/images/markitup/h5.png diff --git a/dist/v-1459503555751/images/markitup/h6.png b/dist/v-1460103845046/images/markitup/h6.png similarity index 100% rename from dist/v-1459503555751/images/markitup/h6.png rename to dist/v-1460103845046/images/markitup/h6.png diff --git a/dist/v-1459503555751/images/markitup/handle.png b/dist/v-1460103845046/images/markitup/handle.png similarity index 100% rename from dist/v-1459503555751/images/markitup/handle.png rename to dist/v-1460103845046/images/markitup/handle.png diff --git a/dist/v-1459503555751/images/markitup/help.png b/dist/v-1460103845046/images/markitup/help.png similarity index 100% rename from dist/v-1459503555751/images/markitup/help.png rename to dist/v-1460103845046/images/markitup/help.png diff --git a/dist/v-1459503555751/images/markitup/image.png b/dist/v-1460103845046/images/markitup/image.png similarity index 100% rename from dist/v-1459503555751/images/markitup/image.png rename to dist/v-1460103845046/images/markitup/image.png diff --git a/dist/v-1459503555751/images/markitup/italic.png b/dist/v-1460103845046/images/markitup/italic.png similarity index 100% rename from dist/v-1459503555751/images/markitup/italic.png rename to dist/v-1460103845046/images/markitup/italic.png diff --git a/dist/v-1459503555751/images/markitup/jaysalvat.png b/dist/v-1460103845046/images/markitup/jaysalvat.png similarity index 100% rename from dist/v-1459503555751/images/markitup/jaysalvat.png rename to dist/v-1460103845046/images/markitup/jaysalvat.png diff --git a/dist/v-1459503555751/images/markitup/link.png b/dist/v-1460103845046/images/markitup/link.png similarity index 100% rename from dist/v-1459503555751/images/markitup/link.png rename to dist/v-1460103845046/images/markitup/link.png diff --git a/dist/v-1459503555751/images/markitup/list-bullet.png b/dist/v-1460103845046/images/markitup/list-bullet.png similarity index 100% rename from dist/v-1459503555751/images/markitup/list-bullet.png rename to dist/v-1460103845046/images/markitup/list-bullet.png diff --git a/dist/v-1459503555751/images/markitup/list-numeric.png b/dist/v-1460103845046/images/markitup/list-numeric.png similarity index 100% rename from dist/v-1459503555751/images/markitup/list-numeric.png rename to dist/v-1460103845046/images/markitup/list-numeric.png diff --git a/dist/v-1459503555751/images/markitup/markitup.png b/dist/v-1460103845046/images/markitup/markitup.png similarity index 100% rename from dist/v-1459503555751/images/markitup/markitup.png rename to dist/v-1460103845046/images/markitup/markitup.png diff --git a/dist/v-1459503555751/images/markitup/menu.png b/dist/v-1460103845046/images/markitup/menu.png similarity index 100% rename from dist/v-1459503555751/images/markitup/menu.png rename to dist/v-1460103845046/images/markitup/menu.png diff --git a/dist/v-1459503555751/images/markitup/picture.png b/dist/v-1460103845046/images/markitup/picture.png similarity index 100% rename from dist/v-1459503555751/images/markitup/picture.png rename to dist/v-1460103845046/images/markitup/picture.png diff --git a/dist/v-1459503555751/images/markitup/preview.png b/dist/v-1460103845046/images/markitup/preview.png similarity index 100% rename from dist/v-1459503555751/images/markitup/preview.png rename to dist/v-1460103845046/images/markitup/preview.png diff --git a/dist/v-1459503555751/images/markitup/preview_ico.png b/dist/v-1460103845046/images/markitup/preview_ico.png similarity index 100% rename from dist/v-1459503555751/images/markitup/preview_ico.png rename to dist/v-1460103845046/images/markitup/preview_ico.png diff --git a/dist/v-1459503555751/images/markitup/quotes.png b/dist/v-1460103845046/images/markitup/quotes.png similarity index 100% rename from dist/v-1459503555751/images/markitup/quotes.png rename to dist/v-1460103845046/images/markitup/quotes.png diff --git a/dist/v-1459503555751/images/markitup/stroke.png b/dist/v-1460103845046/images/markitup/stroke.png similarity index 100% rename from dist/v-1459503555751/images/markitup/stroke.png rename to dist/v-1460103845046/images/markitup/stroke.png diff --git a/dist/v-1459503555751/images/markitup/submenu.png b/dist/v-1460103845046/images/markitup/submenu.png similarity index 100% rename from dist/v-1459503555751/images/markitup/submenu.png rename to dist/v-1460103845046/images/markitup/submenu.png diff --git a/dist/v-1459503555751/images/menu-vert.png b/dist/v-1460103845046/images/menu-vert.png similarity index 100% rename from dist/v-1459503555751/images/menu-vert.png rename to dist/v-1460103845046/images/menu-vert.png diff --git a/dist/v-1459503555751/images/menu.png b/dist/v-1460103845046/images/menu.png similarity index 100% rename from dist/v-1459503555751/images/menu.png rename to dist/v-1460103845046/images/menu.png diff --git a/dist/v-1459503555751/images/notification-decoration.png b/dist/v-1460103845046/images/notification-decoration.png similarity index 100% rename from dist/v-1459503555751/images/notification-decoration.png rename to dist/v-1460103845046/images/notification-decoration.png diff --git a/dist/v-1459503555751/images/project-logos/project-logo-01.png b/dist/v-1460103845046/images/project-logos/project-logo-01.png similarity index 100% rename from dist/v-1459503555751/images/project-logos/project-logo-01.png rename to dist/v-1460103845046/images/project-logos/project-logo-01.png diff --git a/dist/v-1459503555751/images/project-logos/project-logo-02.png b/dist/v-1460103845046/images/project-logos/project-logo-02.png similarity index 100% rename from dist/v-1459503555751/images/project-logos/project-logo-02.png rename to dist/v-1460103845046/images/project-logos/project-logo-02.png diff --git a/dist/v-1459503555751/images/project-logos/project-logo-03.png b/dist/v-1460103845046/images/project-logos/project-logo-03.png similarity index 100% rename from dist/v-1459503555751/images/project-logos/project-logo-03.png rename to dist/v-1460103845046/images/project-logos/project-logo-03.png diff --git a/dist/v-1459503555751/images/project-logos/project-logo-04.png b/dist/v-1460103845046/images/project-logos/project-logo-04.png similarity index 100% rename from dist/v-1459503555751/images/project-logos/project-logo-04.png rename to dist/v-1460103845046/images/project-logos/project-logo-04.png diff --git a/dist/v-1459503555751/images/project-logos/project-logo-05.png b/dist/v-1460103845046/images/project-logos/project-logo-05.png similarity index 100% rename from dist/v-1459503555751/images/project-logos/project-logo-05.png rename to dist/v-1460103845046/images/project-logos/project-logo-05.png diff --git a/dist/v-1459503555751/images/quote.png b/dist/v-1460103845046/images/quote.png similarity index 100% rename from dist/v-1459503555751/images/quote.png rename to dist/v-1460103845046/images/quote.png diff --git a/dist/v-1459503555751/images/search-empty.png b/dist/v-1460103845046/images/search-empty.png similarity index 100% rename from dist/v-1459503555751/images/search-empty.png rename to dist/v-1460103845046/images/search-empty.png diff --git a/dist/v-1459503555751/images/sprint-empty.png b/dist/v-1460103845046/images/sprint-empty.png similarity index 100% rename from dist/v-1459503555751/images/sprint-empty.png rename to dist/v-1460103845046/images/sprint-empty.png diff --git a/dist/v-1459503555751/images/unnamed.png b/dist/v-1460103845046/images/unnamed.png similarity index 100% rename from dist/v-1459503555751/images/unnamed.png rename to dist/v-1460103845046/images/unnamed.png diff --git a/dist/v-1459503555751/images/user-noimage.png b/dist/v-1460103845046/images/user-noimage.png similarity index 100% rename from dist/v-1459503555751/images/user-noimage.png rename to dist/v-1460103845046/images/user-noimage.png diff --git a/dist/v-1459503555751/js/app-loader.js b/dist/v-1460103845046/js/app-loader.js similarity index 98% rename from dist/v-1459503555751/js/app-loader.js rename to dist/v-1460103845046/js/app-loader.js index 5c19b4a..b05f716 100644 --- a/dist/v-1459503555751/js/app-loader.js +++ b/dist/v-1460103845046/js/app-loader.js @@ -1,7 +1,7 @@ (function() { var loadPlugin, loadPlugins, loadStylesheet, promise; - window._version = "v-1459503555751"; + window._version = "v-1460103845046"; window.taigaConfig = { "api": "http://localhost:8000/api/v1/", diff --git a/dist/v-1459503555751/js/app.js b/dist/v-1460103845046/js/app.js similarity index 96% rename from dist/v-1459503555751/js/app.js rename to dist/v-1460103845046/js/app.js index cb19686..98fb561 100644 --- a/dist/v-1459503555751/js/app.js +++ b/dist/v-1460103845046/js/app.js @@ -10,7 +10,7 @@ this.scope.oldSelectedStatuses=selectedStatuses,this.scope.filtersQOld=this.scop var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs1,this.params=params1,this.q=q,this.location=location,this.appMetaService=appMetaService,this.navUrls=navUrls,this.events=events,this.analytics=analytics,this.translate=translate,bindMethods(this),this.scope.sectionName=this.translate.instant("KANBAN.SECTION_NAME"),this.scope.statusViewModes={},this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("KANBAN.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.translate.instant("KANBAN.PAGE_DESCRIPTION",{projectName:_this.scope.project.name,projectDescription:_this.scope.project.description}),_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(KanbanController,superClass),KanbanController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","tgAppMetaService","$tgNavUrls","$tgEvents","$tgAnalytics","$translate"],KanbanController.prototype.initializeEventHandlers=function(){return this.scope.$on("usform:new:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors(),_this.analytics.trackEvent("userstory","create","create userstory on kanban",1)}}(this)),this.scope.$on("usform:bulk:success",function(_this){return function(){return _this.loadUserstories(),_this.analytics.trackEvent("userstory","create","bulk create userstory on kanban",1)}}(this)),this.scope.$on("usform:edit:success",function(_this){return function(){return _this.loadUserstories(),_this.refreshTagsColors()}}(this)),this.scope.$on("assigned-to:added",this.onAssignedToChanged),this.scope.$on("kanban:us:move",this.moveUs),this.scope.$on("kanban:show-userstories-for-status",this.loadUserStoriesForStatus),this.scope.$on("kanban:hide-userstories-for-status",this.hideUserStoriesForStatus)},KanbanController.prototype.addNewUs=function(type,statusId){switch(type){case"standard":return this.rootscope.$broadcast("usform:new",this.scope.projectId,statusId,this.scope.usStatusList);case"bulk":return this.rootscope.$broadcast("usform:bulk",this.scope.projectId,statusId)}},KanbanController.prototype.changeUsAssignedTo=function(us){return this.rootscope.$broadcast("assigned-to:add",us)},KanbanController.prototype.onAssignedToChanged=function(ctx,userid,us){var promise;return us.assigned_to=userid,promise=this.repo.save(us),promise.then(null,function(){return console.log("FAIL")})},KanbanController.prototype.refreshTagsColors=function(){return this.rs.projects.tagsColors(this.scope.projectId).then(function(_this){return function(tags_colors){return _this.scope.project.tags_colors=tags_colors}}(this))},KanbanController.prototype.loadUserstories=function(){var params,promise;return params={status__is_archived:!1},promise=this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){var i,j,k,len,len1,len2,ref,ref1,ref2,status,us,usByStatus,us_archived;for(_this.scope.userstories=userstories,usByStatus=_.groupBy(userstories,"status"),us_archived=[],ref=_this.scope.usStatusList,i=0,len=ref.length;len>i;i++){if(status=ref[i],null==usByStatus[status.id]&&(usByStatus[status.id]=[]),null!=_this.scope.usByStatus)for(ref1=_this.scope.usByStatus[status.id],j=0,len1=ref1.length;len1>j;j++)us=ref1[j],us.status!==status.id&&us_archived.push(us);if(status.is_archived&&null!=_this.scope.usByStatus&&0!==_this.scope.usByStatus[status.id].length)for(ref2=_this.scope.usByStatus[status.id].concat(us_archived),k=0,len2=ref2.length;len2>k;k++)us=ref2[k],us.status===status.id&&usByStatus[status.id].push(us);usByStatus[status.id]=_.sortBy(usByStatus[status.id],"kanban_order")}return 0===userstories.length&&(status=_this.scope.usStatusList[0],usByStatus[status.id].push({isPlaceholder:!0})),_this.scope.usByStatus=usByStatus,scopeDefer(_this.scope,function(){return _this.scope.$broadcast("userstories:loaded",userstories)}),userstories}}(this)),promise.then(function(_this){return function(){return _this.scope.$broadcast("redraw:wip")}}(this)),promise},KanbanController.prototype.loadUserStoriesForStatus=function(ctx,statusId){var params;return params={status:statusId},this.rs.userstories.listAll(this.scope.projectId,params).then(function(_this){return function(userstories){return _this.scope.usByStatus[statusId]=_.sortBy(userstories,"kanban_order"),_this.scope.$broadcast("kanban:shown-userstories-for-status",statusId,userstories),userstories}}(this))},KanbanController.prototype.hideUserStoriesForStatus=function(ctx,statusId){return this.scope.usByStatus[statusId]=[],this.scope.$broadcast("kanban:hidden-userstories-for-status",statusId)},KanbanController.prototype.loadKanban=function(){return this.q.all([this.refreshTagsColors(),this.loadUserstories()])},KanbanController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_kanban_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.projectId=project.id,_this.scope.points=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(project.points,function(x){return x.id}),_this.scope.usStatusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.generateStatusViewModes(),_this.scope.$emit("project:loaded",project),project}}(this))},KanbanController.prototype.initializeSubscription=function(){var routingKey1;return routingKey1="changes.project."+this.scope.projectId+".userstories",this.events.subscribe(this.scope,routingKey1,function(_this){return function(message){return _this.loadUserstories()}}(this))},KanbanController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.members,project.roles),_this.initializeSubscription(),_this.loadKanban()}}(this))},KanbanController.prototype.generateStatusViewModes=function(){var i,len,mode,ref,status,storedStatusViewModes;for(storedStatusViewModes=this.rs.kanban.getStatusViewModes(this.scope.projectId),this.scope.statusViewModes={},ref=this.scope.usStatusList,i=0,len=ref.length;len>i;i++)status=ref[i],mode=storedStatusViewModes[status.id]||defaultViewMode,this.scope.statusViewModes[status.id]=mode;return this.storeStatusViewModes()},KanbanController.prototype.storeStatusViewModes=function(){return this.rs.kanban.storeStatusViewModes(this.scope.projectId,this.scope.statusViewModes)},KanbanController.prototype.updateStatusViewMode=function(statusId,newViewMode){return this.scope.statusViewModes[statusId]=newViewMode,this.storeStatusViewModes()},KanbanController.prototype.isMaximized=function(statusId){var mode;return mode=this.scope.statusViewModes[statusId]||defaultViewMode,"maximized"===mode},KanbanController.prototype.isMinimized=function(statusId){var mode;return mode=this.scope.statusViewModes[statusId]||defaultViewMode,"minimized"===mode},KanbanController.prototype.prepareBulkUpdateData=function(uses,field){return null==field&&(field="kanban_order"),_.map(uses,function(x){return{us_id:x.id,order:x[field]}})},KanbanController.prototype.resortUserStories=function(uses){var i,index,item,items,len;for(items=[],index=i=0,len=uses.length;len>i;index=++i)item=uses[index],item.kanban_order=index,item.isModified()&&items.push(item);return items},KanbanController.prototype.moveUs=function(ctx,us,oldStatusId,newStatusId,index){var itemsToSave,promise,r;return oldStatusId!==newStatusId?(r=this.scope.usByStatus[oldStatusId].indexOf(us),this.scope.usByStatus[oldStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us),us.status=newStatusId):(r=this.scope.usByStatus[newStatusId].indexOf(us),this.scope.usByStatus[newStatusId].splice(r,1),this.scope.usByStatus[newStatusId].splice(index,0,us)),itemsToSave=this.resortUserStories(this.scope.usByStatus[newStatusId]),this.scope.usByStatus[newStatusId]=_.sortBy(this.scope.usByStatus[newStatusId],"kanban_order"),promise=this.repo.save(us),promise=promise.then(function(_this){return function(){var data;return itemsToSave=_.reject(itemsToSave,{id:us.id}),data=_this.prepareBulkUpdateData(itemsToSave),_this.rs.userstories.bulkUpdateKanbanOrder(us.project,data).then(function(){return itemsToSave})}}(this))},KanbanController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("KanbanController",KanbanController),KanbanDirective=function($repo,$rootscope){var link;return link=function($scope,$el,$attrs){var tableBodyDom;return tableBodyDom=$el.find(".kanban-table-body"),tableBodyDom.on("scroll",function(event){var tableHeaderDom,target;return target=angular.element(event.currentTarget),tableHeaderDom=$el.find(".kanban-table-header .kanban-table-inner"),tableHeaderDom.css("left",-1*target.scrollLeft())}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanban",["$tgRepo","$rootScope",KanbanDirective]),KanbanArchivedStatusHeaderDirective=function($rootscope,$translate){var hideArchivedText,link,showArchivedText;return showArchivedText=$translate.instant("KANBAN.ACTION_SHOW_ARCHIVED"),hideArchivedText=$translate.instant("KANBAN.ACTION_HIDE_ARCHIVED"),link=function($scope,$el,$attrs){var hidden,status;return status=$scope.$eval($attrs.tgKanbanArchivedStatusHeader),hidden=!0,$scope["class"]="icon-open-eye",$scope.title=showArchivedText,$el.on("click",function(event){return hidden=!hidden,$scope.$apply(function(){return hidden?($scope["class"]="icon-open-eye",$scope.title=showArchivedText,$rootscope.$broadcast("kanban:hide-userstories-for-status",status.id)):($scope["class"]="icon-closed-eye",$scope.title=hideArchivedText,$rootscope.$broadcast("kanban:show-userstories-for-status",status.id))})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusHeader",["$rootScope","$translate",KanbanArchivedStatusHeaderDirective]),KanbanArchivedStatusIntroDirective=function($translate){var link,userStories;return userStories=[],link=function($scope,$el,$attrs){var hiddenUserStoriexText,status,updateIntroText;return hiddenUserStoriexText=$translate.instant("KANBAN.HIDDEN_USER_STORIES"),status=$scope.$eval($attrs.tgKanbanArchivedStatusIntro),$el.text(hiddenUserStoriexText),updateIntroText=function(){return userStories.length>0?$el.text(""):$el.text(hiddenUserStoriexText)},$scope.$on("kanban:us:move",function(ctx,itemUs,oldStatusId,newStatusId,itemIndex){var r;return status.id===newStatusId?status.id===oldStatusId?(r=userStories.indexOf(itemUs),userStories.splice(r,1),userStories.splice(itemIndex,0,itemUs)):(itemUs.isArchived=!0,userStories.splice(itemIndex,0,itemUs)):status.id===oldStatusId&&(itemUs.isArchived=!1,r=userStories.indexOf(itemUs),userStories.splice(r,1)),updateIntroText()}),$scope.$on("kanban:shown-userstories-for-status",function(ctx,statusId,userStoriesLoaded){return statusId===status.id?(userStories=_.filter(userStoriesLoaded,function(us){return us.status===status.id}),updateIntroText()):void 0}),$scope.$on("kanban:hidden-userstories-for-status",function(ctx,statusId){return statusId===status.id?(userStories=[],updateIntroText()):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanArchivedStatusIntro",["$translate",KanbanArchivedStatusIntroDirective]),KanbanUserstoryDirective=function($rootscope,$loading,$rs,$rs2){var link;return link=function($scope,$el,$attrs,$model){return $el.disableSelection(),$scope.$watch("us",function(us){return us.is_blocked&&!$el.hasClass("blocked")?$el.addClass("blocked"):!us.is_blocked&&$el.hasClass("blocked")?$el.removeClass("blocked"):void 0}),$el.on("click",".icon-edit",function(event){var currentLoading,target,us;if(!$el.find(".icon-edit").hasClass("noclick"))return target=$(event.target),currentLoading=$loading().target(target).timeout(200).removeClasses("icon-edit").start(),us=$model.$modelValue,$rs.userstories.getByRef(us.project,us.ref).then(function(_this){return function(editingUserStory){return $rs2.attachments.list("us",us.id,us.project).then(function(attachments){return $rootscope.$broadcast("usform:edit",editingUserStory,attachments.toJS()),currentLoading.finish()})}}(this))}),$scope.getTemplateUrl=function(){return $scope.us.isPlaceholder?"common/components/kanban-placeholder.html":"kanban/kanban-task.html"},$scope.$on("$destroy",function(){return $el.off()})},{template:'',link:link,require:"ngModel"}},module.directive("tgKanbanUserstory",["$rootScope","$tgLoading","$tgResources","tgResources",KanbanUserstoryDirective]),KanbanSquishColumnDirective=function(rs){var link;return link=function($scope,$el,$attrs){var updateTableWidth;return $scope.$on("project:loaded",function(event,project){return $scope.folds=rs.kanban.getStatusColumnModes(project.id),updateTableWidth()}),$scope.foldStatus=function(status){$scope.folds[status.id]=!$scope.folds[status.id],rs.kanban.storeStatusColumnModes($scope.projectId,$scope.folds),updateTableWidth()},updateTableWidth=function(){var columnWidths,totalWidth;return columnWidths=_.map($scope.usStatusList,function(status){return $scope.folds[status.id]?40:310}),totalWidth=_.reduce(columnWidths,function(total,width){return total+width}),$el.find(".kanban-table-inner").css("width",totalWidth)}},{link:link}},module.directive("tgKanbanSquishColumn",["$tgResources",KanbanSquishColumnDirective]),KanbanWipLimitDirective=function(){var link;return link=function($scope,$el,$attrs){var redrawWipLimit,status;return $el.disableSelection(),status=$scope.$eval($attrs.tgKanbanWipLimit),redrawWipLimit=function(_this){return function(){return $el.find(".kanban-wip-limit").remove(),timeout(200,function(){var element;return element=$el.find(".kanban-task")[status.wip_limit],element?angular.element(element).before(""):void 0})}}(this),status&&!status.is_archived&&($scope.$on("redraw:wip",redrawWipLimit),$scope.$on("kanban:us:move",redrawWipLimit),$scope.$on("usform:new:success",redrawWipLimit),$scope.$on("usform:bulk:success",redrawWipLimit)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanWipLimit",KanbanWipLimitDirective),KanbanUserDirective=function($log,$compile,$translate){var clickable,link,template;return template=_.template('\n class="not-clickable"<% } %>>\n \n \n'),clickable=!1,link=function($scope,$el,$attrs,$model){var render,username_label,wtid;return username_label=$el.parent().find("a.task-assigned"),username_label.addClass("not-clickable"),$attrs.tgKanbanUserAvatar?(wtid=$scope.$watch($attrs.tgKanbanUserAvatar,function(v){var user;return null==$scope.usersById?($log.error("KanbanUserDirective requires userById set in scope."),wtid()):(user=$scope.usersById[v],render(user))}),render=function(user){var ctx,html;return ctx=void 0===user?{name:$translate.instant("COMMON.ASSIGNED_TO.NOT_ASSIGNED"),imgurl:"/"+window._version+"/images/unnamed.png",clickable:clickable}:{name:user.full_name_display,imgurl:user.photo,clickable:clickable},html=$compile(template(ctx))($scope),$el.html(html),username_label.text(ctx.name)},bindOnce($scope,"project",function(project){return project.my_permissions.indexOf("modify_us")>-1?(clickable=!0,$el.on("click",function(_this){return function(event){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)}}(this)),username_label.removeClass("not-clickable"),username_label.on("click",function(event){var $ctrl,us;if(!$el.find("a").hasClass("noclick"))return us=$model.$modelValue,$ctrl=$el.controller(),$ctrl.changeUsAssignedTo(us)})):void 0}),$scope.$on("$destroy",function(){return $el.off()})):$log.error("KanbanUserDirective: no attr is defined")},{link:link,require:"ngModel"}},module.directive("tgKanbanUserAvatar",["$log","$compile","$translate",KanbanUserDirective])}.call(this),function(){var KanbanSortableDirective,bindOnce,groupBy,mixOf,module,scopeDefer,taiga,timeout,toggleText;taiga=this.taiga,mixOf=this.taiga.mixOf,toggleText=this.taiga.toggleText,scopeDefer=this.taiga.scopeDefer,bindOnce=this.taiga.bindOnce,groupBy=this.taiga.groupBy,timeout=this.taiga.timeout,module=angular.module("taigaKanban"),KanbanSortableDirective=function($repo,$rs,$rootscope){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,"project",function(project){var deleteElement,itemEl,newParentScope,oldParentScope,tdom;if(project.my_permissions.indexOf("modify_us")>-1)return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el,deleteElement=function(itemEl){return itemEl.scope().$destroy(),itemEl.off(),itemEl.remove()},tdom.sortable({handle:".kanban-task-inner",dropOnEmpty:!0,connectWith:".kanban-uses-box",revert:400}),tdom.on("sortstop",function(event,ui){var itemIndex,itemUs,newStatusId,oldStatusId,parentEl;return parentEl=ui.item.parent(),itemEl=ui.item,itemUs=itemEl.scope().us,itemIndex=itemEl.index(),newParentScope=parentEl.scope(),newStatusId=newParentScope.s.id,oldStatusId=oldParentScope.s.id,newStatusId!==oldStatusId&&deleteElement(itemEl),$scope.$apply(function(){return $rootscope.$broadcast("kanban:us:move",itemUs,itemUs.status,newStatusId,itemIndex)}),ui.item.find("a").removeClass("noclick")}),tdom.on("sortstart",function(event,ui){return oldParentScope=ui.item.parent().scope(),ui.item.find("a").addClass("noclick")})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgKanbanSortable",["$tgRepo","$tgResources","$rootScope",KanbanSortableDirective])}.call(this),function(){var IssueDetailController,IssuePriorityButtonDirective,IssueSeverityButtonDirective,IssueStatusButtonDirective,IssueStatusDisplayDirective,IssueTypeButtonDirective,PromoteIssueToUsButtonDirective,bindMethods,bindOnce,groupBy,joinStr,mixOf,module,taiga,toString,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaIssues"),IssueDetailController=function(superClass){function IssueDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appMetaService,analytics,navUrls,translate){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appMetaService=appMetaService,this.analytics=analytics,this.navUrls=navUrls,this.translate=translate,bindMethods(this),this.scope.issueRef=this.params.issueref,this.scope.sectionName=this.translate.instant("ISSUES.SECTION_NAME"),this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this._setMeta(),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(IssueDetailController,superClass),IssueDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","tgAppMetaService","$tgAnalytics","$tgNavUrls","$translate"],IssueDetailController.prototype._setMeta=function(){var description,ref,ref1,ref2,ref3,title;return title=this.translate.instant("ISSUE.PAGE_TITLE",{issueRef:"#"+this.scope.issue.ref,issueSubject:this.scope.issue.subject,projectName:this.scope.project.name}),description=this.translate.instant("ISSUE.PAGE_DESCRIPTION",{issueStatus:(null!=(ref=this.scope.statusById[this.scope.issue.status])?ref.name:void 0)||"--",issueType:(null!=(ref1=this.scope.typeById[this.scope.issue.type])?ref1.name:void 0)||"--",issueSeverity:(null!=(ref2=this.scope.severityById[this.scope.issue.severity])?ref2.name:void 0)||"--",issuePriority:(null!=(ref3=this.scope.priorityById[this.scope.issue.priority])?ref3.name:void 0)||"--",issueDescription:angular.element(this.scope.issue.description_html||"").text()}),this.appMetaService.setAll(title,description)},IssueDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on issue",1)}}(this)),this.scope.$on("promote-issue-to-us:success",function(_this){return function(){return _this.analytics.trackEvent("issue","promoteToUserstory","promote issue to userstory",1),_this.rootscope.$broadcast("object:updated"),_this.loadIssue()}}(this)),this.scope.$on("comment:new",function(_this){return function(){return _this.loadIssue()}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("object:updated")}}(this))},IssueDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.project.is_issues_activated?this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-issues",ctx):this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx)},IssueDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.issue_statuses,_this.scope.statusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.typeById=groupBy(project.issue_types,function(x){return x.id}),_this.scope.typeList=_.sortBy(project.issue_types,"order"),_this.scope.severityList=project.severities,_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.priorityList=project.priorities,_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),project}}(this))},IssueDetailController.prototype.loadIssue=function(){return this.rs.issues.getByRef(this.scope.projectId,this.params.issueref).then(function(_this){return function(issue){var ctx,ref,ref1;return _this.scope.issue=issue,_this.scope.issueId=issue.id,_this.scope.commentModel=issue,null!=(null!=(ref=_this.scope.issue.neighbors.previous)?ref.ref:void 0)&&(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-issues-detail",ctx)),null!=(null!=(ref1=_this.scope.issue.neighbors.next)?ref1.ref:void 0)?(ctx={project:_this.scope.project.slug,ref:_this.scope.issue.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-issues-detail",ctx)):void 0}}(this))},IssueDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.members,project.roles),_this.loadIssue()}}(this))},IssueDetailController.prototype.onUpvote=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadIssue(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.issues.upvote(this.scope.issueId).then(onSuccess,onError)},IssueDetailController.prototype.onDownvote=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadIssue(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.issues.downvote(this.scope.issueId).then(onSuccess,onError)},IssueDetailController.prototype.onWatch=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadIssue(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.issues.watch(this.scope.issueId).then(onSuccess,onError)},IssueDetailController.prototype.onUnwatch=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadIssue(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.issues.unwatch(this.scope.issueId).then(onSuccess,onError)},IssueDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("IssueDetailController",IssueDetailController),IssueStatusDisplayDirective=function($template,$compile){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(issue){var html,status;return status=$scope.statusById[issue.status],html=template({is_closed:status.is_closed,status:status}),html=$compile(html)($scope),$el.html(html)},$scope.$watch($attrs.ngModel,function(issue){return null!=issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusDisplay",["$tgTemplate","$compile",IssueStatusDisplayDirective]),IssueStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template,$compile){var link,template;return template=$template.get("issue/issues-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(_this){return function(issue){var html,status;return status=$scope.statusById[issue.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),html=$compile(html)($scope),$el.html(html)}}(this),save=$qqueue.bindAdd(function(_this){return function(statusId){var currentLoading,issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.status=statusId,currentLoading=$loading().target($el).start(),onSuccess=function(){return $model.$setViewValue(issue),$rootScope.$broadcast("object:updated"),currentLoading.finish()},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),currentLoading.finish()},$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".js-edit-status",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate","$compile",IssueStatusButtonDirective]),IssueTypeButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template,$compile){var link,template;return template=$template.get("issue/issue-type-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(_this){return function(issue){var html,type;return type=$scope.typeById[issue.type],html=template({type:type,typees:$scope.typeList,editable:isEditable()}),html=$compile(html)($scope),$el.html(html)}}(this),save=$qqueue.bindAdd(function(_this){return function(type){var currentLoading,issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.type=type,currentLoading=$loading().target($el.find(".level-name")).start(),onSuccess=function(){return $model.$setViewValue(issue),$rootScope.$broadcast("object:updated"),currentLoading.finish()},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),currentLoading.finish()},$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".type-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-type").popover().open():void 0}),$el.on("click",".type",function(event){var target,type;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),type=target.data("type-id"),save(type)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueTypeButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate","$compile",IssueTypeButtonDirective]),IssueSeverityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template,$compile){var link,template;return template=$template.get("issue/issue-severity-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(_this){return function(issue){var html,severity;return severity=$scope.severityById[issue.severity],html=template({severity:severity,severityes:$scope.severityList,editable:isEditable()}),html=$compile(html)($scope),$el.html(html)}}(this),save=$qqueue.bindAdd(function(_this){return function(severity){var currentLoading,issue,onError,onSuccess;return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.severity=severity,currentLoading=$loading().target($el.find(".level-name")).start(),onSuccess=function(){return $model.$setViewValue(issue),$rootScope.$broadcast("object:updated"),currentLoading.finish()},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),currentLoading.finish()},$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".severity-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-severity").popover().open():void 0}),$el.on("click",".severity",function(event){var severity,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),severity=target.data("severity-id"),save(severity)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssueSeverityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate","$compile",IssueSeverityButtonDirective]),IssuePriorityButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template,$compile){var link,template;return template=$template.get("issue/issue-priority-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_issue")},render=function(_this){return function(issue){var html,priority;return priority=$scope.priorityById[issue.priority],html=template({priority:priority,priorityes:$scope.priorityList,editable:isEditable()}),html=$compile(html)($scope),$el.html(html)}}(this),save=$qqueue.bindAdd(function(_this){return function(priority){var currentLoading,issue,onError,onSuccess; return $.fn.popover().closeAll(),issue=$model.$modelValue.clone(),issue.priority=priority,currentLoading=$loading().target($el.find(".level-name")).start(),onSuccess=function(){return $model.$setViewValue(issue),$rootScope.$broadcast("object:updated"),currentLoading.finish()},onError=function(){return $confirm.notify("error"),issue.revert(),$model.$setViewValue(issue),currentLoading.finish()},$repo.save(issue).then(onSuccess,onError)}}(this)),$el.on("click",".priority-data",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-priority").popover().open():void 0}),$el.on("click",".priority",function(event){var priority,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),priority=target.data("priority-id"),save(priority)):void 0}),$scope.$watch($attrs.ngModel,function(issue){return issue?render(issue):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgIssuePriorityButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate","$compile",IssuePriorityButtonDirective]),PromoteIssueToUsButtonDirective=function($rootScope,$repo,$confirm,$qqueue,$translate){var link;return link=function($scope,$el,$attrs,$model){var save;return save=$qqueue.bindAdd(function(_this){return function(issue,askResponse){var data,onError,onSuccess;return data={generated_from_issue:issue.id,project:issue.project,subject:issue.subject,description:issue.description,tags:issue.tags,is_blocked:issue.is_blocked,blocked_note:issue.blocked_note},onSuccess=function(){return askResponse.finish(),$confirm.notify("success"),$rootScope.$broadcast("promote-issue-to-us:success")},onError=function(){return askResponse.finish(),$confirm.notify("error")},$repo.create("userstories",data).then(onSuccess,onError)}}(this)),$el.on("click","a",function(event){var issue,message,subtitle,title;return event.preventDefault(),issue=$model.$modelValue,title=$translate.instant("ISSUES.CONFIRM_PROMOTE.TITLE"),message=$translate.instant("ISSUES.CONFIRM_PROMOTE.MESSAGE"),subtitle=issue.subject,$confirm.ask(title,subtitle,message).then(function(_this){return function(response){return save(issue,response)}}(this))}),$scope.$on("$destroy",function(){return $el.off()})},{restrict:"AE",require:"ngModel",templateUrl:"issue/promote-issue-to-us-button.html",link:link}},module.directive("tgPromoteIssueToUsButton",["$rootScope","$tgRepo","$tgConfirm","$tgQqueue","$translate",PromoteIssueToUsButtonDirective])}.call(this),function(){var CreateBulkIssuesDirective,CreateIssueDirective,bindOnce,debounce,module,taiga;taiga=this.taiga,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaIssues"),CreateIssueDirective=function($repo,$confirm,$rootscope,lightboxService,$loading,$q,attachmentsService){var link;return link=function($scope,$el,$attrs){var attachmentsToAdd,createAttachments,form,resetAttachments,submit,submitButton;return form=$el.find("form").checksley(),$scope.issue={},$scope.attachments=Immutable.List(),$scope.$on("issueform:new",function(ctx,project){return form.reset(),resetAttachments(),$el.find(".tag-input").val(""),lightboxService.open($el),$scope.issue={project:project.id,subject:"",status:project.default_issue_status,type:project.default_issue_type,priority:project.default_priority,severity:project.default_severity,tags:[]}}),$scope.$on("$destroy",function(){return $el.off()}),createAttachments=function(obj){var promises;return promises=_.map(attachmentsToAdd.toJS(),function(attachment){return attachmentsService.upload(attachment.file,obj.id,$scope.issue.project,"issue")}),$q.all(promises)},attachmentsToAdd=Immutable.List(),resetAttachments=function(){return attachmentsToAdd=Immutable.List(),$scope.attachments=Immutable.List()},$scope.addAttachment=function(attachment){return attachmentsToAdd=attachmentsToAdd.push(attachment)},submit=debounce(2e3,function(_this){return function(event){var currentLoading,promise;return event.preventDefault(),form.validate()?(currentLoading=$loading().target(submitButton).start(),promise=$repo.create("issues",$scope.issue),promise.then(function(data){return createAttachments(data)}),promise.then(function(data){return currentLoading.finish(),$rootscope.$broadcast("issueform:new:success",data),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return currentLoading.finish(),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgLbCreateIssue",["$tgRepo","$tgConfirm","$rootScope","lightboxService","$tgLoading","$q","tgAttachmentsService",CreateIssueDirective]),CreateBulkIssuesDirective=function($repo,$rs,$confirm,$rootscope,$loading,lightboxService){var link;return link=function($scope,$el,attrs){var form,submit,submitButton;return form=null,$scope.$on("issueform:bulk",function(ctx,projectId,status){return form&&form.reset(),lightboxService.open($el),$scope["new"]={projectId:projectId,bulk:""}}),submit=debounce(2e3,function(_this){return function(event){var currentLoading,data,projectId,promise;return event.preventDefault(),form=$el.find("form").checksley(),form.validate()?(currentLoading=$loading().target(submitButton).start(),data=$scope["new"].bulk,projectId=$scope["new"].projectId,promise=$rs.issues.bulkCreate(projectId,data),promise.then(function(result){return currentLoading.finish(),$rootscope.$broadcast("issueform:new:success",result),lightboxService.close($el),$confirm.notify("success")}),promise.then(null,function(){return currentLoading.finish(),$confirm.notify("error")})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgLbCreateBulkIssues",["$tgRepo","$tgResources","$tgConfirm","$rootScope","$tgLoading","lightboxService",CreateBulkIssuesDirective])}.call(this),function(){var IssueAssignedToInlineEditionDirective,IssueStatusInlineEditionDirective,IssuesController,IssuesDirective,IssuesFiltersDirective,bindOnce,debounceLeading,groupBy,joinStr,mixOf,module,startswith,taiga,toString,trim,bind=function(fn,me){return function(){return fn.apply(me,arguments)}},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounceLeading=this.taiga.debounceLeading,startswith=this.taiga.startswith,module=angular.module("taigaIssues"),IssuesController=function(superClass){function IssuesController(scope,rootscope,repo,confirm,rs,urls,params,q,location,appMetaService,navUrls,events,analytics,translate){var filters,promise;return this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.urls=urls,this.params=params,this.q=q,this.location=location,this.appMetaService=appMetaService,this.navUrls=navUrls,this.events=events,this.analytics=analytics,this.translate=translate,this.loadIssues=bind(this.loadIssues,this),this.scope.sectionName="Issues",this.scope.filters={},_.isEmpty(this.location.search())?(filters=this.rs.issues.getFilters(this.params.pslug),filters.page=1,this.location.search(filters),void this.location.replace()):(promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ISSUES.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.translate.instant("ISSUES.PAGE_DESCRIPTION",{projectName:_this.scope.project.name,projectDescription:_this.scope.project.description}),_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),void this.scope.$on("issueform:new:success",function(_this){return function(){return _this.analytics.trackEvent("issue","create","create issue on issues list",1),_this.loadIssues()}}(this)))}return extend(IssuesController,superClass),IssuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$tgUrls","$routeParams","$q","$tgLocation","tgAppMetaService","$tgNavUrls","$tgEvents","$tgAnalytics","$translate"],IssuesController.prototype.initializeSubscription=function(){var routingKey;return routingKey="changes.project."+this.scope.projectId+".issues",this.events.subscribe(this.scope,routingKey,function(_this){return function(message){return _this.loadIssues()}}(this))},IssuesController.prototype.storeFilters=function(){return this.rs.issues.storeFilters(this.params.pslug,this.location.search())},IssuesController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_issues_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issueStatusById=groupBy(project.issue_statuses,function(x){return x.id}),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.severityById=groupBy(project.severities,function(x){return x.id}),_this.scope.severityList=_.sortBy(project.severities,"order"),_this.scope.priorityById=groupBy(project.priorities,function(x){return x.id}),_this.scope.priorityList=_.sortBy(project.priorities,"order"),_this.scope.issueTypes=_.sortBy(project.issue_types,"order"),_this.scope.issueTypeById=groupBy(project.issue_types,function(x){return x.id}),project}}(this))},IssuesController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page","tags","status","types","q","severities","priorities","assignedTo","createdBy","orderBy"),filters.page||(filters.page=1),filters},IssuesController.prototype.getUrlFilter=function(name){var filters;return filters=_.pick(this.location.search(),name),filters[name]},IssuesController.prototype.loadMyFilters=function(){return this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return _.map(filters,function(value,key){return{id:key,name:key,type:"myFilters",selected:!1}})}}(this))},IssuesController.prototype.removeNotExistingFiltersFromUrl=function(){var currentSearch,existingValues,filterName,filterValue,splittedValues,urlfilters;currentSearch=this.location.search(),urlfilters=this.getUrlFilters();for(filterName in urlfilters)filterValue=urlfilters[filterName],"page"!==filterName&&"orderBy"!==filterName&&"q"!==filterName&&(splittedValues="tags"===filterName?_.map((""+filterValue).split(",")):_.map((""+filterValue).split(","),function(x){return"null"===x?null:parseInt(x)}),existingValues=_.intersection(splittedValues,_.map(this.scope.filters[filterName],"id")),splittedValues.length!==existingValues.length&&this.location.search(filterName,existingValues.join()));return currentSearch!==this.location.search()?this.location.replace():void 0},IssuesController.prototype.markSelectedFilters=function(filters,urlfilters){var isSelected,j,key,len,name,obj,ref,ref1,results,searchdata,val,value;searchdata={},ref=_.omit(urlfilters,"page","orderBy");for(name in ref)for(value=ref[name],null==searchdata[name]&&(searchdata[name]={}),ref1=(""+value).split(","),j=0,len=ref1.length;len>j;j++)val=ref1[j],searchdata[name][val]=!0;isSelected=function(type,id){return null!=searchdata[type]&&searchdata[type][id]?!0:!1},results=[];for(key in filters)value=filters[key],results.push(function(){var k,len1,results1;for(results1=[],k=0,len1=value.length;len1>k;k++)obj=value[k],results1.push(obj.selected=isSelected(obj.type,obj.id)?!0:void 0);return results1}());return results},IssuesController.prototype.loadFilters=function(){var loadFilters,promise,urlfilters;return urlfilters=this.getUrlFilters(),urlfilters.q&&(this.scope.filtersQ=urlfilters.q),promise=this.loadMyFilters().then(function(_this){return function(myFilters){return _this.scope.filters.myFilters=myFilters,myFilters}}(this)),loadFilters={},loadFilters.project=this.scope.projectId,loadFilters.tags=urlfilters.tags,loadFilters.status=urlfilters.status,loadFilters.q=urlfilters.q,loadFilters.types=urlfilters.types,loadFilters.severities=urlfilters.severities,loadFilters.priorities=urlfilters.priorities,loadFilters.assigned_to=urlfilters.assignedTo,loadFilters.owner=urlfilters.createdBy,promise=promise.then(function(_this){return function(){return _this.rs.issues.filtersData(loadFilters)}}(this)),promise.then(function(_this){return function(data){var choicesFiltersFormat,tagsFilterFormat,usersFiltersFormat;return usersFiltersFormat=function(users,type,unknownOption){var reformatedUsers,unknownItem;return reformatedUsers=_.map(users,function(t){return t.type=type,t.name=t.full_name?t.full_name:unknownOption,t}),unknownItem=_.remove(reformatedUsers,function(u){return!u.id}),reformatedUsers=_.sortBy(reformatedUsers,function(u){return u.name.toUpperCase()}),unknownItem.length>0&&reformatedUsers.unshift(unknownItem[0]),reformatedUsers},choicesFiltersFormat=function(choices,type,byIdObject){return _.map(choices,function(t){return t.type=type,t})},tagsFilterFormat=function(tags){return _.map(tags,function(t){return t.id=t.name,t.type="tags",t})},_this.scope.filters.status=choicesFiltersFormat(data.statuses,"status",_this.scope.issueStatusById),_this.scope.filters.severities=choicesFiltersFormat(data.severities,"severities",_this.scope.severityById),_this.scope.filters.priorities=choicesFiltersFormat(data.priorities,"priorities",_this.scope.priorityById),_this.scope.filters.assignedTo=usersFiltersFormat(data.assigned_to,"assignedTo","Unassigned"),_this.scope.filters.createdBy=usersFiltersFormat(data.owners,"createdBy","Unknown"),_this.scope.filters.types=choicesFiltersFormat(data.types,"types",_this.scope.issueTypeById),_this.scope.filters.tags=tagsFilterFormat(data.tags),_this.removeNotExistingFiltersFromUrl(),_this.markSelectedFilters(_this.scope.filters,urlfilters),_this.rootscope.$broadcast("filters:loaded",_this.scope.filters)}}(this))},IssuesController.prototype.loadIssuesRequests=0,IssuesController.prototype.loadIssues=function(){var name,promise,ref,values;this.scope.urlFilters=this.getUrlFilters(),this.scope.httpParams={},ref=this.scope.urlFilters;for(name in ref)values=ref[name],"severities"===name?name="severity":"orderBy"===name?name="order_by":"priorities"===name?name="priority":"assignedTo"===name?name="assigned_to":"createdBy"===name?name="owner":"status"===name?name="status":"types"===name&&(name="type"),this.scope.httpParams[name]=values;return promise=this.rs.issues.list(this.scope.projectId,this.scope.httpParams),this.loadIssuesRequests+=1,promise.index=this.loadIssuesRequests,promise.then(function(_this){return function(data){return promise.index===_this.loadIssuesRequests&&(_this.scope.issues=data.models,_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy),data}}(this)),promise},IssuesController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.members,project.roles),_this.initializeSubscription(),_this.loadFilters(),_this.loadIssues()}}(this))},IssuesController.prototype.saveCurrentFiltersTo=function(newFilter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return filters[newFilter]=_this.location.search(),_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.deleteMyFilter=function(filter){var deferred;return deferred=this.q.defer(),this.rs.issues.getMyFilters(this.scope.projectId).then(function(_this){return function(filters){return delete filters[filter],_this.rs.issues.storeMyFilters(_this.scope.projectId,filters).then(function(){return deferred.resolve()})}}(this)),deferred.promise},IssuesController.prototype.addNewIssue=function(){return this.rootscope.$broadcast("issueform:new",this.scope.project)},IssuesController.prototype.addIssuesInBulk=function(){return this.rootscope.$broadcast("issueform:bulk",this.scope.projectId)},IssuesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("IssuesController",IssuesController),IssuesDirective=function($log,$location,$template,$compile){var link,linkOrdering,linkPagination,template;return template=$template.get("issue/issue-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".issues-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for($pagEl.show(),pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||(i===cpage?pages.push({classes:"active",num:i,type:"page-active"}):pages.push({classes:"page",num:i,type:"page"}));return html=template(options),html=$compile(html)($scope),$pagEl.html(html)},$scope.$watch("issues",function(value){return value?renderPagination():void 0}),$el.on("click",".issues-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadIssues()})}),$el.on("click",".issues-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadIssues()})})},linkOrdering=function($scope,$el,$attrs,$ctrl){var colHeadElement,currentOrder,icon;return currentOrder=$ctrl.getUrlFilter("orderBy")||"created_date",currentOrder&&(icon=startswith(currentOrder,"-")?"icon-arrow-up":"icon-arrow-bottom",colHeadElement=$el.find(".row.title > div[data-fieldname='"+trim(currentOrder,"-")+"']"),colHeadElement.html(colHeadElement.html()+"")),$el.on("click",".row.title > div",function(event){var finalOrder,newOrder,target;return target=angular.element(event.currentTarget),currentOrder=$ctrl.getUrlFilter("orderBy"),newOrder=target.data("fieldname"),finalOrder=currentOrder===newOrder?"-"+newOrder:newOrder,$scope.$apply(function(){return $ctrl.replaceFilter("orderBy",finalOrder),$ctrl.storeFilters(),$ctrl.loadIssues().then(function(){return $el.find(".row.title > div > span.icon").remove(),icon=startswith(finalOrder,"-")?"icon-arrow-up":"icon-arrow-bottom",target.html(target.html()+"")})})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkOrdering($scope,$el,$attrs,$ctrl),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssues",["$log","$tgLocation","$tgTemplate","$compile",IssuesDirective]),IssuesFiltersDirective=function($q,$log,$location,$rs,$confirm,$loading,$template,$translate,$compile,$auth){var link,template,templateSelected;return template=$template.get("issue/issues-filters.html",!0),templateSelected=$template.get("issue/issues-filters-selected.html",!0),link=function($scope,$el,$attrs){var $ctrl,getFiltersType,initializeSelectedFilters,reloadIssues,renderFilters,renderSelectedFilters,selectQFilter,selectedFilters,showCategories,showFilters,toggleFilterSelection,unwatchIssues;return $ctrl=$el.closest(".wrapper").controller(),selectedFilters=[],showFilters=function(title,type){return $el.find(".filters-cats").hide(),$el.find(".filter-list").removeClass("hidden"),$el.find(".breadcrumb").removeClass("hidden"),$el.find("h2 .subfilter .title").html(title),$el.find("h2 .subfilter .title").prop("data-type",type)},showCategories=function(){return $el.find(".filters-cats").show(),$el.find(".filter-list").addClass("hidden"),$el.find(".breadcrumb").addClass("hidden")},initializeSelectedFilters=function(filters){var j,len,name,val,values;selectedFilters=[];for(name in filters)for(values=filters[name],j=0,len=values.length;len>j;j++)val=values[j],val.selected&&selectedFilters.push(val);return renderSelectedFilters(selectedFilters)},renderSelectedFilters=function(selectedFilters){var html;return _.filter(selectedFilters,function(_this){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=templateSelected({filters:selectedFilters}),html=$compile(html)($scope),$el.find(".filters-applied").html(html),$auth.isAuthenticated()&&selectedFilters.length>0?$el.find(".save-filters").show():$el.find(".save-filters").hide()},renderFilters=function(filters){var html;return _.filter(filters,function(_this){return function(f){return f.color?f.style="border-left: 3px solid "+f.color:void 0}}(this)),html=template({filters:filters}),html=$compile(html)($scope),$el.find(".filter-list").html(html)},getFiltersType=function(){return $el.find(".subfilter .title").prop("data-type")},reloadIssues=function(){var currentFiltersType;return currentFiltersType=getFiltersType(),$q.all([$ctrl.loadIssues(),$ctrl.loadFilters()]).then(function(){var filters;return filters=$scope.filters[currentFiltersType],renderFilters(_.reject(filters,"selected"))})},toggleFilterSelection=function(type,id){var currentFiltersType,filter,filterId,filters;return"myFilters"===type?($rs.issues.getMyFilters($scope.projectId).then(function(data){var filters,myFilters;return myFilters=data,filters=myFilters[id],filters.page=1,$ctrl.replaceAllFilters(filters),$ctrl.storeFilters(),$ctrl.loadIssues(),$ctrl.markSelectedFilters($scope.filters,filters),initializeSelectedFilters($scope.filters)}),null):(filters=$scope.filters[type],filterId="tags"===type?taiga.toString(id):id,filter=_.find(filters,{id:filterId}),filter.selected=!filter.selected,null===id&&(id="null"),filter.selected?(selectedFilters.push(filter),$ctrl.selectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters()):(selectedFilters=_.reject(selectedFilters,function(f){return f.id===filter.id&&f.type===filter.type}),$ctrl.unselectFilter(type,id),$ctrl.selectFilter("page",1),$ctrl.storeFilters()),reloadIssues(),renderSelectedFilters(selectedFilters),currentFiltersType=getFiltersType(),type===currentFiltersType?renderFilters(_.reject(filters,"selected")):void 0)},$scope.$on("filters:loaded",function(ctx,filters){return initializeSelectedFilters(filters)}),$scope.$on("filters:issueupdate",function(ctx,filters){var html;return html=template({filters:filters.status}),html=$compile(html)($scope),$el.find(".filter-list").html(html)}),selectQFilter=debounceLeading(100,function(value,oldValue){return void 0!==value&&value!==oldValue?($ctrl.replaceFilter("page",null,!0),0===value.length?($ctrl.replaceFilter("q",null),$ctrl.storeFilters()):($ctrl.replaceFilter("q",value),$ctrl.storeFilters()),reloadIssues()):void 0}),unwatchIssues=$scope.$watch("issues",function(newValue){return _.isUndefined(newValue)?void 0:($scope.$watch("filtersQ",selectQFilter),unwatchIssues())}),$el.on("click",".filters-cats > ul > li > a",function(event){var tags,target;return event.preventDefault(),target=angular.element(event.currentTarget),tags=$scope.filters[target.data("type")],renderFilters(_.reject(tags,"selected")),showFilters(target.attr("title"),target.data("type"))}),$el.on("click",".filters-inner > .filters-step-cat > .breadcrumb > .back",function(event){return event.preventDefault(),showCategories($el)}),$el.on("click",".filters-applied a",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),id=target.data("id")||null,type=target.data("type"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter",function(event){var id,target,type;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("active"),id=target.data("id")||null,type=target.data("type"),"myFilters"===type&&target.removeClass("active"),toggleFilterSelection(type,id)}),$el.on("click",".filter-list .single-filter .remove-filter",function(event){var customFilterName,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),customFilterName=target.parent().data("id"),title=$translate.instant("ISSUES.FILTERS.CONFIRM_DELETE.TITLE"),message=$translate.instant("ISSUES.FILTERS.CONFIRM_DELETE.MESSAGE",{customFilterName:customFilterName}),$confirm.askOnDelete(title,message).then(function(askResponse){var promise;return promise=$ctrl.deleteMyFilter(customFilterName),promise.then(function(){return promise=$ctrl.loadMyFilters(),promise.then(function(filters){return askResponse.finish(),$scope.filters.myFilters=filters,renderFilters($scope.filters.myFilters)}),promise.then(null,function(){return askResponse.finish()})}),promise.then(null,function(){return askResponse.finish(!1),$confirm.notify("error")})})}),$el.on("click",".save-filters",function(event){return event.preventDefault(),renderFilters($scope.filters.myFilters),showFilters("My filters","myFilters"),$el.find(".save-filters").hide(),$el.find(".my-filter-name").removeClass("hidden"),$el.find(".my-filter-name").focus(),$scope.$apply()}),$el.on("keyup",".my-filter-name",function(event){var currentLoading,newFilter,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newFilter=target.val(),currentLoading=$loading().target($el.find(".new")).start(),promise=$ctrl.saveCurrentFiltersTo(newFilter),promise.then(function(){var loadPromise;return loadPromise=$ctrl.loadMyFilters(),loadPromise.then(function(filters){var currentfilterstype;return currentLoading.finish(),$scope.filters.myFilters=filters,currentfilterstype=$el.find("h2 .subfilter .title").prop("data-type"),"myFilters"===currentfilterstype&&renderFilters($scope.filters.myFilters),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()}),loadPromise.then(null,function(){return currentLoading.finish(),$confirm.notify("error","Error loading custom filters")})}),promise.then(null,function(){return currentLoading.finish(),$el.find(".my-filter-name").val(newFilter).focus().select(),$confirm.notify("error","Filter not saved")})):27===event.keyCode?($el.find(".my-filter-name").val(""),$el.find(".my-filter-name").addClass("hidden"),$el.find(".save-filters").show()):void 0})},{link:link}},module.directive("tgIssuesFilters",["$q","$log","$tgLocation","$tgResources","$tgConfirm","$tgLoading","$tgTemplate","$translate","$compile","$tgAuth",IssuesFiltersDirective]),IssueStatusInlineEditionDirective=function($repo,$template,$rootscope){var link,selectionTemplate,updateIssueStatus;return selectionTemplate=$template.get("issue/issue-status-inline-edition-selection.html",!0),updateIssueStatus=function($el,issue,issueStatusById){var issueStatusDom,issueStatusDomParent,status;return issueStatusDomParent=$el.find(".issue-status"),issueStatusDom=$el.find(".issue-status .issue-status-bind"),status=issueStatusById[issue.status],status?(issueStatusDom.text(status.name),issueStatusDom.prop("title",status.name),issueStatusDomParent.css("color",status.color)):void 0},link=function($scope,$el,$attrs){var $ctrl,issue;return $ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueStatusInlineEdition),$el.on("click",".issue-status",function(event){return event.preventDefault(),event.stopPropagation(),$el.find(".pop-status").popover().open()}),$el.on("click",".status",function(event){var filter,j,len,ref,target;for(event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),ref=$scope.filters.status,j=0,len=ref.length;len>j;j++)filter=ref[j],filter.id===issue.status&&filter.count--;return issue.status=target.data("status-id"),$el.find(".pop-status").popover().close(),updateIssueStatus($el,issue,$scope.issueStatusById),$scope.$apply(function(){var k,len1,ref1;for($repo.save(issue).then(function(){return $ctrl.loadIssues()}),ref1=$scope.filters.status,k=0,len1=ref1.length;len1>k;k++)filter=ref1[k],filter.id===issue.status&&filter.count++;return $rootscope.$broadcast("filters:issueupdate",$scope.filters)})}),taiga.bindOnce($scope,"project",function(project){return $el.append(selectionTemplate({statuses:project.issue_statuses})),updateIssueStatus($el,issue,$scope.issueStatusById),-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$watch($attrs.tgIssueStatusInlineEdition,function(_this){return function(val){return updateIssueStatus($el,val,$scope.issueStatusById)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueStatusInlineEdition",["$tgRepo","$tgTemplate","$rootScope",IssueStatusInlineEditionDirective]),IssueAssignedToInlineEditionDirective=function($repo,$rootscope,$translate){var link,template;return template=_.template('\n<%- name %>'),link=function($scope,$el,$attrs){var $ctrl,issue,updateIssue;return updateIssue=function(issue){var ctx,member;return ctx={name:$translate.instant("COMMON.ASSIGNED_TO.NOT_ASSIGNED"),imgurl:"/"+window._version+"/images/unnamed.png"},member=$scope.usersById[issue.assigned_to],member&&(ctx.name=member.full_name_display,ctx.imgurl=member.photo),$el.find(".avatar").html(template(ctx)),$el.find(".issue-assignedto").attr("title",ctx.name)},$ctrl=$el.controller(),issue=$scope.$eval($attrs.tgIssueAssignedToInlineEdition),updateIssue(issue),$el.on("click",".issue-assignedto",function(event){return $rootscope.$broadcast("assigned-to:add",issue)}),taiga.bindOnce($scope,"project",function(project){return-1===project.my_permissions.indexOf("modify_issue")?($el.unbind("click"),$el.find("a").addClass("not-clickable")):void 0}),$scope.$on("assigned-to:added",function(_this){return function(ctx,userId,updatedIssue){return updatedIssue.id===issue.id?(updatedIssue.assigned_to=userId,$repo.save(updatedIssue),updateIssue(updatedIssue)):void 0}}(this)),$scope.$watch($attrs.tgIssueAssignedToInlineEdition,function(_this){return function(val){return updateIssue(val)}}(this)),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgIssueAssignedToInlineEdition",["$tgRepo","$rootScope","$translate",IssueAssignedToInlineEditionDirective])}.call(this),function(){var UsClientRequirementButtonDirective,UsStatusButtonDirective,UsStatusDisplayDirective,UsTeamRequirementButtonDirective,UserStoryDetailController,bindMethods,bindOnce,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype, child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaUserStories"),UserStoryDetailController=function(superClass){function UserStoryDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appMetaService,navUrls,analytics,translate){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appMetaService=appMetaService,this.navUrls=navUrls,this.analytics=analytics,this.translate=translate,bindMethods(this),this.scope.usRef=this.params.usref,this.scope.sectionName=this.translate.instant("US.SECTION_NAME"),this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this._setMeta(),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(UserStoryDetailController,superClass),UserStoryDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","tgAppMetaService","$tgNavUrls","$tgAnalytics","$translate"],UserStoryDetailController.prototype._setMeta=function(){var closedTasks,description,progressPercentage,ref,title,totalTasks;return totalTasks=this.scope.tasks.length,closedTasks=_.filter(this.scope.tasks,function(_this){return function(t){return _this.scope.taskStatusById[t.status].is_closed}}(this)).length,progressPercentage=totalTasks>0?Math.round(100*closedTasks/totalTasks):0,title=this.translate.instant("US.PAGE_TITLE",{userStoryRef:"#"+this.scope.us.ref,userStorySubject:this.scope.us.subject,projectName:this.scope.project.name}),description=this.translate.instant("US.PAGE_DESCRIPTION",{userStoryStatus:(null!=(ref=this.scope.statusById[this.scope.us.status])?ref.name:void 0)||"--",userStoryPoints:this.scope.us.total_points,userStoryDescription:angular.element(this.scope.us.description_html||"").text(),userStoryClosedTasks:closedTasks,userStoryTotalTasks:totalTasks,userStoryProgressPercentage:progressPercentage}),this.appMetaService.setAll(title,description)},UserStoryDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("related-tasks:update",function(_this){return function(){var allClosed;return _this.scope.tasks=_.clone(_this.scope.tasks,!1),allClosed=_.every(_this.scope.tasks,function(task){return task.is_closed}),_this.scope.us.is_closed!==allClosed?_this.loadUs():void 0}}(this)),this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on userstory",1)}}(this)),this.scope.$on("comment:new",function(_this){return function(){return _this.loadUs()}}(this))},UserStoryDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;return ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated?this.scope.us.milestone?(ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx)):this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-backlog",ctx):this.scope.project.is_kanban_activated?this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-kanban",ctx):void 0},UserStoryDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.us_statuses,_this.scope.statusById=groupBy(project.us_statuses,function(x){return x.id}),_this.scope.taskStatusById=groupBy(project.task_statuses,function(x){return x.id}),_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.pointsById=groupBy(_this.scope.pointsList,function(e){return e.id}),project}}(this))},UserStoryDetailController.prototype.loadUs=function(){var httpParams,kanbanStaus,milestone,noMilestone;return httpParams=_.pick(this.location.search(),"milestone","no-milestone","kanban-status"),milestone=httpParams.milestone,milestone&&this.rs.userstories.storeQueryParams(this.scope.projectId,{milestone:milestone,order_by:"sprint_order"}),noMilestone=httpParams["no-milestone"],noMilestone&&this.rs.userstories.storeQueryParams(this.scope.projectId,{milestone:"null",order_by:"backlog_order"}),kanbanStaus=httpParams["kanban-status"],kanbanStaus&&this.rs.userstories.storeQueryParams(this.scope.projectId,{status:kanbanStaus,order_by:"kanban_order"}),this.rs.userstories.getByRef(this.scope.projectId,this.params.usref).then(function(_this){return function(us){var ctx,ref,ref1;return _this.scope.us=us,_this.scope.usId=us.id,_this.scope.commentModel=us,null!=(null!=(ref=_this.scope.us.neighbors.previous)?ref.ref:void 0)&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),null!=(null!=(ref1=_this.scope.us.neighbors.next)?ref1.ref:void 0)&&(ctx={project:_this.scope.project.slug,ref:_this.scope.us.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-userstories-detail",ctx)),us}}(this))},UserStoryDetailController.prototype.loadSprint=function(){return this.scope.us.milestone?this.rs.sprints.get(this.scope.us.project,this.scope.us.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},UserStoryDetailController.prototype.loadTasks=function(){return this.rs.tasks.list(this.scope.projectId,null,this.scope.usId).then(function(_this){return function(tasks){return _this.scope.tasks=tasks,tasks}}(this))},UserStoryDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.members,project.roles),_this.loadUs().then(function(){return _this.q.all([_this.loadSprint(),_this.loadTasks()])})}}(this))},UserStoryDetailController.prototype.onUpvote=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadUs(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.userstories.upvote(this.scope.usId).then(onSuccess,onError)},UserStoryDetailController.prototype.onDownvote=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadUs(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.userstories.downvote(this.scope.usId).then(onSuccess,onError)},UserStoryDetailController.prototype.onWatch=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadUs(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.userstories.watch(this.scope.usId).then(onSuccess,onError)},UserStoryDetailController.prototype.onUnwatch=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadUs(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.userstories.unwatch(this.scope.usId).then(onSuccess,onError)},UserStoryDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("UserStoryDetailController",UserStoryDetailController),UsStatusDisplayDirective=function($template,$compile){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(us){var html,status;return status=$scope.statusById[us.status],html=template({is_closed:us.is_closed,status:status}),html=$compile(html)($scope),$el.html(html)},$scope.$watch($attrs.ngModel,function(us){return null!=us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusDisplay",["$tgTemplate","$compile",UsStatusDisplayDirective]),UsStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$template){var link,template;return template=$template.get("us/us-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(_this){return function(us){var html,status;return status=$scope.statusById[us.status],html=template({status:status,statuses:$scope.statusList,editable:isEditable()}),$el.html(html)}}(this),save=$qqueue.bindAdd(function(_this){return function(status){var currentLoading,onError,onSuccess,us;return us=$model.$modelValue.clone(),us.status=status,$.fn.popover().closeAll(),currentLoading=$loading().target($el).start(),onSuccess=function(){return $model.$setViewValue(us),$rootScope.$broadcast("object:updated"),currentLoading.finish()},onError=function(){return $confirm.notify("error"),currentLoading.finish()},$repo.save(us).then(onSuccess,onError)}}(this)),$el.on("click",".js-edit-status",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var status,target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),status=target.data("status-id"),save(status)):void 0}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate",UsStatusButtonDirective]),UsTeamRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template,$compile){var link,template;return template=$template.get("us/us-team-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return ctx={canEdit:canEdit(),isRequired:us.team_requirement},html=template(ctx),html=$compile(html)($scope),$el.html(html)},save=$qqueue.bindAdd(function(_this){return function(team_requirement){var currentLoading,promise,us;return us=$model.$modelValue.clone(),us.team_requirement=team_requirement,currentLoading=$loading().target($el.find("label")).start(),promise=$tgrepo.save(us),promise.then(function(){return $model.$setViewValue(us),currentLoading.finish(),$rootscope.$broadcast("object:updated")}),promise.then(null,function(){return currentLoading.finish(),$confirm.notify("error")})}}(this)),$el.on("click",".team-requirement",function(event){var team_requirement;if(canEdit())return team_requirement=!$model.$modelValue.team_requirement,save(team_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsTeamRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate","$compile",UsTeamRequirementButtonDirective]),UsClientRequirementButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$template,$compile){var link,template;return template=$template.get("us/us-client-requirement-button.html",!0),link=function($scope,$el,$attrs,$model){var canEdit,render,save;return canEdit=function(){return-1!==$scope.project.my_permissions.indexOf("modify_us")},render=function(us){var ctx,html;return ctx={canEdit:canEdit(),isRequired:us.client_requirement},html=$compile(template(ctx))($scope),$el.html(html)},save=$qqueue.bindAdd(function(_this){return function(client_requirement){var currentLoading,promise,us;return us=$model.$modelValue.clone(),us.client_requirement=client_requirement,currentLoading=$loading().target($el.find("label")).start(),promise=$tgrepo.save(us),promise.then(function(){return $model.$setViewValue(us),currentLoading.finish(),$rootscope.$broadcast("object:updated")}),promise.then(null,function(){return $confirm.notify("error")})}}(this)),$el.on("click",".client-requirement",function(event){var client_requirement;if(canEdit())return client_requirement=!$model.$modelValue.client_requirement,save(client_requirement)}),$scope.$watch($attrs.ngModel,function(us){return us?render(us):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgUsClientRequirementButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$tgTemplate","$compile",UsClientRequirementButtonDirective])}.call(this),function(){var TaskDetailController,TaskIsIocaineButtonDirective,TaskStatusButtonDirective,TaskStatusDisplayDirective,bindMethods,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindMethods=this.taiga.bindMethods,module=angular.module("taigaTasks"),TaskDetailController=function(superClass){function TaskDetailController(scope,rootscope,repo,confirm,rs,params,q,location,log,appMetaService,navUrls,analytics,translate){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.log=log,this.appMetaService=appMetaService,this.navUrls=navUrls,this.analytics=analytics,this.translate=translate,bindMethods(this),this.scope.taskRef=this.params.taskref,this.scope.sectionName=this.translate.instant("TASK.SECTION_NAME"),this.initializeEventHandlers(),promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this._setMeta(),_this.initializeOnDeleteGoToUrl()}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(TaskDetailController,superClass),TaskDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$log","tgAppMetaService","$tgNavUrls","$tgAnalytics","$translate"],TaskDetailController.prototype._setMeta=function(){var description,ref,title;return title=this.translate.instant("TASK.PAGE_TITLE",{taskRef:"#"+this.scope.task.ref,taskSubject:this.scope.task.subject,projectName:this.scope.project.name}),description=this.translate.instant("TASK.PAGE_DESCRIPTION",{taskStatus:(null!=(ref=this.scope.statusById[this.scope.task.status])?ref.name:void 0)||"--",taskDescription:angular.element(this.scope.task.description_html||"").text()}),this.appMetaService.setAll(title,description)},TaskDetailController.prototype.initializeEventHandlers=function(){return this.scope.$on("attachment:create",function(_this){return function(){return _this.analytics.trackEvent("attachment","create","create attachment on task",1)}}(this)),this.scope.$on("custom-attributes-values:edit",function(_this){return function(){return _this.rootscope.$broadcast("object:updated")}}(this)),this.scope.$on("comment:new",function(_this){return function(){return _this.loadTask()}}(this))},TaskDetailController.prototype.initializeOnDeleteGoToUrl=function(){var ctx;if(ctx={project:this.scope.project.slug},this.scope.onDeleteGoToUrl=this.navUrls.resolve("project",ctx),this.scope.project.is_backlog_activated){if(this.scope.task.milestone)return ctx.sprint=this.scope.sprint.slug,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-taskboard",ctx);if(this.scope.task.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)}else if(this.scope.project.is_kanban_activated&&this.scope.us)return ctx.ref=this.scope.us.ref,this.scope.onDeleteGoToUrl=this.navUrls.resolve("project-userstories-detail",ctx)},TaskDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.statusList=project.task_statuses,_this.scope.statusById=groupBy(project.task_statuses,function(x){return x.id}),project}}(this))},TaskDetailController.prototype.loadTask=function(){return this.rs.tasks.getByRef(this.scope.projectId,this.params.taskref).then(function(_this){return function(task){var ctx,ref,ref1;return _this.scope.task=task,_this.scope.taskId=task.id,_this.scope.commentModel=task,null!=(null!=(ref=_this.scope.task.neighbors.previous)?ref.ref:void 0)&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.previous.ref},_this.scope.previousUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),null!=(null!=(ref1=_this.scope.task.neighbors.next)?ref1.ref:void 0)&&(ctx={project:_this.scope.project.slug,ref:_this.scope.task.neighbors.next.ref},_this.scope.nextUrl=_this.navUrls.resolve("project-tasks-detail",ctx)),task}}(this))},TaskDetailController.prototype.loadSprint=function(){return this.scope.task.milestone?this.rs.sprints.get(this.scope.task.project,this.scope.task.milestone).then(function(_this){return function(sprint){return _this.scope.sprint=sprint,sprint}}(this)):void 0},TaskDetailController.prototype.loadUserStory=function(){return this.scope.task.user_story?this.rs.userstories.get(this.scope.task.project,this.scope.task.user_story).then(function(_this){return function(us){return _this.scope.us=us,us}}(this)):void 0},TaskDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.members,project.roles),_this.loadTask().then(function(){return _this.q.all([_this.loadSprint(),_this.loadUserStory()])})}}(this))},TaskDetailController.prototype.onUpvote=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadTask(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.tasks.upvote(this.scope.taskId).then(onSuccess,onError)},TaskDetailController.prototype.onDownvote=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadTask(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.tasks.downvote(this.scope.taskId).then(onSuccess,onError)},TaskDetailController.prototype.onWatch=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadTask(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.tasks.watch(this.scope.taskId).then(onSuccess,onError)},TaskDetailController.prototype.onUnwatch=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.loadTask(),_this.rootscope.$broadcast("object:updated")}}(this),onError=function(_this){return function(){return _this.confirm.notify("error")}}(this),this.rs.tasks.unwatch(this.scope.taskId).then(onSuccess,onError)},TaskDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TaskDetailController",TaskDetailController),TaskStatusDisplayDirective=function($template,$compile){var link,template;return template=$template.get("common/components/status-display.html",!0),link=function($scope,$el,$attrs){var render;return render=function(task){var html,status;return status=$scope.statusById[task.status],html=template({is_closed:status.is_closed,status:status}),html=$compile(html)($scope),$el.html(html)},$scope.$watch($attrs.ngModel,function(task){return null!=task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusDisplay",["$tgTemplate","$compile",TaskStatusDisplayDirective]),TaskStatusButtonDirective=function($rootScope,$repo,$confirm,$loading,$qqueue,$compile,$translate,$template){var link,template;return template=$template.get("us/us-status-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(_this){return function(task){var html,status;return status=$scope.statusById[task.status],html=$compile(template({status:status,statuses:$scope.statusList,editable:isEditable()}))($scope),$el.html(html)}}(this),save=$qqueue.bindAdd(function(_this){return function(status){var currentLoading,onError,onSuccess,task;return task=$model.$modelValue.clone(),task.status=status,currentLoading=$loading().target($el).start(),onSuccess=function(){return $model.$setViewValue(task),$rootScope.$broadcast("object:updated"),currentLoading.finish()},onError=function(){return $confirm.notify("error"),currentLoading.finish()},$repo.save(task).then(onSuccess,onError)}}(this)),$el.on("click",".js-edit-status",function(event){return event.preventDefault(),event.stopPropagation(),isEditable()?$el.find(".pop-status").popover().open():void 0}),$el.on("click",".status",function(event){var target;return event.preventDefault(),event.stopPropagation(),isEditable()?(target=angular.element(event.currentTarget),$.fn.popover().closeAll(),save(target.data("status-id"))):void 0}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskStatusButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$compile","$translate","$tgTemplate",TaskStatusButtonDirective]),TaskIsIocaineButtonDirective=function($rootscope,$tgrepo,$confirm,$loading,$qqueue,$compile,$template){var link,template;return template=$template.get("issue/iocaine-button.html",!0),link=function($scope,$el,$attrs,$model){var isEditable,render,save;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_task")},render=function(task){var ctx,html;return isEditable()||task.is_iocaine?(ctx={isIocaine:task.is_iocaine,isEditable:isEditable()},html=$compile(template(ctx))($scope),$el.html(html)):void $el.html("")},save=$qqueue.bindAdd(function(_this){return function(is_iocaine){var currentLoading,promise,task;return task=$model.$modelValue.clone(),task.is_iocaine=is_iocaine,currentLoading=$loading().target($el.find("label")).start(),promise=$tgrepo.save(task),promise.then(function(){return $model.$setViewValue(task),$rootscope.$broadcast("object:updated")}),promise.then(null,function(){return $confirm.notify("error")}),promise["finally"](function(){return currentLoading.finish()})}}(this)),$el.on("click",".is-iocaine",function(event){var is_iocaine;if(isEditable())return is_iocaine=!$model.$modelValue.is_iocaine,save(is_iocaine)}),$scope.$watch($attrs.ngModel,function(task){return task?render(task):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgTaskIsIocaineButton",["$rootScope","$tgRepo","$tgConfirm","$tgLoading","$tgQqueue","$compile","$tgTemplate",TaskIsIocaineButtonDirective])}.call(this),function(){var LeaveProjectDirective,TeamController,TeamFiltersDirective,TeamMemberCurrentUserDirective,TeamMemberStatsDirective,TeamMembersDirective,membersFilter,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,module=angular.module("taigaTeam"),TeamController=function(superClass){function TeamController(scope,rootscope,repo,rs,params,q,location,navUrls,appMetaService,auth,translate,projectService){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appMetaService=appMetaService,this.auth=auth,this.translate=translate,this.projectService=projectService,this.scope.sectionName="TEAM.SECTION_NAME",promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("TEAM.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.translate.instant("TEAM.PAGE_DESCRIPTION",{projectName:_this.scope.project.name,projectDescription:_this.scope.project.description}),_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(TeamController,superClass),TeamController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$location","$tgNavUrls","tgAppMetaService","$tgAuth","$translate","tgProjectService"],TeamController.prototype.setRole=function(role){return role?this.scope.filtersRole=role:this.scope.filtersRole=null},TeamController.prototype.loadMembers=function(){var i,len,member,ref,user;for(user=this.auth.getUser(),this.scope.totals={},ref=this.scope.activeUsers,i=0,len=ref.length;len>i;i++)member=ref[i],this.scope.totals[member.id]=0;return this.scope.currentUser=_.find(this.scope.activeUsers,{id:null!=user?user.id:void 0}),this.scope.memberships=_.reject(this.scope.activeUsers,{id:null!=user?user.id:void 0})},TeamController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.issuesEnabled=project.is_issues_activated,_this.scope.tasksEnabled=project.is_kanban_activated||project.is_backlog_activated,_this.scope.wikiEnabled=project.is_wiki_activated,_this.scope.owner=project.owner.id,project}}(this))},TeamController.prototype.loadMemberStats=function(){return this.rs.projects.memberStats(this.scope.projectId).then(function(_this){return function(stats){var totals;return totals={},_.forEach(_this.scope.totals,function(total,userId){var vals;return vals=_.map(stats,function(memberStats,statsKey){return memberStats[userId]}),total=_.reduce(vals,function(sum,el){return sum+el}),_this.scope.totals[userId]=total}),_this.scope.stats=_this._processStats(stats),_this.scope.stats.totals=_this.scope.totals}}(this))},TeamController.prototype._processStat=function(stat){var key,max,min,singleStat,value;max=_.max(_.toArray(stat)),min=_.min(_.toArray(stat)),singleStat=Object();for(key in stat)hasProp.call(stat,key)&&(value=stat[key],value===min?singleStat[key]=.1:value===max?singleStat[key]=1:singleStat[key]=.5*value/max);return singleStat},TeamController.prototype._processStats=function(stats){var key,value;for(key in stats)value=stats[key],stats[key]=this._processStat(value);return stats},TeamController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){var userRoles;return _this.fillUsersAndRoles(project.members,project.roles),_this.loadMembers(),userRoles=_.map(_this.scope.users,function(user){return user.role}),_this.scope.roles=_.filter(_this.scope.roles,function(role){return-1!==userRoles.indexOf(role.id)}),_this.loadMemberStats()}}(this))},TeamController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("TeamController",TeamController),TeamFiltersDirective=function(){return{templateUrl:"team/team-filter.html"}},module.directive("tgTeamFilters",[TeamFiltersDirective]),TeamMemberStatsDirective=function(){return{templateUrl:"team/team-member-stats.html",scope:{stats:"=",userId:"=user",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled"}}},module.directive("tgTeamMemberStats",TeamMemberStatsDirective),TeamMemberCurrentUserDirective=function(){return{templateUrl:"team/team-member-current-user.html",scope:{project:"=project",currentUser:"=currentuser",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled",owner:"=owner"}}},module.directive("tgTeamCurrentUser",TeamMemberCurrentUserDirective),TeamMembersDirective=function(){var template;return template="team/team-members.html",{templateUrl:template,scope:{memberships:"=",filtersQ:"=filtersq",filtersRole:"=filtersrole",stats:"=",issuesEnabled:"=issuesenabled",tasksEnabled:"=tasksenabled",wikiEnabled:"=wikienabled",owner:"=owner"}}},module.directive("tgTeamMembers",TeamMembersDirective),LeaveProjectDirective=function($repo,$confirm,$location,$rs,$navurls,$translate,lightboxFactory,currentUserService){var link;return link=function($scope,$el,$attrs){var leaveConfirm;return leaveConfirm=function(){var confirm_leave_project_text,leave_project_text;return leave_project_text=$translate.instant("TEAM.ACTION_LEAVE_PROJECT"),confirm_leave_project_text=$translate.instant("TEAM.CONFIRM_LEAVE_PROJECT"),$confirm.ask(leave_project_text,confirm_leave_project_text).then(function(_this){return function(response){var promise;return promise=$rs.projects.leave($scope.project.id),promise.then(function(){return currentUserService.loadProjects().then(function(){return response.finish(),$confirm.notify("success"),$location.path($navurls.resolve("home"))})}),promise.then(null,function(response){return response.finish(),$confirm.notify("error",response.data._error_message)})}}(this))},$scope.leave=function(){return $scope.project.owner.id===$scope.user.id?lightboxFactory.create("tg-lightbox-leave-project-warning",{"class":"lightbox lightbox-leave-project-warning"},{isCurrentUser:!0,project:$scope.project}):leaveConfirm()}},{scope:{user:"=",project:"="},templateUrl:"team/leave-project.html",link:link}},module.directive("tgLeaveProject",["$tgRepo","$tgConfirm","$tgLocation","$tgResources","$tgNavUrls","$translate","tgLightboxFactory","tgCurrentUserService",LeaveProjectDirective]),membersFilter=function(){return function(members,filtersQ,filtersRole){return _.filter(members,function(m){return(!filtersRole||m.role===filtersRole.id)&&(!filtersQ||m.full_name.search(new RegExp(filtersQ,"i"))>=0)})}},module.filter("membersFilter",membersFilter)}.call(this),function(){var EditableWikiContentDirective,WikiDetailController,WikiSummaryDirective,bindOnce,debounce,groupBy,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaWiki"),WikiDetailController=function(superClass){function WikiDetailController(scope,rootscope,repo,model,confirm,rs,params,q,location,filter,log,appMetaService,navUrls,analytics,translate){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.model=model,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.filter=filter,this.log=log,this.appMetaService=appMetaService,this.navUrls=navUrls,this.analytics=analytics,this.translate=translate,this.scope.projectSlug=this.params.pslug,this.scope.wikiSlug=this.params.slug,this.scope.wikiTitle=this.scope.wikiSlug,this.scope.sectionName="Wiki", -this.scope.linksVisible=!1,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this._setMeta()}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(WikiDetailController,superClass),WikiDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgModel","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$filter","$log","tgAppMetaService","$tgNavUrls","$tgAnalytics","$translate"],WikiDetailController.prototype._setMeta=function(){var description,ref,ref1,ref2,title;return title=this.translate.instant("WIKI.PAGE_TITLE",{wikiPageName:this.scope.wikiTitle,projectName:this.scope.project.name}),description=this.translate.instant("WIKI.PAGE_DESCRIPTION",{wikiPageContent:angular.element((null!=(ref=this.scope.wiki)?ref.html:void 0)||"").text(),totalEditions:(null!=(ref1=this.scope.wiki)?ref1.editions:void 0)||0,lastModifiedDate:moment(null!=(ref2=this.scope.wiki)?ref2.modified_date:void 0).format(this.translate.instant("WIKI.DATETIME"))}),this.appMetaService.setAll(title,description)},WikiDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_wiki_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},WikiDetailController.prototype.loadWiki=function(){var promise;return promise=this.rs.wiki.getBySlug(this.scope.projectId,this.params.slug),promise.then(function(_this){return function(wiki){return _this.scope.wiki=wiki,_this.scope.wikiId=wiki.id,_this.scope.wiki}}(this)),promise.then(null,function(_this){return function(xhr){var data;return _this.scope.wikiId=null,-1===_this.scope.project.my_permissions.indexOf("add_wiki_page")?null:(data={project:_this.scope.projectId,slug:_this.scope.wikiSlug,content:""},_this.scope.wiki=_this.model.make_model("wiki",data),_this.scope.wiki)}}(this))},WikiDetailController.prototype.loadWikiLinks=function(){return this.rs.wiki.listLinks(this.scope.projectId).then(function(_this){return function(wikiLinks){var selectedWikiLink;return _this.scope.wikiLinks=wikiLinks,selectedWikiLink=_.find(wikiLinks,{href:_this.scope.wikiSlug}),null!=selectedWikiLink?_this.scope.wikiTitle=selectedWikiLink.title:void 0}}(this))},WikiDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.members,project.roles),_this.q.all([_this.loadWikiLinks(),_this.loadWiki()]).then(_this.checkLinksPerms.bind(_this))}}(this))},WikiDetailController.prototype.checkLinksPerms=function(){return-1!==this.scope.project.my_permissions.indexOf("modify_wiki_link")||-1!==this.scope.project.my_permissions.indexOf("view_wiki_links")&&this.scope.wikiLinks.length?this.scope.linksVisible=!0:void 0},WikiDetailController.prototype["delete"]=function(){var message,title;return title=this.translate.instant("WIKI.DELETE_LIGHTBOX_TITLE"),message=this.scope.wikiTitle,this.confirm.askOnDelete(title,message).then(function(_this){return function(askResponse){var onError,onSuccess;return onSuccess=function(){var ctx;return askResponse.finish(),ctx={project:_this.scope.projectSlug},_this.location.path(_this.navUrls.resolve("project-wiki",ctx)),_this.confirm.notify("success")},onError=function(){return askResponse.finish(!1),_this.confirm.notify("error")},_this.repo.remove(_this.scope.wiki).then(onSuccess,onError)}}(this))},WikiDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("WikiDetailController",WikiDetailController),WikiSummaryDirective=function($log,$template,$compile,$translate){var link,template;return template=$template.get("wiki/wiki-summary.html",!0),link=function($scope,$el,$attrs,$model){var render;return render=function(wiki){var ctx,html,user;return null==$scope.usersById?$log.error("WikiSummaryDirective requires userById set in scope."):user=$scope.usersById[wiki.last_modifier],user=void 0===user?{name:"unknown",imgUrl:"/"+window._version+"/images/user-noimage.png"}:{name:user.full_name_display,imgUrl:user.photo},ctx={totalEditions:wiki.editions,lastModifiedDate:moment(wiki.modified_date).format($translate.instant("WIKI.DATETIME")),user:user},html=template(ctx),html=$compile(html)($scope),$el.html(html)},$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?render(wikiPage):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgWikiSummary",["$log","$tgTemplate","$compile","$translate",WikiSummaryDirective]),EditableWikiContentDirective=function($window,$document,$repo,$confirm,$loading,$analytics,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var cancelEdition,disableEdition,getSelectedText,isEditable,save,switchToEditMode,switchToReadMode;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_wiki_page")},switchToEditMode=function(){return $el.find(".edit-wiki-content").show(),$el.find(".view-wiki-content").hide(),$el.find("textarea").focus()},switchToReadMode=function(){return $el.find(".edit-wiki-content").hide(),$el.find(".view-wiki-content").show()},disableEdition=function(){return $el.find(".view-wiki-content .edit").remove(),$el.find(".edit-wiki-content").remove()},cancelEdition=function(){return $model.$modelValue.id?($scope.$apply(function(_this){return function(){return $model.$modelValue.revert()}}(this)),switchToReadMode()):void 0},getSelectedText=function(){return $window.getSelection?$window.getSelection().toString():$document.selection?$document.selection.createRange().text:null},save=$qqueue.bindAdd(function(wiki){var currentLoading,onError,onSuccess,promise;return onSuccess=function(wikiPage){return null==wiki.id&&$analytics.trackEvent("wikipage","create","create wiki page",1),$model.$setViewValue(wikiPage.clone()),$confirm.notify("success"),switchToReadMode()},onError=function(){return $confirm.notify("error")},currentLoading=$loading().removeClasses("icon-floppy").target($el.find(".icon-floppy")).start(),promise=null!=wiki.id?$repo.save(wiki).then(onSuccess,onError):$repo.create("wiki",wiki).then(onSuccess,onError),promise["finally"](function(){return currentLoading.finish()})}),$el.on("click","a",function(event){var href,target;return target=angular.element(event.target),href=target.attr("href"),0===href.indexOf("#")?(event.preventDefault(),$("body").scrollTop($(href).offset().top)):void 0}),$el.on("mousedown",".view-wiki-content",function(event){var target;target=angular.element(event.target),isEditable()&&2===event.button}),$el.on("mouseup",".view-wiki-content",function(event){var target;return target=angular.element(event.target),getSelectedText()||!isEditable()||target.is("a")||target.is("pre")?void 0:switchToEditMode()}),$el.on("click",".save",debounce(2e3,function(){return save($scope.wiki)})),$el.on("click",".cancel",function(){return cancelEdition()}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?cancelEdition():void 0}),$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?isEditable()?($el.addClass("editable"),null==wikiPage.id||0===$.trim(wikiPage.content).length?switchToEditMode():void 0):disableEdition():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",templateUrl:"wiki/editable-wiki-content.html"}},module.directive("tgEditableWikiContent",["$window","$document","$tgRepo","$tgConfirm","$tgLoading","$tgAnalytics","$tgQqueue",EditableWikiContentDirective])}.call(this),function(){var WikiNavDirective,bindOnce,groupBy,mixOf,module,taiga;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaWiki"),WikiNavDirective=function($tgrepo,$log,$location,$confirm,$navUrls,$analytics,$loading,$template,$compile,$translate){var link,template;return template=$template.get("wiki/wiki-nav.html",!0),link=function($scope,$el,$attrs){var $ctrl,render;return $ctrl=$el.controller(),null==$attrs.ngModel?$log.error("WikiNavDirective: no ng-model attr is defined"):(render=function(wikiLinks){var addWikiLinkPermission,deleteWikiLinkPermission,html;return addWikiLinkPermission=$scope.project.my_permissions.indexOf("add_wiki_link")>-1,deleteWikiLinkPermission=$scope.project.my_permissions.indexOf("delete_wiki_link")>-1,html=template({wikiLinks:wikiLinks,projectSlug:$scope.projectSlug,addWikiLinkPermission:addWikiLinkPermission,deleteWikiLinkPermission:deleteWikiLinkPermission}),html=$compile(html)($scope),$el.off(),$el.html(html),$el.on("click",".wiki-link .link-title",function(event){var linkId,linkSlug,target;return event.preventDefault(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),linkSlug=$scope.wikiLinks[linkId].href,$scope.$apply(function(){var ctx;return ctx={project:$scope.projectSlug,slug:linkSlug},$location.path($navUrls.resolve("project-wiki-page",ctx))})}),$el.on("click",".add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new input").focus(),$el.find(".add-button").hide()}),$el.on("click",".wiki-link .icon-delete",function(event){var linkId,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),title=$translate.instant("WIKI.DELETE_LIGHTBOX_TITLE"),message=$scope.wikiLinks[linkId].title,$confirm.askOnDelete(title,message).then(function(_this){return function(askResponse){var promise;return promise=$tgrepo.remove($scope.wikiLinks[linkId]),promise.then(function(){return promise=$ctrl.loadWikiLinks(),promise.then(function(){return askResponse.finish(),render($scope.wikiLinks)}),promise.then(null,function(){return askResponse.finish()})}),promise.then(null,function(){return askResponse.finish(!1),$confirm.notify("error")})}}(this))}),$el.on("keyup",".new input",function(event){var currentLoading,newLink,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newLink=target.val(),currentLoading=$loading().target($el.find(".new")).start(),promise=$tgrepo.create("wiki-links",{project:$scope.projectId,title:newLink}),promise.then(function(){var loadPromise;return $analytics.trackEvent("wikilink","create","create wiki link",1),loadPromise=$ctrl.loadWikiLinks(),loadPromise.then(function(){return currentLoading.finish(),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),render($scope.wikiLinks)}),loadPromise.then(null,function(){return currentLoading.finish(),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),$confirm.notify("error","Error loading wiki links")})}),promise.then(null,function(error){var ref;return currentLoading.finish(),$el.find(".new input").val(newLink),$el.find(".new input").focus().select(),null!=(null!=error&&null!=(ref=error.__all__)?ref[0]:void 0)?$confirm.notify("error","The link already exists"):$confirm.notify("error")})):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show()):void 0})},bindOnce($scope,$attrs.ngModel,render))},{link:link}},module.directive("tgWikiNav",["$tgRepo","$log","$tgLocation","$tgConfirm","$tgNavUrls","$tgAnalytics","$tgLoading","$tgTemplate","$compile","$translate",WikiNavDirective])}.call(this),function(){var ChangeOwnerLightboxController,ChangeOwnerLightboxDirective,LbRequestOwnershipDirective,LightboxAddMembersController,LightboxAddMembersDirective,LightboxAddMembersWarningMessageDirective,TransferProjectStartSuccessDirective,debounce,module,taiga;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaKanban"),LightboxAddMembersController=function(){function LightboxAddMembersController(scope1,lightboxService1,tgLoader,confirm,rs1,rootScope){var pendingMembersCount;this.scope=scope1,this.lightboxService=lightboxService1,this.tgLoader=tgLoader,this.confirm=confirm,this.rs=rs1,this.rootScope=rootScope,this._defaultMaxInvites=4,this._defaultRole=this.project.roles[0].id,this.form=null,this.submitInvites=!1,this.canAddUsers=!0,this.memberInvites=[],null===this.project.max_memberships?this.membersLimit=this._defaultMaxInvites:(pendingMembersCount=Math.max(this.project.max_memberships-this.project.total_memberships,0),this.membersLimit=Math.min(pendingMembersCount,this._defaultMaxInvites)),this.addSingleMember()}return LightboxAddMembersController.$inject=["$scope","lightboxService","tgLoader","$tgConfirm","$tgResources","$rootScope"],LightboxAddMembersController.prototype.addSingleMember=function(){return this.memberInvites.push({email:"",role_id:this._defaultRole}),this.memberInvites.length>=this.membersLimit&&(this.canAddUsers=!1),this.showWarningMessage=!this.canAddUsers&&this.project.total_memberships+this.memberInvites.length===this.project.max_memberships},LightboxAddMembersController.prototype.removeSingleMember=function(index){return this.memberInvites.splice(index,1),this.canAddUsers=!0,this.showWarningMessage=1===this.membersLimit},LightboxAddMembersController.prototype.submit=function(){var promise;return this.form.initializeFields(),this.form.reset(),this.form.validate()?(this.memberInvites=_.filter(this.memberInvites,function(invites){return""!==invites.email}),this.submitInvites=!0,promise=this.rs.memberships.bulkCreateMemberships(this.project.id,this.memberInvites,this.invitationText),promise.then(this._onSuccessInvite.bind(this),this._onErrorInvite.bind(this))):void 0},LightboxAddMembersController.prototype._onSuccessInvite=function(){return this.submitInvites=!1,this.rootScope.$broadcast("membersform:new:success"),this.lightboxService.closeAll(),this.confirm.notify("success")},LightboxAddMembersController.prototype._onErrorInvite=function(response){return this.submitInvites=!1,this.form.setErrors(response.data),response.data._error_message?this.confirm.notify("error",response.data._error_message):void 0},LightboxAddMembersController}(),module.controller("LbAddMembersController",LightboxAddMembersController),LightboxAddMembersDirective=function(lightboxService){var link;return link=function(scope,el,attrs,ctrl){return lightboxService.open(el),ctrl.form=el.find("form").checksley()},{scope:{},bindToController:{project:"="},controller:"LbAddMembersController",controllerAs:"vm",templateUrl:"admin/lightbox-add-members.html",link:link}},module.directive("tgLbAddMembers",["lightboxService",LightboxAddMembersDirective]),LightboxAddMembersWarningMessageDirective=function(){return{templateUrl:"admin/lightbox-add-members-no-more=memberships-warning-message.html",scope:{project:"="}}},module.directive("tgLightboxAddMembersWarningMessage",[LightboxAddMembersWarningMessageDirective]),LbRequestOwnershipDirective=function(lightboxService,rs,confirmService,$translate){return{link:function(scope,el){return lightboxService.open(el),scope.request=function(){return scope.loading=!0,rs.projects.transferRequest(scope.projectId).then(function(){return scope.loading=!1,lightboxService.close(el),confirmService.notify("success",$translate.instant("ADMIN.PROJECT_PROFILE.REQUEST_OWNERSHIP_SUCCESS"))})}},templateUrl:"common/lightbox/lightbox-request-ownership.html"}},module.directive("tgLbRequestOwnership",["lightboxService","tgResources","$tgConfirm","$translate",LbRequestOwnershipDirective]),ChangeOwnerLightboxController=function(){function ChangeOwnerLightboxController(rs1,lightboxService1,confirm,translate){this.rs=rs1,this.lightboxService=lightboxService1,this.confirm=confirm,this.translate=translate,this.users=[],this.q="",this.commentOpen=!1}return ChangeOwnerLightboxController.prototype.limit=3,ChangeOwnerLightboxController.prototype.normalizeString=function(normalizedString){return normalizedString=normalizedString.replace("Á","A").replace("Ä","A").replace("À","A"),normalizedString=normalizedString.replace("É","E").replace("Ë","E").replace("È","E"),normalizedString=normalizedString.replace("Í","I").replace("Ï","I").replace("Ì","I"),normalizedString=normalizedString.replace("Ó","O").replace("Ö","O").replace("Ò","O"),normalizedString=normalizedString.replace("Ú","U").replace("Ü","U").replace("Ù","U")},ChangeOwnerLightboxController.prototype.filterUsers=function(user){var text,username;return username=user.full_name_display.toUpperCase(),username=this.normalizeString(username),text=this.q.toUpperCase(),text=this.normalizeString(text),_.includes(username,text)},ChangeOwnerLightboxController.prototype.getUsers=function(){var users;return users=this.users.length||this.q.length?this.users:this.activeUsers,users=users.slice(0,this.limit),users=_.reject(users,{selected:!0}),_.reject(users,{id:this.currentOwnerId})},ChangeOwnerLightboxController.prototype.userSearch=function(){return this.users=this.activeUsers,this.selected=_.find(this.users,{selected:!0}),this.q?this.users=_.filter(this.users,this.filterUsers.bind(this)):void 0},ChangeOwnerLightboxController.prototype.selectUser=function(user){return this.activeUsers=_.map(this.activeUsers,function(user){return user.selected=!1,user}),user.selected=!0,this.userSearch()},ChangeOwnerLightboxController.prototype.submit=function(){return this.loading=!0,this.rs.projects.transferStart(this.projectId,this.selected.id,this.comment).then(function(_this){return function(){var desc,title;return _this.loading=!1,_this.lightboxService.closeAll(),title=_this.translate.instant("ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_TITLE"),desc=_this.translate.instant("ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_DESC"),_this.confirm.success(title,desc,{type:"svg",name:"icon-speak-up"})}}(this))},ChangeOwnerLightboxController}(),ChangeOwnerLightboxController.$inject=["tgResources","lightboxService","$tgConfirm","$translate"],module.controller("ChangeOwnerLightbox",ChangeOwnerLightboxController),ChangeOwnerLightboxDirective=function(lightboxService,lightboxKeyboardNavigationService,$template,$compile){var link;return link=function(scope,el){return lightboxService.open(el)},{scope:!0,controller:"ChangeOwnerLightbox",controllerAs:"vm",bindToController:{currentOwnerId:"=",projectId:"=",activeUsers:"="},templateUrl:"common/lightbox/lightbox-change-owner.html",link:link}},module.directive("tgLbChangeOwner",["lightboxService","lightboxKeyboardNavigationService","$tgTemplate","$compile",ChangeOwnerLightboxDirective]),TransferProjectStartSuccessDirective=function(lightboxService){var link;return link=function(scope,el){return scope.close=function(){return lightboxService.close(el)},lightboxService.open(el)},{templateUrl:"common/lightbox/lightbox-transfer-project-start-success.html",link:link}},module.directive("tgLbTransferProjectStartSuccess",["lightboxService",TransferProjectStartSuccessDirective])}.call(this),function(){var MembershipsController,MembershipsDirective,MembershipsRowActionsDirective,MembershipsRowAdminCheckboxDirective,MembershipsRowAvatarDirective,MembershipsRowRoleSelectorDirective,NoMoreMembershipsExplanationDirective,bindMethods,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),MembershipsController=function(superClass){function MembershipsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,analytics,appMetaService,translate,auth,lightboxFactory1){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.analytics=analytics,this.appMetaService=appMetaService,this.translate=translate,this.auth=auth,this.lightboxFactory=lightboxFactory1,bindMethods(this),this.scope.project={},this.scope.filters={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ADMIN.MEMBERSHIPS.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("membersform:new:success",function(_this){return function(){return _this.loadInitialData(),_this.analytics.trackEvent("membership","create","create memberships on admin",1)}}(this))}return extend(MembershipsController,superClass),MembershipsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAnalytics","tgAppMetaService","$translate","$tgAuth","tgLightboxFactory"],MembershipsController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.i_am_admin||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.canAddUsers=null===project.max_memberships||project.max_memberships>project.total_memberships,_this.scope.$emit("project:loaded",project),project}}(this))},MembershipsController.prototype.loadMembers=function(){var httpFilters;return httpFilters=this.getUrlFilters(),this.rs.memberships.list(this.scope.projectId,httpFilters).then(function(_this){return function(data){return _this.scope.memberships=_.filter(data.models,function(membership){return null===membership.user||membership.is_user_active}),_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy,data}}(this))},MembershipsController.prototype.loadInitialData=function(){return this.loadProject().then(function(_this){return function(){return _this.q.all([_this.loadMembers(),_this.auth.refresh()])}}(this))},MembershipsController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page"),filters.page||(filters.page=1),filters},MembershipsController.prototype.addNewMembers=function(){return this.lightboxFactory.create("tg-lb-add-members",{"class":"lightbox lightbox-add-member",project:"project"},{project:this.scope.project})},MembershipsController.prototype.showLimitUsersWarningMessage=function(){var icon,message,title;return title=this.translate.instant("ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING"),message=this.translate.instant("ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE",{members:this.scope.project.max_memberships}),icon="/"+window._version+"/svg/icons/team-question.svg",this.confirm.success(title,message,{name:icon,type:"img"})},MembershipsController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("MembershipsController",MembershipsController),MembershipsDirective=function($template,$compile){var link,linkPagination,template;return template=$template.get("admin/admin-membership-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".memberships-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for(pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||(i===cpage?pages.push({classes:"active",num:i,type:"page-active"}):pages.push({classes:"page",num:i,type:"page"}));return html=template(options),html=$compile(html)($scope),$pagEl.html(html),$pagEl.show()},$scope.$watch("memberships",function(value){return value?renderPagination():void 0}),$el.on("click",".memberships-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadMembers()})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMemberships",["$tgTemplate","$compile",MembershipsDirective]),MembershipsRowAvatarDirective=function($log,$template,$translate){var link,template;return template=$template.get("admin/memberships-row-avatar.html",!0),link=function($scope,$el,$attrs){var member,pending,render;return pending=$translate.instant("ADMIN.MEMBERSHIP.STATUS_PENDING"),render=function(member){var ctx,html;return ctx={full_name:member.full_name?member.full_name:"",email:member.user_email?member.user_email:member.email,imgurl:member.photo?member.photo:"/"+window._version+"/images/unnamed.png",pending:member.is_user_active?"":pending,isOwner:member.is_owner},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAvatar?$log.error("MembershipsRowAvatarDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAvatar),render(member),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAvatar",["$log","$tgTemplate","$translate",MembershipsRowAvatarDirective]),MembershipsRowAdminCheckboxDirective=function($log,$repo,$confirm,$template,$compile){var link,template;return template=$template.get("admin/admin-memberships-row-checkbox.html",!0),link=function($scope,$el,$attrs){var html,member,render;return $scope.$on("$destroy",function(){return $el.off()}),null==$attrs.tgMembershipsRowAdminCheckbox?$log.error("MembershipsRowAdminCheckboxDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAdminCheckbox),member.is_owner?void $el.find(".js-check").remove():(render=function(member){var ctx,html;return ctx={inputId:"is-admin-"+member.id},html=template(ctx),html=$compile(html)($scope),$el.html(html)},$el.on("click",":checkbox",function(_this){return function(event){var onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(data){return member.revert(),$el.find(":checkbox").prop("checked",member.is_admin),$confirm.notify("error",data.is_admin[0])},target=angular.element(event.currentTarget),member.is_admin=target.prop("checked"),$repo.save(member).then(onSuccess,onError)}}(this)),html=render(member),member.is_admin?$el.find(":checkbox").prop("checked",!0):void 0))},{link:link}},module.directive("tgMembershipsRowAdminCheckbox",["$log","$tgRepo","$tgConfirm","$tgTemplate","$compile",MembershipsRowAdminCheckboxDirective]),MembershipsRowRoleSelectorDirective=function($log,$repo,$confirm){var link,template;return template=_.template('\n <% _.each(roleList, function(role) { %>\n selected="selected"<% } %>>\n <%- role.name %>\n \n <% }); %>\n'),link=function($scope,$el,$attrs){var $ctrl,html,member,render;return render=function(member){var ctx,html;return ctx={roleList:$scope.project.roles,selectedRole:member.role},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowRoleSelector?$log.error("MembershipsRowRoleSelectorDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowRoleSelector),html=render(member),$el.on("change","select",function(_this){return function(event){var newRole,onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error")},target=angular.element(event.currentTarget),newRole=parseInt(target.val(),10),member.role!==newRole?(member.role=newRole,$repo.save(member).then(onSuccess,onError)):void 0}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowRoleSelector",["$log","$tgRepo","$tgConfirm",MembershipsRowRoleSelectorDirective]),MembershipsRowActionsDirective=function($log,$repo,$rs,$confirm,$compile,$translate,$location,$navUrls,lightboxFactory){var activedTemplate,link,pendingTemplate;return activedTemplate='\n\n\n \n \n \n',pendingTemplate='\n\n\n \n \n \n',link=function($scope,$el,$attrs){var $ctrl,leaveConfirm,member,render;return render=function(member){var html;return html=member.user?$compile(activedTemplate)($scope):$compile(pendingTemplate)($scope),$el.html(html)},null==$attrs.tgMembershipsRowActions?$log.error("MembershipsRowActionsDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowActions),render(member),$el.on("click",".js-resend",function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(){var text;return text=$translate.instant("ADMIN.MEMBERSHIP.SUCCESS_SEND_INVITATION",{email:$scope.member.email}),$confirm.notify("success",text)},onError=function(){var text;return text=$translate.instant("ADMIM.MEMBERSHIP.ERROR_SEND_INVITATION"),$confirm.notify("error",text)},$rs.memberships.resendInvitation($scope.member.id).then(onSuccess,onError)}),leaveConfirm=function(){var defaultMsg,message,title;return title=$translate.instant("ADMIN.MEMBERSHIP.DELETE_MEMBER"),defaultMsg=$translate.instant("ADMIN.MEMBERSHIP.DEFAULT_DELETE_MESSAGE",{email:member.email}),message=member.user?member.full_name:defaultMsg,$confirm.askOnDelete(title,message).then(function(askResponse){var onError,onSuccess;return onSuccess=function(_this){return function(){var text;return askResponse.finish(),member.user!==$scope.user.id?($scope.page>1&&$scope.count-1<=$scope.paginatedBy&&$ctrl.selectFilter("page",$scope.page-1),$ctrl.loadInitialData()):$location.path($navUrls.resolve("home")),text=$translate.instant("ADMIN.MEMBERSHIP.SUCCESS_DELETE",{message:message}),$confirm.notify("success",text,null,5e3)}}(this),onError=function(_this){return function(){var text;return askResponse.finish(!1),text=$translate.instant("ADMIN.MEMBERSHIP.ERROR_DELETE",{message:message}),$confirm.notify("error",text)}}(this),$repo.remove(member).then(onSuccess,onError)})},$el.on("click",".delete",function(event){var isCurrentUser;return event.preventDefault(),$scope.project.owner.id===member.user?(isCurrentUser=$scope.user.id===member.user, +this.scope.linksVisible=!1,promise=this.loadInitialData(),promise.then(function(_this){return function(){return _this._setMeta()}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(WikiDetailController,superClass),WikiDetailController.$inject=["$scope","$rootScope","$tgRepo","$tgModel","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$filter","$log","tgAppMetaService","$tgNavUrls","$tgAnalytics","$translate"],WikiDetailController.prototype._setMeta=function(){var description,ref,ref1,ref2,title;return title=this.translate.instant("WIKI.PAGE_TITLE",{wikiPageName:this.scope.wikiTitle,projectName:this.scope.project.name}),description=this.translate.instant("WIKI.PAGE_DESCRIPTION",{wikiPageContent:angular.element((null!=(ref=this.scope.wiki)?ref.html:void 0)||"").text(),totalEditions:(null!=(ref1=this.scope.wiki)?ref1.editions:void 0)||0,lastModifiedDate:moment(null!=(ref2=this.scope.wiki)?ref2.modified_date:void 0).format(this.translate.instant("WIKI.DATETIME"))}),this.appMetaService.setAll(title,description)},WikiDetailController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.is_wiki_activated||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},WikiDetailController.prototype.loadWiki=function(){var promise;return promise=this.rs.wiki.getBySlug(this.scope.projectId,this.params.slug),promise.then(function(_this){return function(wiki){return _this.scope.wiki=wiki,_this.scope.wikiId=wiki.id,_this.scope.wiki}}(this)),promise.then(null,function(_this){return function(xhr){var data;return _this.scope.wikiId=null,-1===_this.scope.project.my_permissions.indexOf("add_wiki_page")?null:(data={project:_this.scope.projectId,slug:_this.scope.wikiSlug,content:""},_this.scope.wiki=_this.model.make_model("wiki",data),_this.scope.wiki)}}(this))},WikiDetailController.prototype.loadWikiLinks=function(){return this.rs.wiki.listLinks(this.scope.projectId).then(function(_this){return function(wikiLinks){var selectedWikiLink;return _this.scope.wikiLinks=wikiLinks,selectedWikiLink=_.find(wikiLinks,{href:_this.scope.wikiSlug}),null!=selectedWikiLink?_this.scope.wikiTitle=selectedWikiLink.title:void 0}}(this))},WikiDetailController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(project){return _this.fillUsersAndRoles(project.members,project.roles),_this.q.all([_this.loadWikiLinks(),_this.loadWiki()]).then(_this.checkLinksPerms.bind(_this))}}(this))},WikiDetailController.prototype.checkLinksPerms=function(){return-1!==this.scope.project.my_permissions.indexOf("modify_wiki_link")||-1!==this.scope.project.my_permissions.indexOf("view_wiki_links")&&this.scope.wikiLinks.length?this.scope.linksVisible=!0:void 0},WikiDetailController.prototype["delete"]=function(){var message,title;return title=this.translate.instant("WIKI.DELETE_LIGHTBOX_TITLE"),message=this.scope.wikiTitle,this.confirm.askOnDelete(title,message).then(function(_this){return function(askResponse){var onError,onSuccess;return onSuccess=function(){var ctx;return askResponse.finish(),ctx={project:_this.scope.projectSlug},_this.location.path(_this.navUrls.resolve("project-wiki",ctx)),_this.confirm.notify("success")},onError=function(){return askResponse.finish(!1),_this.confirm.notify("error")},_this.repo.remove(_this.scope.wiki).then(onSuccess,onError)}}(this))},WikiDetailController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("WikiDetailController",WikiDetailController),WikiSummaryDirective=function($log,$template,$compile,$translate){var link,template;return template=$template.get("wiki/wiki-summary.html",!0),link=function($scope,$el,$attrs,$model){var render;return render=function(wiki){var ctx,html,user;return null==$scope.usersById?$log.error("WikiSummaryDirective requires userById set in scope."):user=$scope.usersById[wiki.last_modifier],user=void 0===user?{name:"unknown",imgUrl:"/"+window._version+"/images/user-noimage.png"}:{name:user.full_name_display,imgUrl:user.photo},ctx={totalEditions:wiki.editions,lastModifiedDate:moment(wiki.modified_date).format($translate.instant("WIKI.DATETIME")),user:user},html=template(ctx),html=$compile(html)($scope),$el.html(html)},$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?render(wikiPage):void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgWikiSummary",["$log","$tgTemplate","$compile","$translate",WikiSummaryDirective]),EditableWikiContentDirective=function($window,$document,$repo,$confirm,$loading,$analytics,$qqueue){var link;return link=function($scope,$el,$attrs,$model){var cancelEdition,disableEdition,getSelectedText,isEditable,save,switchToEditMode,switchToReadMode;return isEditable=function(){return-1!==$scope.project.my_permissions.indexOf("modify_wiki_page")},switchToEditMode=function(){return $el.find(".edit-wiki-content").show(),$el.find(".view-wiki-content").hide(),$el.find("textarea").focus()},switchToReadMode=function(){return $el.find(".edit-wiki-content").hide(),$el.find(".view-wiki-content").show()},disableEdition=function(){return $el.find(".view-wiki-content .edit").remove(),$el.find(".edit-wiki-content").remove()},cancelEdition=function(){return $model.$modelValue.id?($scope.$apply(function(_this){return function(){return $model.$modelValue.revert()}}(this)),switchToReadMode()):void 0},getSelectedText=function(){return $window.getSelection?$window.getSelection().toString():$document.selection?$document.selection.createRange().text:null},save=$qqueue.bindAdd(function(wiki){var currentLoading,onError,onSuccess,promise;return onSuccess=function(wikiPage){return null==wiki.id&&$analytics.trackEvent("wikipage","create","create wiki page",1),$model.$setViewValue(wikiPage.clone()),$confirm.notify("success"),switchToReadMode()},onError=function(){return $confirm.notify("error")},currentLoading=$loading().removeClasses("icon-floppy").target($el.find(".icon-floppy")).start(),promise=null!=wiki.id?$repo.save(wiki).then(onSuccess,onError):$repo.create("wiki",wiki).then(onSuccess,onError),promise["finally"](function(){return currentLoading.finish()})}),$el.on("click","a",function(event){var href,target;return target=angular.element(event.target),href=target.attr("href"),0===href.indexOf("#")?(event.preventDefault(),$("body").scrollTop($(href).offset().top)):void 0}),$el.on("mousedown",".view-wiki-content",function(event){var target;target=angular.element(event.target),isEditable()&&2===event.button}),$el.on("mouseup",".view-wiki-content",function(event){var target;return target=angular.element(event.target),getSelectedText()||!isEditable()||target.is("a")||target.is("pre")?void 0:switchToEditMode()}),$el.on("click",".save",debounce(2e3,function(){return save($scope.wiki)})),$el.on("click",".cancel",function(){return cancelEdition()}),$el.on("keydown","textarea",function(event){return 27===event.keyCode?cancelEdition():void 0}),$scope.$watch($attrs.ngModel,function(wikiPage){return wikiPage?isEditable()?($el.addClass("editable"),null==wikiPage.id||0===$.trim(wikiPage.content).length?switchToEditMode():void 0):disableEdition():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,restrict:"EA",require:"ngModel",templateUrl:"wiki/editable-wiki-content.html"}},module.directive("tgEditableWikiContent",["$window","$document","$tgRepo","$tgConfirm","$tgLoading","$tgAnalytics","$tgQqueue",EditableWikiContentDirective])}.call(this),function(){var WikiNavDirective,bindOnce,groupBy,mixOf,module,taiga;taiga=this.taiga,mixOf=this.taiga.mixOf,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,module=angular.module("taigaWiki"),WikiNavDirective=function($tgrepo,$log,$location,$confirm,$navUrls,$analytics,$loading,$template,$compile,$translate){var link,template;return template=$template.get("wiki/wiki-nav.html",!0),link=function($scope,$el,$attrs){var $ctrl,render;return $ctrl=$el.controller(),null==$attrs.ngModel?$log.error("WikiNavDirective: no ng-model attr is defined"):(render=function(wikiLinks){var addWikiLinkPermission,deleteWikiLinkPermission,html;return addWikiLinkPermission=$scope.project.my_permissions.indexOf("add_wiki_link")>-1,deleteWikiLinkPermission=$scope.project.my_permissions.indexOf("delete_wiki_link")>-1,html=template({wikiLinks:wikiLinks,projectSlug:$scope.projectSlug,addWikiLinkPermission:addWikiLinkPermission,deleteWikiLinkPermission:deleteWikiLinkPermission}),html=$compile(html)($scope),$el.off(),$el.html(html),$el.on("click",".wiki-link .link-title",function(event){var linkId,linkSlug,target;return event.preventDefault(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),linkSlug=$scope.wikiLinks[linkId].href,$scope.$apply(function(){var ctx;return ctx={project:$scope.projectSlug,slug:linkSlug},$location.path($navUrls.resolve("project-wiki-page",ctx))})}),$el.on("click",".add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new input").focus(),$el.find(".add-button").hide()}),$el.on("click",".js-delete-link",function(event){var linkId,message,target,title;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),linkId=target.parents(".wiki-link").data("id"),title=$translate.instant("WIKI.DELETE_LIGHTBOX_TITLE"),message=$scope.wikiLinks[linkId].title,$confirm.askOnDelete(title,message).then(function(_this){return function(askResponse){var promise;return promise=$tgrepo.remove($scope.wikiLinks[linkId]),promise.then(function(){return promise=$ctrl.loadWikiLinks(),promise.then(function(){return askResponse.finish(),render($scope.wikiLinks)}),promise.then(null,function(){return askResponse.finish()})}),promise.then(null,function(){return askResponse.finish(!1),$confirm.notify("error")})}}(this))}),$el.on("keyup",".new input",function(event){var currentLoading,newLink,promise,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newLink=target.val(),currentLoading=$loading().target($el.find(".new")).start(),promise=$tgrepo.create("wiki-links",{project:$scope.projectId,title:newLink}),promise.then(function(){var loadPromise;return $analytics.trackEvent("wikilink","create","create wiki link",1),loadPromise=$ctrl.loadWikiLinks(),loadPromise.then(function(){return currentLoading.finish(),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),render($scope.wikiLinks)}),loadPromise.then(null,function(){return currentLoading.finish(),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show(),$confirm.notify("error","Error loading wiki links")})}),promise.then(null,function(error){var ref;return currentLoading.finish(),$el.find(".new input").val(newLink),$el.find(".new input").focus().select(),null!=(null!=error&&null!=(ref=error.__all__)?ref[0]:void 0)?$confirm.notify("error","The link already exists"):$confirm.notify("error")})):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new input").val(""),$el.find(".add-button").show()):void 0})},bindOnce($scope,$attrs.ngModel,render))},{link:link}},module.directive("tgWikiNav",["$tgRepo","$log","$tgLocation","$tgConfirm","$tgNavUrls","$tgAnalytics","$tgLoading","$tgTemplate","$compile","$translate",WikiNavDirective])}.call(this),function(){var ChangeOwnerLightboxController,ChangeOwnerLightboxDirective,LbRequestOwnershipDirective,LightboxAddMembersController,LightboxAddMembersDirective,LightboxAddMembersWarningMessageDirective,TransferProjectStartSuccessDirective,debounce,module,taiga;taiga=this.taiga,debounce=this.taiga.debounce,module=angular.module("taigaKanban"),LightboxAddMembersController=function(){function LightboxAddMembersController(scope1,lightboxService1,tgLoader,confirm,rs1,rootScope){var pendingMembersCount;this.scope=scope1,this.lightboxService=lightboxService1,this.tgLoader=tgLoader,this.confirm=confirm,this.rs=rs1,this.rootScope=rootScope,this._defaultMaxInvites=4,this._defaultRole=this.project.roles[0].id,this.form=null,this.submitInvites=!1,this.canAddUsers=!0,this.memberInvites=[],null===this.project.max_memberships?this.membersLimit=this._defaultMaxInvites:(pendingMembersCount=Math.max(this.project.max_memberships-this.project.total_memberships,0),this.membersLimit=Math.min(pendingMembersCount,this._defaultMaxInvites)),this.addSingleMember()}return LightboxAddMembersController.$inject=["$scope","lightboxService","tgLoader","$tgConfirm","$tgResources","$rootScope"],LightboxAddMembersController.prototype.addSingleMember=function(){return this.memberInvites.push({email:"",role_id:this._defaultRole}),this.memberInvites.length>=this.membersLimit&&(this.canAddUsers=!1),this.showWarningMessage=!this.canAddUsers&&this.project.total_memberships+this.memberInvites.length===this.project.max_memberships},LightboxAddMembersController.prototype.removeSingleMember=function(index){return this.memberInvites.splice(index,1),this.canAddUsers=!0,this.showWarningMessage=1===this.membersLimit},LightboxAddMembersController.prototype.submit=function(){var promise;return this.form.initializeFields(),this.form.reset(),this.form.validate()?(this.memberInvites=_.filter(this.memberInvites,function(invites){return""!==invites.email}),this.submitInvites=!0,promise=this.rs.memberships.bulkCreateMemberships(this.project.id,this.memberInvites,this.invitationText),promise.then(this._onSuccessInvite.bind(this),this._onErrorInvite.bind(this))):void 0},LightboxAddMembersController.prototype._onSuccessInvite=function(){return this.submitInvites=!1,this.rootScope.$broadcast("membersform:new:success"),this.lightboxService.closeAll(),this.confirm.notify("success")},LightboxAddMembersController.prototype._onErrorInvite=function(response){return this.submitInvites=!1,this.form.setErrors(response.data),response.data._error_message?this.confirm.notify("error",response.data._error_message):void 0},LightboxAddMembersController}(),module.controller("LbAddMembersController",LightboxAddMembersController),LightboxAddMembersDirective=function(lightboxService){var link;return link=function(scope,el,attrs,ctrl){return lightboxService.open(el),ctrl.form=el.find("form").checksley()},{scope:{},bindToController:{project:"="},controller:"LbAddMembersController",controllerAs:"vm",templateUrl:"admin/lightbox-add-members.html",link:link}},module.directive("tgLbAddMembers",["lightboxService",LightboxAddMembersDirective]),LightboxAddMembersWarningMessageDirective=function(){return{templateUrl:"admin/lightbox-add-members-no-more=memberships-warning-message.html",scope:{project:"="}}},module.directive("tgLightboxAddMembersWarningMessage",[LightboxAddMembersWarningMessageDirective]),LbRequestOwnershipDirective=function(lightboxService,rs,confirmService,$translate){return{link:function(scope,el){return lightboxService.open(el),scope.request=function(){return scope.loading=!0,rs.projects.transferRequest(scope.projectId).then(function(){return scope.loading=!1,lightboxService.close(el),confirmService.notify("success",$translate.instant("ADMIN.PROJECT_PROFILE.REQUEST_OWNERSHIP_SUCCESS"))})}},templateUrl:"common/lightbox/lightbox-request-ownership.html"}},module.directive("tgLbRequestOwnership",["lightboxService","tgResources","$tgConfirm","$translate",LbRequestOwnershipDirective]),ChangeOwnerLightboxController=function(){function ChangeOwnerLightboxController(rs1,lightboxService1,confirm,translate){this.rs=rs1,this.lightboxService=lightboxService1,this.confirm=confirm,this.translate=translate,this.users=[],this.q="",this.commentOpen=!1}return ChangeOwnerLightboxController.prototype.limit=3,ChangeOwnerLightboxController.prototype.normalizeString=function(normalizedString){return normalizedString=normalizedString.replace("Á","A").replace("Ä","A").replace("À","A"),normalizedString=normalizedString.replace("É","E").replace("Ë","E").replace("È","E"),normalizedString=normalizedString.replace("Í","I").replace("Ï","I").replace("Ì","I"),normalizedString=normalizedString.replace("Ó","O").replace("Ö","O").replace("Ò","O"),normalizedString=normalizedString.replace("Ú","U").replace("Ü","U").replace("Ù","U")},ChangeOwnerLightboxController.prototype.filterUsers=function(user){var text,username;return username=user.full_name_display.toUpperCase(),username=this.normalizeString(username),text=this.q.toUpperCase(),text=this.normalizeString(text),_.includes(username,text)},ChangeOwnerLightboxController.prototype.getUsers=function(){var users;return users=this.users.length||this.q.length?this.users:this.activeUsers,users=users.slice(0,this.limit),users=_.reject(users,{selected:!0}),_.reject(users,{id:this.currentOwnerId})},ChangeOwnerLightboxController.prototype.userSearch=function(){return this.users=this.activeUsers,this.selected=_.find(this.users,{selected:!0}),this.q?this.users=_.filter(this.users,this.filterUsers.bind(this)):void 0},ChangeOwnerLightboxController.prototype.selectUser=function(user){return this.activeUsers=_.map(this.activeUsers,function(user){return user.selected=!1,user}),user.selected=!0,this.userSearch()},ChangeOwnerLightboxController.prototype.submit=function(){return this.loading=!0,this.rs.projects.transferStart(this.projectId,this.selected.id,this.comment).then(function(_this){return function(){var desc,title;return _this.loading=!1,_this.lightboxService.closeAll(),title=_this.translate.instant("ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_TITLE"),desc=_this.translate.instant("ADMIN.PROJECT_PROFILE.CHANGE_OWNER_SUCCESS_DESC"),_this.confirm.success(title,desc,{type:"svg",name:"icon-speak-up"})}}(this))},ChangeOwnerLightboxController}(),ChangeOwnerLightboxController.$inject=["tgResources","lightboxService","$tgConfirm","$translate"],module.controller("ChangeOwnerLightbox",ChangeOwnerLightboxController),ChangeOwnerLightboxDirective=function(lightboxService,lightboxKeyboardNavigationService,$template,$compile){var link;return link=function(scope,el){return lightboxService.open(el)},{scope:!0,controller:"ChangeOwnerLightbox",controllerAs:"vm",bindToController:{currentOwnerId:"=",projectId:"=",activeUsers:"="},templateUrl:"common/lightbox/lightbox-change-owner.html",link:link}},module.directive("tgLbChangeOwner",["lightboxService","lightboxKeyboardNavigationService","$tgTemplate","$compile",ChangeOwnerLightboxDirective]),TransferProjectStartSuccessDirective=function(lightboxService){var link;return link=function(scope,el){return scope.close=function(){return lightboxService.close(el)},lightboxService.open(el)},{templateUrl:"common/lightbox/lightbox-transfer-project-start-success.html",link:link}},module.directive("tgLbTransferProjectStartSuccess",["lightboxService",TransferProjectStartSuccessDirective])}.call(this),function(){var MembershipsController,MembershipsDirective,MembershipsRowActionsDirective,MembershipsRowAdminCheckboxDirective,MembershipsRowAvatarDirective,MembershipsRowRoleSelectorDirective,NoMoreMembershipsExplanationDirective,bindMethods,mixOf,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),MembershipsController=function(superClass){function MembershipsController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,analytics,appMetaService,translate,auth,lightboxFactory1){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.analytics=analytics,this.appMetaService=appMetaService,this.translate=translate,this.auth=auth,this.lightboxFactory=lightboxFactory1,bindMethods(this),this.scope.project={},this.scope.filters={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ADMIN.MEMBERSHIPS.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("membersform:new:success",function(_this){return function(){return _this.loadInitialData(),_this.analytics.trackEvent("membership","create","create memberships on admin",1)}}(this))}return extend(MembershipsController,superClass),MembershipsController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","$tgAnalytics","tgAppMetaService","$translate","$tgAuth","tgLightboxFactory"],MembershipsController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.i_am_admin||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.canAddUsers=null===project.max_memberships||project.max_memberships>project.total_memberships,_this.scope.$emit("project:loaded",project),project}}(this))},MembershipsController.prototype.loadMembers=function(){var httpFilters;return httpFilters=this.getUrlFilters(),this.rs.memberships.list(this.scope.projectId,httpFilters).then(function(_this){return function(data){return _this.scope.memberships=_.filter(data.models,function(membership){return null===membership.user||membership.is_user_active}),_this.scope.page=data.current,_this.scope.count=data.count,_this.scope.paginatedBy=data.paginatedBy,data}}(this))},MembershipsController.prototype.loadInitialData=function(){return this.loadProject().then(function(_this){return function(){return _this.q.all([_this.loadMembers(),_this.auth.refresh()])}}(this))},MembershipsController.prototype.getUrlFilters=function(){var filters;return filters=_.pick(this.location.search(),"page"),filters.page||(filters.page=1),filters},MembershipsController.prototype.addNewMembers=function(){return this.lightboxFactory.create("tg-lb-add-members",{"class":"lightbox lightbox-add-member",project:"project"},{project:this.scope.project})},MembershipsController.prototype.showLimitUsersWarningMessage=function(){var icon,message,title;return title=this.translate.instant("ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING"),message=this.translate.instant("ADMIN.MEMBERSHIPS.LIMIT_USERS_WARNING_MESSAGE",{members:this.scope.project.max_memberships}),icon="/"+window._version+"/svg/icons/team-question.svg",this.confirm.success(title,message,{name:icon,type:"img"})},MembershipsController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("MembershipsController",MembershipsController),MembershipsDirective=function($template,$compile){var link,linkPagination,template;return template=$template.get("admin/admin-membership-paginator.html",!0),linkPagination=function($scope,$el,$attrs,$ctrl){var $pagEl,afterCurrent,atBegin,atEnd,beforeCurrent,getNumPages,renderPagination;return afterCurrent=2,beforeCurrent=4,atBegin=2,atEnd=2,$pagEl=$el.find(".memberships-paginator"),getNumPages=function(){var numPages;return numPages=$scope.count/$scope.paginatedBy,numPages=parseInt(numPages,10)=numPages)return void $pagEl.hide();for(pages=[],options={},options.pages=pages,options.showPrevious=$scope.page>1,options.showNext=!($scope.page===numPages),cpage=$scope.page,i=j=1,ref=numPages;ref>=1?ref>=j:j>=ref;i=ref>=1?++j:--j)i===cpage+afterCurrent&&numPages>cpage+afterCurrent+atEnd?pages.push({classes:"dots",type:"dots"}):i===cpage-beforeCurrent&&cpage>atBegin+beforeCurrent?pages.push({classes:"dots",type:"dots"}):i>cpage+afterCurrent&&numPages-atEnd>=i||cpage-beforeCurrent>i&&i>atBegin||(i===cpage?pages.push({classes:"active",num:i,type:"page-active"}):pages.push({classes:"page",num:i,type:"page"}));return html=template(options),html=$compile(html)($scope),$pagEl.html(html),$pagEl.show()},$scope.$watch("memberships",function(value){return value?renderPagination():void 0}),$el.on("click",".memberships-paginator a.next",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page+1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator a.previous",function(event){return event.preventDefault(),$scope.$apply(function(){return $ctrl.selectFilter("page",$scope.page-1),$ctrl.loadMembers()})}),$el.on("click",".memberships-paginator li.page > a",function(event){var pagenum,target;return event.preventDefault(),target=angular.element(event.currentTarget),pagenum=target.data("pagenum"),$scope.$apply(function(){return $ctrl.selectFilter("page",pagenum),$ctrl.loadMembers()})})},link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),linkPagination($scope,$el,$attrs,$ctrl),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgMemberships",["$tgTemplate","$compile",MembershipsDirective]),MembershipsRowAvatarDirective=function($log,$template,$translate){var link,template;return template=$template.get("admin/memberships-row-avatar.html",!0),link=function($scope,$el,$attrs){var member,pending,render;return pending=$translate.instant("ADMIN.MEMBERSHIP.STATUS_PENDING"),render=function(member){var ctx,html;return ctx={full_name:member.full_name?member.full_name:"",email:member.user_email?member.user_email:member.email,imgurl:member.photo?member.photo:"/"+window._version+"/images/unnamed.png",pending:member.is_user_active?"":pending,isOwner:member.is_owner},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowAvatar?$log.error("MembershipsRowAvatarDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAvatar),render(member),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowAvatar",["$log","$tgTemplate","$translate",MembershipsRowAvatarDirective]),MembershipsRowAdminCheckboxDirective=function($log,$repo,$confirm,$template,$compile){var link,template;return template=$template.get("admin/admin-memberships-row-checkbox.html",!0),link=function($scope,$el,$attrs){var html,member,render;return $scope.$on("$destroy",function(){return $el.off()}),null==$attrs.tgMembershipsRowAdminCheckbox?$log.error("MembershipsRowAdminCheckboxDirective: the directive need a member"):(member=$scope.$eval($attrs.tgMembershipsRowAdminCheckbox),member.is_owner?void $el.find(".js-check").remove():(render=function(member){var ctx,html;return ctx={inputId:"is-admin-"+member.id},html=template(ctx),html=$compile(html)($scope),$el.html(html)},$el.on("click",":checkbox",function(_this){return function(event){var onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(data){return member.revert(),$el.find(":checkbox").prop("checked",member.is_admin),$confirm.notify("error",data.is_admin[0])},target=angular.element(event.currentTarget),member.is_admin=target.prop("checked"),$repo.save(member).then(onSuccess,onError)}}(this)),html=render(member),member.is_admin?$el.find(":checkbox").prop("checked",!0):void 0))},{link:link}},module.directive("tgMembershipsRowAdminCheckbox",["$log","$tgRepo","$tgConfirm","$tgTemplate","$compile",MembershipsRowAdminCheckboxDirective]),MembershipsRowRoleSelectorDirective=function($log,$repo,$confirm){var link,template;return template=_.template('\n <% _.each(roleList, function(role) { %>\n selected="selected"<% } %>>\n <%- role.name %>\n \n <% }); %>\n'),link=function($scope,$el,$attrs){var $ctrl,html,member,render;return render=function(member){var ctx,html;return ctx={roleList:$scope.project.roles,selectedRole:member.role},html=template(ctx),$el.html(html)},null==$attrs.tgMembershipsRowRoleSelector?$log.error("MembershipsRowRoleSelectorDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowRoleSelector),html=render(member),$el.on("change","select",function(_this){return function(event){var newRole,onError,onSuccess,target;return onSuccess=function(){return $confirm.notify("success")},onError=function(){return $confirm.notify("error")},target=angular.element(event.currentTarget),newRole=parseInt(target.val(),10),member.role!==newRole?(member.role=newRole,$repo.save(member).then(onSuccess,onError)):void 0}}(this)),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowRoleSelector",["$log","$tgRepo","$tgConfirm",MembershipsRowRoleSelectorDirective]),MembershipsRowActionsDirective=function($log,$repo,$rs,$confirm,$compile,$translate,$location,$navUrls,lightboxFactory){var activedTemplate,link,pendingTemplate;return activedTemplate='\n\n\n \n \n \n',pendingTemplate='\n\n\n \n \n \n',link=function($scope,$el,$attrs){var $ctrl,leaveConfirm,member,render;return render=function(member){var html;return html=member.user?$compile(activedTemplate)($scope):$compile(pendingTemplate)($scope),$el.html(html)},null==$attrs.tgMembershipsRowActions?$log.error("MembershipsRowActionsDirective: the directive need a member"):($ctrl=$el.controller(),member=$scope.$eval($attrs.tgMembershipsRowActions),render(member),$el.on("click",".js-resend",function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(){var text;return text=$translate.instant("ADMIN.MEMBERSHIP.SUCCESS_SEND_INVITATION",{email:$scope.member.email}),$confirm.notify("success",text)},onError=function(){var text;return text=$translate.instant("ADMIM.MEMBERSHIP.ERROR_SEND_INVITATION"),$confirm.notify("error",text)},$rs.memberships.resendInvitation($scope.member.id).then(onSuccess,onError)}),leaveConfirm=function(){var defaultMsg,message,title;return title=$translate.instant("ADMIN.MEMBERSHIP.DELETE_MEMBER"),defaultMsg=$translate.instant("ADMIN.MEMBERSHIP.DEFAULT_DELETE_MESSAGE",{email:member.email}),message=member.user?member.full_name:defaultMsg,$confirm.askOnDelete(title,message).then(function(askResponse){var onError,onSuccess;return onSuccess=function(_this){return function(){var text;return askResponse.finish(),member.user!==$scope.user.id?($scope.page>1&&$scope.count-1<=$scope.paginatedBy&&$ctrl.selectFilter("page",$scope.page-1),$ctrl.loadInitialData()):$location.path($navUrls.resolve("home")),text=$translate.instant("ADMIN.MEMBERSHIP.SUCCESS_DELETE",{message:message}),$confirm.notify("success",text,null,5e3)}}(this),onError=function(_this){return function(){var text;return askResponse.finish(!1),text=$translate.instant("ADMIN.MEMBERSHIP.ERROR_DELETE",{message:message}),$confirm.notify("error",text)}}(this),$repo.remove(member).then(onSuccess,onError)})},$el.on("click",".delete",function(event){var isCurrentUser;return event.preventDefault(),$scope.project.owner.id===member.user?(isCurrentUser=$scope.user.id===member.user, lightboxFactory.create("tg-lightbox-leave-project-warning",{"class":"lightbox lightbox-leave-project-warning"},{isCurrentUser:isCurrentUser,project:$scope.project})):leaveConfirm()}),$scope.$on("$destroy",function(){return $el.off()}))},{link:link}},module.directive("tgMembershipsRowActions",["$log","$tgRepo","$tgResources","$tgConfirm","$compile","$translate","$tgLocation","$tgNavUrls","tgLightboxFactory",MembershipsRowActionsDirective]),NoMoreMembershipsExplanationDirective=function(){return{templateUrl:"admin/no-more-memberships-explanation.html",scope:{project:"="}}},module.directive("tgNoMoreMembershipsExplanation",[NoMoreMembershipsExplanationDirective])}.call(this),function(){var AdminNavigationDirective,module;AdminNavigationDirective=function(){var link;return link=function($scope,$el,$attrs){var section;return section=$attrs.tgAdminNavigation,$el.find(".active").removeClass("active"),$el.find("#adminmenu-"+section+" a").addClass("active"),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module=angular.module("taigaAdmin"),module.directive("tgAdminNavigation",AdminNavigationDirective)}.call(this),function(){var AdminProjectChangeOwnerDirective,AdminProjectRequestOwnershipDirective,AdminProjectRestrictionsDirective,CsvExporterController,CsvExporterIssuesController,CsvExporterTasksController,CsvExporterUserstoriesController,CsvIssueDirective,CsvTaskDirective,CsvUsDirective,ProjectDefaultValuesDirective,ProjectExportDirective,ProjectLogoDirective,ProjectLogoModelDirective,ProjectModulesDirective,ProjectProfileController,ProjectProfileDirective,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectProfileController=function(superClass){function ProjectProfileController(scope1,rootscope,repo,confirm,rs,params,q,location,navUrls,appMetaService,translate,tgAuth,currentUserService1){var promise;this.scope=scope1,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appMetaService=appMetaService,this.translate=translate,this.tgAuth=tgAuth,this.currentUserService=currentUserService1,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,sectionName,title;return sectionName=_this.translate.instant(_this.scope.sectionName),title=_this.translate.instant("ADMIN.PROJECT_PROFILE.PAGE_TITLE",{sectionName:sectionName,projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description),_this.fillUsersAndRoles(_this.scope.project.members,_this.scope.project.roles)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:loaded",function(_this){return function(){var description,sectionName,title;return sectionName=_this.translate.instant(_this.scope.sectionName),title=_this.translate.instant("ADMIN.PROJECT_PROFILE.PAGE_TITLE",{sectionName:sectionName,projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this))}return extend(ProjectProfileController,superClass),ProjectProfileController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","tgAppMetaService","$translate","$tgAuth","tgCurrentUserService"],ProjectProfileController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.i_am_admin||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.pointsList=_.sortBy(project.points,"order"),_this.scope.usStatusList=_.sortBy(project.us_statuses,"order"),_this.scope.taskStatusList=_.sortBy(project.task_statuses,"order"),_this.scope.prioritiesList=_.sortBy(project.priorities,"order"),_this.scope.severitiesList=_.sortBy(project.severities,"order"),_this.scope.issueTypesList=_.sortBy(project.issue_types,"order"),_this.scope.issueStatusList=_.sortBy(project.issue_statuses,"order"),_this.scope.$emit("project:loaded",project),project}}(this))},ProjectProfileController.prototype.loadInitialData=function(){return this.q.all([this.loadProject(),this.tgAuth.refresh()])},ProjectProfileController.prototype.openDeleteLightbox=function(){return this.rootscope.$broadcast("deletelightbox:new",this.scope.project)},ProjectProfileController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectProfileController",ProjectProfileController),ProjectProfileDirective=function($repo,$confirm,$loading,$navurls,$location,projectService,currentUserService){var link;return link=function($scope,$el,$attrs){var $ctrl,form,submit,submitButton;return $ctrl=$el.controller(),form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(_this){return function(event){var currentLoading,promise;return event.preventDefault(),form.validate()?(currentLoading=$loading().target(submitButton).start(),promise=$repo.save($scope.project),promise.then(function(){var newUrl;return currentLoading.finish(),$confirm.notify("success"),newUrl=$navurls.resolve("project-admin-project-profile-details",{project:$scope.project.slug}),$location.path(newUrl),$ctrl.loadInitialData(),projectService.fetchProject(),currentUserService.loadProjects()}),promise.then(null,function(data){return currentLoading.finish(),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgProjectProfile",["$tgRepo","$tgConfirm","$tgLoading","$tgNavUrls","$tgLocation","tgProjectService","tgCurrentUserService",ProjectProfileDirective]),ProjectDefaultValuesDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el,$attrs){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(_this){return function(event){var currentLoading,promise;return event.preventDefault(),form.validate()?(currentLoading=$loading().target(submitButton).start(),promise=$repo.save($scope.project),promise.then(function(){return currentLoading.finish(),$confirm.notify("success")}),promise.then(null,function(data){return currentLoading.finish(),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectDefaultValues",["$tgRepo","$tgConfirm","$tgLoading",ProjectDefaultValuesDirective]),ProjectModulesDirective=function($repo,$confirm,$loading,projectService){var link;return link=function($scope,$el,$attrs){var submit;return submit=function(_this){return function(){var form,promise;return form=$el.find("form").checksley(),form.initializeFields(),form.reset(),form.validate()?(promise=$repo.save($scope.project),promise.then(function(){return $scope.$emit("project:loaded",$scope.project),$confirm.notify("success"),projectService.fetchProject()}),promise.then(null,function(data){return form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this),$el.on("change",".module-activation.module-direct-active input",function(event){return event.preventDefault(),submit()}),$el.on("submit","form",function(event){return event.preventDefault(),submit()}),$el.on("click",".icon-save",function(event){return event.preventDefault(),submit()}),$el.on("keydown",".videoconference-attributes input",function(e){return 32!==e.which}),$scope.$watch("project.videoconferences",function(newVal,oldVal){return null!=newVal&&null!=oldVal&&newVal!==oldVal?$scope.project.videoconferences_extra_data="":void 0}),$scope.$watch("isVideoconferenceActivated",function(newValue,oldValue){return newValue===!1&&($scope.project.videoconferences=null,$scope.project.videoconferences_extra_data="",oldValue===!0)?submit():void 0}),$scope.$watch("project",function(project){return null!=project.videoconferences?$scope.isVideoconferenceActivated=!0:$scope.isVideoconferenceActivated=!1})},{link:link}},module.directive("tgProjectModules",["$tgRepo","$tgConfirm","$tgLoading","tgProjectService",ProjectModulesDirective]),ProjectExportDirective=function($window,$rs,$confirm,$translate){var link;return link=function($scope,$el,$attrs){var asyn_message,buttonsEl,dump_ready_text,hideButtons,hideResult,hideSpinner,loading_msg,loading_title,resultEl,resultMessageEl,resultTitleEl,setAsyncMessage,setAsyncTitle,setLoadingMessage,setLoadingTitle,setSyncMessage,setSyncTitle,showButtons,showErrorMode,showExportResultAsyncMode,showExportResultSyncMode,showLoadingMode,showResult,showSpinner,spinnerEl,syn_message;return buttonsEl=$el.find(".admin-project-export-buttons"),showButtons=function(){return buttonsEl.removeClass("hidden")},hideButtons=function(){return buttonsEl.addClass("hidden")},resultEl=$el.find(".admin-project-export-result"),showResult=function(){return resultEl.removeClass("hidden")},hideResult=function(){return resultEl.addClass("hidden")},spinnerEl=$el.find(".spin"),showSpinner=function(){return spinnerEl.removeClass("hidden")},hideSpinner=function(){return spinnerEl.addClass("hidden")},resultTitleEl=$el.find(".result-title"),loading_title=$translate.instant("ADMIN.PROJECT_EXPORT.LOADING_TITLE"),loading_msg=$translate.instant("ADMIN.PROJECT_EXPORT.LOADING_MESSAGE"),dump_ready_text=function(){return resultTitleEl.html($translate.instant("ADMIN.PROJECT_EXPORT.DUMP_READY"))},asyn_message=function(){return resultTitleEl.html($translate.instant("ADMIN.PROJECT_EXPORT.ASYNC_MESSAGE"))},syn_message=function(url){return resultTitleEl.html($translate.instant("ADMIN.PROJECT_EXPORT.SYNC_MESSAGE",{url:url}))},setLoadingTitle=function(){return resultTitleEl.html(loading_title)},setAsyncTitle=function(){return resultTitleEl.html(loading_msg)},setSyncTitle=function(){return resultTitleEl.html(dump_ready_text)},resultMessageEl=$el.find(".result-message "),setLoadingMessage=function(){return resultMessageEl.html(loading_msg)},setAsyncMessage=function(){return resultMessageEl.html(asyn_message)},setSyncMessage=function(url){return resultMessageEl.html(syn_message(url))},showLoadingMode=function(){return showSpinner(),setLoadingTitle(),setLoadingMessage(),hideButtons(),showResult()},showExportResultAsyncMode=function(){return hideSpinner(),setAsyncTitle(),setAsyncMessage()},showExportResultSyncMode=function(url){return hideSpinner(),setSyncTitle(),setSyncMessage(url)},showErrorMode=function(){return hideSpinner(),hideResult(),showButtons()},$el.on("click","a.button-export",debounce(2e3,function(_this){return function(event){var onError,onSuccess;return event.preventDefault(),onSuccess=function(result){var dumpUrl;return 202===result.status?showExportResultAsyncMode():(dumpUrl=result.data.url,showExportResultSyncMode(dumpUrl),$window.open(dumpUrl,"_blank"))},onError=function(result){var errorMsg,ref;return showErrorMode(),errorMsg=$translate.instant("ADMIN.PROJECT_EXPORT.ERROR"),429===result.status?errorMsg=$translate.instant("ADMIN.PROJECT_EXPORT.ERROR_BUSY"):(null!=(ref=result.data)?ref._error_message:void 0)&&(errorMsg=$translate.instant("ADMIN.PROJECT_EXPORT.ERROR_BUSY",{message:result.data._error_message})),$confirm.notify("error",errorMsg)},showLoadingMode(),$rs.projects["export"]($scope.projectId).then(onSuccess,onError)}}(this)))},{link:link}},module.directive("tgProjectExport",["$window","$tgResources","$tgConfirm","$translate",ProjectExportDirective]),CsvExporterController=function(superClass){function CsvExporterController(scope1,rootscope,urls,confirm,rs,translate){this.scope=scope1,this.rootscope=rootscope,this.urls=urls,this.confirm=confirm,this.rs=rs,this.translate=translate,this._generateUuid=bind(this._generateUuid,this),this.setCsvUuid=bind(this.setCsvUuid,this),this.rootscope.$on("project:loaded",this.setCsvUuid),this.scope.$watch("csvUuid",function(_this){return function(value){return value?_this.scope.csvUrl=_this.urls.resolveAbsolute(_this.type+"-csv",value):_this.scope.csvUrl=""}}(this))}return extend(CsvExporterController,superClass),CsvExporterController.$inject=["$scope","$rootScope","$tgUrls","$tgConfirm","$tgResources","$translate"],CsvExporterController.prototype.setCsvUuid=function(){return this.scope.csvUuid=this.scope.project[this.type+"_csv_uuid"]},CsvExporterController.prototype._generateUuid=function(response){var promise;return null==response&&(response=null),promise=this.rs.projects["regenerate_"+this.type+"_csv_uuid"](this.scope.projectId),promise.then(function(_this){return function(data){var ref;return _this.scope.csvUuid=null!=(ref=data.data)?ref.uuid:void 0}}(this)),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this)),promise["finally"](function(){return response?response.finish():void 0}),promise},CsvExporterController.prototype.regenerateUuid=function(){var subtitle,title;return this.scope.csvUuid?(title=this.translate.instant("ADMIN.REPORTS.REGENERATE_TITLE"),subtitle=this.translate.instant("ADMIN.REPORTS.REGENERATE_SUBTITLE"),this.confirm.ask(title,subtitle).then(this._generateUuid)):this._generateUuid()},CsvExporterController}(taiga.Controller),CsvExporterUserstoriesController=function(superClass){function CsvExporterUserstoriesController(){return CsvExporterUserstoriesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterUserstoriesController,superClass),CsvExporterUserstoriesController.prototype.type="userstories",CsvExporterUserstoriesController}(CsvExporterController),CsvExporterTasksController=function(superClass){function CsvExporterTasksController(){return CsvExporterTasksController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterTasksController,superClass),CsvExporterTasksController.prototype.type="tasks",CsvExporterTasksController}(CsvExporterController),CsvExporterIssuesController=function(superClass){function CsvExporterIssuesController(){return CsvExporterIssuesController.__super__.constructor.apply(this,arguments)}return extend(CsvExporterIssuesController,superClass),CsvExporterIssuesController.prototype.type="issues",CsvExporterIssuesController}(CsvExporterController),module.controller("CsvExporterUserstoriesController",CsvExporterUserstoriesController),module.controller("CsvExporterTasksController",CsvExporterTasksController),module.controller("CsvExporterIssuesController",CsvExporterIssuesController),CsvUsDirective=function($translate){var link;return link=function($scope){return $scope.sectionTitle="ADMIN.CSV.SECTION_TITLE_US"},{controller:"CsvExporterUserstoriesController",controllerAs:"ctrl",templateUrl:"admin/project-csv.html",link:link,scope:!0}},module.directive("tgCsvUs",["$translate",CsvUsDirective]),CsvTaskDirective=function($translate){var link;return link=function($scope){return $scope.sectionTitle="ADMIN.CSV.SECTION_TITLE_TASK"},{controller:"CsvExporterTasksController",controllerAs:"ctrl",templateUrl:"admin/project-csv.html",link:link,scope:!0}},module.directive("tgCsvTask",["$translate",CsvTaskDirective]),CsvIssueDirective=function($translate){var link;return link=function($scope){return $scope.sectionTitle="ADMIN.CSV.SECTION_TITLE_ISSUE"},{controller:"CsvExporterIssuesController",controllerAs:"ctrl",templateUrl:"admin/project-csv.html",link:link,scope:!0}},module.directive("tgCsvIssue",["$translate",CsvIssueDirective]),ProjectLogoDirective=function($auth,$model,$rs,$confirm){var link;return link=function($scope,$el,$attrs){var onError,onSuccess,showSizeInfo;return showSizeInfo=function(){return $el.find(".size-info").addClass("active")},onSuccess=function(response){var project;return project=$model.make_model("projects",response.data),$scope.project=project,$el.find(".loading-overlay").removeClass("active"),$confirm.notify("success")},onError=function(response){return 413===response.status&&showSizeInfo(),$el.find(".loading-overlay").removeClass("active"),$confirm.notify("error",response.data._error_message)},$el.on("click",".js-change-logo",function(){return $el.find("#logo-field").click()}),$el.on("change","#logo-field",function(event){return $scope.logoAttachment?($el.find(".loading-overlay").addClass("active"),$rs.projects.changeLogo($scope.project.id,$scope.logoAttachment).then(onSuccess,onError)):void 0}),$el.on("click","a.js-use-default-logo",function(event){return $el.find(".loading-overlay").addClass("active"),$rs.projects.removeLogo($scope.project.id).then(onSuccess,onError)}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectLogo",["$tgAuth","$tgModel","$tgResources","$tgConfirm",ProjectLogoDirective]),ProjectLogoModelDirective=function($parse){var link;return link=function($scope,$el,$attrs){var model,modelSetter;return model=$parse($attrs.tgProjectLogoModel),modelSetter=model.assign,$el.bind("change",function(){return $scope.$apply(function(){return modelSetter($scope,$el[0].files[0])})})},{link:link}},module.directive("tgProjectLogoModel",["$parse",ProjectLogoModelDirective]),AdminProjectRestrictionsDirective=function(){return{scope:{project:"="},templateUrl:"admin/admin-project-restrictions.html"}},module.directive("tgAdminProjectRestrictions",[AdminProjectRestrictionsDirective]),AdminProjectRequestOwnershipDirective=function(lightboxFactory){return{link:function(scope){return scope.requestOwnership=function(){return lightboxFactory.create("tg-lb-request-ownership",{"class":"lightbox lightbox-request-ownership"},{projectId:scope.projectId})}},scope:{projectId:"=",owner:"="},templateUrl:"admin/admin-project-request-ownership.html"}},module.directive("tgAdminProjectRequestOwnership",["tgLightboxFactory",AdminProjectRequestOwnershipDirective]),AdminProjectChangeOwnerDirective=function(lightboxFactory){return{link:function(scope){return scope.changeOwner=function(){return lightboxFactory.create("tg-lb-change-owner",{"class":"lightbox lightbox-select-user","project-id":"projectId","active-users":"activeUsers","current-owner-id":"currentOwnerId"},{projectId:scope.projectId,activeUsers:scope.activeUsers,currentOwnerId:scope.owner.id,members:scope.members})}},scope:{activeUsers:"=",projectId:"=",owner:"=",members:"="},templateUrl:"admin/admin-project-change-owner.html"}},module.directive("tgAdminProjectChangeOwner",["tgLightboxFactory",AdminProjectChangeOwnerDirective])}.call(this),function(){var ColorSelectionDirective,DATE_TYPE,MULTILINE_TYPE,ProjectCustomAttributesController,ProjectCustomAttributesDirective,ProjectValuesController,ProjectValuesDirective,ProjectValuesSectionController,TEXT_TYPE,TYPE_CHOICES,URL_TYPE,bindOnce,debounce,groupBy,joinStr,mixOf,module,taiga,toString,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,bind=function(fn,me){return function(){return fn.apply(me,arguments)}};taiga=this.taiga,mixOf=this.taiga.mixOf,trim=this.taiga.trim,toString=this.taiga.toString,joinStr=this.taiga.joinStr,groupBy=this.taiga.groupBy,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,module=angular.module("taigaAdmin"),ProjectValuesSectionController=function(superClass){function ProjectValuesSectionController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appMetaService,translate){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appMetaService=appMetaService,this.translate=translate,this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,sectionName,title;return sectionName=_this.translate.instant(_this.scope.sectionName),title=_this.translate.instant("ADMIN.PROJECT_VALUES.PAGE_TITLE",{sectionName:sectionName,projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(ProjectValuesSectionController,superClass),ProjectValuesSectionController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","tgAppMetaService","$translate"],ProjectValuesSectionController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.i_am_admin||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},ProjectValuesSectionController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject()},ProjectValuesSectionController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectValuesSectionController",ProjectValuesSectionController),ProjectValuesController=function(superClass){function ProjectValuesController(scope,rootscope,repo,confirm,rs){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.moveValue=bind(this.moveValue,this),this.loadValues=bind(this.loadValues,this),this.scope.$on("admin:project-values:move",this.moveValue),this.rootscope.$on("project:loaded",this.loadValues)}return extend(ProjectValuesController,superClass),ProjectValuesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources"],ProjectValuesController.prototype.loadValues=function(){return this.rs[this.scope.resource].listValues(this.scope.projectId,this.scope.type).then(function(_this){return function(values){return _this.scope.values=values,_this.scope.maxValueOrder=_.maxBy(values,"order").order,values}}(this))},ProjectValuesController.prototype.moveValue=function(ctx,itemValue,itemIndex){var r,values;return values=this.scope.values,r=values.indexOf(itemValue),values.splice(r,1),values.splice(itemIndex,0,itemValue),_.each(values,function(value,index){return value.order=index}),this.repo.saveAll(values)},ProjectValuesController}(taiga.Controller),module.controller("ProjectValuesController",ProjectValuesController),ProjectValuesDirective=function($log,$repo,$confirm,$location,animationFrame,$translate,$rootscope){var link,linkDragAndDrop,linkValue;return linkDragAndDrop=function($scope,$el,$attrs){var itemEl,newParentScope,oldParentScope,tdom;return oldParentScope=null,newParentScope=null,itemEl=null,tdom=$el.find(".sortable"),tdom.sortable({handle:".row.table-main.visualization",dropOnEmpty:!0,connectWith:".project-values-body",revert:400,axis:"y"}),tdom.on("sortstop",function(event,ui){var itemIndex,itemValue;return itemEl=ui.item,itemValue=itemEl.scope().value,itemIndex=itemEl.index(),$scope.$broadcast("admin:project-values:move",itemValue,itemIndex)}),$scope.$on("$destroy",function(){return $el.off()})},linkValue=function($scope,$el,$attrs){var $ctrl,cancel,goToBottomList,initializeNewValue,initializeTextTranslations,objName,saveNewValue,saveValue,valueType;return $ctrl=$el.controller(),valueType=$attrs.type,objName=$attrs.objname,initializeNewValue=function(){return $scope.newValue={name:"",is_closed:!1,is_archived:!1}},initializeTextTranslations=function(){return $scope.addNewElementText=$translate.instant("ADMIN.PROJECT_VALUES_"+objName.toUpperCase()+".ACTION_ADD")},initializeNewValue(),initializeTextTranslations(),$rootscope.$on("$translateChangeEnd",function(){return $scope.$evalAsync(initializeTextTranslations)}),goToBottomList=function(_this){return function(focus){var table;return null==focus&&(focus=!1),table=$el.find(".table-main"),$(document.body).scrollTop(table.offset().top+table.height()),focus?$el.find(".new-value input:visible").first().focus():void 0}}(this),saveValue=function(target){var form,formEl,promise,value;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?(value=formEl.scope().value,promise=$repo.save(value),promise.then(function(_this){return function(){var row;return row=target.parents(".row.table-main"),row.addClass("hidden"),row.siblings(".visualization").removeClass("hidden")}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},saveNewValue=function(target){var form,formEl,promise;return formEl=target.parents("form"),form=formEl.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,$scope.newValue.order=$scope.maxValueOrder?$scope.maxValueOrder+1:1,promise=$repo.create(valueType,$scope.newValue),promise.then(function(_this){return function(data){return target.addClass("hidden"),$scope.values.push(data),$scope.maxValueOrder=data.order,initializeNewValue()}}(this)),promise.then(null,function(data){return form.setErrors(data)})):void 0},cancel=function(target){var formEl,row,value;return row=target.parents(".row.table-main"),formEl=target.parents("form"),value=formEl.scope().value,$scope.$apply(function(){return row.addClass("hidden"),value.revert(),row.siblings(".visualization").removeClass("hidden")})},$el.on("click",".show-add-new",function(event){return event.preventDefault(),$el.find(".new-value").removeClass("hidden"),goToBottomList(!0)}),$el.on("click",".add-new",debounce(2e3,function(event){var target;return event.preventDefault(),target=$el.find(".new-value"),saveNewValue(target)})),$el.on("click",".delete-new",function(event){return event.preventDefault(),$el.find(".new-value").addClass("hidden"),initializeNewValue()}),$el.on("click",".edit-value",function(event){var editionRow,row,target;return event.preventDefault(),target=angular.element(event.currentTarget),row=target.parents(".row.table-main"),row.addClass("hidden"),editionRow=row.siblings(".edition"),editionRow.removeClass("hidden"),editionRow.find("input:visible").first().focus().select()}),$el.on("keyup",".edition input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),saveValue(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("keyup",".new-value input",function(event){var target;return 13===event.keyCode?(target=$el.find(".new-value"),saveNewValue(target)):27===event.keyCode?($el.find(".new-value").addClass("hidden"),initializeNewValue()):void 0}),$el.on("click",".save",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),saveValue(target)}),$el.on("click",".cancel",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),cancel(target)}),$el.on("click",".delete-value",function(event){var choices,formEl,subtitle,target,text,title,value;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.parents("form"),value=formEl.scope().value,choices={},_.each($scope.values,function(option){return value.id!==option.id?choices[option.id]=option.name:void 0}),subtitle=value.name,0===_.keys(choices).length?$confirm.error($translate.instant("ADMIN.PROJECT_VALUES.ERROR_DELETE_ALL")):(title=$translate.instant("ADMIN.COMMON.TITLE_ACTION_DELETE_VALUE"),text=$translate.instant("ADMIN.PROJECT_VALUES.REPLACEMENT"),$confirm.askChoice(title,subtitle,choices,text).then(function(response){var onError,onSucces;return onSucces=function(){return $ctrl.loadValues()["finally"](function(){return response.finish()})},onError=function(){return $confirm.notify("error")},$repo.remove(value,{moveTo:response.selected}).then(onSucces,onError)}))})},link=function($scope,$el,$attrs){return linkDragAndDrop($scope,$el,$attrs),linkValue($scope,$el,$attrs),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgProjectValues",["$log","$tgRepo","$tgConfirm","$tgLocation","animationFrame","$translate","$rootScope",ProjectValuesDirective]),ColorSelectionDirective=function(){var link;return link=function($scope,$el,$attrs,$model){var $ctrl;return $ctrl=$el.controller(),$scope.$watch($attrs.ngModel,function(element){return $scope.color=element.color}),$el.on("click",".current-color",function(event){var body,target;return event.preventDefault(),event.stopPropagation(),target=angular.element(event.currentTarget),$el.find(".select-color").hide(),target.siblings(".select-color").show(),body=angular.element("body"),body.on("click",function(_this){return function(event){return 0===angular.element(event.target).parent(".select-color").length?($el.find(".select-color").hide(),body.unbind("click")):void 0}}(this))}),$el.on("click",".select-color .color",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),$scope.$apply(function(){return $model.$modelValue.color=target.data("color")}),$el.find(".select-color").hide()}),$el.on("click",".select-color .selected-color",function(event){return event.preventDefault(),$scope.$apply(function(){return $model.$modelValue.color=$scope.color}),$el.find(".select-color").hide()}),$scope.$on("$destroy",function(){return $el.off()})},{link:link,require:"ngModel"}},module.directive("tgColorSelection",ColorSelectionDirective),TEXT_TYPE="text",MULTILINE_TYPE="multiline",DATE_TYPE="date",URL_TYPE="url",TYPE_CHOICES=[{key:TEXT_TYPE,name:"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_TEXT"},{key:MULTILINE_TYPE,name:"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_MULTI"},{key:DATE_TYPE,name:"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE"},{key:URL_TYPE,name:"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL"}],ProjectCustomAttributesController=function(superClass){function ProjectCustomAttributesController(scope,rootscope,repo,rs,params,q,location,navUrls,appMetaService,translate){this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appMetaService=appMetaService,this.translate=translate,this.moveCustomAttributes=bind(this.moveCustomAttributes,this),this.deleteCustomAttribute=bind(this.deleteCustomAttribute,this),this.saveCustomAttribute=bind(this.saveCustomAttribute,this),this.createCustomAttribute=bind(this.createCustomAttribute,this),this.loadCustomAttributes=bind(this.loadCustomAttributes,this),this.scope.TYPE_CHOICES=TYPE_CHOICES,this.scope.project={},this.rootscope.$on("project:loaded",function(_this){return function(){var description,sectionName,title;return _this.loadCustomAttributes(),sectionName=_this.translate.instant(_this.scope.sectionName),title=_this.translate.instant("ADMIN.CUSTOM_ATTRIBUTES.PAGE_TITLE",{sectionName:sectionName,projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this))}return extend(ProjectCustomAttributesController,superClass),ProjectCustomAttributesController.$inject=["$scope","$rootScope","$tgRepo","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","tgAppMetaService","$translate"],ProjectCustomAttributesController.prototype.loadCustomAttributes=function(){return this.rs.customAttributes[this.scope.type].list(this.scope.projectId).then(function(_this){return function(customAttributes){return _this.scope.customAttributes=customAttributes,_this.scope.maxOrder=_.maxBy(customAttributes,"order").order, customAttributes}}(this))},ProjectCustomAttributesController.prototype.createCustomAttribute=function(attrValues){return this.repo.create("custom-attributes/"+this.scope.type,attrValues)},ProjectCustomAttributesController.prototype.saveCustomAttribute=function(attrModel){return this.repo.save(attrModel)},ProjectCustomAttributesController.prototype.deleteCustomAttribute=function(attrModel){return this.repo.remove(attrModel)},ProjectCustomAttributesController.prototype.moveCustomAttributes=function(attrModel,newIndex){var customAttributes,r;return customAttributes=this.scope.customAttributes,r=customAttributes.indexOf(attrModel),customAttributes.splice(r,1),customAttributes.splice(newIndex,0,attrModel),_.each(customAttributes,function(val,idx){return val.order=idx}),this.repo.saveAll(customAttributes)},ProjectCustomAttributesController}(mixOf(taiga.Controller,taiga.PageMixin)),module.controller("ProjectCustomAttributesController",ProjectCustomAttributesController),ProjectCustomAttributesDirective=function($log,$confirm,animationFrame,$translate){var link;return link=function($scope,$el,$attrs){var $ctrl,cancelCreate,cancelUpdate,create,deleteCustomAttribute,hideAddButton,hideCancelButton,hideCreateForm,hideEditForm,resetNewAttr,revertChangesInCustomAttribute,showAddButton,showCancelButton,showCreateForm,showEditForm,sortableEl,update;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),sortableEl=$el.find(".js-sortable"),sortableEl.sortable({handle:".js-view-custom-field",dropOnEmpty:!0,revert:400,axis:"y"}),sortableEl.on("sortstop",function(event,ui){var itemAttr,itemEl,itemIndex;return itemEl=ui.item,itemAttr=itemEl.scope().attr,itemIndex=itemEl.index(),$ctrl.moveCustomAttributes(itemAttr,itemIndex)}),showCreateForm=function(){return $el.find(".js-new-custom-field").removeClass("hidden"),$el.find(".js-new-custom-field input:visible").first().focus()},hideCreateForm=function(){return $el.find(".js-new-custom-field").addClass("hidden")},showAddButton=function(){return $el.find(".js-add-custom-field-button").removeClass("hidden")},hideAddButton=function(){return $el.find(".js-add-custom-field-button").addClass("hidden")},showCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").removeClass("hidden")},hideCancelButton=function(){return $el.find(".js-cancel-new-custom-field-button").addClass("hidden")},resetNewAttr=function(){return $scope.newAttr={}},create=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(_this){return function(){return $ctrl.loadCustomAttributes(),hideCreateForm(),resetNewAttr(),$confirm.notify("success")}}(this),onError=function(_this){return function(data){return form.setErrors(data)}}(this),attr=$scope.newAttr,attr.project=$scope.projectId,attr.order=$scope.maxOrder?$scope.maxOrder+1:1,$ctrl.createCustomAttribute(attr).then(onSucces,onError)):void 0},cancelCreate=function(){return hideCreateForm(),resetNewAttr()},$scope.$watch("customAttributes",function(customAttributes){return customAttributes?0===customAttributes.length?(hideCancelButton(),hideAddButton(),showCreateForm()):(hideCreateForm(),showAddButton(),showCancelButton()):void 0}),$el.on("click",".js-add-custom-field-button",function(event){return event.preventDefault(),showCreateForm()}),$el.on("click",".js-create-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)})),$el.on("click",".js-cancel-new-custom-field-button",function(event){return event.preventDefault(),cancelCreate()}),$el.on("keyup",".js-new-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),create(formEl)):27===event.keyCode?cancelCreate():void 0}),showEditForm=function(formEl){return formEl.find(".js-view-custom-field").addClass("hidden"),formEl.find(".js-edit-custom-field").removeClass("hidden"),formEl.find(".js-edit-custom-field input:visible").first().focus().select()},hideEditForm=function(formEl){return formEl.find(".js-edit-custom-field").addClass("hidden"),formEl.find(".js-view-custom-field").removeClass("hidden")},revertChangesInCustomAttribute=function(formEl){return $scope.$apply(function(){return formEl.scope().attr.revert()})},update=function(formEl){var attr,form,onError,onSucces;return form=formEl.checksley(),form.validate()?(onSucces=function(_this){return function(){return $ctrl.loadCustomAttributes(),hideEditForm(formEl),$confirm.notify("success")}}(this),onError=function(_this){return function(data){return form.setErrors(data)}}(this),attr=formEl.scope().attr,$ctrl.saveCustomAttribute(attr).then(onSucces,onError)):void 0},cancelUpdate=function(formEl){return hideEditForm(formEl),revertChangesInCustomAttribute(formEl)},$el.on("click",".js-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),showEditForm(formEl)}),$el.on("click",".js-update-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)})),$el.on("click",".js-cancel-edit-custom-field-button",function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)}),$el.on("keyup",".js-edit-custom-field input",function(event){var formEl,target;return 13===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),update(formEl)):27===event.keyCode?(target=angular.element(event.currentTarget),formEl=target.closest("form"),cancelUpdate(formEl)):void 0}),deleteCustomAttribute=function(formEl){var attr,message,text,title;return attr=formEl.scope().attr,message=attr.name,title=$translate.instant("COMMON.CUSTOM_ATTRIBUTES.DELETE"),text=$translate.instant("COMMON.CUSTOM_ATTRIBUTES.CONFIRM_DELETE"),$confirm.ask(title,text,message).then(function(response){var onError,onSucces;return onSucces=function(){return $ctrl.loadCustomAttributes()["finally"](function(){return response.finish()})},onError=function(){return $confirm.notify("error",null,"We have not been able to delete '"+message+"'.")},$ctrl.deleteCustomAttribute(attr).then(onSucces,onError)})},$el.on("click",".js-delete-custom-field-button",debounce(2e3,function(event){var formEl,target;return event.preventDefault(),target=angular.element(event.currentTarget),formEl=target.closest("form"),deleteCustomAttribute(formEl)}))},{link:link}},module.directive("tgProjectCustomAttributes",["$log","$tgConfirm","animationFrame","$translate",ProjectCustomAttributesDirective])}.call(this),function(){var EditRoleDirective,NewRoleDirective,RolePermissionsDirective,RolesController,RolesDirective,bindMethods,bindOnce,debounce,mixOf,module,taiga,bind=function(fn,me){return function(){return fn.apply(me,arguments)}},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1};taiga=this.taiga,mixOf=this.taiga.mixOf,bindOnce=this.taiga.bindOnce,debounce=this.taiga.debounce,bindMethods=this.taiga.bindMethods,module=angular.module("taigaAdmin"),RolesController=function(superClass){function RolesController(scope,rootscope,repo,confirm,rs,params,q,location,navUrls,appMetaService,translate){var promise;this.scope=scope,this.rootscope=rootscope,this.repo=repo,this.confirm=confirm,this.rs=rs,this.params=params,this.q=q,this.location=location,this.navUrls=navUrls,this.appMetaService=appMetaService,this.translate=translate,this._disableComputable=bind(this._disableComputable,this),this._enableComputable=bind(this._enableComputable,this),bindMethods(this),this.scope.sectionName="ADMIN.MENU.PERMISSIONS",this.scope.project={},this.scope.anyComputableRole=!0,promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ADMIN.ROLES.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(RolesController,superClass),RolesController.$inject=["$scope","$rootScope","$tgRepo","$tgConfirm","$tgResources","$routeParams","$q","$tgLocation","$tgNavUrls","tgAppMetaService","$translate"],RolesController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.i_am_admin||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.anyComputableRole=_.some(_.map(project.roles,function(point){return point.computable})),project}}(this))},RolesController.prototype.loadRoles=function(){return this.rs.roles.list(this.scope.projectId).then(function(_this){return function(roles){var public_permission;return roles=roles.map(function(role){return role.external_user=!1,role}),public_permission={name:_this.translate.instant("ADMIN.ROLES.EXTERNAL_USER"),permissions:_this.scope.project.public_permissions,external_user:!0},roles.push(public_permission),_this.scope.roles=roles,_this.scope.role=_this.scope.roles[0],roles}}(this))},RolesController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(){return _this.loadRoles()}}(this)),promise},RolesController.prototype.setRole=function(role){return this.scope.role=role,this.scope.$broadcast("role:changed",this.scope.role)},RolesController.prototype["delete"]=function(){var choices,i,len,ref,replacement,role,subtitle,title,warning;for(choices={},ref=this.scope.roles,i=0,len=ref.length;len>i;i++)role=ref[i],role.id!==this.scope.role.id&&(choices[role.id]=role.name);return 0===_.keys(choices).length?this.confirm.error(this.translate.instant("ADMIN.ROLES.ERROR_DELETE_ALL")):(title=this.translate.instant("ADMIN.ROLES.TITLE_DELETE_ROLE"),subtitle=this.scope.role.name,replacement=this.translate.instant("ADMIN.ROLES.REPLACEMENT_ROLE"),warning=this.translate.instant("ADMIN.ROLES.WARNING_DELETE_ROLE"),this.confirm.askChoice(title,subtitle,choices,replacement,warning).then(function(_this){return function(response){var onError,onSuccess;return onSuccess=function(){return _this.loadProject(),_this.loadRoles()["finally"](function(){return response.finish()})},onError=function(){return _this.confirm.notify("error")},_this.repo.remove(_this.scope.role,{moveTo:response.selected}).then(onSuccess,onError)}}(this)))},RolesController.prototype._enableComputable=function(){var onError,onSuccess;return onSuccess=function(_this){return function(){return _this.confirm.notify("success"),_this.loadProject()}}(this),onError=function(_this){return function(){return _this.confirm.notify("error"),_this.scope.role.revert()}}(this),this.repo.save(this.scope.role).then(onSuccess,onError)},RolesController.prototype._disableComputable=function(){var askOnError,askOnSuccess,message,subtitle,title;return askOnSuccess=function(_this){return function(response){var onError,onSuccess;return onSuccess=function(){return response.finish(),_this.confirm.notify("success"),_this.loadProject()},onError=function(){return response.finish(),_this.confirm.notify("error"),_this.scope.role.revert()},_this.repo.save(_this.scope.role).then(onSuccess,onError)}}(this),askOnError=function(_this){return function(response){return _this.scope.role.revert()}}(this),title=this.translate.instant("ADMIN.ROLES.DISABLE_COMPUTABLE_ALERT_TITLE"),subtitle=this.translate.instant("ADMIN.ROLES.DISABLE_COMPUTABLE_ALERT_SUBTITLE",{roleName:this.scope.role.name}),message=this.translate.instant("ADMIN.ROLES.DISABLE_COMPUTABLE_ALERT_MESSAGE"),this.confirm.ask(title,subtitle,message).then(askOnSuccess,askOnError)},RolesController.prototype.toggleComputable=debounce(2e3,function(){return this.scope.role.computable?this._enableComputable():this._disableComputable()}),RolesController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("RolesController",RolesController),EditRoleDirective=function($repo,$confirm){var link;return link=function($scope,$el,$attrs){var submit,toggleView;return toggleView=function(){return $el.find(".total").toggle(),$el.find(".edit-role").toggle()},submit=function(){var promise;return $scope.role.name=$el.find("input").val(),promise=$repo.save($scope.role),promise.then(function(){return $confirm.notify("success")}),promise.then(null,function(data){return $confirm.notify("error")}),toggleView()},$el.on("click",".edit-value",function(){return toggleView(),$el.find("input").focus(),$el.find("input").val($scope.role.name)}),$el.on("click","a.save",submit),$el.on("keyup","input",function(event){return 13===event.keyCode?submit():27===event.keyCode?toggleView():void 0}),$scope.$on("role:changed",function(){return $el.find(".edit-role").is(":visible")?toggleView():void 0}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgEditRole",["$tgRepo","$tgConfirm",EditRoleDirective]),RolesDirective=function(){var link;return link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgRoles",RolesDirective),NewRoleDirective=function($tgrepo,$confirm){var DEFAULT_PERMISSIONS,link;return DEFAULT_PERMISSIONS=["view_project","view_milestones","view_us","view_tasks","view_issues"],link=function($scope,$el,$attrs){var $ctrl;return $ctrl=$el.controller(),$scope.$on("$destroy",function(){return $el.off()}),$el.on("click","a.add-button",function(event){return event.preventDefault(),$el.find(".new").removeClass("hidden"),$el.find(".new").focus(),$el.find(".add-button").hide()}),$el.on("keyup",".new",function(event){var newRole,onError,onSuccess,target;return event.preventDefault(),13===event.keyCode?(target=angular.element(event.currentTarget),newRole={project:$scope.projectId,name:target.val(),permissions:DEFAULT_PERMISSIONS,order:_.maxBy($scope.roles,function(r){return r.order}).order+1,computable:!1},$el.find(".new").addClass("hidden"),$el.find(".new").val(""),onSuccess=function(role){var insertPosition;return insertPosition=$scope.roles.length-1,$scope.roles.splice(insertPosition,0,role),$ctrl.setRole(role),$el.find(".add-button").show(),$ctrl.loadProject()},onError=function(){return $confirm.notify("error")},$tgrepo.create("roles",newRole).then(onSuccess,onError)):27===event.keyCode?(target=angular.element(event.currentTarget),$el.find(".new").addClass("hidden"),$el.find(".new").val(""),$el.find(".add-button").show()):void 0})},{link:link}},module.directive("tgNewRole",["$tgRepo","$tgConfirm",NewRoleDirective]),RolePermissionsDirective=function($rootscope,$repo,$confirm,$compile){var baseTemplate,categoryTemplate,link,resumeTemplate;return resumeTemplate=_.template('\n\n <%- category.activePermissions %>/<%- category.permissions.length %>\n <% _.each(category.permissions, function(permission) { %>\n \n <% }) %>\n\n\n \n'),categoryTemplate=_.template('\n \n \n \n \n <% _.each(category.permissions, function(permission) { %>\n \n \n \n disabled="disabled" <% } %>\n <% if(permission.active) { %> checked="checked" <% } %>/>\n \n \n \n \n \n <% }) %>\n \n \n'),baseTemplate=_.template(''),link=function($scope,$el,$attrs){var $ctrl,generateCategoriesFromRole,renderCategory,renderPermissions,renderResume;return $ctrl=$el.controller(),generateCategoriesFromRole=function(role){var categories,isPermissionEditable,issuePermissions,milestonePermissions,setActivePermissions,setActivePermissionsPerCategory,taskPermissions,userStoryPermissions,wikiPermissions;return setActivePermissions=function(permissions){return _.map(permissions,function(x){var ref;return _.extend({},x,{active:(ref=x.key,indexOf.call(role.permissions,ref)>=0)})})},isPermissionEditable=function(permission,role,project){return role.external_user&&!project.is_private&&0===permission.key.indexOf("view_")?!1:!0},setActivePermissionsPerCategory=function(category){return _.map(category,function(cat){return cat.permissions=cat.permissions.map(function(permission){return permission.editable=isPermissionEditable(permission,role,$scope.project),permission}),_.extend({},cat,{activePermissions:_.filter(cat.permissions,"active").length})})},categories=[],milestonePermissions=[{key:"view_milestones",name:"COMMON.PERMISIONS_CATEGORIES.SPRINTS.VIEW_SPRINTS"},{key:"add_milestone",name:"COMMON.PERMISIONS_CATEGORIES.SPRINTS.ADD_SPRINTS"},{key:"modify_milestone",name:"COMMON.PERMISIONS_CATEGORIES.SPRINTS.MODIFY_SPRINTS"},{key:"delete_milestone",name:"COMMON.PERMISIONS_CATEGORIES.SPRINTS.DELETE_SPRINTS"}],categories.push({name:"COMMON.PERMISIONS_CATEGORIES.SPRINTS.NAME",permissions:setActivePermissions(milestonePermissions)}),userStoryPermissions=[{key:"view_us",name:"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.VIEW_USER_STORIES"},{key:"add_us",name:"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.ADD_USER_STORIES"},{key:"modify_us",name:"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.MODIFY_USER_STORIES"},{key:"delete_us",name:"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.DELETE_USER_STORIES"}],categories.push({name:"COMMON.PERMISIONS_CATEGORIES.USER_STORIES.NAME",permissions:setActivePermissions(userStoryPermissions)}),taskPermissions=[{key:"view_tasks",name:"COMMON.PERMISIONS_CATEGORIES.TASKS.VIEW_TASKS"},{key:"add_task",name:"COMMON.PERMISIONS_CATEGORIES.TASKS.ADD_TASKS"},{key:"modify_task",name:"COMMON.PERMISIONS_CATEGORIES.TASKS.MODIFY_TASKS"},{key:"delete_task",name:"COMMON.PERMISIONS_CATEGORIES.TASKS.DELETE_TASKS"}],categories.push({name:"COMMON.PERMISIONS_CATEGORIES.TASKS.NAME",permissions:setActivePermissions(taskPermissions)}),issuePermissions=[{key:"view_issues",name:"COMMON.PERMISIONS_CATEGORIES.ISSUES.VIEW_ISSUES"},{key:"add_issue",name:"COMMON.PERMISIONS_CATEGORIES.ISSUES.ADD_ISSUES"},{key:"modify_issue",name:"COMMON.PERMISIONS_CATEGORIES.ISSUES.MODIFY_ISSUES"},{key:"delete_issue",name:"COMMON.PERMISIONS_CATEGORIES.ISSUES.DELETE_ISSUES"}],categories.push({name:"COMMON.PERMISIONS_CATEGORIES.ISSUES.NAME",permissions:setActivePermissions(issuePermissions)}),wikiPermissions=[{key:"view_wiki_pages",name:"COMMON.PERMISIONS_CATEGORIES.WIKI.VIEW_WIKI_PAGES"},{key:"add_wiki_page",name:"COMMON.PERMISIONS_CATEGORIES.WIKI.ADD_WIKI_PAGES"},{key:"modify_wiki_page",name:"COMMON.PERMISIONS_CATEGORIES.WIKI.MODIFY_WIKI_PAGES"},{key:"delete_wiki_page",name:"COMMON.PERMISIONS_CATEGORIES.WIKI.DELETE_WIKI_PAGES"},{key:"view_wiki_links",name:"COMMON.PERMISIONS_CATEGORIES.WIKI.VIEW_WIKI_LINKS"},{key:"add_wiki_link",name:"COMMON.PERMISIONS_CATEGORIES.WIKI.ADD_WIKI_LINKS"},{key:"delete_wiki_link",name:"COMMON.PERMISIONS_CATEGORIES.WIKI.DELETE_WIKI_LINKS"}],categories.push({name:"COMMON.PERMISIONS_CATEGORIES.WIKI.NAME",permissions:setActivePermissions(wikiPermissions)}),setActivePermissionsPerCategory(categories)},renderResume=function(element,category){return element.find(".resume").html($compile(resumeTemplate({category:category}))($scope))},renderCategory=function(category,index){var html;return html=categoryTemplate({category:category,index:index}),html=angular.element(html),renderResume(html,category),$compile(html)($scope)},renderPermissions=function(){var html;return $el.off(),html=baseTemplate(),_.each(generateCategoriesFromRole($scope.role),function(category,index){return html=angular.element(html).append(renderCategory(category,index))}),$el.html(html),$el.on("click",".resume",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),target.toggleClass("open-drawer"),target.next().toggleClass("open")}),$el.on("change",".category-item input",function(event){var getActivePermissions,onError,onSuccess,target;return getActivePermissions=function(){var activePermissions;return activePermissions=_.filter($el.find(".category-item input"),function(t){return angular.element(t).is(":checked")}),activePermissions=_.sortBy(_.map(activePermissions,function(t){var permission;return permission=angular.element(t).parents(".category-item").data("id")})),activePermissions.length&&activePermissions.push("view_project"),activePermissions},target=angular.element(event.currentTarget),$scope.role.permissions=getActivePermissions(),onSuccess=function(){var categories,categoryId;return categories=generateCategoriesFromRole($scope.role),categoryId=target.parents(".category-config").data("id"),renderResume(target.parents(".category-config"),categories[categoryId]),$rootscope.$broadcast("projects:reload"),$confirm.notify("success"),$ctrl.loadProject()},onError=function(){return $confirm.notify("error"),target.prop("checked",!target.prop("checked")),$scope.role.permissions=getActivePermissions()},$scope.role.external_user?($scope.project.public_permissions=$scope.role.permissions,$scope.project.anon_permissions=$scope.role.permissions.filter(function(permission){return 0===permission.indexOf("view_")}),$repo.save($scope.project).then(onSuccess,onError)):$repo.save($scope.role).then(onSuccess,onError)})},$scope.$on("$destroy",function(){return $el.off()}),$scope.$on("role:changed",function(){return renderPermissions()}),bindOnce($scope,$attrs.ngModel,renderPermissions)},{link:link}},module.directive("tgRolePermissions",["$rootScope","$tgRepo","$tgConfirm","$compile",RolePermissionsDirective])}.call(this),function(){var BitbucketController,BitbucketWebhooksDirective,GithubController,GithubWebhooksDirective,GitlabController,GitlabWebhooksDirective,NewWebhookDirective,SelectInputText,ValidOriginIpsDirective,WebhookDirective,WebhooksController,bindMethods,debounce,mixOf,module,taiga,timeout,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,mixOf=this.taiga.mixOf,bindMethods=this.taiga.bindMethods,debounce=this.taiga.debounce,timeout=this.taiga.timeout,module=angular.module("taigaAdmin"),WebhooksController=function(superClass){function WebhooksController(scope,repo,rs,params,location,navUrls,appMetaService,translate){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.location=location,this.navUrls=navUrls,this.appMetaService=appMetaService,this.translate=translate,bindMethods(this),this.scope.sectionName="ADMIN.WEBHOOKS.SECTION_NAME",this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ADMIN.WEBHOOKS.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("webhooks:reload",this.loadWebhooks)}return extend(WebhooksController,superClass),WebhooksController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","$tgLocation","$tgNavUrls","tgAppMetaService","$translate"],WebhooksController.prototype.loadWebhooks=function(){return this.rs.webhooks.list(this.scope.projectId).then(function(_this){return function(webhooks){return _this.scope.webhooks=webhooks}}(this))},WebhooksController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return project.i_am_admin||_this.location.path(_this.navUrls.resolve("permission-denied")),_this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},WebhooksController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(){return _this.loadWebhooks()}}(this)),promise},WebhooksController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("WebhooksController",WebhooksController),WebhookDirective=function($rs,$repo,$confirm,$loading,$translate){var link;return link=function($scope,$el,$attrs){var cancel,openHistory,save,showEditMode,showVisualizationMode,updateLogs,updateShowHideHistoryText,webhook;return webhook=$scope.$eval($attrs.tgWebhook),updateLogs=function(){var prettyDate;return prettyDate=$translate.instant("ADMIN.WEBHOOKS.DATE"),$rs.webhooklogs.list(webhook.id).then(function(_this){return function(webhooklogs){var i,len,log,ref;for(i=0,len=webhooklogs.length;len>i;i++)log=webhooklogs[i],log.validStatus=200<=(ref=log.status)&&300>ref,log.prettySentHeaders=_.map(_.toPairs(log.request_headers),function(arg){var header,value;return header=arg[0],value=arg[1],header+": "+value}).join("\n"),log.prettySentData=JSON.stringify(log.request_data),log.prettyDate=moment(log.created).format(prettyDate);return webhook.logs_counter=webhooklogs.length,webhook.logs=webhooklogs,updateShowHideHistoryText()}}(this))},updateShowHideHistoryText=function(){var historyElement,text,textElement,title;return textElement=$el.find(".toggle-history"),historyElement=textElement.parents(".single-webhook-wrapper").find(".webhooks-history"),historyElement.hasClass("open")?(text=$translate.instant("ADMIN.WEBHOOKS.ACTION_HIDE_HISTORY"),title=$translate.instant("ADMIN.WEBHOOKS.ACTION_HIDE_HISTORY_TITLE")):(text=$translate.instant("ADMIN.WEBHOOKS.ACTION_SHOW_HISTORY"),title=$translate.instant("ADMIN.WEBHOOKS.ACTION_SHOW_HISTORY_TITLE")),textElement.text(text),textElement.prop("title",title)},showVisualizationMode=function(){return $el.find(".edition-mode").addClass("hidden"),$el.find(".visualization-mode").removeClass("hidden")},showEditMode=function(){return $el.find(".visualization-mode").addClass("hidden"),$el.find(".edition-mode").removeClass("hidden")},openHistory=function(){return $el.find(".webhooks-history").addClass("open")},cancel=function(){return showVisualizationMode(),$scope.$apply(function(){return webhook.revert()})},save=debounce(2e3,function(target){var form,promise;return form=target.parents("form").checksley(),form.validate()?(promise=$repo.save(webhook),promise.then(function(_this){return function(){return showVisualizationMode()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),$el.on("click",".test-webhook",function(){return openHistory(),$rs.webhooks.test(webhook.id).then(function(_this){return function(){return updateLogs()}}(this))}),$el.on("click",".edit-webhook",function(){return showEditMode()}),$el.on("click",".cancel-existing",function(){return cancel()}),$el.on("click",".edit-existing",function(event){var target;return event.preventDefault(),target=angular.element(event.currentTarget),save(target)}),$el.on("keyup",".edition-mode input",function(event){var target;return 13===event.keyCode?(target=angular.element(event.currentTarget),save(target)):27===event.keyCode?(target=angular.element(event.currentTarget),cancel(target)):void 0}),$el.on("click",".delete-webhook",function(){var message,title;return title=$translate.instant("ADMIN.WEBHOOKS.DELETE"),message=$translate.instant("ADMIN.WEBHOOKS.WEBHOOK_NAME",{name:webhook.name}),$confirm.askOnDelete(title,message).then(function(_this){return function(askResponse){var onError,onSucces;return onSucces=function(){return askResponse.finish(),$scope.$emit("webhooks:reload")},onError=function(){return askResponse.finish(!1),$confirm.notify("error")},$repo.remove(webhook).then(onSucces,onError)}}(this))}),$el.on("click",".toggle-history",function(event){var target;return target=angular.element(event.currentTarget),null==webhook.logs||0===webhook.logs.length?updateLogs().then(function(){return timeout(0,function(){return $el.find(".webhooks-history").toggleClass("open"),updateShowHideHistoryText()})}):($el.find(".webhooks-history").toggleClass("open"),$scope.$apply(function(){return updateShowHideHistoryText()}))}),$el.on("click",".history-single",function(event){var target;return target=angular.element(event.currentTarget),target.toggleClass("history-single-open"),target.siblings(".history-single-response").toggleClass("open")}),$el.on("click",".resend-request",function(event){var log,target;return target=angular.element(event.currentTarget),log=target.data("log"),$rs.webhooklogs.resend(log).then(function(_this){return function(){return updateLogs()}}(this))})},{link:link}},module.directive("tgWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading","$translate",WebhookDirective]),NewWebhookDirective=function($rs,$repo,$confirm,$loading){var link;return link=function($scope,$el,$attrs){var addWebhookDOMNode,formDOMNode,initializeNewValue,save,webhook;return webhook=$scope.$eval($attrs.tgWebhook),formDOMNode=$el.find(".new-webhook-form"),addWebhookDOMNode=$el.find(".add-webhook"),initializeNewValue=function(){return $scope.newValue={name:"",url:"",key:""}},initializeNewValue(),$scope.$watch("webhooks",function(webhooks){return null!=webhooks?0===webhooks.length?(formDOMNode.removeClass("hidden"),addWebhookDOMNode.addClass("hidden"),formDOMNode.find("input")[0].focus()):(formDOMNode.addClass("hidden"),addWebhookDOMNode.removeClass("hidden")):void 0}),save=debounce(2e3,function(){var form,promise;return form=formDOMNode.checksley(),form.validate()?($scope.newValue.project=$scope.project.id,promise=$repo.create("webhooks",$scope.newValue),promise.then(function(_this){return function(){return $scope.$emit("webhooks:reload"),initializeNewValue()}}(this)),promise.then(null,function(data){return $confirm.notify("error"),form.setErrors(data)})):void 0}),formDOMNode.on("click",".add-new",function(event){return event.preventDefault(),save()}),formDOMNode.on("keyup","input",function(event){return 13===event.keyCode?save():void 0}),formDOMNode.on("click",".cancel-new",function(event){return $scope.$apply(function(){return initializeNewValue(),$scope.webhooks.length>=1?formDOMNode.addClass("hidden"):void 0})}),addWebhookDOMNode.on("click",function(event){return formDOMNode.removeClass("hidden"),formDOMNode.find("input")[0].focus()})},{link:link}},module.directive("tgNewWebhook",["$tgResources","$tgRepo","$tgConfirm","$tgLoading",NewWebhookDirective]),GithubController=function(superClass){function GithubController(scope,repo,rs,params,appMetaService,translate){var promise;this.scope=scope,this.repo=repo, this.rs=rs,this.params=params,this.appMetaService=appMetaService,this.translate=translate,bindMethods(this),this.scope.sectionName=this.translate.instant("ADMIN.GITHUB.SECTION_NAME"),this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ADMIN.GITHUB.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this))}return extend(GithubController,superClass),GithubController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","tgAppMetaService","$translate"],GithubController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"github").then(function(_this){return function(github){return _this.scope.github=github}}(this))},GithubController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GithubController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(){return _this.loadModules()}}(this)),promise},GithubController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GithubController",GithubController),GitlabController=function(superClass){function GitlabController(scope,repo,rs,params,appMetaService,translate){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appMetaService=appMetaService,this.translate=translate,bindMethods(this),this.scope.sectionName=this.translate.instant("ADMIN.GITLAB.SECTION_NAME"),this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ADMIN.GITLAB.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(GitlabController,superClass),GitlabController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","tgAppMetaService","$translate"],GitlabController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"gitlab").then(function(_this){return function(gitlab){return _this.scope.gitlab=gitlab}}(this))},GitlabController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},GitlabController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(){return _this.loadModules()}}(this)),promise},GitlabController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("GitlabController",GitlabController),BitbucketController=function(superClass){function BitbucketController(scope,repo,rs,params,appMetaService,translate){var promise;this.scope=scope,this.repo=repo,this.rs=rs,this.params=params,this.appMetaService=appMetaService,this.translate=translate,bindMethods(this),this.scope.sectionName=this.translate.instant("ADMIN.BITBUCKET.SECTION_NAME"),this.scope.project={},promise=this.loadInitialData(),promise.then(function(_this){return function(){var description,title;return title=_this.translate.instant("ADMIN.BITBUCKET.PAGE_TITLE",{projectName:_this.scope.project.name}),description=_this.scope.project.description,_this.appMetaService.setAll(title,description)}}(this)),promise.then(null,this.onInitialDataError.bind(this)),this.scope.$on("project:modules:reload",function(_this){return function(){return _this.loadModules()}}(this))}return extend(BitbucketController,superClass),BitbucketController.$inject=["$scope","$tgRepo","$tgResources","$routeParams","tgAppMetaService","$translate"],BitbucketController.prototype.loadModules=function(){return this.rs.modules.list(this.scope.projectId,"bitbucket").then(function(_this){return function(bitbucket){return _this.scope.bitbucket=bitbucket}}(this))},BitbucketController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),project}}(this))},BitbucketController.prototype.loadInitialData=function(){var promise;return promise=this.loadProject(),promise.then(function(_this){return function(){return _this.loadModules()}}(this)),promise},BitbucketController}(mixOf(taiga.Controller,taiga.PageMixin,taiga.FiltersMixin)),module.controller("BitbucketController",BitbucketController),SelectInputText=function(){var link;return link=function($scope,$el,$attrs){return $el.on("click",".select-input-content",function(){return $el.find("input").select(),$el.find(".help-copy").addClass("visible")})},{link:link}},module.directive("tgSelectInputText",SelectInputText),GithubWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el,$attrs){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(_this){return function(event){var currentLoading,promise;return event.preventDefault(),form.validate()?(currentLoading=$loading().target(submitButton).start(),promise=$repo.saveAttribute($scope.github,"github"),promise.then(function(){return currentLoading.finish(),$confirm.notify("success")}),promise.then(null,function(data){return currentLoading.finish(),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGithubWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GithubWebhooksDirective]),GitlabWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el,$attrs){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(_this){return function(event){var currentLoading,promise;return event.preventDefault(),form.validate()?(currentLoading=$loading().target(submitButton).start(),promise=$repo.saveAttribute($scope.gitlab,"gitlab"),promise.then(function(){return currentLoading.finish(),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return currentLoading.finish(),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgGitlabWebhooks",["$tgRepo","$tgConfirm","$tgLoading",GitlabWebhooksDirective]),BitbucketWebhooksDirective=function($repo,$confirm,$loading){var link;return link=function($scope,$el,$attrs){var form,submit,submitButton;return form=$el.find("form").checksley({onlyOneErrorElement:!0}),submit=debounce(2e3,function(_this){return function(event){var currentLoading,promise;return event.preventDefault(),form.validate()?(currentLoading=$loading().target(submitButton).start(),promise=$repo.saveAttribute($scope.bitbucket,"bitbucket"),promise.then(function(){return currentLoading.finish(),$confirm.notify("success"),$scope.$emit("project:modules:reload")}),promise.then(null,function(data){return currentLoading.finish(),form.setErrors(data),data._error_message?$confirm.notify("error",data._error_message):void 0})):void 0}}(this)),submitButton=$el.find(".submit-button"),$el.on("submit","form",submit)},{link:link}},module.directive("tgBitbucketWebhooks",["$tgRepo","$tgConfirm","$tgLoading",BitbucketWebhooksDirective]),ValidOriginIpsDirective=function(){var link;return link=function($scope,$el,$attrs,$ngModel){return $ngModel.$parsers.push(function(value){return value=$.trim(value),""===value?[]:value.split(",")})},{link:link,restrict:"EA",require:"ngModel"}},module.directive("tgValidOriginIps",ValidOriginIpsDirective)}.call(this),function(){var createProjectRestrictionDirective,module;module=angular.module("taigaProject"),createProjectRestrictionDirective=function(){return{templateUrl:"project/wizard-restrictions.html"}},module.directive("tgCreateProjectRestriction",[createProjectRestrictionDirective])}.call(this),function(){var CreateProject,DeleteProjectDirective,bindOnce,debounce,module,taiga,timeout;taiga=this.taiga,bindOnce=this.taiga.bindOnce,timeout=this.taiga.timeout,debounce=this.taiga.debounce,module=angular.module("taigaProject"),CreateProject=function($rootscope,$repo,$confirm,$location,$navurls,$rs,$projectUrl,$loading,lightboxService,$cacheFactory,$translate,currentUserService,$auth){var directive,link;return link=function($scope,$el,attrs){var currentLoading,form,onErrorSubmit,onSuccessSubmit,openLightbox,submit,submitButton;return $scope.data={},$scope.templates=[],currentLoading=null,$auth.refresh(),$scope.canCreatePrivateProjects=currentUserService.canCreatePrivateProjects(),$scope.canCreatePublicProjects=currentUserService.canCreatePublicProjects(),form=$el.find("form").checksley({onlyOneErrorElement:!0}),onSuccessSubmit=function(response){return $cacheFactory.get("$http").removeAll(),currentLoading.finish(),$rootscope.$broadcast("projects:reload"),$confirm.notify("success",$translate.instant("COMMON.SAVE")),$location.url($projectUrl.get(response)),lightboxService.close($el),currentUserService.loadProjects()},onErrorSubmit=function(response){var error_field,i,len,ref,results,selectors;for(currentLoading.finish(),form.setErrors(response),selectors=[],ref=_.keys(response),results=[],i=0,len=ref.length;len>i;i++)error_field=ref[i],results.push(selectors.push("[name="+error_field+"]"));return results},submit=function(_this){return function(event){var promise;return event.preventDefault(),form.validate()?(currentLoading=$loading().target(submitButton).start(),promise=$repo.create("projects",$scope.data),promise.then(onSuccessSubmit,onErrorSubmit)):void 0}}(this),openLightbox=function(){return $scope.data={is_private:!1},$scope.templates.length?$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id:$rs.projects.templates().then(function(_this){return function(result){return $scope.templates=result,$scope.data.creation_template=_.head(_.filter($scope.templates,function(x){return"scrum"===x.slug})).id}}(this)),lightboxService.open($el)},submitButton=$el.find(".submit-button"),$el.on("submit","form",submit),$el.on("click",".close",function(event){return event.preventDefault(),lightboxService.close($el)}),$scope.$on("$destroy",function(){return $el.off()}),openLightbox()},directive={link:link,templateUrl:"project/wizard-create-project.html",scope:{}}},module.directive("tgLbCreateProject",["$rootScope","$tgRepo","$tgConfirm","$location","$tgNavUrls","$tgResources","$projectUrl","$tgLoading","lightboxService","$cacheFactory","$translate","tgCurrentUserService","$tgAuth",CreateProject]),DeleteProjectDirective=function($repo,$rootscope,$auth,$location,$navUrls,$confirm,lightboxService,tgLoader,currentUserService){var link;return link=function($scope,$el,$attrs){var projectToDelete,submit;return projectToDelete=null,$scope.$on("deletelightbox:new",function(ctx,project){return lightboxService.open($el),projectToDelete=project}),$scope.$on("$destroy",function(){return $el.off()}),submit=function(){var promise;return tgLoader.start(),lightboxService.close($el),promise=$repo.remove(projectToDelete),promise.then(function(data){return tgLoader.pageLoaded(),$rootscope.$broadcast("projects:reload"),$location.path($navUrls.resolve("home")),$confirm.notify("success"),currentUserService.loadProjects()}),promise.then(null,function(){return $confirm.notify("error"),lightboxService.close($el)})},$el.on("click",".button-red",function(event){return event.preventDefault(),lightboxService.close($el)}),$el.on("click",".button-green",function(event){return event.preventDefault(),submit()})},{link:link}},module.directive("tgLbDeleteProject",["$tgRepo","$rootScope","$tgAuth","$tgLocation","$tgNavUrls","$tgConfirm","lightboxService","tgLoader","tgCurrentUserService",DeleteProjectDirective])}.call(this),function(){var BindHtmlDirective,BindOnceAltDirective,BindOnceBindDirective,BindOnceHrefDirective,BindOnceHtmlDirective,BindOnceRefDirective,BindOnceSrcDirective,BindOnceTitleDirective,BindTitleDirective,bindOnce,module;bindOnce=this.taiga.bindOnce,BindOnceBindDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoBind,function(val){return $el.text(val)})},{link:link}},BindOnceHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHtml,function(val){return $el.html(val)})},{link:link}},BindOnceRefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoRef,function(val){return $el.html("#"+val+" ")})},{link:link}},BindOnceSrcDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoSrc,function(val){return $el.attr("src",val)})},{link:link}},BindOnceHrefDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoHref,function(val){return $el.attr("href",val)})},{link:link}},BindOnceAltDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoAlt,function(val){return $el.attr("alt",val)})},{link:link}},BindOnceTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return bindOnce($scope,$attrs.tgBoTitle,function(val){return $el.attr("title",val)})},{link:link}},BindTitleDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgTitleHtml,function(val){return null!=val?$el.attr("title",val):void 0})},{link:link}},BindHtmlDirective=function(){var link;return link=function($scope,$el,$attrs){return $scope.$watch($attrs.tgBindHtml,function(val){return null!=val?$el.html(val):void 0})},{link:link}},module=angular.module("taigaBase"),module.directive("tgBoBind",BindOnceBindDirective),module.directive("tgBoHtml",BindOnceHtmlDirective),module.directive("tgBoRef",BindOnceRefDirective),module.directive("tgBoSrc",BindOnceSrcDirective),module.directive("tgBoHref",BindOnceHrefDirective),module.directive("tgBoAlt",BindOnceAltDirective),module.directive("tgBoTitle",BindOnceTitleDirective),module.directive("tgBindTitle",BindTitleDirective),module.directive("tgBindHtml",BindHtmlDirective)}.call(this),function(){var ConfigurationService,module;ConfigurationService=function(){function ConfigurationService(){this.config=window.taigaConfig}return ConfigurationService.prototype.get=function(key,defaultValue){return null==defaultValue&&(defaultValue=null),_.has(this.config,key)?this.config[key]:defaultValue},ConfigurationService}(),module=angular.module("taigaBase"),module.service("$tgConfig",ConfigurationService)}.call(this),function(){var ContribController,ContribUserSettingsController,module,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;module=angular.module("taigaBase"),ContribController=function(superClass){function ContribController(rootScope,scope,params,repo,rs,confirm){var promise;this.rootScope=rootScope,this.scope=scope,this.params=params,this.repo=repo,this.rs=rs,this.confirm=confirm,this.scope.currentPlugin=_.head(_.filter(this.rootScope.adminPlugins,{slug:this.params.plugin})),this.scope.projectSlug=this.params.pslug,promise=this.loadInitialData(),promise.then(null,function(_this){return function(){return _this.confirm.notify("error")}}(this))}return extend(ContribController,superClass),ContribController.$inject=["$rootScope","$scope","$routeParams","$tgRepo","$tgResources","$tgConfirm"],ContribController.prototype.loadProject=function(){return this.rs.projects.getBySlug(this.params.pslug).then(function(_this){return function(project){return _this.scope.projectId=project.id,_this.scope.project=project,_this.scope.$emit("project:loaded",project),_this.scope.$broadcast("project:loaded",project),project}}(this))},ContribController.prototype.loadInitialData=function(){return this.loadProject()},ContribController}(taiga.Controller),module.controller("ContribController",ContribController),ContribUserSettingsController=function(superClass){function ContribUserSettingsController(rootScope,scope,params){this.rootScope=rootScope,this.scope=scope,this.params=params,this.scope.currentPlugin=_.head(_.filter(this.rootScope.userSettingsPlugins,{slug:this.params.plugin}))}return extend(ContribUserSettingsController,superClass),ContribUserSettingsController.$inject=["$rootScope","$scope","$routeParams"],ContribUserSettingsController}(taiga.Controller),module.controller("ContribUserSettingsController",ContribUserSettingsController)}.call(this),function(){var FiltersStorageService,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,FiltersStorageService=function(superClass){function FiltersStorageService(storage,params){this.storage=storage,this.params=params}return extend(FiltersStorageService,superClass),FiltersStorageService.$inject=["$tgStorage","$routeParams"],FiltersStorageService.prototype.generateHash=function(components){return null==components&&(components=[]),components=_.map(components,function(x){return JSON.stringify(x)}),hex_sha1(components.join(":"))},FiltersStorageService}(taiga.Service)}.call(this),function(){var HttpService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,HttpService=function(superClass){function HttpService(http,q,storage,rootScope,cacheFactory,translate){this.http=http,this.q=q,this.storage=storage,this.rootScope=rootScope,this.cacheFactory=cacheFactory,this.translate=translate,HttpService.__super__.constructor.call(this),this.cache=this.cacheFactory("httpget")}return extend(HttpService,superClass),HttpService.$inject=["$http","$q","$tgStorage","$rootScope","$cacheFactory","$translate"],HttpService.prototype.headers=function(){var headers,lang,token;return headers={},token=this.storage.get("token"),token&&(headers.Authorization="Bearer "+token),lang=this.translate.preferredLanguage(),lang&&(headers["Accept-Language"]=lang),headers},HttpService.prototype.request=function(options){return options.headers=_.assign({},options.headers||{},this.headers()),this.http(options)},HttpService.prototype.get=function(url,params,options){return options=_.assign({method:"GET",url:url},options),params&&(options.params=params),options.cache=this.cache,this.request(options)["finally"](function(_this){return function(data){return _this.cache.removeAll()}}(this))},HttpService.prototype.post=function(url,data,params,options){return options=_.assign({method:"POST",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.put=function(url,data,params,options){return options=_.assign({method:"PUT",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype.patch=function(url,data,params,options){return options=_.assign({method:"PATCH",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService.prototype["delete"]=function(url,data,params,options){return options=_.assign({method:"DELETE",url:url},options),data&&(options.data=data),params&&(options.params=params),this.request(options)},HttpService}(taiga.Service),module=angular.module("taigaBase"),module.service("$tgHttp",HttpService)}.call(this),function(){var locationFactory,module;locationFactory=function($location,$route,$rootscope){return $location.noreload=function(scope){var lastRoute,un;return lastRoute=$route.current,un=scope.$on("$locationChangeSuccess",function(){return $route.current=lastRoute,un()}),$location},$location.isInCurrentRouteParams=function(name,value){var params;return params=$location.search()||{},params[name]===value},$location},module=angular.module("taigaBase"),module.factory("$tgLocation",["$location","$route","$rootScope",locationFactory])}.call(this),function(){var Model,ModelService,module,provider,taiga,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;l>i;i++)if(i in this&&this[i]===item)return i;return-1},extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;Model=function(){function Model(name,data,dataTypes){this._attrs=data,this._name=name,this._dataTypes=dataTypes,this.setAttrs(data),this.initialize()}return Model.prototype.clone=function(){var instance;return instance=new Model(this._name,this._attrs,this._dataTypes),instance._modifiedAttrs=this._modifiedAttrs,instance._isModified=this._isModified,instance},Model.prototype.applyCasts=function(){var attrName,castMethod,castName,ref,results;ref=this._dataTypes,results=[];for(attrName in ref)castName=ref[attrName],castMethod=service.casts[castName],castMethod&&results.push(this._attrs[attrName]=castMethod(this._attrs[attrName]));return results},Model.prototype.getIdAttrName=function(){return"id"},Model.prototype.getName=function(){return this._name},Model.prototype.getAttrs=function(patch){return null==patch&&(patch=!1),null!=this._attrs.version&&(this._modifiedAttrs.version=this._attrs.version),patch?_.extend({},this._modifiedAttrs):_.extend({},this._attrs,this._modifiedAttrs)},Model.prototype.setAttrs=function(attrs){return this._attrs=attrs,this._modifiedAttrs={},this.applyCasts(),this._isModified=!1},Model.prototype.setAttr=function(name,value){return this._modifiedAttrs[name]=value,this._isModified=!0},Model.prototype.initialize=function(){var getter,self,setter;return self=this,getter=function(name){return function(){return"string"==typeof name&&"__"===name.substr(0,2)?self[name]:indexOf.call(_.keys(self._modifiedAttrs),name)<0?self._attrs[name]:self._modifiedAttrs[name]}},setter=function(name){return function(value){return"string"==typeof name&&"__"===name.substr(0,2)?void(self[name]=value):void(self._attrs[name]!==value?(self._modifiedAttrs[name]=value,self._isModified=!0):delete self._modifiedAttrs[name])}},_.each(this._attrs,function(value,name){var options;return options={get:getter(name),set:setter(name),enumerable:!0,configurable:!0},Object.defineProperty(self,name,options)})},Model.prototype.serialize=function(){var data;return data={data:_.clone(this._attrs),name:this._name},JSON.stringify(data)},Model.prototype.isModified=function(){return this._isModified},Model.prototype.isAttributeModified=function(attribute){return null!=this._modifiedAttrs[attribute]},Model.prototype.markSaved=function(){return this._isModified=!1,this._attrs=this.getAttrs(),this._modifiedAttrs={}},Model.prototype.revert=function(){return this._modifiedAttrs={},this._isModified=!1},Model.desSerialize=function(sdata){var ddata,model;return ddata=JSON.parse(sdata),model=new Model(ddata.url,ddata.data)},Model}(),taiga=this.taiga,ModelService=function(superClass){function ModelService(q,urls,storage,http){this.q=q,this.urls=urls,this.storage=storage,this.http=http,ModelService.__super__.constructor.call(this)}return extend(ModelService,superClass),ModelService.$inject=["$q","$tgUrls","$tgStorage","$tgHttp"],ModelService}(taiga.Service),provider=function($q,$http,$gmUrls,$gmStorage){var service;return service={},service.make_model=function(name,data,cls,dataTypes){return null==cls&&(cls=Model),null==dataTypes&&(dataTypes={}),new cls(name,data,dataTypes)},service.cls=Model,service.casts={"int":function(value){return parseInt(value,10)},"float":function(value){return parseFloat(value,10)}},service},module=angular.module("taigaBase"),module.factory("$tgModel",["$q","$http","$tgUrls","$tgStorage",provider])}.call(this),function(){var NavigationUrlsDirective,NavigationUrlsService,bindOnce,module,taiga,trim,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,trim=this.taiga.trim,bindOnce=this.taiga.bindOnce,module=angular.module("taigaBase"),NavigationUrlsService=function(superClass){function NavigationUrlsService(){this.urls={}}return extend(NavigationUrlsService,superClass),NavigationUrlsService.prototype.update=function(urls){return this.urls=_.merge({},this.urls,urls||{})},NavigationUrlsService.prototype.formatUrl=function(url,ctx){var replacer;return null==ctx&&(ctx={}),replacer=function(match){return match=trim(match,":"),ctx[match]||"undefined"},url.replace(/(:\w+)/g,replacer)},NavigationUrlsService.prototype.resolve=function(name,ctx){var url;return url=this.urls[name],url?ctx?this.formatUrl(url,ctx):url:""},NavigationUrlsService}(taiga.Service),module.service("$tgNavUrls",NavigationUrlsService),NavigationUrlsDirective=function($navurls,$auth,$q,$location,lightboxService){var bindOnceP,link,parseNav;return bindOnceP=function($scope,attr){var defered;return defered=$q.defer(),bindOnce($scope,attr,function(v){return defered.resolve(v)}),defered.promise},parseNav=function(data,$scope){var index,name,obj,params,promises,ref,result,values;if(ref=_.map(data.split(":"),trim),name=ref[0],params=ref[1],params)for(result=params.split(/(\w+)=/),result=_.filter(result,function(str){return str.length}),result=_.map(result,function(str){return trim(str.replace(/,$/g,""))}),params=[],index=0;indexi;i++)param=params[i],key=Object.keys(param)[0],value=param[key],options[key]=$scope.$eval(value);return[name,options]})},link=function($scope,$el,$attrs){return $el.is("a")&&$el.attr("href","#"),$el.on("mouseenter",function(event){var target;return target=$(event.currentTarget),target.data("fullUrl")&&$attrs.tgNavGetParams===target.data("params")?void 0:parseNav($attrs.tgNav,$scope).then(function(result){var fullUrl,getURLParams,getURLParamsStr,name,options,url,user;return name=result[0],options=result[1],user=$auth.getUser(),user&&(options.user=user.username),url=$navurls.resolve(name),fullUrl=$navurls.formatUrl(url,options),$attrs.tgNavGetParams&&(getURLParams=JSON.parse($attrs.tgNavGetParams),getURLParamsStr=$.param(getURLParams),fullUrl=fullUrl+"?"+getURLParamsStr,target.data("params",$attrs.tgNavGetParams)),target.data("fullUrl",fullUrl),target.is("a")&&target.attr("href",fullUrl),$el.on("click",function(event){if(!event.metaKey&&!event.ctrlKey&&(event.preventDefault(),target=$(event.currentTarget),!target.hasClass("noclick"))){switch(fullUrl=target.data("fullUrl"),event.which){case 1:$location.url(fullUrl),$scope.$apply();break;case 2:window.open(fullUrl)}return lightboxService.closeAll()}})})}),$scope.$on("$destroy",function(){return $el.off()})},{link:link}},module.directive("tgNav",["$tgNavUrls","$tgAuth","$q","$tgLocation","lightboxService",NavigationUrlsDirective])}.call(this),function(){var RepositoryService,module,taiga,extend=function(child,parent){function ctor(){this.constructor=child}for(var key in parent)hasProp.call(parent,key)&&(child[key]=parent[key]);return ctor.prototype=parent.prototype,child.prototype=new ctor,child.__super__=parent.prototype,child},hasProp={}.hasOwnProperty;taiga=this.taiga,RepositoryService=function(superClass){function RepositoryService(q,model1,storage,http,urls){this.q=q,this.model=model1,this.storage=storage,this.http=http,this.urls=urls,RepositoryService.__super__.constructor.call(this)}return extend(RepositoryService,superClass),RepositoryService.$inject=["$q","$tgModel","$tgStorage","$tgHttp","$tgUrls"],RepositoryService.prototype.resolveUrlForModel=function(model){var idAttrName;return idAttrName=model.getIdAttrName(),this.urls.resolve(model.getName())+"/"+model[idAttrName]},RepositoryService.prototype.resolveUrlForAttributeModel=function(model){return this.urls.resolve(model.getName(),model.parent)},RepositoryService.prototype.create=function(name,data,dataTypes,extraParams){var defered,promise,url;return null==dataTypes&&(dataTypes={}),null==extraParams&&(extraParams={}),defered=this.q.defer(),url=this.urls.resolve(name),promise=this.http.post(url,JSON.stringify(data)),promise.success(function(_this){return function(_data,_status){return defered.resolve(_this.model.make_model(name,_data,null,dataTypes))}}(this)),promise.error(function(_this){return function(data,status){return defered.reject(data)}}(this)),defered.promise},RepositoryService.prototype.remove=function(model,params){var defered,promise,url;return null==params&&(params={}),defered=this.q.defer(),url=this.resolveUrlForModel(model),promise=this.http["delete"](url,{},params),promise.success(function(data,status){return defered.resolve(model)}),promise.error(function(data,status){return defered.reject(model)}),defered.promise},RepositoryService.prototype.saveAll=function(models,patch){var promises;return null==patch&&(patch=!0),promises=_.map(models,function(_this){return function(x){return _this.save(x,!0)}}(this)),this.q.all(promises)},RepositoryService.prototype.save=function(model,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForModel(model),data=JSON.stringify(model.getAttrs(patch)),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(_this){return function(data,status){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data,status){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.saveAttribute=function(model,attribute,patch){var data,defered,promise,url;return null==patch&&(patch=!0),defered=this.q.defer(),!model.isModified()&&patch?(defered.resolve(model),defered.promise):(url=this.resolveUrlForAttributeModel(model),data={},data[attribute]=model.getAttrs(),promise=patch?this.http.patch(url,data):this.http.put(url,data),promise.success(function(_this){return function(data,status){return model._isModified=!1,model._attrs=_.extend(model.getAttrs(),data),model._modifiedAttrs={},model.applyCasts(),defered.resolve(model)}}(this)),promise.error(function(data,status){return defered.reject(data)}),defered.promise)},RepositoryService.prototype.refresh=function(model){ diff --git a/dist/v-1459503555751/js/libs.js b/dist/v-1460103845046/js/libs.js similarity index 100% rename from dist/v-1459503555751/js/libs.js rename to dist/v-1460103845046/js/libs.js diff --git a/dist/v-1459503555751/js/maps/app.js.map b/dist/v-1460103845046/js/maps/app.js.map similarity index 73% rename from dist/v-1459503555751/js/maps/app.js.map rename to dist/v-1460103845046/js/maps/app.js.map index b889657..f527d36 100644 --- a/dist/v-1459503555751/js/maps/app.js.map +++ b/dist/v-1460103845046/js/maps/app.js.map @@ -1 +1 @@ -{"version":3,"sources":["app.js"],"names":["configure","i18nInit","init","module","modules","pluginsWithModule","taiga","this","taigaContribPlugins","window","generateHash","components","_","map","x","JSON","stringify","hex_sha1","join","generateUniqueSessionIdentifier","date","randomNumber","Date","getTime","Math","floor","random","sessionId","$routeProvider","$locationProvider","$httpProvider","$provide","$tgEventsProvider","$compileProvider","$translateProvider","$translatePartialLoaderProvider","$animateProvider","authHttpIntercept","blockingIntercept","decorators","defaultHeaders","loaderIntercept","originalWhen","preferedLangCode","userInfo","versionCheckHttpIntercept","classNameFilter","when","path","route","resolve","angular","extend","languageLoad","$q","$translate","deferred","defer","then","promise","call","templateUrl","controller","controllerAs","loader","title","description","joyride","reloadOnSearch","access","requiresLogin","section","redirectTo","params","pslug","disableHeader","mobileViewport","otherwise","html5Mode","enabled","requireBase","Content-Type","Accept-Language","taigaConfig","defaultLanguage","X-Session-Id","defaults","headers","patch","post","put","get","useApplyAsync","setSessionId","$location","$navUrls","$lightboxService","httpResponseError","response","nextUrl","status","config","cancelable","closeAll","replace","url","indexOf","encodeURIComponent","search","reject","responseError","factory","interceptors","push","loaderService","request","logRequest","requestError","rejection","logResponse","$injector","data","version","element","injector","invoke","_this","$confirm","versionErrorMsg","instant","notify","$routeParams","redirectToBlockedPage","responseOk","blockedUrl","currentUrl","project","blocked_code","debugInfoEnabled","debugInfo","localStorage","parse","lang","addPart","useLoader","urlTemplate","_version","useSanitizeValueStrategy","addInterpolation","preferredLanguage","fallbackLanguage","getDecorators","each","decorator","provider","messages","moment","locale","defaultMessage","type","email","urlstrict","number","digits","dateIso","alphanum","phone","notnull","notblank","required","regexp","min","max","range","minlength","maxlength","rangelength","mincheck","maxcheck","rangecheck","equalto","linewidth","pikaday","checksley","updateMessages","$log","$rootscope","$auth","$events","$analytics","appMetaService","projectService","navigationBarService","un","user","validators","debug","$on","refresh","val","width","lines","valid","nl2br","split","every","line","length","prettyDate","isValid","updateValidators","contribPlugins","adminPlugins","filter","userSettingsPlugins","e","ctx","language","Promise","setScheduler","cb","$evalAsync","setupConnection","isAuthenticated","getUser","initialize","event","next","start","setSection","setProjectBySlug","cleanProject","setAll","addMobileViewport","removeMobileViewport","enableHeader","plugin","value","concat","run","TaigaBase","TaigaController","TaigaService","child","parent","ctor","constructor","key","hasProp","prototype","__super__","hasOwnProperty","bind","fn","me","apply","arguments","superClass","onInitialDataError","xhr","location","navUrls","q","Base","Service","Controller","bindMethods","bindOnce","cancelTimeout","debounce","debounceLeading","defineImmutableProperty","groupBy","isImage","joinStr","mixOf","replaceTags","scopeDefer","sizeFormat","slugify","startswith","stripTags","timeout","toString","toggleText","trim","truncate","unslugify","item","i","l","slice","str","breakTag","object","dependencies","methods","keys","forIn","bindAll","scope","attr","continuation","delBind","$eval","$watch","Mixed","base","method","mixin","mixins","name","ref","char","toLowerCase","capitalize","texts","nextTextPosition","text","coll","pred","len","result","wait","setTimeout","timeoutVar","clearTimeout","func","$apply","isNumber","isString","isPlainObject","isUndefined","leading","trailing","str1","str2","startsWith","maxLength","suffix","out","String","substring","lastIndexOf","input","precision","size","units","isNaN","parseFloat","isFinite","log","pow","toFixed","exception","pattern","RegExp","tags","obj","Object","defineProperty","fn_result","isFunction","isObject","removeKeys","chain","flatten","reduce","cartesianProduct","reduceRight","a","b","y","match","oldImmutable","newImmutable","pathObj","forEach","newValue","toJS","FiltersMixin","PageMixin","fillUsersAndRoles","users","roles","activeUsers","computableRoles","is_active","sortBy","activeUsersById","id","usersById","members","uniq","includes","loadUsersAndRoles","all","rs","projects","usersList","projectId","rolesList","results","selectFilter","load","existing","compact","isInCurrentRouteParams","noreload","replaceFilter","replaceAllFilters","filters","unselectFilter","newValues","parsedValues","isEmpty","AuthService","CancelAccountDirective","ChangeEmailDirective","ChangePasswordFromRecoveryDirective","ForgotPasswordDirective","InvitationDirective","LoginDirective","LoginPage","PublicRegisterMessageDirective","RegisterDirective","currentUserService","$inject","rootscope","storage","model","http","urls","translate","currentUserService1","themeService","userModel","_currentTheme","_getUserTheme","setUserdata","userData","Immutable","fromJS","getAttrs","setUser","theme","_setTheme","newTheme","use","_setLocales","make_model","auth","set","clear","remove","setToken","token","getToken","removeToken","auth_token","login","clone","logout","removeUser","register","getInvitation","invitations","acceptInvitiationWithNewUser","acceptInvitiationWithExistingUser","forgotPassword","changePasswordFromRecovery","changeEmail","cancelAccount","service","$config","templates","template","templateFn","publicRegisterEnabled","restrict","directive","link","$scope","$el","$attrs","form","onError","onSuccess","submit","Form","find","decodeURIComponent","loginFormType","preventDefault","validate","username","password","on","prerenderReady","off","onErrorSubmit","onSuccessSubmit","onlyOneErrorElement","trackEvent","_error_message","error","setErrors","message","success","$params","tokenInParams","loginForm","onErrorSubmitLogin","onErrorSubmitRegister","onSuccessSubmitLogin","onSuccessSubmitRegister","registerForm","submitLogin","submitRegister","invitation","dataLogin","project_slug","project_name","dataRegister","escape","$repo","$model","email_token","queryOne","cancel_token","TaigaMainDirective","$window","onresize","$broadcast","home","not-found","permission-denied","discover","discover-search","forgot-password","change-password","change-email","cancel-account","create-project","profile","user-profile","blocked-project","project-backlog","project-taskboard","project-kanban","project-issues","project-search","project-userstories-detail","project-tasks-detail","project-issues-detail","project-wiki","project-wiki-page","project-team","project-admin-home","project-admin-project-profile-details","project-admin-project-profile-default-values","project-admin-project-profile-modules","project-admin-project-profile-export","project-admin-project-profile-reports","project-admin-project-values-status","project-admin-project-values-points","project-admin-project-values-priorities","project-admin-project-values-severities","project-admin-project-values-types","project-admin-project-values-custom-fields","project-admin-memberships","project-admin-roles","project-admin-third-parties-webhooks","project-admin-third-parties-github","project-admin-third-parties-gitlab","project-admin-third-parties-bitbucket","project-admin-contrib","user-settings-user-profile","user-settings-user-change-password","user-settings-user-avatar","user-settings-mail-notifications","user-settings-contrib","$navurls","update","AnimationFrame","Capslock","CheckPermissionDirective","ClassPermissionDirective","DataPickerConfig","ProjectUrl","Qqueue","SelectedText","Template","ToggleCommentDirective","i18n","previousMonth","nextMonth","months","weekdays","weekdaysShort","isRTL","firstDay","parseInt","format","$document","getSelection","selection","createRange","render","permission","removeClass","unObserve","unwatch","addClass","tgCheckPermission","$observe","checkPermissions","tgClassPermissionWatchAction","unbindWatcher","className","negation","my_permissions","classes","add","animationFrame","performAnimation","tail","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","time","shift","slug","is_backlog_activated","is_kanban_activated","is_wiki_activated","is_issues_activated","lastPromise","qqueue","bindAdd","args","$templateCache","lodash","tmp","hideIcon","open","showIcon","warningIcon","$","fadeOut","currentTarget","append","fadeIn","EventsProvider","EventsService","win","liveAnnouncementService1","rootScope","liveAnnouncementService","processMessage","subscriptions","connected","pendingMessages","missedHeartbeats","heartbeatInterval","WebSocket","info","loc","scheme","stopExistingConnection","protocol","trimStart","host","ws","addEventListener","onOpen","onMessage","onClose","removeEventListener","stopHeartBeatMessages","close","notifications","subscribe","show","desc","$digest","startHeartBeatMessages","heartbeatIntervalTime","maxMissedHeartbeats","setInterval","error1","Error","sendMessage","cmd","clearInterval","processHeartBeatPongMessage","serialize","msg","send","routingKey","subscription","routing_key","callback","unsubscribe","$get","$win","$conf","$rootScope","FeedbackDirective","$loading","feedbackService","openLightbox","submitButton","currentLoading","target","create","feedback","finish","focus","RelatedTaskAssignedToInlineEditionDirective","RelatedTaskCreateButtonDirective","RelatedTaskCreateFormDirective","RelatedTaskRowDirective","RelatedTasksDirective","$compile","$template","templateEdit","templateView","renderEdit","renderView","saveTask","task","subject","save","html","keyCode","$modelValue","perms","modify_task","delete_task","select","askOnDelete","askResponse","$emit","ngModel","require","$tgmodel","newTask","assigned_to","createTask","default_task_status","newRelatedTaskFormOpen","us","$rs","_isEditable","_isVisible","loadTasks","tasks","list","usId","showRelatedTasks","$ctrl","autoSave","notAutoSave","updateRelatedTask","member","imgurl","photo","full_name_display","tgRelatedTaskAssignedToInlineEdition","unbind","userId","updatedRelatedTask","ResourcesService","initResources","initUrls","auth-register","by_username","users-password-recovery","users-change-password-from-recovery","users-change-password","users-change-email","users-cancel-account","user-stats","user-liked","user-voted","user-watched","user-contacts","user-me","permissions","notify-policies","user-storage","memberships","bulk-create-memberships","resolver","project-templates","project-modules","bulk-update-projects-order","project-like","project-unlike","project-watch","project-unwatch","project-transfer-validate-token","project-transfer-accept","project-transfer-reject","project-transfer-request","project-transfer-start","userstory-statuses","points","task-statuses","issue-statuses","issue-types","priorities","severities","milestones","userstories","bulk-create-us","bulk-update-us-backlog-order","bulk-update-us-sprint-order","bulk-update-us-kanban-order","userstories-filters","userstory-upvote","userstory-downvote","userstory-watch","userstory-unwatch","bulk-create-tasks","bulk-update-task-taskboard-order","task-upvote","task-downvote","task-watch","task-unwatch","issues","bulk-create-issues","issues-filters","issue-upvote","issue-downvote","issue-watch","issue-unwatch","wiki","wiki-restore","wiki-links","history/us","history/issue","history/task","history/wiki","attachments/us","attachments/issue","attachments/task","attachments/wiki_page","custom-attributes/userstory","custom-attributes/issue","custom-attributes/task","custom-attributes-values/userstory","custom-attributes-values/issue","custom-attributes-values/task","webhooks","webhooks-test","webhooklogs","webhooklogs-resend","userstories-csv","tasks-csv","issues-csv","timeline-profile","timeline-user","timeline-project","exporter","importer","locales","applications","application-tokens","stats-discover","$urls","providers","toArray","SearchBoxDirective","SearchController","SearchDirective","scope1","repo","loadSearchData","sectionName","loadInitialData","projectName","projectDescription","searchTerm","t","searchResults","term","loadFilters","defered","loadProject","getBySlug","issueStatusById","issue_statuses","taskStatusById","task_statuses","severityById","priorityById","usStatusById","us_statuses","loading","_loadSearchData","_promise","abort","$route","reload","$templatecache","$routeparams","linkTable","activeSectionName","applyAutoTab","getActiveSection","lastSearchResults","markSectionTabActive","renderFilterTabs","renderTableContent","tabsDom","maxVal","selectedSection","wikipages","oldElements","oldScope","children","$destroy","$new","parseHTML","activeSection","sectionData","searchText","AnalyticsService","doc","conf","initialized","accountId","pageEvent","trackRoutes","ignoreFirstPageLoad","injectAnalytics","ga","getUrl","trackPage","s","o","g","r","m","createElement","getElementsByTagName","async","src","parentNode","insertBefore","document","page","category","action","label","BindScope","jQuery","CompileHtmlDirective","attrs","tgCompileHtml","oldValue","contents","AssignedToDirective","BlockButtonDirective","CreatedByDisplayDirective","DateRangeDirective","DateSelectorDirective","DeleteButtonDirective","EditableDescriptionDirective","EditableSubjectDirective","EditableWysiwyg","ListItemAssignedtoDirective","ListItemIssueStatusDirective","ListItemPriorityDirective","ListItemSeverityDirective","ListItemTaskStatusDirective","ListItemTypeDirective","ListItemUsStatusDirective","SprintProgressBarDirective","TgMainTitleDirective","TgProgressBarDirective","WatchersDirective","renderRange","first","second","endDate","initDate","tgDateRange","valFirst","valSecond","datePickerConfigService","selectedDate","datePickerConfig","merge","field","onSelect","picker","setDate","Pikaday","renderProgress","percentage","visual_percentage","hasClass","css","tgSprintProgressbar","sprint","closedPoints","totalPoints","closed_points","total_points","round","owner","owner_extra_info","created_date","$qqueue","deleteWatcher","isEditable","renderWatchers","ref1","requiredPerm","watchers","$setViewValue","watcherId","revert","watcherIds","pull","$currentUserService","renderAssignedTo","assignedObject","fullName","isIocaine","isUnassigned","assigned_to_extra_info","is_iocaine","fullNameVisible","ask","instance","is_blocked","onDeleteGoToUrl","onDeleteTitle","subtitle","hide","click","$selectedText","noDescriptionMegEditMode","noDescriptionMegReadMode","is","href","scrollTop","offset","top","noDescriptionMsg","attachmentsService","attachmentsFullService","isInEditMode","uploadFile","file","addAttachment","getIn","textarea","dataTransfer","promises","stopPropagation","originalEvent","files","markItUp","replaceWith","tgListitemUsStatus","tgListitemTaskStatus","tgListitemAssignedto","issue","tgListitemIssueStatus","issueTypeById","domNode","color","tgListitemType","priority","tgListitemPriority","severity","tgListitemSeverity","el","tgProgressBar","i18nSectionName","ConfirmService","NOTIFICATION_MSG","light-error","lightboxService","lightboxSelector","ok","askChoice","choices","replacement","warning","choicesField","selected","icon","detailImage","useSVG","createElementNS","setAttributeNS","classList","appendChild","prepend","stop","percent","body","selector","tsem","one","CustomAttributeValueDirective","CustomAttributesValuesController","CustomAttributesValuesDirective","DATE_TYPE","MULTILINE_TYPE","TEXT_TYPE","TYPE_CHOICES","URL_TYPE","confirm","objectId","customAttributes","customAttributesValues","loadCustomAttributesValues","getAttributeValue","attribute","attributeValue","attributes_values","updateAttributeValue","attributesValues","$templates","$storage","collapsedHash","$ctrls","collapsed","hash","requiredEditionPerm","setFocusAndSelectOnInputField","edit","editable","tgCustomAttributeValue","EstimationsService","LbUsEstimationDirective","UsEstimationDirective","$tgEstimationsService","estimationProcess","onSelectedPointForRole","roleId","pointId","mainTemplate","calculateTotalPoints","calculateRoles","EstimationProcess","pointsTemplate","$el1","us1","project1","bindClickEvents","pointsById","notNullValues","values","v","k","acc","num","role","pointObj","renderPointsSelector","siblings","popover","horizontalList","maxPointLength","pop","point","some","horizontal","closest","height","clientHeight","defaultFilter","momentFormat","momentFromNow","yesNoFilter","defaultValue","without_suffix","fromNow","HistoryController","HistoryDirective","IGNORED_FIELDS","userstories.userstory","tasks.task","issues.issue","loadHistory","history","changeModel","historyEntry","historyResult","j","len1","values_diff","description_diff","description_html","blocked_note_diff","blocked_note","blocked_note_html","comments","comment","deleteComment","activityId","undeleteComment","checkPermissionsService","templateActivity","templateBase","templateBaseEntries","templateChangeAttachment","templateChangeDiff","templateChangeGeneric","templateChangeList","templateChangePoints","templateDeletedComment","countChanges","formatChange","getHumanizedFieldName","getPrettyDateFormat","renderActivity","renderAttachmentEntry","renderBase","renderChange","renderChangeEntries","renderChangeEntry","renderChangesHelperText","renderComment","renderComments","renderCustomAttributesEntry","renderHistory","rerender","showAllActivity","showAllComments","humanizedFieldNames","content","is_closed","finish_date","milestone","user_story","client_requirement","team_requirement","attachments","is_deprecated","order","backlog_order","sprint_order","kanban_order","taskboard_order","us_order","change","isArray","changes","diff","filename","from","to","outerHTML","customAttrsChanges","added","removed","difference","ref2","delete_comment_date","delete_comment_user","deleteCommentDate","deleteCommentUser","comment_html","canRestoreComment","pk","avatar","userFullName","userProfileUrl","creationDate","created_at","changesText","mode","deleteCommentActionTitle","canDeleteComment","entries","totalEntries","showMore","commentsVisible","historyVisible","check","ngmodel","totalComments","takeRight","totalChanges","parents","toggleClass","ImportProjectButtonDirective","LbImportErrorDirective","$lightboxFactory","$tgAuth","getRestrictionError","errorKey","maxMemberships","membersError","privateError","publicError","isPrivate","canCreatePrivateProjects","canCreatePublicProjects","max_memberships","trigger","loadProjects","errorMsg","restrictionError","class","error_message","AssignedToLightboxDirective","AttachmentPreviewLightboxDirective","BlockLightboxDirective","BlockingMessageInputDirective","CreateBulkUserstoriesDirective","CreateEditUserstoryDirective","LightboxDirective","LightboxKeyboardNavigationService","LightboxLeaveProjectWarningDirective","LightboxService","WatchersLightboxDirective","docEl","lightboxContent","not","code","which","removeAttr","lightboxEl","dispatch","activeElement","prev","$tgrepo","block","unblock","finishCallback","watch","attachmentsToAdd","attachmentsToDelete","createAttachments","deleteAttachments","resetAttachments","createEditUs","isNew","List","attachment","deleteAttachment","statusList","reset","usStatusList","is_archived","upload","broadcastEvent","keydown","statusId","bulk","bulkCreate","lightboxKeyboardNavigationService","closeLightbox","filterUsers","normalizeString","selectedItem","selectedUser","usersTemplate","string","normalizedString","toUpperCase","partial","assignedToId","searchingText","usersSearch","getFilteredUsers","_filterUsers","Loader","LoaderDirective","tgLoader","onStart","onEnd","autoClose","lastResponseDate","pageLoaded","requestCount","startLoadTime","minTime","force","endTime","timeoutValue","intervalAuto","auto","LoadingDirective","TgLoadingService","spinner","settings","removeClasses","classess","timeoutId","tgLoading","showLoading","RelatedTaskStatusDirective","UsStatusDirective","usStatusDom","usStatusDomParent","tgUsStatus","onUpdate","statuses","selectionTemplate","updateTaskStatus","taskStatusDom","taskStatusDomParent","tgRelatedTaskStatus","closePopover","isVisible","docViewBottom","docViewLeft","docViewRight","docViewTop","docViewWidth","elemBottom","elemLeft","elemRight","elemTop","elemWidth","display","visibility","left","ExceptionHandlerFactory","ravenConfig","Raven","install","cause","captureException","ColorizeTagsDirective","LbTagLineDirective","TagLineDirective","TagsDirective","formatter","parser","$formatters","$parsers","backlog","kanban","taskboard","srcTags","tgColorizeTagsType","sort","tag","tags_colors","tgColorizeTags","COMMA_KEY","ENTER_KEY","templateTags","addValue","deleteValue","hideSaveButton","renderTags","resetInput","saveInputTag","showSaveButton","tagsColors","style","autocomplete","fromCharCode","positioningFunction","position","elements","menu","source","my","using","ui","ESC_KEY","hideAddTagButton","hideAddTagButtonText","hideInput","renderInReadModeOnly","showAddTagButton","showAddTagButtonText","showInput","blur","MarkitupDirective","previewTemplate","addLine","cancelablePromise","closePreviewMode","markdownTitle","prepareUrlFormatting","preview","previewDomNode","previewInProgress","renderMarkItUp","setCaretPosition","urlFormatting","markItUpDomNode","markdownDomNode","mdrender","markdown","caretPosition","scrollRelation","totalLines","createTextRange","move","selectionStart","setSelectionRange","scrollHeight","nline","cursorPosition","indices","regex","exec","index","donotparse","endIndex","startIndex","heading","n","placeHolder","markdownSettings","nameSpace","onShiftEnter","keepDefault","openWith","onEnter","afterInsert","cursorLine","emptyListItem","lastLine","markdownCaretPositon","newLineContent","markupSet","closeWith","separator","beforeInsert","markItUpRemove","textcomplete","cache","searchProps","searchTypes","prop","res","count","BacklogFiltersDirective","templateSelected","currentFiltersType","getFiltersType","initializeSelectedFilters","reloadUserstories","renderFilters","renderSelectedFilters","selectQFilter","selectedFilters","showCategories","showFilters","toggleFilterSelection","f","loadUserstories","generateFilters","currentFilters","CreateEditSprint","createSprint","getLastSprint","hasErrors","resetSprint","estimated_start","estimated_finish","newSprint","copy","setAttr","sprintsCounter","__all__","milestonesCounter","openSprints","sortedSprints","sprints","closed","estimatedFinish","estimatedStart","lastSprint","lastSprintNameDom","editSprint","BacklogController","BacklogDirective","BurndownBacklogGraphDirective","TgBacklogProgressBarDirective","ToggleBurndownVisibility","UsPointsDirective","UsRolePointsSelectorDirective","params1","events","analytics","rs2","showTags","activeFilters","showGraphPlaceholder","initializeEventHandlers","getShowTags","loadProjectStats","loadSprints","loadClosedSprints","moveUs","unloadClosedSprints","initializeSubscription","routingKey1","routingKey2","toggleShowTags","storeShowTags","toggleActiveFilters","stats","defined_points","completedPercentage","total_milestones","closedSprints","totalClosedMilestones","user_stories","closedSprintsById","totalMilestones","totalOpenMilestones","reverse","sprintsById","currentSprint","findCurrentSprint","restoreFilters","selectedStatuses","selectedTags","oldSelectedTags","oldSelectedStatuses","filtersQ","filtersQOld","filterGrp","resetFilters","httpParams","getUrlFilters","storeQueryParams","listUnassigned","setSearchDataFilters","loadBacklog","closedMilestones","total_closed_milestones","prepareBulkUpdateData","uses","us_id","resortUserStories","items","isModified","usList","newUsIndex","newSprintId","len2","movedFromClosedSprint","movedToClosedSprint","oldSprintId","splice","Array","bulkUpdateBacklogOrder","bulkUpdateSprintOrder","console","len3","isFilterSelected","searchdata","urlfilters","results1","pick","filtersData","choicesFiltersFormat","tagsFilterFormat","byIdObject","markSelectedFilters","isSelected","omit","updateUserStoryStatus","editUserStory","$event","getByRef","deleteUserStory","without","addNewUs","default_us_status","addNewSprint","currentDate","end","doomLineTemplate","linkDoomLine","linkFilters","linkToolbar","showHideFilter","showHideTags","addDoomLineDom","getUsItems","reloadDoomLine","removeDoomlineDom","current_sum","domElement","assigned_points","before","rowElements","checkSelected","getUsToMove","lastChecked","moveToCurrentSprint","moveToLatestSprint","moveUssToSprint","shiftPressed","ussDom","itemScope","selectedUss","extraPoints","totalExtraPoints","ussCurrent","union","saveAll","moveToSprintDom","selectedUsDom","shiftKey","current","nextAll","prevAll","nextUntil","prevUntil","elm","ussToMove","hideText","showText","sidebar","filtersSearch","disableSelection","numberOfRoles","roleName","rolScope","$tgTemplate","rolesTemplate","bindClickElements","filteringRoleId","renderRolesSelector","selectedRoleId","updatingSelectedRoleId","tgBacklogUsPoints","popRolesDom","firstLoad","toggleGraph","isBurndownGraphCollapsed","redrawChart","dataToDraw","client_increment_line","colors","evolution_line","milestonesRange","optimal_line","options","team_increment_line","zero_line","ml","zip","fillColor","optimal","evolution","grid","borderWidth","right","bottom","borderColor","hoverable","xaxis","ticks","axisLabel","axisLabelUseCanvas","axisLabelFontSizePixels","axisLabelFontFamily","axisLabelPadding","tickFormatter","axis","yaxis","series","shadowSize","fill","radius","lineWidth","tooltip","tooltipOpts","xval","yval","flotItem","seriesIndex","sprintName","abs","empty","plot","adjustPercentaje","projectPointsPercentaje","closedPointsPercentaje","adjusted","tgBacklogProgressBar","definedPoints","BacklogEmptySortableDirective","BacklogSortableDirective","SprintSortableDirective","deleteElement","$tgConfirm","getUsIndex","filterError","sortable","cancel","connectWith","dropOnEmpty","placeholder","scroll","disableHorizontalScroll","tolerance","itemIndex","itemUs","forcePlaceholderSize","BacklogSprintDirective","BacklogSprintHeaderDirective","ToggleExcludeClosedSprintsVisualization","slideOptions","sprintTableMinHeight","toggleSprint","duration","easing","sprintArrow","sprintTable","tgBacklogSprint","slideToggle","compiledTemplate","estimatedDateRange","taskboardUrl","templateScope","assign","excludeClosedSprints","loadingElm","after","SprintGraphDirective","days","day","unshift","d","optimal_points","open_points","tickSize","last","daysNames","formattedDate","roundedValue","CreateBulkTasksDirective","CreateEditTaskDirective","sprintId","TaskboardController","TaskboardDirective","TaskboardSquishColumnDirective","TaskboardTaskDirective","TaskboardUserDirective","rs1","_setMeta","startDate","completedPoints","completedPointsSum","totalPointsSum","openTasks","totalTasks","total_tasks","loadTaskboard","taskMove","refreshTagsColors","loadSprintStats","loadSprint","pointsList","roleById","taskStatusList","remainingPointsSum","remainingTasks","completed_points","completed_tasks","usTasks","isPlaceholder","sslug","refreshTasksOrder","resortTasks","bulkUpdateTaskTaskboardOrder","task_id","addNewTask","editTaskAssignedTo","tableBodyDom","tableHeaderDom","scrollLeft","$rs2","editingTask","avatarWidth","maxColumnWidth","getCeilWidth","recalculateStatusColumnWidth","recalculateTaskboardWidth","refreshTaskboardTableWidth","setStatusColumnWidth","statusesFolded","getStatusColumnModes","usFolded","getUsRowModes","foldStatus","storeStatusColumnModes","foldUs","storeUsRowModes","tasksMatrixSize","sqrt","column","columnWidths","columns","totalWidth","outerWidth","total","statusFoldedWidth","clickable","username_label","TaskboardSortableDirective","itemEl","newParentScope","oldParentScope","tdom","handle","itemTask","newStatusId","newUsId","oldStatusId","oldUsId","parentEl","st","KanbanArchivedStatusHeaderDirective","KanbanArchivedStatusIntroDirective","KanbanController","KanbanDirective","KanbanSquishColumnDirective","KanbanUserDirective","KanbanUserstoryDirective","KanbanWipLimitDirective","defaultViewMode","viewModes","statusViewModes","onAssignedToChanged","loadUserStoriesForStatus","hideUserStoriesForStatus","changeUsAssignedTo","userid","status__is_archived","listAll","usByStatus","us_archived","loadKanban","generateStatusViewModes","storedStatusViewModes","getStatusViewModes","storeStatusViewModes","updateStatusViewMode","newViewMode","isMaximized","isMinimized","itemsToSave","bulkUpdateKanbanOrder","hideArchivedText","showArchivedText","hidden","tgKanbanArchivedStatusHeader","userStories","hiddenUserStoriexText","updateIntroText","tgKanbanArchivedStatusIntro","isArchived","userStoriesLoaded","editingUserStory","getTemplateUrl","updateTableWidth","folds","redrawWipLimit","tgKanbanWipLimit","wip_limit","wtid","tgKanbanUserAvatar","KanbanSortableDirective","IssueDetailController","IssuePriorityButtonDirective","IssueSeverityButtonDirective","IssueStatusButtonDirective","IssueStatusDisplayDirective","IssueTypeButtonDirective","PromoteIssueToUsButtonDirective","issueRef","issueref","initializeOnDeleteGoToUrl","ref3","issueSubject","issueStatus","statusById","issueType","typeById","issueSeverity","issuePriority","issueDescription","loadIssue","issue_types","typeList","severityList","priorityList","issueId","commentModel","neighbors","previous","previousUrl","onUpvote","upvote","onDownvote","downvote","onWatch","onUnwatch","typees","severityes","priorityes","generated_from_issue","CreateBulkIssuesDirective","CreateIssueDirective","default_issue_status","default_issue_type","default_priority","default_severity","IssueAssignedToInlineEditionDirective","IssueStatusInlineEditionDirective","IssuesController","IssuesDirective","IssuesFiltersDirective","loadIssues","getFilters","storeFilters","issueStatusList","issueTypes","getUrlFilter","loadMyFilters","getMyFilters","removeNotExistingFiltersFromUrl","currentSearch","existingValues","filterName","filterValue","splittedValues","intersection","myFilters","types","assignedTo","createdBy","usersFiltersFormat","unknownOption","reformatedUsers","unknownItem","full_name","u","owners","loadIssuesRequests","urlFilters","models","paginatedBy","saveCurrentFiltersTo","newFilter","storeMyFilters","deleteMyFilter","addNewIssue","addIssuesInBulk","linkOrdering","linkPagination","$pagEl","afterCurrent","atBegin","atEnd","beforeCurrent","getNumPages","renderPagination","numPages","cpage","pages","showPrevious","showNext","pagenum","colHeadElement","currentOrder","finalOrder","newOrder","reloadIssues","unwatchIssues","filterId","customFilterName","loadPromise","currentfilterstype","updateIssueStatus","issueStatusDom","issueStatusDomParent","tgIssueStatusInlineEdition","updateIssue","tgIssueAssignedToInlineEdition","updatedIssue","UsClientRequirementButtonDirective","UsStatusButtonDirective","UsStatusDisplayDirective","UsTeamRequirementButtonDirective","UserStoryDetailController","usRef","usref","closedTasks","progressPercentage","userStoryRef","userStorySubject","userStoryStatus","userStoryPoints","userStoryDescription","userStoryClosedTasks","userStoryTotalTasks","userStoryProgressPercentage","allClosed","loadUs","kanbanStaus","noMilestone","order_by","canEdit","isRequired","TaskDetailController","TaskIsIocaineButtonDirective","TaskStatusButtonDirective","TaskStatusDisplayDirective","taskRef","taskref","taskSubject","taskStatus","taskDescription","loadTask","taskId","loadUserStory","LeaveProjectDirective","TeamController","TeamFiltersDirective","TeamMemberCurrentUserDirective","TeamMemberStatsDirective","TeamMembersDirective","membersFilter","setRole","filtersRole","loadMembers","totals","currentUser","issuesEnabled","tasksEnabled","wikiEnabled","loadMemberStats","memberStats","vals","statsKey","sum","_processStats","_processStat","stat","singleStat","userRoles","lightboxFactory","leaveConfirm","confirm_leave_project_text","leave_project_text","leave","isCurrentUser","EditableWikiContentDirective","WikiDetailController","WikiSummaryDirective","projectSlug","wikiSlug","wikiTitle","linksVisible","wikiPageName","wikiPageContent","totalEditions","editions","lastModifiedDate","modified_date","loadWiki","wikiId","loadWikiLinks","listLinks","wikiLinks","selectedWikiLink","checkLinksPerms","last_modifier","imgUrl","wikiPage","cancelEdition","disableEdition","getSelectedText","switchToEditMode","switchToReadMode","button","WikiNavDirective","addWikiLinkPermission","deleteWikiLinkPermission","linkId","linkSlug","newLink","ChangeOwnerLightboxController","ChangeOwnerLightboxDirective","LbRequestOwnershipDirective","LightboxAddMembersController","LightboxAddMembersDirective","LightboxAddMembersWarningMessageDirective","TransferProjectStartSuccessDirective","lightboxService1","pendingMembersCount","_defaultMaxInvites","_defaultRole","submitInvites","canAddUsers","memberInvites","membersLimit","total_memberships","addSingleMember","role_id","showWarningMessage","removeSingleMember","initializeFields","invites","bulkCreateMemberships","invitationText","_onSuccessInvite","_onErrorInvite","ctrl","bindToController","confirmService","transferRequest","commentOpen","limit","getUsers","currentOwnerId","userSearch","selectUser","transferStart","MembershipsController","MembershipsDirective","MembershipsRowActionsDirective","MembershipsRowAdminCheckboxDirective","MembershipsRowAvatarDirective","MembershipsRowRoleSelectorDirective","NoMoreMembershipsExplanationDirective","lightboxFactory1","i_am_admin","httpFilters","membership","is_user_active","addNewMembers","showLimitUsersWarningMessage","pending","user_email","isOwner","is_owner","tgMembershipsRowAvatar","tgMembershipsRowAdminCheckbox","inputId","is_admin","roleList","selectedRole","tgMembershipsRowRoleSelector","newRole","activedTemplate","pendingTemplate","tgMembershipsRowActions","resendInvitation","defaultMsg","AdminNavigationDirective","tgAdminNavigation","AdminProjectChangeOwnerDirective","AdminProjectRequestOwnershipDirective","AdminProjectRestrictionsDirective","CsvExporterController","CsvExporterIssuesController","CsvExporterTasksController","CsvExporterUserstoriesController","CsvIssueDirective","CsvTaskDirective","CsvUsDirective","ProjectDefaultValuesDirective","ProjectExportDirective","ProjectLogoDirective","ProjectLogoModelDirective","ProjectModulesDirective","ProjectProfileController","ProjectProfileDirective","tgAuth","prioritiesList","severitiesList","issueTypesList","openDeleteLightbox","newUrl","fetchProject","newVal","oldVal","videoconferences_extra_data","videoconferences","isVideoconferenceActivated","asyn_message","buttonsEl","dump_ready_text","hideButtons","hideResult","hideSpinner","loading_msg","loading_title","resultEl","resultMessageEl","resultTitleEl","setAsyncMessage","setAsyncTitle","setLoadingMessage","setLoadingTitle","setSyncMessage","setSyncTitle","showButtons","showErrorMode","showExportResultAsyncMode","showExportResultSyncMode","showLoadingMode","showResult","showSpinner","spinnerEl","syn_message","dumpUrl","_generateUuid","setCsvUuid","csvUrl","resolveAbsolute","csvUuid","uuid","regenerateUuid","sectionTitle","showSizeInfo","logoAttachment","changeLogo","removeLogo","$parse","modelSetter","tgProjectLogoModel","requestOwnership","changeOwner","project-id","active-users","current-owner-id","ColorSelectionDirective","ProjectCustomAttributesController","ProjectCustomAttributesDirective","ProjectValuesController","ProjectValuesDirective","ProjectValuesSectionController","moveValue","loadValues","resource","listValues","maxValueOrder","maxBy","itemValue","linkDragAndDrop","linkValue","goToBottomList","initializeNewValue","initializeTextTranslations","objName","saveNewValue","saveValue","valueType","objname","addNewElementText","table","formEl","row","editionRow","option","onSucces","moveTo","moveCustomAttributes","deleteCustomAttribute","saveCustomAttribute","createCustomAttribute","loadCustomAttributes","maxOrder","attrValues","attrModel","newIndex","idx","cancelCreate","cancelUpdate","hideAddButton","hideCancelButton","hideCreateForm","hideEditForm","resetNewAttr","revertChangesInCustomAttribute","showAddButton","showCancelButton","showCreateForm","showEditForm","sortableEl","itemAttr","newAttr","EditRoleDirective","NewRoleDirective","RolePermissionsDirective","RolesController","RolesDirective","_disableComputable","_enableComputable","anyComputableRole","computable","loadRoles","public_permission","external_user","public_permissions","askOnError","askOnSuccess","toggleComputable","toggleView","toggle","DEFAULT_PERMISSIONS","insertPosition","baseTemplate","categoryTemplate","resumeTemplate","generateCategoriesFromRole","renderCategory","renderPermissions","renderResume","categories","isPermissionEditable","issuePermissions","milestonePermissions","setActivePermissions","setActivePermissionsPerCategory","taskPermissions","userStoryPermissions","wikiPermissions","active","is_private","cat","activePermissions","getActivePermissions","categoryId","anon_permissions","BitbucketController","BitbucketWebhooksDirective","GithubController","GithubWebhooksDirective","GitlabController","GitlabWebhooksDirective","NewWebhookDirective","SelectInputText","ValidOriginIpsDirective","WebhookDirective","WebhooksController","loadWebhooks","openHistory","showEditMode","showVisualizationMode","updateLogs","updateShowHideHistoryText","webhook","tgWebhook","validStatus","prettySentHeaders","toPairs","request_headers","arg","header","prettySentData","request_data","created","logs_counter","logs","historyElement","textElement","test","resend","addWebhookDOMNode","formDOMNode","loadModules","github","gitlab","bitbucket","saveAttribute","$ngModel","createProjectRestrictionDirective","CreateProject","DeleteProjectDirective","$projectUrl","$cacheFactory","removeAll","error_field","selectors","creation_template","head","projectToDelete","BindHtmlDirective","BindOnceAltDirective","BindOnceBindDirective","BindOnceHrefDirective","BindOnceHtmlDirective","BindOnceRefDirective","BindOnceSrcDirective","BindOnceTitleDirective","BindTitleDirective","tgBoBind","tgBoHtml","tgBoRef","tgBoSrc","tgBoHref","tgBoAlt","tgBoTitle","tgTitleHtml","tgBindHtml","ConfigurationService","has","ContribController","ContribUserSettingsController","currentPlugin","FiltersStorageService","HttpService","cacheFactory","locationFactory","lastRoute","Model","ModelService","dataTypes","_attrs","_name","_dataTypes","setAttrs","_modifiedAttrs","_isModified","applyCasts","attrName","castMethod","castName","casts","getIdAttrName","getName","getter","self","setter","substr","enumerable","configurable","isAttributeModified","markSaved","desSerialize","sdata","ddata","$http","$gmUrls","$gmStorage","cls","int","float","NavigationUrlsDirective","NavigationUrlsService","formatUrl","replacer","bindOnceP","parseNav","param","tgNavGetParams","tgNav","fullUrl","getURLParams","getURLParamsStr","metaKey","ctrlKey","RepositoryService","model1","resolveUrlForModel","idAttrName","resolveUrlForAttributeModel","extraParams","_data","_status","queryMany","httpOptions","enablePagination","queryOneAttribute","queryOneRaw","queryPaginated","queryOnePaginatedRaw","wikipage","StorageService","_default","serializedValue","getItem","setItem","contains","removeItem","UrlsService","fmt","mainUrl","trimEnd","resourceProvider","_get","userstory","_list","filtersHashSuffix","hashSuffix","myFiltersHashSuffix","getQueryParams","listInAllProjects","project_id","bulk_issues","ns","innerPromise","hashSuffixStatusColumnModes","hashSuffixStatusViewModes","listByUser","invitation_extra_text","bulk_memberships","notifyPolicies","listByMember","memberId","bulkUpdateOrder","bulkData","regenerate_userstories_csv_uuid","regenerate_issues_csv_uuid","regenerate_tasks_csv_uuid","statusUpdater","complete","failed","maxFileSize","uploadComplete","uploadFailed","uploadProgress","fileName","fileSize","evt","loaded","uploadedSize","totalSize","responseText","getResponseHeader","FormData","XMLHttpRequest","setRequestHeader","transformRequest","identity","deferredAbort","get_all","noop","hashSuffixUsRowModes","userStoryId","sprint_id","bulk_tasks","changeAvatar","removeAvatar","changePassword","currentPassword","newPassword","current_password","userSettings","contacts","status_id","bulk_stories","webhookId","webhooklogId","UserChangePasswordController","UserChangePasswordDirective","newPassword1","newPassword2","DeleteUserDirective","TaigaAvatarModelDirective","UserAvatarDirective","UserProfileDirective","UserSettingsController","getLan","getTheme","maxFileSizeMsg","availableThemes","avatarAttachment","tgAvatarModel","UserSettingsNavigationDirective","tgUserSettingsNavigation","UserNotificationsController","UserNotificationsDirective","UserNotificationsListDirective","policy","policyIndex","prev_level","notify_level","AttachmentLinkDirective","tgAttachmentLink","AttachmentGalleryDirective","onDelete","AttachmentController","editMode","mergeIn","AttachmentDirective","AttachmentsDropDirective","eventAttr","tgAttachmentsDrop","AttachmentsFullController","deprecatedsCount","attachmentsVisible","deprecatedsVisible","uploadingAttachments","objId","setMode","toggleDeprecatedsVisible","addAttachments","loadAttachments","toDeleteAttachment","errorMessage","reorderAttachment","updateAttachment","toUpdateAttachment","hasPermission","editPermission","showAttachments","AttachmentsFullDirective","AttachmentsFullService","_attachments","_deprecatedsCount","_attachmentsVisible","_deprecatedsVisible","regenerate","it","uploading","Map","oldIndex","findIndex","setIn","oldAttachment","AttachmentsSimpleController","onAdd","AttachmentsSimpleDirective","AttachmentSortableDirective","tgAttachmentsSortable","containment","helper","AutoSelectDirective","$timeout","FileChangeDirective","tgFileChange","JoyRideDirective","joyRideService","initJoyrRide","intro","unsuscribe","introJs","oncomplete","onexit","disableJoyRide","setOptions","exitOnEsc","exitOnOverlayClick","showStepNumbers","nextLabel","prevLabel","skipLabel","doneLabel","disableInteraction","setOption","loadJoyRideConfig","exit","JoyRideService","getConfig","dashboard","steps","joyRide","joyRides","LiveAnnouncementDirective","defineProperties","LiveAnnouncementService","ProjectLogoBigSrcDirective","projectLogoService","logo","projectLogo","getDefaultProjectLogo","ProjectLogoSmallSrcDirective","ProjectMenuController","_getActiveSection","_setVideoConference","_setMenuPermissions","videoconferenceUrl","_videoConferenceUrl","indexBacklog","indexKanban","oldSectionName","sectionsBreadcrumb","baseUrl","ProjectMenuDirective","projectChange","vm","fixed","TermsOfServiceAndPrivacyPolicyNoticeDirective","privacyPolicyUrl","termsOfServiceUrl","VoteButtonController","isMouseOver","showTextWhenMouseIsOver","showTextWhenMouseIsLeave","toggleVote","is_voter","_downvote","_upvote","VoteButtonDirective","WatchButtonController","openWatchers","getPerms","toggleWatch","is_watcher","_unwatch","_watch","WatchButtonDirective","attributes","environment","DiscoverHomeOrderByController","is_open","week","month","year","currentText","currentOrderBy","orderBy","onChange","DiscoverHomeOrderByDirective","DiscoverSearchBarController","discoverProjectsService","projectsCount","fetchStats","submitFilter","DiscoverSearchBarDirective","DiscoverSearchListHeaderController","like_is_open","activity_is_open","openLike","setOrderBy","openActivity","DiscoverSearchListHeaderDirective","FeaturedProjectsController","featured","fetchFeatured","FeaturedProjectsDirective","HighlightedDirective","highlighted","MostActiveController","mostActive","getOrderBy","fetch","fetchMostActive","MostActiveDirective","MostLikedController","mostLiked","fetchMostLiked","MostLikedDirective","DiscoverHomeController","onSubmit","DiscoverSearchController","routeParams","searchResult","nextSearchPage","loadingGlobal","loadingList","loadingPagination","resetSearchList","fetchByGlobalSearch","fetchByOrderBy","getFilter","fetchSearch","is_looking_for_people","onChangeFilter","updateParams","onChangeOrder","DiscoverSearchDirective","DiscoverProjectsService","projectsService","_mostLiked","_mostActive","_featured","_searchResult","_projectsCount","decorate","_decorate","_nextSearchPage","_discoverParams","discover_mode","_params","getProjects","is_featured","ExternalAppController","externalAppsService","xhrError","loginUrl","createApplicationToken","_getApplicationToken","_redirect","_applicationId","application","_state","state","_user","_application","loginWithAnotherUserUrl","applicationToken","getApplicationToken","back","authorizeApplicationToken","ExternalAppsService","applicationId","externalapps","FeedbackService","sendFeedback","DutyDirective","navurls","duty","getDutyType","HomeController","HomeService","_attachProjectInfoToWorkInProgress","workInProgress","projectsById","_attachProjectInfoToDuty","_duties","watching","objType","getWorkInProgress","assignedIssuesPromise","assignedTasksPromise","assignedUserStoriesPromise","params_us","projectsPromise","watchingIssuesPromise","watchingTasksPromise","watchingUserStoriesPromise","getProjectsByUserId","p","status__is_closed","HomeProjectListDirective","newProject","WorkingOnController","homeService","_setAssignedTo","elem","_setWatching","WorkingOnDirective","DropdownProjectListDirective","DropdownUserDirective","authService","configService","locationService","navUrlsService","isFeedbackEnabled","userMenu","NavigationBarDirective","isEnabledHeader","NavigationBarService","enabledHeader","ProfileBarController","userService","loadStats","getStats","ProfileBarDirective","ProfileContactsController","loadContacts","getContacts","ProfileContactsDirective","FavItemDirective","itemType","FavsBaseController","ProfileLikedController","ProfileVotedController","ProfileWatchedController","_init","enableFilterByAll","enableFilterByProjects","enableFilterByUserStories","enableFilterByTasks","enableFilterByIssues","enableFilterByTextQuery","_resetList","scrollDisabled","_page","_enableLoadingSpinner","isLoading","_disableLoadingSpinner","_enableScroll","_disableScroll","_checkIfHasMorePages","hasNext","_checkIfHasNoResults","hasNoResults","loadItems","_getItems","filterByTextQuery","showAll","showProjectsOnly","showUserStoriesOnly","showTasksOnly","showIssuesOnly","getLiked","getVoted","getWatched","ProfileLikedDirective","ProfileVotedDirective","ProfileWatchedDirective","ProfileHints","hintKey","HINTS","hint","linkText","ProfileProjectsController","attachUserContactsToProjects","ProfileProjectsDirective","ProfileTabDirective","transclude","tab","tabIcon","iconName","tabActive","tabDisabled","addTab","ProfileTabsController","tabs","toggleTab","ProfileTabsDirective","ProfileController","getUserByUserName","notFound","userUsername","BlockedProjectExplanationDirective","LikeProjectButtonController","likeButtonService","toggleLike","_unlike","_like","like","unlike","LikeProjectButtonDirective","LikeProjectButtonService","_getProjectIndex","_updateProjects","isFan","projectIndex","totalFans","is_fan","total_fans","setProjects","_updateCurrentProject","setProject","likeProject","unlikeProject","SortProjectsDirective","opacity","sortData","sorted_project_ids","bulkUpdateProjectsOrder","WatchProjectButtonController","watchButtonService","showWatchOptions","toggleWatcherOptions","closeWatcherOptions","notifyLevel","WatchProjectButtonDirective","WatchProjectButtonService","isWatcher","totalWatchers","total_watchers","watchProject","unwatchProject","ProjectsListingController","ProjectController","activeMembers","setfn","metas","ProjectsService","projectUrl","getProjectBySlug","getProjectStats","paginate","colorized_tags","transferValidateToken","transferAccept","reason","transferReject","CantOwnProjectExplanationDirective","TransferProject","showAddComment","_refreshUserData","_validateToken","_setProjectData","_checkOwnerData","canBeOwnedByUser","canOwnProject","ownerMessage","maxProjects","currentProjects","validNumberOfMemberships","addComment","hideComment","TransferProjectDirective","Resource","urlsService","urlname","object_id","x-disable-pagination","progressMessage","progressPercent","pagination","paginateResponseService","x-lazy-pagination","getTimeline","only_relevant","Resources","services","serviceFn","serviceName","serviceProperty","warm","getUserStorage","setUserStorage","createUserStorage","getUserByUsername","getProfileTimeline","getUserTimeline","AppMetaService","_set","meta","setTitle","setDescription","setTwitterMetas","origin","setOpenGraphMetas","listener","_listener","$watchCollection","AttachmentsService","getMaxFileSize","maxFileSizeFormated","sizeError","saveError","ChekcPermissionsService","CurrentUserService","storageService","_projects","_projectsById","_joyride","_loadUserInfo","LightboxFactory","compile","scopeAttrs","PaginateResponse","paginateResponse","ProjectLogoService","modulo","COLORS","IMAGES","logos","murmurhash3_32_gc","ProjectService","_project","_section","_sectionsBreadcrumb","_activeMembers","ScopeEvent","scopes","_searchDuplicatedScopes","$id","_create","duplicatedScopeName","_tgEmitter","EventEmitter2","removeAllListeners","emitter","ThemeService","themeName","stylesheetEl","UserService","pageNumber","objectType","textQuery","contactsFiltered","contact","contactId","permissionDenied","UserTimelineAttachmentDirective","validFileExtensions","extension","is_image","templateHtml","UserTimelineItemTitle","sce","_fieldTranslationKey","timeline","title_attr","_getLink","_getUsernameSpan","field_name","new_value","sprint_name","us_name","event_us","_getTimelineObj","_getDetailObjUrl","obj_name","role_name","keySeq","_translateTitleParams","parent_userstory","_getParams","timeline_type","translate_params","getTitle","paramsKeys","translation","UserTimelineType","timelineType","hasIn","getType","UserTimelineItemDirective","UserTimelinePaginationSequence","generate","getContent","minItems","UserTimelineController","userTimelineService","timelineList","getProjectTimeline","loadTimeline","UserTimelineDirective","UserTimelineService","userTimelinePaginationSequenceService","userTimelineItemType","userTimelineItemTitle","_valid_fields","_invalid","fieldKey","value_diff","_isInValidTimeline","invalid","_parseEventType","event_type","_getTimelineObject","_attachExtraInfoToTimelineEntry","_parseTimeline","newdata","newItem","blocked","moveInBacklog","deleteIn","_addEntyAttributes","filterNot"],"mappings":"CAyBA,WACE,GAAIA,WAAWC,SAAUC,KAAMC,OAAQC,QAASC,kBAAmBC,KAEnEC,MAAKD,MAAQA,SAEbC,KAAKC,oBAAsBD,KAAKC,qBAAuBC,OAAOD,wBAE9DF,MAAMI,aAAe,SAASC,YAO5B,MANkB,OAAdA,aACFA,eAEFA,WAAaC,EAAEC,IAAIF,WAAY,SAASG,GACtC,MAAOC,MAAKC,UAAUF,KAEjBG,SAASN,WAAWO,KAAK,OAGlCZ,MAAMa,gCAAkC,WACtC,GAAIC,MAAMC,YAGV,OAFAD,OAAO,GAAKE,OAAQC,UACpBF,aAAeG,KAAKC,MAAsB,UAAhBD,KAAKE,UACxBpB,MAAMI,cAAcU,KAAMC,gBAGnCf,MAAMqB,UAAYrB,MAAMa,kCAExBnB,UAAY,SAAS4B,eAAgBC,kBAAmBC,cAAeC,SAAUC,kBAAmBC,iBAAkBC,mBAAoBC,gCAAiCC,kBACzK,GAAIC,mBAAmBC,kBAAmBC,WAAYC,eAAgBC,gBAAiBC,aAAcC,iBAAkBC,SAAUC,yBA+ZjI,OA9ZAT,kBAAiBU,gBAAgB,mCACjCJ,aAAed,eAAemB,KAC9BnB,eAAemB,KAAO,SAASC,KAAMC,OAcnC,MAbAA,OAAMC,UAAYD,MAAMC,YACxBC,QAAQC,OAAOH,MAAMC,SACnBG,cACE,KAAM,aAAc,SAASC,GAAIC,YAC/B,GAAIC,SAKJ,OAJAA,UAAWF,GAAGG,QACdF,aAAaG,KAAK,WAChB,MAAOF,UAASN,YAEXM,SAASG,YAIfjB,aAAakB,KAAKhC,eAAgBoB,KAAMC,QAEjDrB,eAAemB,KAAK,KAClBc,YAAa,iBACbC,WAAY,OACZC,aAAc,KACdC,QAAQ,EACRC,MAAO,kBACPD,QAAQ,EACRE,YAAa,wBACbC,QAAS,cAEXvC,eAAemB,KAAK,aAClBc,YAAa,4CACbC,WAAY,eACZC,aAAc,KACdE,MAAO,8BACPD,QAAQ,IAEVpC,eAAemB,KAAK,oBAClBc,YAAa,gDACbI,MAAO,8BACPD,QAAQ,EACRF,WAAY,iBACZC,aAAc,KACdK,gBAAgB,IAElBxC,eAAemB,KAAK,cAClBc,YAAa,yCACbQ,QACEC,eAAe,GAEjBL,MAAO,sBACPC,YAAa,4BACbF,QAAQ,EACRF,WAAY,kBACZC,aAAc,OAEhBnC,eAAemB,KAAK,4BAClBc,YAAa,wCACbG,QAAQ,EACRF,WAAY,UACZC,aAAc,OAEhBnC,eAAemB,KAAK,oBAClBc,YAAa,gCACbG,QAAQ,EACRF,WAAY,UACZC,aAAc,KACdQ,QAAS,qBAEX3C,eAAemB,KAAK,0BAClBc,YAAa,qBACbO,gBAAgB,EAChBG,QAAS,SACTP,QAAQ,IAEVpC,eAAemB,KAAK,2BAClBc,YAAa,uBACbG,QAAQ,EACRO,QAAS,UACTJ,QAAS,YAEXvC,eAAemB,KAAK,0BAClBc,YAAa,qBACbG,QAAQ,EACRO,QAAS,SACTJ,QAAS,WAEXvC,eAAemB,KAAK,oCAClBc,YAAa,2BACbG,QAAQ,EACRO,QAAS,YAEX3C,eAAemB,KAAK,6BAClBc,YAAa,oBACbG,QAAQ,EACRO,QAAS,mBAEX3C,eAAemB,KAAK,iCAClBc,YAAa,wBACbG,QAAQ,EACRO,QAAS,mBAEX3C,eAAemB,KAAK,wBAClByB,WAAY,SAASC,QACnB,MAAO,YAAcA,OAAOC,MAAQ,gBAGxC9C,eAAemB,KAAK,8BAClBc,YAAa,iBACbG,QAAQ,EACRO,QAAS,SAEX3C,eAAemB,KAAK,wBAClBc,YAAa,iBACbG,QAAQ,EACRO,QAAS,SAEX3C,eAAemB,KAAK,0BAClBc,YAAa,oBACbG,QAAQ,EACRO,QAAS,WAEX3C,eAAemB,KAAK,mCAClBc,YAAa,2BACbG,QAAQ,EACRO,QAAS,WAEX3C,eAAemB,KAAK,iDAClBc,YAAa,mCACbU,QAAS,UAEX3C,eAAemB,KAAK,wDAClBc,YAAa,0CACbU,QAAS,UAEX3C,eAAemB,KAAK,iDAClBc,YAAa,mCACbU,QAAS,UAEX3C,eAAemB,KAAK,gDAClBc,YAAa,kCACbU,QAAS,UAEX3C,eAAemB,KAAK,iDAClBc,YAAa,mCACbU,QAAS,UAEX3C,eAAemB,KAAK,+CAClBc,YAAa,yCACbU,QAAS,UAEX3C,eAAemB,KAAK,+CAClBc,YAAa,yCACbU,QAAS,UAEX3C,eAAemB,KAAK,mDAClBc,YAAa,6CACbU,QAAS,UAEX3C,eAAemB,KAAK,mDAClBc,YAAa,6CACbU,QAAS,UAEX3C,eAAemB,KAAK,8CAClBc,YAAa,wCACbU,QAAS,UAEX3C,eAAemB,KAAK,sDAClBc,YAAa,gDACbU,QAAS,UAEX3C,eAAemB,KAAK,qCAClBc,YAAa,+BACbU,QAAS,UAEX3C,eAAemB,KAAK,+BAClBc,YAAa,yBACbU,QAAS,UAEX3C,eAAemB,KAAK,gDAClBc,YAAa,0CACbU,QAAS,UAEX3C,eAAemB,KAAK,8CAClBc,YAAa,wCACbU,QAAS,UAEX3C,eAAemB,KAAK,8CAClBc,YAAa,wCACbU,QAAS,UAEX3C,eAAemB,KAAK,iDAClBc,YAAa,2CACbU,QAAS,UAEX3C,eAAemB,KAAK,yCAClBc,YAAa,sBAEfjC,eAAemB,KAAK,mCAClBc,YAAa,uCACbG,QAAQ,EACRF,WAAY,UACZC,aAAc,OAEhBnC,eAAemB,KAAK,+BAClBc,YAAa,2BAEfjC,eAAemB,KAAK,uCAClBc,YAAa,mCAEfjC,eAAemB,KAAK,qCAClBc,YAAa,iCAEfjC,eAAemB,KAAK,8BAClBc,YAAa,2BAEfjC,eAAemB,KAAK,iCAClBc,YAAa,6BAEfjC,eAAemB,KAAK,kCAClBc,YAAa,+BAEfjC,eAAemB,KAAK,YAClBc,YAAa,uBACbG,QAAQ,EACRK,QACEC,eAAe,GAEjBR,WAAY,UACZC,aAAc,OAEhBnC,eAAemB,KAAK,kBAClBc,YAAa,uBACbG,QAAQ,EACRF,WAAY,UACZC,aAAc,OAEhBnC,eAAemB,KAAK,UAClBc,YAAa,kBACbI,MAAO,mBACPC,YAAa,yBACbS,eAAe,EACfb,WAAY,cAEdlC,eAAemB,KAAK,aAClBc,YAAa,qBACbI,MAAO,sBACPC,YAAa,4BACbS,eAAe,IAEjB/C,eAAemB,KAAK,oBAClBc,YAAa,4BACbI,MAAO,6BACPC,YAAa,mCACbS,eAAe,IAEjB/C,eAAemB,KAAK,2BAClBc,YAAa,0CACbI,MAAO,6BACPC,YAAa,6BACbS,eAAe,IAEjB/C,eAAemB,KAAK,sBAClBc,YAAa,uBACbI,MAAO,wBACPC,YAAa,8BACbS,eAAe,IAEjB/C,eAAemB,KAAK,kBAClBc,YAAa,kCACbI,MAAO,0BACPC,YAAa,gCACbJ,WAAY,cACZC,aAAc,KACdY,eAAe,EACfC,gBAAgB,IAElBhD,eAAemB,KAAK,UAClBc,YAAa,qBAEfjC,eAAemB,KAAK,cAClBc,YAAa,yBAEfjC,eAAemB,KAAK,sBAClBc,YAAa,iCAEfjC,eAAeiD,WACbL,WAAY,eAEd3C,kBAAkBiD,WAChBC,SAAS,EACTC,aAAa,IAEfxC,gBACEyC,eAAgB,mBAChBC,kBAAmBzE,OAAO0E,YAAYC,iBAAmB,KACzDC,eAAgB/E,MAAMqB,WAExBG,cAAcwD,SAASC,QAAQ,UAAY/C,eAC3CV,cAAcwD,SAASC,QAAQC,MAAQhD,eACvCV,cAAcwD,SAASC,QAAQE,KAAOjD,eACtCV,cAAcwD,SAASC,QAAQG,IAAMlD,eACrCV,cAAcwD,SAASC,QAAQI,KAC7BN,eAAgB/E,MAAMqB,WAExBG,cAAc8D,eAAc,GAC5B5D,kBAAkB6D,aAAavF,MAAMqB,WACrCU,kBAAoB,SAASiB,GAAIwC,UAAWC,SAAUC,kBACpD,GAAIC,kBAaJ,OAZAA,mBAAoB,SAASC,UAC3B,GAAIC,QASJ,OARwB,KAApBD,SAASE,QAAqC,KAApBF,SAASE,SAAkBF,SAASG,OAAOC,YACvEN,iBAAiBO,WACjBT,UAAU9C,KAAK+C,SAAS7C,QAAQ,UAChC4C,UAAUU,WACmB,MAApBN,SAASE,QAAwD,KAAtCN,UAAUW,MAAMC,QAAQ,YAC5DP,QAAUQ,mBAAmBb,UAAUW,OACvCX,UAAUW,IAAIV,SAAS7C,QAAQ,UAAU0D,OAAO,QAAUT,UAErD7C,GAAGuD,OAAOX,YAGjBY,cAAeb,oBAGnBlE,SAASgF,QAAQ,qBAAsB,KAAM,YAAa,aAAc,kBAAmB1E,oBAC3FP,cAAckF,aAAaC,KAAK,qBAChCxE,gBAAkB,SAASa,GAAI4D,eAC7B,OACEC,QAAS,SAASd,QAEhB,MADAa,eAAcE,aACPf,QAETgB,aAAc,SAASC,WAErB,MADAJ,eAAcK,cACPjE,GAAGuD,OAAOS,YAEnBR,cAAe,SAASQ,WAEtB,MADAJ,eAAcK,cACPjE,GAAGuD,OAAOS,YAEnBpB,SAAU,SAASA,UAEjB,MADAgB,eAAcK,cACPrB,YAIbnE,SAASgF,QAAQ,mBAAoB,KAAM,WAAYtE,kBACvDX,cAAckF,aAAaC,KAAK,mBAChCpE,0BAA4B,SAASS,IACnC,GAAI2C,kBAiBJ,OAhBAA,mBAAoB,SAASC,UAC3B,GAAIsB,UAaJ,OAZwB,OAApBtB,SAASE,QAAkBF,SAASuB,KAAKC,UAC3CF,UAAYrE,QAAQwE,QAAQ,QAAQC,WACpCJ,UAAUK,QACR,aAAc,aAAc,SAAUC,OACpC,MAAO,UAASC,SAAUxE,YACxB,GAAIyE,gBAEJ,OADAA,iBAAkBzE,WAAW0E,QAAQ,uBAC9BF,SAASG,OAAO,QAASF,gBAAiB,KAAM,OAExDzH,SAGA+C,GAAGuD,OAAOX,YAGjBY,cAAeb,oBAGnBlE,SAASgF,QAAQ,6BAA8B,KAAMlE,4BACrDf,cAAckF,aAAaC,KAAK,6BAChC3E,kBAAoB,SAASgB,GAAI6E,aAAcrC,UAAWC,UACxD,GAAIqC,uBAAuBtB,cAAeuB,UAwB1C,OAvBAD,uBAAwB,WACtB,GAAIE,YAAYC,WAAY7D,KAM5B,OALAA,OAAQyD,aAAazD,MACrB4D,WAAavC,SAAS7C,QAAQ,mBAC5BsF,QAAS9D,QAEX6D,WAAazC,UAAUW,MACgB,KAAnC8B,WAAW7B,QAAQ4B,YACdxC,UAAUU,UAAUxD,KAAKsF,YADlC,QAIFD,WAAa,SAASnC,UAIpB,MAHIA,UAASuB,KAAKgB,cAChBL,wBAEKlC,UAETY,cAAgB,SAASZ,UAIvB,MAHwB,OAApBA,SAASE,QACXgC,wBAEK9E,GAAGuD,OAAOX,YAGjBA,SAAUmC,WACVvB,cAAeA,gBAGnB/E,SAASgF,QAAQ,qBAAsB,KAAM,eAAgB,YAAa,aAAczE,oBACxFR,cAAckF,aAAaC,KAAK,qBAChChF,iBAAiByG,iBAAiBjI,OAAO0E,YAAYwD,YAAa,GAC9DC,aAAahG,WACfA,SAAW7B,KAAK8H,MAAMD,aAAahG,WAErCD,kBAAgC,MAAZC,SAAmBA,SAASkG,KAAO,SAAWrI,OAAO0E,YAAYC,iBAAmB,KACxGjD,gCAAgC4G,QAAQ,SACxC7G,mBAAmB8G,UAAU,2BAC3BC,YAAa,IAAMxI,OAAOyI,SAAW,uCACpCC,yBAAyB,oBAAoBC,iBAAiB,wCAAwCC,kBAAkB1G,kBAC3HT,mBAAmBoH,iBAAiB3G,kBACpCJ,WAAa9B,OAAO8I,gBACb3I,EAAE4I,KAAKjH,WAAY,SAASkH,WACjC,MAAO1H,UAAS0H,UAAUA,UAAUC,SAAUD,UAAUA,cAI5DxJ,SAAW,SAAS6I,KAAMvF,YACxB,GAAIoG,SA+BJ,OA9BAC,QAAOC,OAAOf,MACda,UACEG,eAAgBvG,WAAW0E,QAAQ,sCACnC8B,MACEC,MAAOzG,WAAW0E,QAAQ,iCAC1BxB,IAAKlD,WAAW0E,QAAQ,+BACxBgC,UAAW1G,WAAW0E,QAAQ,qCAC9BiC,OAAQ3G,WAAW0E,QAAQ,kCAC3BkC,OAAQ5G,WAAW0E,QAAQ,kCAC3BmC,QAAS7G,WAAW0E,QAAQ,mCAC5BoC,SAAU9G,WAAW0E,QAAQ,oCAC7BqC,MAAO/G,WAAW0E,QAAQ,kCAE5BsC,QAAShH,WAAW0E,QAAQ,8BAC5BuC,SAAUjH,WAAW0E,QAAQ,gCAC7BwC,SAAUlH,WAAW0E,QAAQ,+BAC7ByC,OAAQnH,WAAW0E,QAAQ,6BAC3B0C,IAAKpH,WAAW0E,QAAQ,0BACxB2C,IAAKrH,WAAW0E,QAAQ,0BACxB4C,MAAOtH,WAAW0E,QAAQ,4BAC1B6C,UAAWvH,WAAW0E,QAAQ,iCAC9B8C,UAAWxH,WAAW0E,QAAQ,iCAC9B+C,YAAazH,WAAW0E,QAAQ,mCAChCgD,SAAU1H,WAAW0E,QAAQ,gCAC7BiD,SAAU3H,WAAW0E,QAAQ,gCAC7BkD,WAAY5H,WAAW0E,QAAQ,kCAC/BmD,QAAS7H,WAAW0E,QAAQ,+BAC5BoD,UAAW9H,WAAW0E,QAAQ,gCAC9BqD,QAAS/H,WAAW0E,QAAQ,+BAEvBsD,UAAUC,eAAe,UAAW7B,WAG7CzJ,KAAO,SAASuL,KAAMC,WAAYC,MAAOC,QAASC,WAAYtI,WAAYuC,UAAWC,SAAU+F,eAAgBC,eAAgB7E,cAAe8E,sBAC5I,GAAIC,IAAIC,KAAMC,UA+Cd,OA9CAV,MAAKW,MAAM,0BACXV,WAAWW,IAAI,0CAA2C,WACxD,MAAO9I,YAAW+I,YAEpBH,YACEd,UAAW,SAASkB,IAAKC,OACvB,GAAIC,OAAOC,KAKX,OAJAD,OAAQnM,MAAMqM,MAAMJ,KAAKK,MAAM,UAC/BF,MAAQ9L,EAAEiM,MAAMJ,MAAO,SAASK,MAC9B,MAAOA,MAAKC,OAASP,SAIzBlB,QAAS,SAASiB,KAChB,GAAIS,WAEJ,OADAA,YAAazJ,WAAW0E,QAAQ,4BACzB2B,OAAO2C,IAAKS,YAAYC,YAGnC1B,UAAU2B,iBAAiBf,YAC3BT,WAAWyB,eAAiB5M,KAAKC,oBACjCkL,WAAW0B,aAAexM,EAAEyM,OAAO9M,KAAKC,qBACtCuJ,KAAQ,UAEV2B,WAAW4B,oBAAsB1M,EAAEyM,OAAO9M,KAAKC,qBAC7CuJ,KAAQ,iBAEV2B,WAAWW,IAAI,sBAAuB,SAASkB,EAAGC,KAChD,GAAI1E,KAEJ,OADAA,MAAO0E,IAAIC,SACJxN,SAAS6I,KAAMvF,cAExBmK,QAAQC,aAAa,SAASC,IAC5B,MAAOlC,YAAWmC,WAAWD,MAE/BhC,QAAQkC,kBACJnC,MAAMoC,oBACR7B,KAAOP,MAAMqC,WAEfnC,WAAWoC,aACXhC,GAAKP,WAAWW,IAAI,oBAAqB,SAAS6B,MAAOC,MAIvD,MAHIA,MAAKnK,QACPkD,cAAckH,OAAM,GAEfnC,OAEFP,WAAWW,IAAI,sBAAuB,SAAS6B,MAAOC,MAC3D,GAAIjK,aAAaD,KAyBjB,OAxBIkK,MAAKnK,QACPkD,cAAckH,OAAM,GAElBD,KAAK9J,QAAU8J,KAAK9J,OAAOC,gBACxBqH,MAAMoC,mBACTjI,UAAU9C,KAAK+C,SAAS7C,QAAQ,WAGpC6I,eAAesC,WAAWF,KAAK5J,SAC3B4J,KAAK1J,OAAOC,MACdqH,eAAeuC,iBAAiBH,KAAK1J,OAAOC,OAE5CqH,eAAewC,gBAEbJ,KAAKlK,OAASkK,KAAKjK,eACrBD,MAAQV,WAAW0E,QAAQkG,KAAKlK,OAAS,IACzCC,YAAcX,WAAW0E,QAAQkG,KAAKjK,aAAe,IACrD4H,eAAe0C,OAAOvK,MAAOC,cAE3BiK,KAAKvJ,eACPkH,eAAe2C,oBAEf3C,eAAe4C,uBAEbP,KAAKxJ,cACAqH,qBAAqBrH,gBAErBqH,qBAAqB2C,kBAKlCtO,kBAAoBO,EAAEyM,OAAO9M,KAAKC,oBAAqB,SAASoO,QAC9D,MAAOA,QAAOzO,SAGhBgD,QAAQhD,OAAO,mBAAmB0O,MAAM,wBAAyB,KAEjEzO,SAAW,YAAa,cAAe,iBAAkB,kBAAmB,YAAa,cAAe,YAAa,qBAAsB,gBAAiB,oBAAqB,eAAgB,iBAAkB,cAAe,cAAe,mBAAoB,aAAc,YAAa,YAAa,cAAe,aAAc,eAAgB,oBAAqB,gBAAiB,eAAgB,oBAAqB,kBAAmB,eAAgB,YAAa,oBAAqB,oBAAqB,gBAAiB,YAAa,aAAc,UAAW,YAAa,SAAU,yBAA0B,kBAAmB,YAAY0O,OAAOlO,EAAEC,IAAIR,kBAAmB,SAASuO,QAC7qB,MAAOA,QAAOzO,UAGhBA,OAASgD,QAAQhD,OAAO,QAASC,SAEjCD,OAAOkG,QAAQ,iBAAkB,oBAAqB,gBAAiB,WAAY,oBAAqB,mBAAoB,qBAAsB,kCAAmC,mBAAoBrG,YAEzMG,OAAO4O,KAAK,OAAQ,aAAc,UAAW,YAAa,eAAgB,aAAc,cAAe,aAAc,mBAAoB,mBAAoB,WAAY,yBAA0B,SAAU7O,SAE5M0D,KAAKrD,MA2BR,WACE,GAAIyO,WAAWC,gBAAiBC,aAC9B9L,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,eACbC,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,YAElEhB,WAAY,WACV,QAASA,cAET,MAAOA,cAITE,aAAe,SAAUe,YAGvB,QAASf,gBACP,MAAOA,cAAaQ,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAGxD,MANA5M,QAAO8L,aAAce,YAMdf,cAENF,WAEHC,gBAAkB,SAAUgB,YAG1B,QAAShB,mBAEP,MADA1O,MAAK2P,mBAAqBN,KAAKrP,KAAK2P,mBAAoB3P,MACjD0O,gBAAgBS,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAgB3D,MApBA5M,QAAO6L,gBAAiBgB,YAOxBhB,gBAAgBQ,UAAUS,mBAAqB,SAASC,KAUtD,MATIA,OACiB,MAAfA,IAAI/J,QACN7F,KAAK6P,SAASpN,KAAKzC,KAAK8P,QAAQnN,QAAQ,cACxC3C,KAAK6P,SAAS5J,WACU,MAAf2J,IAAI/J,SACb7F,KAAK6P,SAASpN,KAAKzC,KAAK8P,QAAQnN,QAAQ,sBACxC3C,KAAK6P,SAAS5J,YAGXjG,KAAK+P,EAAEzJ,OAAOsJ,MAGhBlB,iBAEND,WAEHzO,KAAKD,MAAMiQ,KAAOvB,UAElBzO,KAAKD,MAAMkQ,QAAUtB,aAErB3O,KAAKD,MAAMmQ,WAAaxB,iBAEvBrL,KAAKrD,MA2BR,WACE,GAAImQ,aAAaC,SAAUC,cAAeC,SAAUC,gBAAiBC,wBAAyBC,QAASC,QAASC,QAASC,MAAOxE,MAAOnH,MAAO4L,YAAaC,WAAYC,WAAYC,QAASC,WAAYC,UAAWnR,MAAOoR,QAASC,SAAUC,WAAYC,KAAMC,SAAUC,UACvQrL,WAAaA,SAAW,SAASsL,MAAQ,IAAK,GAAIC,GAAI,EAAGC,EAAI3R,KAAKwM,OAAYmF,EAAJD,EAAOA,IAAO,GAAIA,IAAK1R,OAAQA,KAAK0R,KAAOD,KAAM,MAAOC,EAAK,OAAO,IAC9IE,SAAWA,MACX/O,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfhD,OAAQ,SAAU7E,OAChB,MAAO,UAASsK,KACd,GAAIC,SAEJ,OADAA,UAAW,UACHD,IAAM,IAAI5L,QAAQ,gCAAiC,KAAO6L,SAAW,QAE9E9R,MAEHmQ,YAAc,SAAU5I,OACtB,MAAO,UAASwK,QACd,GAAIC,cAAcC,OAQlB,OAPAD,cAAe3R,EAAE6R,KAAKH,QACtBE,WACA5R,EAAE8R,MAAMJ,OAAQ,SAASzD,MAAOU,KAC9B,MAAI7I,SAAQ9C,KAAK2O,aAAchD,KAAO,EAC7BiD,QAAQvL,KAAKsI,KADtB,SAIK3O,EAAE+R,QAAQL,OAAQE,WAE1BjS,MAEHoQ,SAAW,SAAU7I,OACnB,MAAO,UAAS8K,MAAOC,KAAMC,cAC3B,GAAIC,SAASxG,GAEb,OADAA,KAAMqG,MAAMI,MAAMH,MACN,SAARtG,IACKuG,aAAavG,MAEtBwG,QAAU,KACHA,QAAUH,MAAMK,OAAOJ,KAAM,SAAStG,KAC3C,MAAY,UAARA,KAGJuG,aAAavG,KACTwG,QACKA,UADT,QAJA,YASHxS,MAEH4Q,MAAQ,WACN,GAAI+B,OAAOC,KAAMlB,EAAGmB,OAAQC,MAAOC,OAAQC,KAAMC,GAYjD,KAXAL,KAAOnD,UAAU,GAAIsD,OAAS,GAAKtD,UAAUjD,OAASoF,MAAMvO,KAAKoM,UAAW,MAC5EkD,MAAQ,SAAUjD,YAGhB,QAASiD,SACP,MAAOA,OAAMxD,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAGjD,MANA5M,QAAO8P,MAAOjD,YAMPiD,OAENC,MACElB,EAAIqB,OAAOvG,OAAS,EAAGkF,GAAK,EAAGA,GAAK,GAAI,CAC3CoB,MAAQC,OAAOrB,GACfuB,IAAMH,MAAM5D,SACZ,KAAK8D,OAAQC,KACXJ,OAASI,IAAID,MACbL,MAAMzD,UAAU8D,MAAQH,OAG5B,MAAOF,QAGTrB,KAAO,SAASpK,KAAMgM,MACpB,MAAO7S,GAAEiR,KAAKpK,KAAMgM,OAGtBlC,QAAU,SAAS9J,MACjB,MAAOA,MAAKkK,WAAW+B,cAAc7B,OAAOrL,QAAQ,OAAQ,KAAKA,QAAQ,KAAM,SAASA,QAAQ,YAAa,IAAIA,QAAQ,SAAU,MAGrIuL,UAAY,SAAStK,MACnB,MAAIA,MACK7G,EAAE+S,WAAWlM,KAAKjB,QAAQ,KAAM,MAElCiB,MAGTmK,WAAa,SAASjK,QAASiM,OAC7B,GAAIC,kBAAkBC,IAOtB,OANAD,kBAAmBlM,QAAQF,KAAK,qBACP,MAApBoM,kBAA6BA,kBAAoBD,MAAM7G,UAC1D8G,iBAAmB,GAErBC,KAAOF,MAAMC,kBACblM,QAAQF,KAAK,mBAAoBoM,iBAAmB,GAC7ClM,QAAQmM,KAAKA,OAGtB9C,QAAU,SAAS+C,KAAMC,MACvB,GAAI/B,GAAGD,KAAMiC,IAAKC,MAElB,KADAA,UACKjC,EAAI,EAAGgC,IAAMF,KAAKhH,OAAYkH,IAAJhC,EAASA,IACtCD,KAAO+B,KAAK9B,GACZiC,OAAOF,KAAKhC,OAASA,IAEvB,OAAOkC,SAGTxC,QAAU,SAASyC,KAAMrB,cACvB,MAAOrS,QAAO2T,WAAWtB,aAAcqB,OAGzCvD,cAAgB,SAASyD,YACvB,MAAO5T,QAAO6T,aAAaD,aAG7BhD,WAAa,SAASuB,MAAO2B,MAC3B,MAAO3T,GAAE6C,MAAM,SAAUqE,OACvB,MAAO,YACL,MAAO8K,OAAM4B,OAAOD,QAErBhU,QAGLoR,SAAW,SAAS9C,OAClB,MAAIjO,GAAE6T,SAAS5F,OACNA,MAAQ,GACNjO,EAAE8T,SAAS7F,OACbA,MACEjO,EAAE+T,cAAc9F,OAClB9N,KAAKC,UAAU6N,OACbjO,EAAEgU,YAAY/F,OAChB,GAEFA,MAAM8C,YAGfT,QAAU,SAASkB,IAAK2B,MACtB,MAAOA,MAAK7S,KAAKkR,MAGnBvB,SAAW,SAASsD,KAAMI,MACxB,MAAO3T,GAAEiQ,SAAS0D,KAAMJ,MACtBU,SAAS,EACTC,UAAU,KAIdhE,gBAAkB,SAASqD,KAAMI,MAC/B,MAAO3T,GAAEiQ,SAAS0D,KAAMJ,MACtBU,SAAS,EACTC,UAAU,KAIdtD,WAAa,SAASuD,KAAMC,MAC1B,MAAOpU,GAAEqU,WAAWF,KAAMC,OAG5BlD,SAAW,SAASM,IAAK8C,UAAWC,QAClC,GAAIC,IAIJ,OAHc,OAAVD,SACFA,OAAS,OAES,gBAAR/C,MAAuBA,cAAeiD,SAGlDD,IAAMhD,IAAID,MAAM,GACZiD,IAAIrI,OAASmI,YACfE,IAAMA,IAAIE,UAAU,EAAGJ,UAAY,GACnCE,IAAMA,IAAIE,UAAU,EAAG9T,KAAKmJ,IAAIyK,IAAIrI,OAAQqI,IAAIG,YAAY,OAC5DH,KAAYD,QAEPC,KAREhD,KAWXd,WAAa,SAASkE,MAAOC,WAC3B,GAAIvL,QAAQwL,KAAMC,KAIlB,OAHiB,OAAbF,YACFA,UAAY,GAEVG,MAAMC,WAAWL,UAAYM,SAASN,OACjC,IAEK,IAAVA,MACK,WAETG,OAAS,QAAS,KAAM,KAAM,KAAM,KAAM,MAC1CzL,OAAS1I,KAAKC,MAAMD,KAAKuU,IAAIP,OAAShU,KAAKuU,IAAI,OAC3C7L,OAAS,IACXA,OAAS,GAEXwL,MAAQF,MAAQhU,KAAKwU,IAAI,KAAM9L,SAAS+L,QAAQR,WACzCC,KAAO,IAAMC,MAAMzL,UAG5BuH,UAAY,SAASW,IAAK8D,WACxB,GAAIC,QACJ,OAAID,YACFC,QAAU,GAAIC,QAAO,OAASF,UAAY,cAAiB,MACpDb,OAAOjD,KAAK5L,QAAQ2P,QAAS,KAE7Bd,OAAOjD,KAAK5L,QAAQ,cAAe,KAI9C4K,YAAc,SAASgB,IAAKiE,KAAM7P,SAChC,GAAI2P,QAKJ,OAJAA,SAAU,GAAIC,QAAO,KAAOC,KAAO,KAAM,MACzCjE,IAAMA,IAAI5L,QAAQ2P,QAAS,IAAM3P,QAAU,KAC3C2P,QAAU,GAAIC,QAAO,MAASC,KAAO,KAAM,MAC3CjE,IAAMA,IAAI5L,QAAQ2P,QAAS,KAAO3P,QAAU,MAI9CuK,wBAA0B,SAAUjJ,OAClC,MAAO,UAASwO,IAAK/C,KAAM1D,IACzB,MAAO0G,QAAOC,eAAeF,IAAK/C,MAChC5N,IAAK,WACH,GAAI8Q,UACJ,KAAK7V,EAAE8V,WAAW7G,IAChB,KAAM,wDAGR,IADA4G,UAAY5G,KACR4G,WAAa7V,EAAE+V,SAASF,YACH,SAAnBA,UAAUf,KACZ,KAAM,oDAGV,OAAOe,gBAIZlW,MAEHK,EAAEyS,OACAuD,WAAY,SAASN,IAAK7D,MACxB,MAAO7R,GAAEiW,OAAOpE,OAAOqE,UAAUC,OAAO,SAAST,IAAK/G,KAEpD,aADO+G,KAAI/G,KACJ+G,KACNA,KAAKzH,SAEVmI,iBAAkB,WAChB,MAAOpW,GAAEqW,YAAYjH,UAAW,SAASkH,EAAGC,GAC1C,MAAOvW,GAAEkW,QAAQlW,EAAEC,IAAIqW,EAAG,SAASpW,GACjC,MAAOF,GAAEC,IAAIsW,EAAG,SAASC,GACvB,OAAQA,GAAGtI,OAAOhO,QAElB,aAKVmQ,QAAU,SAASsC,MACjB,MAAsD,QAA/CA,KAAK8D,MAAM,iCAGpB7R,MAAQ,SAAS8R,aAAcC,cAC7B,GAAIC,QAWJ,OAVAA,YACAD,aAAaE,QAAQ,SAASC,SAAUnI,KACtC,MAAImI,YAAaJ,aAAa3R,IAAI4J,KAC5BmI,SAASC,KACJH,QAAQjI,KAAOmI,SAASC,OAExBH,QAAQjI,KAAOmI,SAJ1B,SAQKF,SAGTlX,MAAQC,KAAKD,MAEbA,MAAMqM,MAAQA,MAEdrM,MAAMoQ,YAAcA,YAEpBpQ,MAAMqQ,SAAWA,SAEjBrQ,MAAM6Q,MAAQA,MAEd7Q,MAAMuR,KAAOA,KAEbvR,MAAMiR,QAAUA,QAEhBjR,MAAMyR,UAAYA,UAElBzR,MAAMsR,WAAaA,WAEnBtR,MAAM0Q,QAAUA,QAEhB1Q,MAAMoR,QAAUA,QAEhBpR,MAAMsQ,cAAgBA,cAEtBtQ,MAAM+Q,WAAaA,WAEnB/Q,MAAMqR,SAAWA,SAEjBrR,MAAM4Q,QAAUA,QAEhB5Q,MAAMwR,SAAWA,SAEjBxR,MAAMuQ,SAAWA,SAEjBvQ,MAAMwQ,gBAAkBA,gBAExBxQ,MAAMkR,WAAaA,WAEnBlR,MAAMgR,WAAaA,WAEnBhR,MAAMmR,UAAYA,UAElBnR,MAAM8Q,YAAcA,YAEpB9Q,MAAMyQ,wBAA0BA,wBAEhCzQ,MAAM2Q,QAAUA,QAEhB3Q,MAAMkF,MAAQA,OAEb5B,KAAKrD,MA2BR,WACE,GAAIqX,cAAcC,UAAW7G,QAASE,QAAS5Q,MAAOqR,SAAUE,IAEhEvR,OAAQC,KAAKD,MAEb0Q,QAAUzQ,KAAKD,MAAM0Q,QAErBE,QAAU3Q,KAAKD,MAAM4Q,QAErBW,KAAOtR,KAAKD,MAAMuR,KAElBF,SAAWpR,KAAKD,MAAMqR,SAEtBkG,UAAY,WACV,QAASA,cAqCT,MAnCAA,WAAUpI,UAAUqI,kBAAoB,SAASC,MAAOC,OACtD,GAAIC,aAAaC,eAgBjB,OAfAD,aAAcrX,EAAEyM,OAAO0K,MAAO,SAAUjQ,OACtC,MAAO,UAASoE,MACd,MAAOA,MAAKiM,YAEb5X,OACHA,KAAKqS,MAAMqF,YAAcrX,EAAEwX,OAAOH,YAAa,qBAC/C1X,KAAKqS,MAAMyF,gBAAkBrH,QAAQzQ,KAAKqS,MAAMqF,YAAa,SAAS1K,GACpE,MAAOA,GAAE+K,KAEX/X,KAAKqS,MAAMmF,MAAQnX,EAAEwX,OAAOL,MAAO,qBACnCxX,KAAKqS,MAAM2F,UAAYvH,QAAQzQ,KAAKqS,MAAMmF,MAAO,SAASxK,GACxD,MAAOA,GAAE+K,KAEX/X,KAAKqS,MAAMoF,MAAQpX,EAAEwX,OAAOJ,MAAO,SACnCE,gBAAkBtX,EAAEL,KAAKqS,MAAMpK,QAAQgQ,SAAS3X,IAAI,QAAQ4X,OAAO5J,QAC5DtO,KAAKqS,MAAMsF,gBAAkBtX,EAAEoX,OAAO3K,OAAO,cAAcA,OAAO,SAASvM,GAChF,MAAOF,GAAE8X,SAASR,gBAAiBpX,EAAEwX,MACpCzJ,SAGLgJ,UAAUpI,UAAUkJ,kBAAoB,WACtC,GAAIhV,QAEJ,OADAA,SAAUpD,KAAK+P,EAAEsI,KAAKrY,KAAKsY,GAAGC,SAASC,UAAUxY,KAAKqS,MAAMoG,WAAYzY,KAAKsY,GAAGC,SAASG,UAAU1Y,KAAKqS,MAAMoG,aACvGrV,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASoR,SACd,GAAIlB,OAAOD,KAGX,OAFAA,OAAQmB,QAAQ,GAAIlB,MAAQkB,QAAQ,GACpCpR,MAAMgQ,kBAAkBC,MAAOC,OACxBkB,UAER3Y,QAGEsX,aAITvX,MAAMuX,UAAYA,UAElBD,aAAe,WACb,QAASA,iBAsET,MApEAA,cAAanI,UAAU0J,aAAe,SAAS5F,KAAM1E,MAAOuK,MAC1D,GAAIC,UAAUjJ,SAAU3L,MAaxB,OAZY,OAAR2U,OACFA,MAAO,GAET3U,OAASlE,KAAK6P,SAASxJ,SACF,SAAjBnC,OAAO8O,OAA6B,SAATA,OAC7B8F,SAAWzY,EAAEC,IAAIP,MAAMqR,SAASlN,OAAO8O,OAAO3G,MAAM,KAAM,SAAS9L,GACjE,MAAO+Q,MAAK/Q,KAEduY,SAASpS,KAAK3G,MAAMqR,SAAS9C,QAC7BwK,SAAWzY,EAAE0Y,QAAQD,UACrBxK,MAAQqC,QAAQ,IAAKtQ,EAAE6X,KAAKY,YAEzB9Y,KAAK6P,SAASmJ,uBAAuBhG,KAAM1E,OAAhD,QACEuB,SAAWgJ,KAAO7Y,KAAK6P,SAAW7P,KAAK6P,SAASoJ,SAASjZ,KAAKqS,OACvDxC,SAASxJ,OAAO2M,KAAM1E,SAIjC+I,aAAanI,UAAUgK,cAAgB,SAASlG,KAAM1E,MAAOuK,MAC3D,GAAIhJ,SAIJ,OAHY,OAARgJ,OACFA,MAAO,GAEJ7Y,KAAK6P,SAASmJ,uBAAuBhG,KAAM1E,OAAhD,QACEuB,SAAWgJ,KAAO7Y,KAAK6P,SAAW7P,KAAK6P,SAASoJ,SAASjZ,KAAKqS,OACvDxC,SAASxJ,OAAO2M,KAAM1E,SAIjC+I,aAAanI,UAAUiK,kBAAoB,SAASC,QAASP,MAC3D,GAAIhJ,SAKJ,OAJY,OAARgJ,OACFA,MAAO,GAEThJ,SAAWgJ,KAAO7Y,KAAK6P,SAAW7P,KAAK6P,SAASoJ,SAASjZ,KAAKqS,OACvDxC,SAASxJ,OAAO+S,UAGzB/B,aAAanI,UAAUmK,eAAiB,SAASrG,KAAM1E,MAAOuK,MAC5D,GAAIhJ,UAAUyJ,UAAWpV,OAAQqV,YAKjC,OAJY,OAARV,OACFA,MAAO,GAET3U,OAASlE,KAAK6P,SAASxJ,SACF,SAAjBnC,OAAO8O,QAGG,SAAV1E,OAA8B,OAAVA,cACfpK,QAAO8O,MAEhBuG,aAAelZ,EAAEC,IAAIP,MAAMqR,SAASlN,OAAO8O,OAAO3G,MAAM,KAAM,SAAS9L,GACrE,MAAO+Q,MAAK/Q,KAEd+Y,UAAYjZ,EAAEiG,OAAOiT,aAAc,SAAShZ,GAC1C,MAAOA,KAAMR,MAAMqR,SAAS9C,SAE9BgL,UAAYjZ,EAAE0Y,QAAQO,WAEpBhL,MADEjO,EAAEmZ,QAAQF,WACJ,KAEA3I,QAAQ,IAAKtQ,EAAE6X,KAAKoB,YAE9BzJ,SAAWgJ,KAAO7Y,KAAK6P,SAAW7P,KAAK6P,SAASoJ,SAASjZ,KAAKqS,OACvDxC,SAASxJ,OAAO2M,KAAM1E,QAnB7B,QAsBK+I,gBAITtX,MAAMsX,aAAeA,cAEpBhU,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,kBAEvByD,KAAKrD,MA2BR,WACE,GAAIyZ,aAAaC,uBAAwBC,qBAAsBC,oCAAqCC,wBAAyBC,oBAAqBC,eAAgBC,UAAWC,+BAAgCC,kBAAmB5J,SAAU1Q,OAAQG,MAChP8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbuQ,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,aAAc,mBAEtCoa,UAAY,WAGV,QAASA,WAAUG,mBAAoB5U,UAAWC,SAAUoC,cAC1D,GAAI1B,IACAiU,oBAAmB3M,oBACrBtH,IAAMV,SAAS7C,QAAQ,QACnBiF,aAAmB,OACrB1B,IAAM0B,aAAmB,KACzBrC,UAAUc,OAAO,OAAQ,OAE3Bd,UAAU9C,KAAKyD,MAInB,MAdA8T,WAAUI,SAAW,uBAAwB,YAAa,aAAc,gBAcjEJ,aAITpa,OAAO2D,WAAW,YAAayW,WAE/BP,YAAc,SAAU/J,YAKtB,QAAS+J,aAAYY,UAAWC,QAASC,MAAOjC,GAAIkC,KAAMC,KAAM3U,OAAQ4U,UAAWC,oBAAqBC,cACtG,GAAIC,UACJ7a,MAAKqa,UAAYA,UACjBra,KAAKsa,QAAUA,QACfta,KAAKua,MAAQA,MACbva,KAAKsY,GAAKA,GACVtY,KAAKwa,KAAOA,KACZxa,KAAKya,KAAOA,KACZza,KAAK8F,OAASA,OACd9F,KAAK0a,UAAYA,UACjB1a,KAAKma,mBAAqBQ,oBAC1B3a,KAAK4a,aAAeA,aACpBnB,YAAYtK,UAAUJ,YAAY1L,KAAKrD,MACvC6a,UAAY7a,KAAKyN,UACjBzN,KAAK8a,cAAgB9a,KAAK+a,gBAC1B/a,KAAKgb,YAAYH,WA2LnB,MA9MAhY,QAAO4W,YAAa/J,YAEpB+J,YAAYW,SAAW,aAAc,aAAc,WAAY,eAAgB,UAAW,UAAW,YAAa,aAAc,uBAAwB,kBAoBxJX,YAAYvK,UAAU8L,YAAc,SAASH,WAC3C,MAAIA,YACF7a,KAAKib,SAAWC,UAAUC,OAAON,UAAUO,YACpCpb,KAAKma,mBAAmBkB,QAAQrb,KAAKib,WAErCjb,KAAKib,SAAW,MAI3BxB,YAAYvK,UAAU6L,cAAgB,WACpC,GAAI9H,IACJ,QAAuC,OAA9BA,IAAMjT,KAAKqa,UAAU1O,MAAgBsH,IAAIqI,MAAQ,SAAWtb,KAAK8F,OAAOV,IAAI,iBAAmB,SAG1GqU,YAAYvK,UAAUqM,UAAY,WAChC,GAAIC,SAEJ,OADAA,UAAWxb,KAAK+a,gBACZ/a,KAAK8a,gBAAkBU,UACzBxb,KAAK8a,cAAgBU,SACdxb,KAAK4a,aAAaa,IAAIzb,KAAK8a,gBAFpC,QAMFrB,YAAYvK,UAAUwM,YAAc,WAClC,GAAInT,MAAM0K,GAGV,OAFA1K,OAAuC,OAA9B0K,IAAMjT,KAAKqa,UAAU1O,MAAgBsH,IAAI1K,KAAO,SAAWvI,KAAK8F,OAAOV,IAAI,oBAAsB,KAC1GpF,KAAK0a,UAAU5R,kBAAkBP,MAC1BvI,KAAK0a,UAAUe,IAAIlT,OAG5BkR,YAAYvK,UAAUzB,QAAU,WAC9B,GAAI9B,MAAMsP,QACV,OAAIjb,MAAKqa,UAAU1O,KACV3L,KAAKqa,UAAU1O,MAExBsP,SAAWjb,KAAKsa,QAAQlV,IAAI,cAE1BuG,KAAO3L,KAAKua,MAAMoB,WAAW,QAASV,UACtCjb,KAAKqa,UAAU1O,KAAOA,KACtB3L,KAAK0b,cACL1b,KAAKub,YACE5P,OAEP3L,KAAKub,YAEA,OAGT9B,YAAYvK,UAAUmM,QAAU,SAAS1P,MAMvC,MALA3L,MAAKqa,UAAUuB,KAAOjQ,KACtB3L,KAAKsa,QAAQuB,IAAI,WAAYlQ,KAAKyP,YAClCpb,KAAKqa,UAAU1O,KAAOA,KACtB3L,KAAKgb,YAAYrP,MACjB3L,KAAK0b,cACE1b,KAAKub,aAGd9B,YAAYvK,UAAU4M,MAAQ,WAG5B,MAFA9b,MAAKqa,UAAUuB,KAAO,KACtB5b,KAAKqa,UAAU1O,KAAO,KACf3L,KAAKsa,QAAQyB,OAAO,aAG7BtC,YAAYvK,UAAU8M,SAAW,SAASC,OACxC,MAAOjc,MAAKsa,QAAQuB,IAAI,QAASI,QAGnCxC,YAAYvK,UAAUgN,SAAW,WAC/B,MAAOlc,MAAKsa,QAAQlV,IAAI,UAG1BqU,YAAYvK,UAAUiN,YAAc,WAClC,MAAOnc,MAAKsa,QAAQyB,OAAO,UAG7BtC,YAAYvK,UAAU1B,gBAAkB,WACtC,MAAuB,QAAnBxN,KAAKyN,WACA,GAEF,GAGTgM,YAAYvK,UAAUnD,QAAU,WAC9B,GAAI7F,IAEJ,OADAA,KAAMlG,KAAKya,KAAK9X,QAAQ,WACjB3C,KAAKwa,KAAKpV,IAAIc,KAAK/C,KAAK,SAAUoE,OACvC,MAAO,UAASL,KAAMrB,QACpB,GAAI8F,KAKJ,OAJAA,MAAOzE,KAAKA,KACZyE,KAAKsQ,MAAQ1U,MAAMkG,UAAU2O,WAC7BzQ,KAAOpE,MAAMgT,MAAMoB,WAAW,QAAShQ,MACvCpE,MAAM8T,QAAQ1P,MACPA,OAER3L,QAGLyZ,YAAYvK,UAAUmN,MAAQ,SAASnV,KAAMsC,MAC3C,GAAItD,IAKJ,OAJAA,KAAMlG,KAAKya,KAAK9X,QAAQ,QACxBuE,KAAO7G,EAAEic,MAAMpV,MAAM,GACrBA,KAAKsC,KAAOA,KAAOA,KAAO,SAC1BxJ,KAAKmc,cACEnc,KAAKwa,KAAKtV,KAAKgB,IAAKgB,MAAM/D,KAAK,SAAUoE,OAC9C,MAAO,UAASL,KAAMrB,QACpB,GAAI8F,KAIJ,OAHAA,MAAOpE,MAAMgT,MAAMoB,WAAW,QAASzU,KAAKA,MAC5CK,MAAMyU,SAASrQ,KAAKyQ,YACpB7U,MAAM8T,QAAQ1P;AACPA,OAER3L,QAGLyZ,YAAYvK,UAAUqN,OAAS,WAK7B,MAJAvc,MAAKmc,cACLnc,KAAK8b,QACL9b,KAAKma,mBAAmBqC,aACxBxc,KAAKub,YACEvb,KAAK0b,eAGdjC,YAAYvK,UAAUuN,SAAW,SAASvV,KAAMsC,KAAMsP,UACpD,GAAI5S,IAQJ,OAPAA,KAAMlG,KAAKya,KAAK9X,QAAQ,iBACxBuE,KAAO7G,EAAEic,MAAMpV,MAAM,GACrBA,KAAKsC,KAAOA,KAAOA,KAAO,SACb,YAATA,OACFtC,KAAK4R,SAAWA,SAAWA,UAAW,GAExC9Y,KAAKmc,cACEnc,KAAKwa,KAAKtV,KAAKgB,IAAKgB,MAAM/D,KAAK,SAAUoE,OAC9C,MAAO,UAAS5B,UACd,GAAIgG,KAIJ,OAHAA,MAAOpE,MAAMgT,MAAMoB,WAAW,QAAShW,SAASuB,MAChDK,MAAMyU,SAASrQ,KAAKyQ,YACpB7U,MAAM8T,QAAQ1P,MACPA,OAER3L,QAGLyZ,YAAYvK,UAAUwN,cAAgB,SAAST,OAC7C,MAAOjc,MAAKsY,GAAGqE,YAAYvX,IAAI6W,QAGjCxC,YAAYvK,UAAU0N,6BAA+B,SAAS1V,MAC5D,MAAOlH,MAAKyc,SAASvV,KAAM,WAAW,IAGxCuS,YAAYvK,UAAU2N,kCAAoC,SAAS3V,MACjE,MAAOlH,MAAKyc,SAASvV,KAAM,WAAW,IAGxCuS,YAAYvK,UAAU4N,eAAiB,SAAS5V,MAC9C,GAAIhB,IAIJ,OAHAA,KAAMlG,KAAKya,KAAK9X,QAAQ,2BACxBuE,KAAO7G,EAAEic,MAAMpV,MAAM,GACrBlH,KAAKmc,cACEnc,KAAKwa,KAAKtV,KAAKgB,IAAKgB,OAG7BuS,YAAYvK,UAAU6N,2BAA6B,SAAS7V,MAC1D,GAAIhB,IAIJ,OAHAA,KAAMlG,KAAKya,KAAK9X,QAAQ,uCACxBuE,KAAO7G,EAAEic,MAAMpV,MAAM,GACrBlH,KAAKmc,cACEnc,KAAKwa,KAAKtV,KAAKgB,IAAKgB,OAG7BuS,YAAYvK,UAAU8N,YAAc,SAAS9V,MAC3C,GAAIhB,IAGJ,OAFAA,KAAMlG,KAAKya,KAAK9X,QAAQ,sBACxBuE,KAAO7G,EAAEic,MAAMpV,MAAM,GACdlH,KAAKwa,KAAKtV,KAAKgB,IAAKgB,OAG7BuS,YAAYvK,UAAU+N,cAAgB,SAAS/V,MAC7C,GAAIhB,IAGJ,OAFAA,KAAMlG,KAAKya,KAAK9X,QAAQ,wBACxBuE,KAAO7G,EAAEic,MAAMpV,MAAM,GACdlH,KAAKwa,KAAKtV,KAAKgB,IAAKgB,OAGtBuS,aAEN1Z,MAAMkQ,SAETrQ,OAAOsd,QAAQ,UAAWzD,aAE1BQ,+BAAiC,SAASkD,QAAS3X,SAAUoC,aAAcwV,WACzE,GAAIC,UAAUC,UAiBd,OAhBAD,UAAWD,UAAUhY,IAAI,wBAAwB,GACjDkY,WAAa,WACX,GAAI1X,SAAS2X,sBAAuBrX,GAEpC,QADAqX,sBAAwBJ,QAAQ/X,IAAI,2BAIpCc,IAAMV,SAAS7C,QAAQ,YACnBiF,aAAmB,MAAKA,aAAmB,OAAMpC,SAAS7C,QAAQ,cACpEiD,QAAUQ,mBAAmBwB,aAAmB,MAChD1B,KAAO,SAAWN,SAEbyX,UACLnX,IAAKA,OARE,KAYTsX,SAAU,KACVnL,SACAgL,SAAUC,aAId1d,OAAO6d,UAAU,2BAA4B,YAAa,aAAc,eAAgB,cAAexD,iCAEvGF,eAAiB,SAAS3O,MAAO5D,SAAUjC,UAAW4X,QAASvV,aAAcpC,SAAU6F,QAASrI,YAC9F,GAAI0a,KAsCJ,OArCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMC,QAASC,UAAWC,MAgC9B,OA/BAH,MAAO,GAAI9S,WAAUkT,KAAKN,IAAIO,KAAK,oBAC/BvW,aAAmB,MAAKA,aAAmB,OAAMpC,SAAS7C,QAAQ,SACpEgb,OAAO/X,QAAUwY,mBAAmBxW,aAAmB,MAEvD+V,OAAO/X,QAAUJ,SAAS7C,QAAQ,QAEpCqb,UAAY,SAASrY,UAEnB,MADA0F,SAAQkC,kBACDhI,UAAUW,IAAIyX,OAAO/X,UAE9BmY,QAAU,SAASpY,UACjB,MAAO6B,UAASG,OAAO,cAAe3E,WAAW0E,QAAQ,qCAE3DuW,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIzG,MAAMmX,cAAejb,OAEzB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGVrX,MACEsX,SAAYZ,IAAIO,KAAK,wCAAwCnS,MAC7DyS,SAAYb,IAAIO,KAAK,wCAAwCnS,OAE/DqS,cAAgBlB,QAAQ/X,IAAI,gBAAiB,UAC7ChC,QAAUgI,MAAMiR,MAAMnV,KAAMmX,eACrBjb,QAAQD,KAAK6a,UAAWD,UAT/B,SAWD/d,OACH4d,IAAIc,GAAG,SAAU,OAAQT,QACzB/d,OAAOye,gBAAiB,EACjBhB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,WAAY,UAAW,aAAc,cAAe,YAAa,eAAgB,aAAc,YAAa,aAAc1D,iBAE3IG,kBAAoB,SAAS9O,MAAO5D,SAAUjC,UAAWC,SAAU2X,QAASvV,aAAc0D,WAAYtI,YACpG,GAAI0a,KA2CJ,OA1CAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMe,cAAeC,gBAAiBb,MAuC1C,OAtCKd,SAAQ/X,IAAI,2BACfG,UAAU9C,KAAK+C,SAAS7C,QAAQ,cAChC4C,UAAUU,WAEZ0X,OAAOzW,QACP4W,KAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAqB,IAEvBpB,OAAO/X,QAAUJ,SAAS7C,QAAQ,QAClCmc,gBAAkB,SAASnZ,UAEzB,MADA2F,YAAW0T,WAAW,OAAQ,WAAY,oBAAqB,GACxDzZ,UAAUW,IAAIyX,OAAO/X,UAE9BiZ,cAAgB,SAASlZ,UACvB,GAAI4N,KAOJ,OANI5N,UAASuB,KAAK+X,iBAChB1L,KAAOvQ,WAAW0E,QAAQ,wBACxBwX,MAAOvZ,SAASuB,KAAK+X,iBAEvBzX,SAASG,OAAO,cAAe4L,OAE1BuK,KAAKqB,UAAUxZ,SAASuB,OAEjC+W,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIvK,QAEJ,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGVnb,QAAUgI,MAAMqR,SAASkB,OAAOzW,MACzB9D,QAAQD,KAAK2b,gBAAiBD,gBAJrC,SAMD7e,OACH4d,IAAIc,GAAG,SAAU,OAAQT,QACzBN,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEN1e,OAAOye,gBAAiB,IAG/BjB,KAAMA,OAIV9d,OAAO6d,UAAU,cAAe,UAAW,aAAc,cAAe,aAAc,YAAa,eAAgB,eAAgB,aAAcvD,oBAEjJL,wBAA0B,SAASzO,MAAO5D,SAAUjC,UAAWC,SAAUxC,YACvE,GAAI0a,KAkCJ,OAjCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMe,cAAeC,gBAAiBb,MA8B1C,OA7BAN,QAAOzW,QACP4W,KAAOF,IAAIO,KAAK,QAAQnT,YACxB8T,gBAAkB,SAASnZ,UACzB,GAAIyZ,SAAS1b,KAIb,OAHA6B,WAAU9C,KAAK+C,SAAS7C,QAAQ,UAChCe,MAAQV,WAAW0E,QAAQ,sCAC3B0X,QAAUpc,WAAW0E,QAAQ,qCACtBF,SAAS6X,QAAQ3b,MAAO0b,UAEjCP,cAAgB,SAASlZ,UACvB,GAAI4N,KAEJ,OADAA,MAAOvQ,WAAW0E,QAAQ,8BACnBF,SAASG,OAAO,cAAe4L,OAExC0K,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIvK,QAEJ,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGVnb,QAAUgI,MAAM0R,eAAea,OAAOzW,MAC/B9D,QAAQD,KAAK2b,gBAAiBD,gBAJrC,SAMD7e,OACH4d,IAAIc,GAAG,SAAU,OAAQT,QACzBN,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEN1e,OAAOye,gBAAiB,IAG/BjB,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB,UAAW,aAAc,cAAe,aAAc,aAAc5D,0BAE1GD,oCAAsC,SAASxO,MAAO5D,SAAUjC,UAAW+Z,QAAS9Z,SAAUxC,YAC5F,GAAI0a,KAsCJ,OArCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMe,cAAeC,gBAAiBb,OAAQ1K,IAgClD,OA/BAoK,QAAOzW,QACc,MAAjBoY,QAAQrD,OACV0B,OAAO4B,eAAgB,EACvB5B,OAAOzW,KAAK+U,MAAQqD,QAAQrD,QAE5B1W,UAAU9C,KAAK+C,SAAS7C,QAAQ,UAChC4Q,KAAOvQ,WAAW0E,QAAQ,uCAC1BF,SAASG,OAAO,cAAe4L,OAEjCuK,KAAOF,IAAIO,KAAK,QAAQnT,YACxB8T,gBAAkB,SAASnZ,UAGzB,MAFAJ,WAAU9C,KAAK+C,SAAS7C,QAAQ,UAChC4Q,KAAOvQ,WAAW0E,QAAQ,yCACnBF,SAAS6X,QAAQ9L,OAE1BsL,cAAgB,SAASlZ,UAEvB,MADA4N,MAAOvQ,WAAW0E,QAAQ,uCACnBF,SAASG,OAAO,cAAe4L,OAExC0K,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIvK,QAEJ,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGVnb,QAAUgI,MAAM2R,2BAA2BY,OAAOzW,MAC3C9D,QAAQD,KAAK2b,gBAAiBD,gBAJrC,SAMD7e,OACH4d,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,gCAAiC,UAAW,aAAc,cAAe,eAAgB,aAAc,aAAc7D,sCAEtIE,oBAAsB,SAAS1O,MAAO5D,SAAUjC,UAAW+Z,QAAS9Z,SAAU8F,WAAYtI,YACxF,GAAI0a,KAqFJ,OApFAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI2B,WAAWC,mBAAoBC,sBAAuBC,qBAAsBC,wBAAyBxc,QAASyc,aAAcC,YAAaC,eAAgB9D,KA+E7J,OA9EAA,OAAQqD,QAAQrD,MAChB7Y,QAAUgI,MAAMsR,cAAcT,OAC9B7Y,QAAQD,KAAK,SAAS6c,YACpB,MAAOrC,QAAOqC,WAAaA,aAE7B5c,QAAQD,KAAK,KAAM,SAASwC,UAC1B,GAAI4N,KAGJ,OAFAhO,WAAU9C,KAAK+C,SAAS7C,QAAQ,UAChC4Q,KAAOvQ,WAAW0E,QAAQ,mCACnBF,SAASG,OAAO,cAAe4L,QAExCoK,OAAOsC,WACLhE,MAAOA,OAETuD,UAAY5B,IAAIO,KAAK,mBAAmBnT,WACtC+T,qBAAqB,IAEvBY,qBAAuB,SAASha,UAC9B,GAAI4N,KAQJ,OAPAjI,YAAW0T,WAAW,OAAQ,mBAAoB,uCAAwC,GAC1FzZ,UAAU9C,KAAK+C,SAAS7C,QAAQ,WAC9BsF,QAAS0V,OAAOqC,WAAWE,gBAE7B3M,KAAOvQ,WAAW0E,QAAQ,iCACxByY,aAAgBxC,OAAOqC,WAAWG,eAE7B3Y,SAASG,OAAO,UAAW4L,OAEpCkM,mBAAqB,SAAS9Z,UAC5B,MAAO6B,UAASG,OAAO,cAAehC,SAASuB,KAAK+X,iBAEtDa,YAAcxP,SAAS,IAAM,SAAU/I,OACrC,MAAO,UAASoG,OAEd,MADAA,OAAM2Q,iBACDkB,UAAUjB,YAGfnb,QAAUgI,MAAMyR,kCAAkCc,OAAOsC,WAClD7c,QAAQD,KAAKwc,qBAAsBF,qBAJ1C,SAMDzf,OACH4d,IAAIc,GAAG,SAAU,kBAAmBoB,aACpClC,IAAIc,GAAG,QAAS,gBAAiBoB,aACjCnC,OAAOyC,cACLnE,MAAOA,OAET4D,aAAejC,IAAIO,KAAK,sBAAsBnT,WAC5C+T,qBAAqB,IAEvBa,wBAA0B,SAASja,UAKjC,MAJA2F,YAAW0T,WAAW,OAAQ,mBAAoB,kCAAmC,GACrFzZ,UAAU9C,KAAK+C,SAAS7C,QAAQ,WAC9BsF,QAAS0V,OAAOqC,WAAWE,gBAEtB1Y,SAASG,OAAO,UAAW,0CAA2C,cAAiBtH,EAAEggB,OAAO1C,OAAOqC,WAAWG,gBAE3HT,sBAAwB,SAAS/Z,UAC/B,GAAI4N,KAOJ,OANI5N,UAASuB,KAAK+X,iBAChB1L,KAAOvQ,WAAW0E,QAAQ,wBACxBwX,MAAOvZ,SAASuB,KAAK+X,iBAEvBzX,SAASG,OAAO,cAAe4L,OAE1BsM,aAAaV,UAAUxZ,SAASuB,OAEzC6Y,eAAiBzP,SAAS,IAAM,SAAU/I,OACxC,MAAO,UAASoG,OAEd,MADAA,OAAM2Q,iBACDuB,aAAatB,YAGlBnb,QAAUgI,MAAMwR,6BAA6Be,OAAOyC,cAC7Chd,QAAQD,KAAKyc,wBAAyBF,wBAJ7C,SAMD1f,OACH4d,IAAIc,GAAG,SAAU,qBAAsBqB,gBACvCnC,IAAIc,GAAG,QAAS,mBAAoBqB,gBAC7BpC,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,gBAAiB,UAAW,aAAc,cAAe,eAAgB,aAAc,eAAgB,aAAc3D,sBAEtIH,qBAAuB,SAAS2G,MAAOC,OAAQnV,MAAO5D,SAAUjC,UAAW+Z,QAAS9Z,SAAUxC,YAC5F,GAAI0a,KAgDJ,OA/CAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMe,cAAeC,gBAAiBb,MA0C1C,OAzCAN,QAAOzW,QACPyW,OAAOzW,KAAKsZ,YAAclB,QAAQkB,YAClC1C,KAAOF,IAAIO,KAAK,QAAQnT,YACxB8T,gBAAkB,SAASnZ,UACzB,GAAI4N,KAYJ,OAXInI,OAAMoC,kBACR8S,MAAMG,SAAS,QAASrV,MAAMqC,UAAUsK,IAAI5U,KAAK,SAAUoE,OACzD,MAAO,UAASL,MAEd,MADAkE,OAAMiQ,QAAQnU,MACP3B,UAAU9C,KAAK+C,SAAS7C,QAAQ,WAExC3C,OAEHuF,UAAU9C,KAAK+C,SAAS7C,QAAQ,UAElC4Q,KAAOvQ,WAAW0E,QAAQ,6BACnBF,SAAS6X,QAAQ9L,OAE1BsL,cAAgB,SAASlZ,UACvB,GAAI4N,KAIJ,OAHAA,MAAOvQ,WAAW0E,QAAQ,wBACxBwX,MAAOvZ,SAASuB,KAAK+X,iBAEhBzX,SAASG,OAAO,cAAe4L,OAExC0K,OAAS,WACP,GAAI7a,QACJ,IAAK0a,KAAKS,WAIV,MADAnb,SAAUgI,MAAM4R,YAAYW,OAAOzW,MAC5B9D,QAAQD,KAAK2b,gBAAiBD,gBAEvCjB,IAAIc,GAAG,SAAU,SAAS/Q,OAExB,MADAA,OAAM2Q,iBACCL,WAETL,IAAIc,GAAG,QAAS,wBAAyB,SAAS/Q,OAEhD,MADAA,OAAM2Q,iBACCL,WAEFN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB,UAAW,WAAY,UAAW,aAAc,cAAe,eAAgB,aAAc,aAAc9D,uBAE9ID,uBAAyB,SAAS4G,MAAOC,OAAQnV,MAAO5D,SAAUjC,UAAW+Z,QAAS9Z,UACpF,GAAIkY,KAoCJ,OAnCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMe,cAAeC,gBAAiBb,MA8B1C,OA7BAN,QAAOzW,QACPyW,OAAOzW,KAAKwZ,aAAepB,QAAQoB,aACnC5C,KAAOF,IAAIO,KAAK,QAAQnT,YACxB8T,gBAAkB,SAASnZ,UACzB,GAAI4N,KAIJ,OAHAnI,OAAMmR,SACNhX,UAAU9C,KAAK+C,SAAS7C,QAAQ,SAChC4Q,KAAOvQ,WAAW0E,QAAQ,0BACnBF,SAAS6X,QAAQ9L,OAE1BsL,cAAgB,SAASlZ,UACvB,GAAI4N,KAIJ,OAHAA,MAAOvQ,WAAW0E,QAAQ,wBACxBwX,MAAOvZ,SAASuB,KAAK+X,iBAEhBzX,SAASG,OAAO,QAAS4L,OAElC0K,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIvK,QAEJ,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGVnb,QAAUgI,MAAM6R,cAAcU,OAAOzW,MAC9B9D,QAAQD,KAAK2b,gBAAiBD,gBAJrC,SAMD7e,OACH4d,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,UAAW,WAAY,UAAW,aAAc,cAAe,eAAgB,aAAc/D,0BAEjIrW,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,oBAEvByD,KAAKrD,MA2BR,WACE,GAAI2gB,oBAAoBvQ,SAAUK,QAAS9Q,KAAMC,OAAQG,MAAO0a,IAEhE1a,OAAQC,KAAKD,MAEb0Q,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBxQ,OAASgD,QAAQhD,OAAO,gBAExB+gB,mBAAqB,SAASxV,WAAYyV,SACxC,GAAIlD,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAO+C,SAAQC,SAAW,WACxB,MAAO1V,YAAW2V,WAAW,aAI/BpD,KAAMA,OAIV9d,OAAO6d,UAAU,UAAW,aAAc,UAAWkD,qBAErDlG,MACEsG,KAAQ,IACRxI,SAAY,YACZ2G,MAAS,SACT8B,YAAa,aACbC,oBAAqB,qBACrBC,SAAY,YACZC,kBAAmB,mBACnB9E,MAAS,SACT+E,kBAAmB,mBACnBC,kBAAmB,0BACnBC,eAAgB,uBAChBC,iBAAkB,yBAClB9E,SAAY,YACZuD,WAAc,qBACdwB,iBAAkB,kBAClBC,QAAW,WACXC,eAAgB,qBAChBC,kBAAmB,4BACnB1Z,QAAW,oBACX2Z,kBAAmB,4BACnBC,oBAAqB,sCACrBC,iBAAkB,2BAClBC,iBAAkB,2BAClBC,iBAAkB,2BAClBC,6BAA8B,4BAC9BC,uBAAwB,8BACxBC,wBAAyB,+BACzBC,eAAgB,yBAChBC,oBAAqB,+BACrBC,eAAgB,yBAChBC,qBAAsB,kDACtBC,wCAAyC,kDACzCC,+CAAgD,yDAChDC,wCAAyC,kDACzCC,uCAAwC,iDACxCC,wCAAyC,kDACzCC,sCAAuC,gDACvCC,sCAAuC,gDACvCC,0CAA2C,oDAC3CC,0CAA2C,oDAC3CC,qCAAsC,+CACtCC,6CAA8C,uDAC9CC,4BAA6B,sCAC7BC,sBAAuB,gCACvBC,uCAAwC,iDACxCC,qCAAsC,+CACtCC,qCAAsC,+CACtCC,wCAAyC,kDACzCC,wBAAyB,0CACzBC,6BAA8B,8BAC9BC,qCAAsC,sCACtCC,4BAA6B,6BAC7BC,mCAAoC,oCACpCC,wBAAyB,kCAG3BnkB,KAAO,SAASuL,KAAM6Y,UAEpB,MADA7Y,MAAKW,MAAM,8BACJkY,SAASC,OAAOvJ,OAGzB7a,OAAO4O,KAAK,OAAQ,aAAc7O,QAEjC0D,KAAKrD,MA2BR,WACE,GAAIikB,gBAAgBC,SAAUC,yBAA0BC,yBAA0BC,iBAAkBC,WAAYC,OAAQC,aAAcC,SAAUC,uBAAwB9kB,OAAQG,MAC9K6R,SAAWA,KAEb7R,OAAQC,KAAKD,MAEbH,OAASgD,QAAQhD,OAAO,kBAExBykB,iBAAmB,SAASrhB,YAC1B,OACEoC,IAAK,WACH,OACEuf,MACEC,cAAe5hB,WAAW0E,QAAQ,gCAClCmd,UAAW7hB,WAAW0E,QAAQ,gCAC9Bod,QAAS9hB,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,gCAAiC1E,WAAW0E,QAAQ,iCACxlBqd,UAAW/hB,WAAW0E,QAAQ,mCAAoC1E,WAAW0E,QAAQ,mCAAoC1E,WAAW0E,QAAQ,mCAAoC1E,WAAW0E,QAAQ,mCAAoC1E,WAAW0E,QAAQ,mCAAoC1E,WAAW0E,QAAQ,mCAAoC1E,WAAW0E,QAAQ,oCACxWsd,eAAgBhiB,WAAW0E,QAAQ,yCAA0C1E,WAAW0E,QAAQ,yCAA0C1E,WAAW0E,QAAQ,yCAA0C1E,WAAW0E,QAAQ,yCAA0C1E,WAAW0E,QAAQ,yCAA0C1E,WAAW0E,QAAQ,yCAA0C1E,WAAW0E,QAAQ,2CAEnZud,MAA0D,SAAnDjiB,WAAW0E,QAAQ,4BAC1Bwd,SAAUC,SAASniB,WAAW0E,QAAQ,uCAAwC,IAC9E0d,OAAQpiB,WAAW0E,QAAQ,gCAMnC9H,OAAO4G,QAAQ,6BAA8B,aAAc6d,mBAE3DG,aAAe,SAAS5D,QAASyE,WAC/B,GAAIjgB,IASJ,OARAA,KAAM,WACJ,MAAIwb,SAAQ0E,aACH1E,QAAQ0E,eAAelU,WACrBiU,UAAUE,UACZF,UAAUE,UAAUC,cAAcjS,KAEpC,KAGPnO,IAAKA,MAITxF,OAAO4G,QAAQ,iBAAkB,UAAW,YAAage,eAEzDL,yBAA2B,SAAS3Y,gBAClC,GAAIkS,MAAM+H,MAgCV,OA/BAA,QAAS,SAAS7H,IAAK3V,QAASyd,YAC9B,MAAIzd,UAAWyd,YACTzd,QAAQ7C,IAAI,kBAAkBe,QAAQuf,YAAc,GAC/C9H,IAAI+H,YAAY,UAF3B,QAMFjI,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI6H,YAAYE,UAAWC,OAmB3B,OAlBAjI,KAAIkI,SAAS,UACbJ,WAAa7H,OAAOkI,kBACpBF,QAAUlI,OAAOjL,OAAO,WACtB,MAAOlH,gBAAevD,SACrB,WACD,MAAKuD,gBAAevD,SAGpBwd,OAAO7H,IAAKpS,eAAevD,QAASyd,YAC7BG,WAJP,SAMFD,UAAY/H,OAAOmI,SAAS,oBAAqB,SAASN,YACxD,MAAKA,aAGLD,OAAO7H,IAAKpS,eAAevD,QAASyd,YAC7BE,aAJP,SAMKjI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIVyG,yBAAyB/J,SAAW,oBAEpCxa,OAAO6d,UAAU,oBAAqB0G,0BAEtCC,yBAA2B,WACzB,GAAI1G,MAAM1K,IAiCV,OAhCAA,MAAO,oBACP0K,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIoI,kBAAkBC,6BAA8BC,aA4BpD,OA3BAF,kBAAmB,SAAShe,QAASme,UAAWV,YAC9C,GAAIW,SAKJ,OAJAA,UAA6B,MAAlBX,WAAW,GAClBW,WACFX,WAAaA,WAAW9T,MAAM,IAE5ByU,UAA2D,KAA/Cpe,QAAQqe,eAAengB,QAAQuf,YACtC9H,IAAIkI,SAASM,WACVC,UAA2D,KAA/Cpe,QAAQqe,eAAengB,QAAQuf,YAG9C9H,IAAI+H,YAAYS,WAFhBxI,IAAIkI,SAASM,YAKxBF,6BAA+B,SAASje,SACtC,GAAIme,WAAWG,QAASb,WAAY/M,OACpC,IAAI1Q,QAAS,CACXke,gBACAI,QAAU5I,OAAOlL,MAAMoL,OAAO7K,OAC9B2F,UACA,KAAKyN,YAAaG,SAChBb,WAAaa,QAAQH,WACrBzN,QAAQjS,KAAKuf,iBAAiBhe,QAASme,UAAWV,YAEpD,OAAO/M,WAGJwN,cAAgBxI,OAAOjL,OAAO,UAAWwT,gCAGhDxI,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB2G,0BAEtCH,eAAiB,WACf,GAAIuC,KAAKC,eAAgBC,iBAAkBC,IA2B3C,OA1BAF,gBAAiBvmB,OAAO0mB,uBAAyB1mB,OAAO2mB,6BAA+B3mB,OAAO4mB,yBAC9FJ,iBAAmB,SAAUnf,OAC3B,MAAO,UAASwf,MACd,GAAIzX,GAGJ,OAFAA,IAAKqX,KAAKK,QACV1X,KACIqX,KAAKna,OACAia,eAAeC,kBADxB,SAID1mB,MACH2mB,QACAH,IAAM,WACJ,GAAIlX,IAAIoC,EAAGgC,IAAKiF,OAEhB,KADAA,WACKjH,EAAI,EAAGgC,IAAMjE,UAAUjD,OAAYkH,IAAJhC,EAASA,IAC3CpC,GAAKG,UAAUiC,GACfiV,KAAKjgB,KAAK4I,IACU,IAAhBqX,KAAKna,OACPmM,QAAQjS,KAAK+f,eAAeC,mBAE5B/N,QAAQjS,KAAK,OAGjB,OAAOiS,WAGP6N,IAAKA,MAIT5mB,OAAO4G,QAAQ,iBAAkByd,gBAEjCS,uBAAyB,WACvB,GAAIhH,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOD,KAAIO,KAAK,YAAYO,GAAG,QAAS,WACtC,MAAOd,KAAIkI,SAAS,cAItBpI,KAAMA,OAIV9d,OAAO6d,UAAU,kBAAmBiH,wBAEpCJ,WAAa,SAASP,UACpB,GAAI3e,IAoBJ,OAnBAA,KAAM,SAAS6C,SACb,GAAIgF,IAIJ,OAHAA,MACEhF,QAASA,QAAQgf,MAEfhf,QAAQif,sBAAwBjf,QAAQqe,eAAengB,QAAQ,WAAa,GACvE4d,SAASphB,QAAQ,kBAAmBsK,KAEzChF,QAAQkf,qBAAuBlf,QAAQqe,eAAengB,QAAQ,WAAa,GACtE4d,SAASphB,QAAQ,iBAAkBsK,KAExChF,QAAQmf,mBAAqBnf,QAAQqe,eAAengB,QAAQ,mBAAqB,GAC5E4d,SAASphB,QAAQ,eAAgBsK,KAEtChF,QAAQof,qBAAuBpf,QAAQqe,eAAengB,QAAQ,eAAiB,GAC1E4d,SAASphB,QAAQ,iBAAkBsK,KAErC8W,SAASphB,QAAQ,UAAWsK,OAGnC7H,IAAKA,MAITxF,OAAO4G,QAAQ,eAAgB,aAAc8d,aAE7CC,OAAS,SAASxhB,IAChB,GAAIE,UAAUqkB,YAAaC,MA4B3B,OA3BAtkB,UAAWF,GAAGG,QACdD,SAASN,UACT2kB,YAAcrkB,SAASG,QACvBmkB,QACEC,QAAS,SAAUjgB,OACjB,MAAO,UAAS+H,IACd,MAAO,YACL,GAAImY,KAEJ,OADAA,MAAO,GAAKhY,UAAUjD,OAASoF,MAAMvO,KAAKoM,UAAW,MAC9C6X,YAAcA,YAAYnkB,KAAK,WACpC,MAAOmM,IAAGE,MAAMjI,MAAOkgB,WAK5BznB,MACHwmB,IAAK,SAAUjf,OACb,MAAO,UAAS+H,IAMd,MAFEgY,aAHGA,YAGWA,YAAYnkB,KAAKmM,IAFjBA,KAITiY,SAERvnB,QAKPJ,OAAO4G,QAAQ,aAAc,KAAM+d,SAEnCE,SAAW,SAASiD,gBAClB,OACEtiB,IAAK,SAAUmC,OACb,MAAO,UAASyL,KAAM2U,QACpB,GAAIC,IAQJ,OAPc,OAAVD,SACFA,QAAS,GAEXC,IAAMF,eAAetiB,IAAI4N,MACrB2U,SACFC,IAAMvnB,EAAEgd,SAASuK,MAEZA,MAER5nB,QAIPJ,OAAO4G,QAAQ,eAAgB,iBAAkBie,WAEjDP,SAAW,SAASlhB,YAClB,GAAI0a,KAmCJ,OAlCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIgK,UAAUC,KAAMC,SAAUC,WA6B9B,OA5BAF,OAAO,EACPE,YAAc,0CAA4ChlB,WAAW0E,QAAQ,2BAA6B,4CAC1GmgB,SAAW,WACT,MAAOI,GAAE,kBAAkBC,QAAQ,WAEjC,MADAJ,OAAO,EACAG,EAAEjoB,MAAM+b,YAGnBgM,SAAW,SAAS/a,GAClB,GAAI5F,QACJ,KAAI0gB,KAMJ,MAHA1gB,SAAU4F,EAAEmb,cACZF,EAAE7gB,SAASyH,SAASuZ,OAAOJ,aAC3BC,EAAE,kBAAkBI,SACbP,MAAO,GAEhBlK,IAAIc,GAAG,OAAQ,SAAS1R,GACtB,MAAO6a,cAETjK,IAAIc,GAAG,wBAAyB,SAAS1R,GACvC,MAAI4Q,KAAI5R,QAAU4R,IAAI5R,MAAMmH,cACnB0U,SAAS7a,GAET+a,SAAS/a,KAGb2Q,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,IAAI,iBAIjBlB,KAAMA,OAIV9d,OAAO6d,UAAU,cAAe,aAAcyG,YAE7C7gB,KAAKrD,MA2BR,WACE,GAAIsoB,gBAAgBC,cAAepY,YAAavQ,OAAQqR,WAAYlR,MAClEsP,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,YAElE1P,OAAQC,KAAKD,MAEbkR,WAAajR,KAAKD,MAAMkR,WAExBd,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,kBAExB2oB,cAAgB,WACd,QAASA,eAAcC,IAAKhT,IAAK1P,OAAQ8V,KAAM6M,yBAA0BC,WACvE1oB,KAAKwoB,IAAMA,IACXxoB,KAAKwV,IAAMA,IACXxV,KAAK8F,OAASA,OACd9F,KAAK4b,KAAOA,KACZ5b,KAAK2oB,wBAA0BF,yBAC/BzoB,KAAK0oB,UAAYA,UACjB1oB,KAAK4oB,eAAiBvZ,KAAKrP,KAAK4oB,eAAgB5oB,MAChDmQ,YAAYnQ,MA8Nd,MA3NAuoB,eAAcrZ,UAAUxB,WAAa,SAAStM,WAQ5C,MAPApB,MAAKoB,UAAYA,UACjBpB,KAAK6oB,iBACL7oB,KAAK8oB,WAAY,EACjB9oB,KAAKkf,OAAQ,EACblf,KAAK+oB,mBACL/oB,KAAKgpB,iBAAmB,EACxBhpB,KAAKipB,kBAAoB,KACE,SAAvBjpB,KAAKwoB,IAAIU,UACJlpB,KAAKwV,IAAI2T,KAAK,4CADvB,QAKFZ,cAAcrZ,UAAU3B,gBAAkB,WACxC,GAAI6b,KAAK3mB,KAAM4mB,OAAQnjB,GAGvB,OAFAlG,MAAKspB,0BACLpjB,IAAMlG,KAAK8F,OAAOV,IAAI,eAIjB6L,WAAW/K,IAAK,QAAW+K,WAAW/K,IAAK,UAC9CkjB,IAAMppB,KAAKwoB,IAAI3Y,SACfwZ,OAA0B,WAAjBD,IAAIG,SAAwB,OAAS,MAC9C9mB,KAAOpC,EAAEmpB,UAAUtjB,IAAK,KACxBA,IAAMmjB,OAAS,KAAOD,IAAIK,KAAO,IAAMhnB,MAEzCzC,KAAK0pB,GAAK,GAAI1pB,MAAKwoB,IAAIU,UAAUhjB,KACjClG,KAAK0pB,GAAGC,iBAAiB,OAAQ3pB,KAAK4pB,QACtC5pB,KAAK0pB,GAAGC,iBAAiB,UAAW3pB,KAAK6pB,WACzC7pB,KAAK0pB,GAAGC,iBAAiB,QAAS3pB,KAAK+d,SAChC/d,KAAK0pB,GAAGC,iBAAiB,QAAS3pB,KAAK8pB,UAb9C,QAgBFvB,cAAcrZ,UAAUoa,uBAAyB,WAC/C,MAAgB,UAAZtpB,KAAK0pB,IAGT1pB,KAAK0pB,GAAGK,oBAAoB,OAAQ/pB,KAAK4pB,QACzC5pB,KAAK0pB,GAAGK,oBAAoB,QAAS/pB,KAAK8pB,SAC1C9pB,KAAK0pB,GAAGK,oBAAoB,QAAS/pB,KAAK+d,SAC1C/d,KAAK0pB,GAAGK,oBAAoB,UAAW/pB,KAAK6pB,WAC5C7pB,KAAKgqB,wBACLhqB,KAAK0pB,GAAGO,cACMjqB,MAAK0pB,IATnB,QAYFnB,cAAcrZ,UAAUgb,cAAgB,WACtC,MAAOlqB,MAAKmqB,UAAU,KAAM,gBAAiB,SAAU5iB,OACrD,MAAO,UAASL,MAEd,MADAK,OAAMohB,wBAAwByB,KAAKljB,KAAKxD,MAAOwD,KAAKmjB,MAC7C9iB,MAAMmhB,UAAU4B,YAExBtqB,QAGLuoB,cAAcrZ,UAAUqb,uBAAyB,WAC/C,GAAIC,uBAAuBC,mBAC3B,KAAIzqB,KAAKipB,kBAyBT,MAtBAwB,qBAAsBzqB,KAAK8F,OAAOV,IAAI,4BAA6B,GACnEolB,sBAAwBxqB,KAAK8F,OAAOV,IAAI,8BAA+B,KACvEpF,KAAKgpB,iBAAmB,EACxBhpB,KAAKipB,kBAAoByB,YAAY,SAAUnjB,OAC7C,MAAO,YACL,GAAIyF,GAAG2d,MACP,KACE,GAAIpjB,MAAMyhB,kBAAoByB,oBAC5B,KAAM,IAAIG,OAAM,oCAMlB,OAJArjB,OAAMyhB,mBACNzhB,MAAMsjB,aACJC,IAAK,SAEAvjB,MAAMiO,IAAI3J,MAAM,uBACvB,MAAO8e,QAGP,MAFA3d,GAAI2d,OACJpjB,MAAMiO,IAAI0J,MAAM,oBAAsBlS,EAAEoS,SACjC7X,MAAMyiB,2BAGhBhqB,MAAOwqB,uBACHxqB,KAAKwV,IAAI3J,MAAM,sBAGxB0c,cAAcrZ,UAAU8a,sBAAwB,WAC9C,MAAKhqB,MAAKipB,mBAGV8B,cAAc/qB,KAAKipB,mBACnBjpB,KAAKipB,kBAAoB,KAClBjpB,KAAKwV,IAAI3J,MAAM,uBALtB,QAQF0c,cAAcrZ,UAAU8b,4BAA8B,SAAS9jB,MAE7D,MADAlH,MAAKgpB,iBAAmB,EACjBhpB,KAAKwV,IAAI3J,MAAM,2BAGxB0c,cAAcrZ,UAAU+b,UAAY,SAAS7L,SAC3C,MAAI/e,GAAE+V,SAASgJ,SACN5e,KAAKC,UAAU2e,SAEjBA,SAGTmJ,cAAcrZ,UAAU2b,YAAc,SAASzL,SAC7C,GAAI1N,GAAGgC,IAAKtK,SAAU8hB,IAAKvS,OAE3B,IADA3Y,KAAK+oB,gBAAgBriB,KAAK0Y,SACrBpf,KAAK8oB,UAAV,CAMA,IAHA1f,SAAW/I,EAAEC,IAAIN,KAAK+oB,gBAAiB/oB,KAAKirB,WAC5CjrB,KAAK+oB,mBACLpQ,WACKjH,EAAI,EAAGgC,IAAMtK,SAASoD,OAAYkH,IAAJhC,EAASA,IAC1CwZ,IAAM9hB,SAASsI,GACfiH,QAAQjS,KAAK1G,KAAK0pB,GAAGyB,KAAKD,KAE5B,OAAOvS,WAGT4P,cAAcrZ,UAAU0Z,eAAiB,SAAS1hB,MAChD,GAAIkkB,YAAYC,YAEhB,OADAD,YAAalkB,KAAKokB,YACoB,MAAlCtrB,KAAK6oB,cAAcuC,aAGvBC,aAAerrB,KAAK6oB,cAAcuC,YAC9BC,aAAahZ,MACRgZ,aAAahZ,MAAM4B,OAAO,WAC/B,MAAOoX,cAAaE,SAASrkB,KAAKA,QAG7BmkB,aAAaE,SAASrkB,KAAKA,OATpC,QAaFqhB,cAAcrZ,UAAUib,UAAY,SAAS9X,MAAO+Y,WAAYG,UAC9D,GAAInM,SAASiM,YACb,KAAIrrB,KAAKkf,MAkBT,MAfAlf,MAAKwV,IAAI3J,MAAM,iBAAmBuf,YAClCC,cACEhZ,MAAOA,MACP+Y,WAAYA,WACZG,SAAUlrB,EAAEiQ,SAASib,SAAU,KAC7BjX,SAAW,EACXC,UAAY,KAGhB6K,SACE0L,IAAO,YACPQ,YAAeF,YAEjBprB,KAAK6oB,cAAcuC,YAAcC,aACjCrrB,KAAK6qB,YAAYzL,SACb/M,MACKA,MAAMvG,IAAI,WAAY,SAAUvE,OACrC,MAAO,YACL,MAAOA,OAAMikB,YAAYJ,cAE1BprB,OALL,QASFuoB,cAAcrZ,UAAUsc,YAAc,SAASJ,YAC7C,GAAIhM,QACJ,KAAIpf,KAAKkf,MAQT,MALAlf,MAAKwV,IAAI3J,MAAM,qBAAuBuf,YACtChM,SACE0L,IAAO,cACPQ,YAAeF,YAEVprB,KAAK6qB,YAAYzL,UAG1BmJ,cAAcrZ,UAAU0a,OAAS,WAC/B,GAAIxK,SAASnD,KAab,OAZAjc,MAAK8oB,WAAY,EACjB9oB,KAAKuqB,yBACLvqB,KAAKkqB,gBACLlqB,KAAKwV,IAAI3J,MAAM,+BACfoQ,MAAQjc,KAAK4b,KAAKM,WAClBkD,SACE0L,IAAK,OACL5jB,MACE+U,MAAOA,MACP7a,UAAWpB,KAAKoB,YAGbpB,KAAK6qB,YAAYzL,UAG1BmJ,cAAcrZ,UAAU2a,UAAY,SAASlc,OAC3C,GAAIzG,KAGJ,OAFAlH,MAAKwV,IAAI3J,MAAM,+BAAiC8B,MAAMzG,MACtDA,KAAO1G,KAAK8H,MAAMqF,MAAMzG,MACP,SAAbA,KAAK4jB,IACA9qB,KAAKgrB,4BAA4B9jB,MAEjClH,KAAK4oB,eAAe1hB,OAI/BqhB,cAAcrZ,UAAU6O,QAAU,SAASmB,OAEzC,MADAlf,MAAKwV,IAAI0J,MAAM,oBAAsBA,OAC9Blf,KAAKkf,OAAQ,GAGtBqJ,cAAcrZ,UAAU4a,QAAU,WAGhC,MAFA9pB,MAAKwV,IAAI3J,MAAM,qBACf7L,KAAK8oB,WAAY,EACV9oB,KAAKgqB,yBAGPzB,iBAITD,eAAiB,WACf,QAASA,mBAeT,MAbAA,gBAAepZ,UAAU5J,aAAe,SAASlE,WAC/C,MAAOpB,MAAKoB,UAAYA,WAG1BknB,eAAepZ,UAAUuc,KAAO,SAASC,KAAMxgB,KAAMygB,MAAOvgB,MAAOud,wBAAyBiD,YAC1F,GAAI1O,QAGJ,OAFAA,SAAU,GAAIqL,eAAcmD,KAAMxgB,KAAMygB,MAAOvgB,MAAOud,wBAAyBiD,YAC/E1O,QAAQxP,WAAW1N,KAAKoB,WACjB8b,SAGToL,eAAepZ,UAAUuc,KAAKrR,SAAW,UAAW,OAAQ,YAAa,UAAW,4BAA6B,cAE1GkO,kBAIT1oB,OAAOuJ,SAAS,YAAamf,iBAE5BjlB,KAAKrD,MA2BR,WACE,GAAI6rB,mBAAmBzb,SAAUE,SAAUG,QAASG,MAAOhR,OAAQG,MAAOuR,IAE1EvR,OAAQC,KAAKD,MAEb0Q,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBQ,MAAQ5Q,KAAKD,MAAM6Q,MAEnBN,SAAWtQ,KAAKD,MAAMuQ,SAEtBgB,KAAOtR,KAAKD,MAAMuR,KAElB1R,OAASgD,QAAQhD,OAAO,oBAExBisB,kBAAoB,SAASpmB,iBAAkB6a,MAAO9Y,SAAUskB,SAAUC,iBACxE,GAAItO,WAAWC,IAyCf,OAxCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMkO,aAAc/N,OAAQgO,YAgChC,OA/BAnO,MAAOF,IAAIO,KAAK,QAAQnT,YACxBiT,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAM8L,OAAO,WAAYzO,OAAO0O,UAC1CjpB,QAAQD,KAAK,SAAS+D,MAGpB,MAFAglB,gBAAeI,SACf7mB,iBAAiBwkB,MAAMrM,KAChBpW,SAASG,OAAO,UAAW,sCAE7BvE,QAAQD,KAAK,KAAM,WAExB,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,YAZzB,SAeD3H,OACHisB,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QACzB+N,aAAe,WAGb,MAFArO,QAAO0O,YACP5mB,iBAAiBqiB,KAAKlK,KACfA,IAAIO,KAAK,YAAYoO,SAE9B5O,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAENoN,gBAETvO,WACEC,KAAMA,KACNpa,YAAa,gCACb+O,WAKJzS,OAAO6d,UAAU,gBAAiB,kBAAmB,UAAW,aAAc,aAAc,oBAAqBoO,qBAEhHxoB,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,yBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,mBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,mBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,gBAAiB,aAExCyD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,oBAEvByD,KAAKrD,MA2BR,WACE,GAAIwsB,6CAA6CC,iCAAkCC,+BAAgCC,wBAAyBC,sBAAuBtc,SAAU1Q,OAAQG,MAAOuR,IAE5LvR,OAAQC,KAAKD,MAEbuR,KAAOtR,KAAKD,MAAMuR,KAElBhB,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,wBAExB+sB,wBAA0B,SAASrM,MAAOuM,SAAUrlB,SAAU2D,WAAY2gB,SAAUgB,UAAW9pB;AAC7F,GAAI0a,MAAMqP,aAAcC,YAiGxB,OAhGAA,cAAeF,UAAU1nB,IAAI,8BAA8B,GAC3D2nB,aAAeD,UAAU1nB,IAAI,mCAAmC,GAChEsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI0M,YAAYC,WAAYC,QAyF5B,OAxFAA,UAAW7c,SAAS,IAAM,SAAS8c,MACjC,GAAIlB,gBAAgB9oB,OAiBpB,OAhBAgqB,MAAKC,QAAUzP,IAAIO,KAAK,SAASnS,MACjCkgB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,eAAetQ,QAC3DzK,QAAUkd,MAAMgN,KAAKF,MACrBhqB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YAEL,MADA2kB,gBAAeI,SACRnhB,WAAW2V,WAAW,0BAE9B9gB,OACHoD,QAAQD,KAAK,KAAM,SAAUoE,OAC3B,MAAO,YAGL,MAFA2kB,gBAAeI,SACf1O,IAAIO,KAAK,SAASnS,IAAIohB,KAAKC,SACpB7lB,SAASG,OAAO,WAExB3H,OACIoD,UAET6pB,WAAa,SAASG,MAkBpB,MAjBAxP,KAAI2P,KAAKV,SAASE,cAChBK,KAAMA,QACJzP,SACJC,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,MAAsB,MAAlBA,MAAM6f,QACDL,SAAS5M,OAAOkN,aAAatqB,KAAK,WACvC,MAAO+pB,YAAW3M,OAAOkN,eAEA,KAAlB9f,MAAM6f,QACRN,WAAW3M,OAAOkN,aADpB,SAIT7P,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OACrC,MAAOwf,UAAS5M,OAAOkN,aAAatqB,KAAK,WACvC,MAAO+pB,YAAW3M,OAAOkN,iBAGtB7P,IAAIc,GAAG,QAAS,eAAgB,SAAS/Q,OAC9C,MAAOuf,YAAW3M,OAAOkN,gBAG7BP,WAAa,SAASE,MACpB,GAAIM,MAcJ,OAbA9P,KAAIgB,MACJ8O,OACEC,YAAsE,KAAzDhQ,OAAO1V,QAAQqe,eAAengB,QAAQ,eACnDynB,YAAsE,KAAzDjQ,OAAO1V,QAAQqe,eAAengB,QAAQ,gBAErDyX,IAAI2P,KAAKV,SAASG,cAChBI,KAAMA,KACNM,MAAOA,SACL/P,SACJC,IAAIc,GAAG,QAAS,aAAc,WAE5B,MADAuO,YAAW1M,OAAOkN,aACX7P,IAAIO,KAAK,SAASoO,QAAQsB,WAE5BjQ,IAAIc,GAAG,QAAS,eAAgB,SAAS/Q,OAC9C,GAAIyR,SAAS1b,KAIb,OAHAA,OAAQV,WAAW0E,QAAQ,4BAC3B0lB,KAAO7M,OAAOkN,YACdrO,QAAUgO,KAAKC,QACR7lB,SAASsmB,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAS4qB,aACxD,GAAI3qB,QAMJ,OALAA,SAAUkd,MAAMvE,OAAOqR,MACvBhqB,QAAQD,KAAK,WAEX,MADA4qB,aAAYzB,SACL3O,OAAOqQ,MAAM,0BAEf5qB,QAAQD,KAAK,KAAM,WAExB,MADA4qB,aAAYzB,QAAO,GACZ9kB,SAASG,OAAO,gBAK/BgW,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASjiB,KACrC,MAAKA,KAGEkhB,WAAWlhB,KAHlB,SAKF2R,OAAO7R,IAAI,oCAAqC,WAC9C,MAAOX,YAAW2V,WAAW,0BAE/BnD,OAAO7R,IAAI,+BAAgC,WACzC,MAAOX,YAAW2V,WAAW,0BAExBnD,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,oBAAqB,UAAW,WAAY,aAAc,aAAc,aAAc,cAAe,aAAckP,0BAEpID,+BAAiC,SAASpM,MAAOuM,SAAUrlB,SAAU2mB,SAAUrC,SAAUxgB,WAAYwhB,WACnG,GAAIpP,MAAM0Q,QAAS/Q,QA2EnB,OA1EAA,UAAWyP,UAAU1nB,IAAI,sCAAsC,GAC/DgpB,SACEf,QAAS,GACTgB,YAAa,MAEf3Q,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIoM,OAAOqE,WAAY7I,MAgEvB,OA/DA6I,YAAahe,SAAS,IAAM,SAAS8c,MACnC,GAAIlB,gBAAgB9oB,OAkBpB,OAjBAgqB,MAAKC,QAAUzP,IAAIO,KAAK,SAASnS,MACjCohB,KAAKiB,YAAc1Q,OAAOyQ,QAAQC,YAClCjB,KAAKvnB,OAAS8X,OAAOyQ,QAAQvoB,OAC7B8X,OAAOyQ,QAAQvoB,OAAS8X,OAAO1V,QAAQsmB,oBACvC5Q,OAAOyQ,QAAQC,YAAc,KAC7BnC,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,eAAetQ,QAC3DzK,QAAUkd,MAAM8L,OAAO,QAASgB,MAChChqB,QAAQD,KAAK,WAGX,MAFAmI,YAAW0T,WAAW,OAAQ,SAAU,2BAA4B,GACpEkN,eAAeI,SACR3O,OAAOqQ,MAAM,uBAEtB5qB,QAAQD,KAAK,KAAM,WAGjB,MAFAya,KAAIO,KAAK,SAASnS,IAAIohB,KAAKC,SAC3BnB,eAAeI,SACR9kB,SAASG,OAAO,WAElBvE,UAET6mB,MAAQ,WAGN,MAFArM,KAAIgB,MACJhB,IAAI2P,KAAK,IACF5P,OAAO6Q,wBAAyB,GAEzC/I,OAAS,WAqBP,MApBA9H,QAAO6Q,wBAAyB,EAChC5Q,IAAI2P,KAAKV,SAASxP,YAAYM,SAC9BC,IAAIO,KAAK,SAASoO,QAAQsB,SAC1BjQ,IAAIkI,SAAS,UACblI,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,MAAsB,MAAlBA,MAAM6f,QACDc,WAAWF,SAASjrB,KAAK,WAC9B,MAAOsiB,YAEkB,KAAlB9X,MAAM6f,QACR7P,OAAO1J,OAAO,WACnB,MAAOgW,WAFJ,SAMTrM,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OACtC,MAAOgQ,QAAO1J,OAAO,WACnB,MAAOgW,aAGJrM,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OAC5C,MAAO2gB,YAAWF,SAASjrB,KAAK,WAC9B,MAAO8mB,cAIblqB,MAAMqQ,SAASuN,OAAQ,KAAM,SAAS3R,KAKpC,MAJAoiB,SAAgB,OAAIzQ,OAAO1V,QAAQsmB,oBACnCH,QAAiB,QAAIzQ,OAAO1V,QAAQ8P,GACpCqW,QAAoB,WAAIzQ,OAAO8Q,GAAG1W,GAClC4F,OAAOyQ,QAAUD,SAASxS,WAAW,QAASyS,SACvCxQ,IAAI2P,KAAK,MAElB5P,OAAO7R,IAAI,0BAA2B,WACpC,MAAO2Z,YAEF9H,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,2BAA4B,UAAW,WAAY,aAAc,WAAY,aAAc,eAAgB,cAAeiP,iCAE3ID,iCAAmC,SAASnM,MAAOuM,SAAUrlB,SAAU2mB,SAAUrB,WAC/E,GAAIpP,MAAML,QAqBV,OApBAA,UAAWyP,UAAU1nB,IAAI,qCAAqC,GAC9DsY,KAAO,SAASC,OAAQC,IAAKC,QAe3B,MAdAF,QAAOjL,OAAO,UAAW,SAAS1G,KAChC,MAAKA,MAGL4R,IAAIgB,MACsD,KAAtDjB,OAAO1V,QAAQqe,eAAengB,QAAQ,YACxCyX,IAAI2P,KAAKV,SAASxP,YAAYM,SAE9BC,IAAI2P,KAAK,IAEJ3P,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OAC7C,MAAOgQ,QAAOqQ,MAAM,oCAVtB,SAaKrQ,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,6BAA8B,UAAW,WAAY,aAAc,WAAY,cAAegP,mCAE/GG,sBAAwB,SAAStM,MAAOoO,IAAKvjB,YAC3C,GAAIuS,KA+CJ,OA9CAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI8Q,aAAaC,WAAYC,SAyC7B,OAxCAA,WAAY,WACV,MAAOH,KAAII,MAAMC,KAAKpR,OAAOlF,UAAW,KAAMkF,OAAOqR,MAAM7rB,KAAK,SAAUoE,OACxE,MAAO,UAASunB,OAEd,MADAnR,QAAOmR,MAAQzuB,EAAEwX,OAAOiX,MAAO,OACxBA,QAER9uB,QAEL4uB,WAAa,WACX,MAAIjR,QAAO1V,QACsD,KAAxD0V,OAAO1V,QAAQqe,eAAengB,QAAQ,eAExC,GAETwoB,YAAc,WACZ,MAAIhR,QAAO1V,QACuD,KAAzD0V,OAAO1V,QAAQqe,eAAengB,QAAQ,gBAExC,GAETwX,OAAOsR,iBAAmB,WACxB,GAAIhc,IACJ,OAAO2b,gBAAiBD,gBAA0C,OAAvB1b,IAAM0K,OAAOmR,OAAiB7b,IAAIzG,OAAS,UAExFmR,OAAO7R,IAAI,oBAAqB,WAC9B,MAAO+iB,aAAY1rB,KAAK,WACtB,MAAOgI,YAAW2V,WAAW,4BAGjCnD,OAAO7R,IAAI,uBAAwB,WACjC,MAAO+iB,aAAY1rB,KAAK,WACtB,MAAOgI,YAAW2V,WAAW,4BAGjCnD,OAAO7R,IAAI,gCAAiC,WAC1C,MAAO6R,QAAOmD,WAAW,6BAE3B/gB,MAAMqQ,SAASuN,OAAQ,KAAM,SAAS3R,KACpC,MAAO6iB,eAEFlR,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,kBAAmB,UAAW,eAAgB,aAAcmP,wBAE7EJ,4CAA8C,SAASlM,MAAOnV,WAAYnI,YACxE,GAAI0a,MAAML,QAiDV,OAhDAA,UAAWhd,EAAEgd,SAAS,sFACtBK,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOC,SAAUC,YAAahC,KAAMiC,iBA0CxC,OAzCAA,mBAAoB,SAASjC,MAC3B,GAAIngB,KAAKqiB,MAWT,OAVAriB,MACE+F,KAAMhQ,WAAW0E,QAAQ,mCACzB6nB,OAAQ,IAAMrvB,OAAOyI,SAAW,uBAElC2mB,OAAS3R,OAAO3F,UAAUoV,KAAKiB,aAC3BiB,SACFriB,IAAIsiB,OAASD,OAAOE,MACpBviB,IAAI+F,KAAOsc,OAAOG,mBAEpB7R,IAAIO,KAAK,WAAWoP,KAAKlQ,SAASpQ,MAC3B2Q,IAAIO,KAAK,oBAAoB7L,KAAK,QAASrF,IAAI+F,OAExDkc,MAAQtR,IAAIra,aACZ6pB,KAAOzP,OAAOlL,MAAMoL,OAAO6R,sCAC3BN,YAAczR,OAAOlL,MAAMoL,OAAOuR,aAClCD,UAAYC,YACZC,kBAAkBjC,MAClBxP,IAAIc,GAAG,QAAS,mBAAoB,SAAS/Q,OAC3C,MAAOxC,YAAW2V,WAAW,kBAAmBsM,QAElDrtB,MAAMqQ,SAASuN,OAAQ,UAAW,SAAS1V,SACzC,MAAsD,KAAlDA,QAAQqe,eAAengB,QAAQ,gBACjCyX,IAAI+R,OAAO,SACJ/R,IAAIO,KAAK,KAAK2H,SAAS,kBAFhC,SAKFnI,OAAO7R,IAAI,oBAAqBwE,SAAS,IAAM,SAAU/I,OACvD,MAAO,UAAS0F,IAAK2iB,OAAQC,oBAC3B,MAAIA,oBAAmB9X,KAAOqV,KAAKrV,IACjC8X,mBAAmBxB,YAAcuB,OAC7BT,UACF7O,MAAMgN,KAAKuC,oBAAoB1sB,KAAK,WAClC,MAAOwa,QAAOqQ,MAAM,uCAGjBqB,kBAAkBQ,qBAP3B,SAUD7vB,QACI2d,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,wCAAyC,UAAW,aAAc,aAAc+O,+CAEhGnpB,KAAKrD,MA2BR,WACE,GAAI8vB,kBAAkBC,cAAeC,SAAUpwB,OAAQG,MAAO0a,KAC5D5X,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb+vB,iBAAmB,SAAUpgB,YAG3B,QAASogB,oBACP,MAAOA,kBAAiB3gB,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAG5D,MANA5M,QAAOitB,iBAAkBpgB,YAMlBogB,kBAEN/vB,MAAMkQ,SAETwK,MACEmB,KAAQ,QACRqU,gBAAiB,iBACjBtT,YAAe,eACfnF,MAAS,SACT0Y,YAAe,qBACfC,0BAA2B,2BAC3BC,sCAAuC,uCACvCC,wBAAyB,yBACzBC,qBAAsB,sBACtBC,uBAAwB,gBACxBC,aAAc,kBACdC,aAAc,kBACdC,aAAc,kBACdC,eAAgB,oBAChBC,gBAAiB,qBACjBC,UAAW,YACXC,YAAe,eACfC,kBAAmB,mBACnBC,eAAgB,gBAChBC,YAAe,eACfC,0BAA2B,2BAC3BzZ,MAAS,SACTqZ,YAAe,eACfK,SAAY,YACZ5Y,SAAY,YACZ6Y,oBAAqB,qBACrBC,kBAAmB,uBACnBC,6BAA8B,8BAC9BC,eAAgB,oBAChBC,iBAAkB,sBAClBC,gBAAiB,qBACjBC,kBAAmB,uBACnBC,kCAAmC,uCACnCC,0BAA2B,+BAC3BC,0BAA2B,+BAC3BC,2BAA4B,gCAC5BC,yBAA0B,8BAC1BC,qBAAsB,sBACtBC,OAAU,UACVC,gBAAiB,iBACjBC,iBAAkB,kBAClBC,cAAe,eACfC,WAAc,cACdC,WAAc,cACdC,WAAc,cACdC,YAAe,eACfC,iBAAkB,2BAClBC,+BAAgC,yCAChCC,8BAA+B,wCAC/BC,8BAA+B,wCAC/BC,sBAAuB,4BACvBC,mBAAoB,yBACpBC,qBAAsB,2BACtBC,kBAAmB,wBACnBC,oBAAqB,0BACrBnE,MAAS,SACToE,oBAAqB,qBACrBC,mCAAoC,qCACpCC,cAAe,mBACfC,gBAAiB,qBACjBC,aAAc,kBACdC,eAAgB,oBAChBC,OAAU,UACVC,qBAAsB,sBACtBC,iBAAkB,uBAClBC,eAAgB,oBAChBC,iBAAkB,sBAClBC,cAAe,mBACfC,gBAAiB,qBACjBC,KAAQ,QACRC,eAAgB,mBAChBC,aAAc,cACdC,aAAc,qBACdC,gBAAiB,iBACjBC,eAAgB,gBAChBC,eAAgB,gBAChBC,iBAAkB,2BAClBC,oBAAqB,sBACrBC,mBAAoB,qBACpBC,wBAAyB,oBACzBC,8BAA+B,+BAC/BC,0BAA2B,2BAC3BC,yBAA0B,0BAC1BC,qCAAsC,wCACtCC,iCAAkC,mCAClCC,gCAAiC,kCACjCC,SAAY,YACZC,gBAAiB,oBACjBC,YAAe,eACfC,qBAAsB,yBACtBC,kBAAmB,2BACnBC,YAAa,qBACbC,aAAc,sBACdC,mBAAoB,oBACpBC,gBAAiB,iBACjBC,mBAAoB,oBACpBpvB,OAAU,UACVqvB,SAAY,YACZC,SAAY,sBACZtJ,SAAY,YACZuJ,QAAW,WACXC,aAAgB,gBAChBC,qBAAsB,sBACtBC,iBAAkB,mBAGpB/F,SAAW,SAAS9kB,KAAM8qB,OAExB,MADA9qB,MAAKW,MAAM,uBACJmqB,MAAMhS,OAAOvJ,OAGtBsV,cAAgB,SAAS7kB,KAAMwjB,KAC7B,GAAIhd,GAAGgC,IAAKvK,SAAU8sB,UAAWtd,OAIjC,KAHAzN,KAAKW,MAAM,wBACXoqB,UAAY51B,EAAE61B,QAAQzmB,WAAWmC,MAAM,GACvC+G,WACKjH,EAAI,EAAGgC,IAAMuiB,UAAUzpB,OAAYkH,IAAJhC,EAASA,IAC3CvI,SAAW8sB,UAAUvkB,GACrBiH,QAAQjS,KAAKyC,SAASulB,KAExB,OAAO/V,UAGT/Y,OAASgD,QAAQhD,OAAO,kBAAmB,cAE3CA,OAAOsd,QAAQ,eAAgB4S,kBAE/BlwB,OAAO4O,KAAK,OAAQ,UAAWwhB,WAE/BpwB,OAAO4O,KAAK,OAAQ,eAAgB,+BAAgC,uCAAwC,6CAA8C,kCAAmC,qCAAsC,kCAAmC,4BAA6B,mCAAoC,8BAA+B,kCAAmC,4BAA6B,6BAA8B,2BAA4B,6BAA8B,+BAAgC,8BAA+B,6BAA8B,8BAA+B,+BAAgC,kCAAmC,8BAA+B,4BAA6BuhB,iBAExvB1sB,KAAKrD,MA2BR,WACE,GAAIm2B,oBAAoBC,iBAAkBC,gBAAiBjmB,SAAUE,SAAUC,gBAAiBE,QAASG,MAAOhR,OAAQG,MAAOuR,KAC7HzO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb0Q,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBQ,MAAQ5Q,KAAKD,MAAM6Q,MAEnBL,gBAAkBvQ,KAAKD,MAAMwQ,gBAE7Be,KAAOtR,KAAKD,MAAMuR,KAElBhB,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,kBAExBw2B,iBAAmB,SAAU1mB,YAK3B,QAAS0mB,kBAAiBE,OAAQC,KAAMje,GAAIpU,OAAQ6L,EAAGF,SAAUtE,eAAgBuE,QAAS4K,WACxF,GAAI8b,gBAAgBpzB,OACpBpD,MAAKqS,MAAQikB,OACbt2B,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAKuL,eAAiBA,eACtBvL,KAAK8P,QAAUA,QACf9P,KAAK0a,UAAYA,UACjB1a,KAAKqS,MAAMokB,YAAc,SACzBrzB,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAQjB,OAPAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,qBAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAMmT,UAAUhT,QAAQ,2BACpCivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,KACjC4jB,mBAAoBrvB,MAAM8K,MAAMpK,QAAQtE,cAEnC4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAChDA,KAAKqS,MAAMwkB,WAAa,KACxBL,eAAiBjmB,gBAAgB,IAAK,SAAUhJ,OAC9C,MAAO,UAASuvB,GACd,MAAOvvB,OAAMivB,eAAeM,KAE7B92B,OACHoQ,SAASpQ,KAAKqS,MAAO,YAAa,SAAU9K,OAC1C,MAAO,UAASkR,WACd,OAAKlR,MAAM8K,MAAM0kB,eAAiBxvB,MAAM8K,MAAMwkB,WACrCtvB,MAAMivB,iBADf,SAIDx2B,OACHA,KAAKqS,MAAMK,OAAO,aAAc,SAAUnL,OACxC,MAAO,UAASyvB,MACd,MAAa,UAATA,MAAmBzvB,MAAM8K,MAAMoG,UAC1BlR,MAAMivB,eAAeQ,MAD9B,SAIDh3B,OAoEL,MAtHA6C,QAAOuzB,iBAAkB1mB,YAEzB0mB,iBAAiBhc,SAAW,SAAU,UAAW,eAAgB,eAAgB,KAAM,cAAe,mBAAoB,aAAc,cAmDxIgc,iBAAiBlnB,UAAU+nB,YAAc,WACvC,GAAIC,QAGJ,OAFAA,SAAUl3B,KAAK+P,EAAE7M,QACjBg0B,QAAQv0B,UACDu0B,QAAQ9zB,SAGjBgzB,iBAAiBlnB,UAAUioB,YAAc,WACvC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAkBd,MAjBAV,OAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAMglB,gBAAkB5mB,QAAQxI,QAAQqvB,eAAgB,SAAS/2B,GACrE,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMklB,eAAiB9mB,QAAQxI,QAAQuvB,cAAe,SAASj3B,GACnE,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMolB,aAAehnB,QAAQxI,QAAQqqB,WAAY,SAAS/xB,GAC9D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMqlB,aAAejnB,QAAQxI,QAAQoqB,WAAY,SAAS9xB,GAC9D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMslB,aAAelnB,QAAQxI,QAAQ2vB,YAAa,SAASr3B,GAC/D,MAAOA,GAAEwX,KAEJ9P,UAERjI,QAGLo2B,iBAAiBlnB,UAAUsnB,eAAiB,SAASQ,MAKnD,MAJY,OAARA,OACFA,KAAO,IAETh3B,KAAKqS,MAAMwlB,SAAU,EACd73B,KAAK83B,gBAAgBd,MAAM7zB,KAAK,SAAUoE,OAC/C,MAAO,UAASL,MAEd,MADAK,OAAM8K,MAAM0kB,cAAgB7vB,KACrBK,MAAM8K,MAAMwlB,SAAU,IAE9B73B,QAGLo2B,iBAAiBlnB,UAAU4oB,gBAAkB,SAASd,MAQpD,MAPY,OAARA,OACFA,KAAO,IAELh3B,KAAK+3B,UACP/3B,KAAK+3B,SAASC,QAEhBh4B,KAAK+3B,SAAW/3B,KAAKsY,GAAGjS,OAAO,MAAMrG,KAAKqS,MAAMoG,UAAWue,MACpDh3B,KAAK+3B,UAGd3B,iBAAiBlnB,UAAUwnB,gBAAkB,WAC3C,MAAO12B,MAAKm3B,cAAch0B,KAAK,SAAUoE,OACvC,MAAO,UAASU,SAEd,MADAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GACzBxQ,MAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,SAEzDzX,QAGEo2B,kBAENxlB,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,mBAAoB6yB,kBAEtCD,mBAAqB,SAAS3qB,eAAgB/F,iBAAkBse,SAAUxe,UAAW0yB,QACnF,GAAIva,KAiCJ,OAhCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAImO,cAAc/jB,QAASgW,MA6B3B,OA5BAhW,SAAU,KACVgW,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAImQ,MAAMvK,KAAMrN,GAGhB,OAFAyH,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAGVhL,KAAOqK,IAAIO,KAAK,gBAAgBnS,MAChC9F,IAAM6d,SAASphB,QAAQ,kBACrBsF,QAASA,QAAQ7C,IAAI,UAEhBuY,OAAO1J,OAAO,WAInB,MAHAxO,kBAAiBwkB,MAAMrM,KACvBrY,UAAU9C,KAAKyD,KACfX,UAAUc,OAAO,OAAQkN,MAAM9Q,KAAKyD,KAC7B+xB,OAAOC,YAXhB,SAcDl4B,OACHgsB,aAAe,WAEb,MADA/jB,SAAUuD,eAAevD,QAClBxC,iBAAiBqiB,KAAKlK,KAAKza,KAAK,WACrC,MAAOya,KAAIO,KAAK,gBAAgBoO,WAGpC3O,IAAIc,GAAG,SAAU,OAAQT,QAClB+N,iBAGP1oB,YAAa,8BACboa,KAAMA,OAIVyY,mBAAmB/b,SAAW,mBAAoB,kBAAmB,aAAc,cAAe,UAElGxa,OAAO6d,UAAU,cAAe0Y,oBAEhCE,gBAAkB,SAASnrB,KAAM2hB,SAAUsL,eAAgBC,aAAc7yB,WACvE,GAAImY,MAAM2a,SAmHV,OAlHAA,WAAY,SAAS1a,OAAQC,IAAKC,OAAQqR,OACxC,GAAIoJ,mBAAmBC,aAAcC,iBAAkBC,kBAAmBC,qBAAsBC,iBAAkBC,mBAAoBC,QAASzb,SAsF/I,OArFAmb,eAAe,EACfD,kBAAoB,cACpBO,QAAUjb,IAAIO,KAAK,kBACnBsa,kBAAoB,KACpBD,iBAAmB,SAAStxB,MAC1B,GAAIwK,GAAGgC,IAAKolB,OAAQ9lB,KAAMC,IAAK8lB,gBAAiBzqB,KAKhD,IAJAwqB,OAAS,EACTC,mBACAA,gBAAgB/lB,KAAO,cACvB+lB,gBAAgBzqB,UACXiqB,aAGH,MAFAQ,iBAAgB/lB,KAAOslB,kBACvBS,gBAAgBzqB,MAAQpH,KAAKoxB,mBACtBS,eAET,IAAI7xB,KAEF,IADA+L,KAAO,cAAe,SAAU,QAAS,aACpCvB,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IAGrC,GAFAsB,KAAOC,IAAIvB,GACXpD,MAAQpH,KAAK8L,MACT1E,MAAM9B,OAASssB,OAAQ,CACzBA,OAASxqB,MAAM9B,OACfusB,gBAAgB/lB,KAAOA,KACvB+lB,gBAAgBzqB,MAAQA,KACxB,OAIN,MAAe,KAAXwqB,OACKC,gBAEFA,iBAETJ,iBAAmB,SAASzxB,MAC1B,GAAI8L,MAAM2F,QAASrK,KACnBqK,WACA,KAAK3F,OAAQ9L,MACXoH,MAAQpH,KAAK8L,MACb6lB,QAAQ1a,KAAK,MAAQnL,MAAMoX,OAC3BzR,QAAQjS,KAAKmyB,QAAQ1a,KAAK,MAAQnL,KAAO,SAASua,KAAKjf,MAAM9B,QAE/D,OAAOmM,UAET+f,qBAAuB,SAAS10B,SAI9B,MAHA60B,SAAQ1a,KAAK,YAAYwH,YAAY,UACrCkT,QAAQ1a,KAAK,MAAQna,QAAQgP,KAAO,MAAM8S,SAAS,UACnDyS,cAAe,EACRD,kBAAoBt0B,QAAQgP,MAErCoK,WACEoW,OAAQ2E,eAAe/yB,IAAI,iBAC3B0pB,MAAOqJ,eAAe/yB,IAAI,gBAC1BotB,YAAa2F,eAAe/yB,IAAI,sBAChC4zB,UAAWb,eAAe/yB,IAAI,qBAEhCwzB,mBAAqB,SAAS50B,SAC5B,GAAIoD,SAAS6xB,YAAaC,SAAU7mB,MAAOgL,QAW3C,OAVA4b,aAAcrb,IAAIO,KAAK,wBAAwBgb,WAC/CD,SAAWD,YAAY5mB,QACnB6mB,WACFA,SAASE,WACTH,YAAYld,UAEd1J,MAAQsL,OAAO0b,OACfhnB,MAAMrO,QAAQgP,MAAQhP,QAAQsK,MAC9B+O,SAAWza,QAAQwE,QAAQkyB,UAAUhoB,KAAK8L,UAAUpZ,QAAQgP,QAC5D5L,QAAUylB,SAASxP,UAAUhL,OACtBuL,IAAIO,KAAK,wBAAwBoP,KAAKnmB,UAE/CuW,OAAOjL,OAAO,gBAAiB,SAASxL,MACtC,GAAIqyB,cAEJ,QADAd,kBAAoBvxB,OAIpBqyB,cAAgBf,iBAAiBtxB,MACjCyxB,iBAAiBzxB,MACjB0xB,mBAAmBW,eACZb,qBAAqBa,gBAN5B,SAQF5b,OAAOjL,OAAO,aAAc,SAASmkB,YACnC,MAAmB,UAAfA,WACKtxB,UAAUc,OAAO,OAAQwwB,YADlC,SAIKjZ,IAAIc,GAAG,QAAS,wBAAyB,SAAS/Q,OACvD,GAAI3J,SAASw1B,YAAa/C,YAAatK,MASvC,OARAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BsO,YAActK,OAAOtd,SAAS3H,KAAK,QACnCsyB,YAAef,kBAAyBA,kBAAkBhC,gBAC1DzyB,SACEgP,KAAMyjB,YACNnoB,MAAOkrB,aAEF7b,OAAO1J,OAAO,WAEnB,MADA2kB,oBAAmB50B,SACZ00B,qBAAqB10B,cAIlC0Z,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOuK,UAIX,OAHAvK,OAAQtR,IAAIra,aACZ80B,UAAU1a,OAAQC,IAAKC,OAAQqR,OAC/BuK,WAAarB,aAAa7kB,KACnBoK,OAAOjL,OAAO,YAAa,SAAS+F,WACzC,MAAiB,OAAbA,UACKkF,OAAOkZ,WAAa4C,WAD7B,WAMF/b,KAAMA,OAIV9d,OAAO6d,UAAU,YAAa,OAAQ,WAAY,iBAAkB,eAAgB,cAAe4Y,mBAElGhzB,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,sBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,kBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,iBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,yBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,wBAEvByD,KAAKrD,MA2BR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,iBAEvByD,KAAKrD,MA2BR,WACE,GAAI05B,kBAAkB95B,OAAQG,MAC5B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbH,OAASgD,QAAQhD,OAAO,eAExB85B,iBAAmB,SAAUhqB,YAK3B,QAASgqB,kBAAiBrf,UAAW7E,IAAK1P,OAAQ0iB,IAAKmR,IAAK9pB,UAC1D,GAAI+pB,KACJ55B,MAAKqa,UAAYA,UACjBra,KAAKwV,IAAMA,IACXxV,KAAK8F,OAASA,OACd9F,KAAKwoB,IAAMA,IACXxoB,KAAK25B,IAAMA,IACX35B,KAAK6P,SAAWA,SAChB7P,KAAK65B,aAAc,EACnBD,KAAO55B,KAAK8F,OAAOV,IAAI,gBACvBpF,KAAK85B,UAAYF,KAAKE,UACtB95B,KAAK+5B,UAAYH,KAAKG,WAAa,sBACnC/5B,KAAKg6B,YAAcJ,KAAKI,cAAe,EACvCh6B,KAAKi6B,oBAAsBL,KAAKK,sBAAuB,EA4DzD,MA7EAp3B,QAAO62B,iBAAkBhqB,YAEzBgqB,iBAAiBtf,SAAW,aAAc,OAAQ,YAAa,UAAW,YAAa,aAkBvFsf,iBAAiBxqB,UAAUxB,WAAa,WACtC,MAAK1N,MAAK85B,WAIV95B,KAAKk6B,kBACLl6B,KAAKwoB,IAAI2R,GAAG,SAAUn6B,KAAK85B,UAAW,QACtC95B,KAAKwoB,IAAI2R,GAAG,UAAW,mBACnBn6B,KAAKg6B,cAAiBh6B,KAAKi6B,qBAC7Bj6B,KAAKwoB,IAAI2R,GAAG,OAAQ,WAAYn6B,KAAKo6B,UAEnCp6B,KAAKg6B,aACPh6B,KAAKqa,UAAUvO,IAAI9L,KAAK+5B,UAAW,SAAUxyB,OAC3C,MAAO,YACL,MAAOA,OAAM8yB,UAAU9yB,MAAM6yB,SAAU,WAExCp6B,OAEEA,KAAK65B,aAAc,OAhBxB75B,MAAKwV,IAAI3J,MAAM,iDAmBnB6tB,iBAAiBxqB,UAAUkrB,OAAS,WAClC,MAAOp6B,MAAK6P,SAASpN,QAGvBi3B,iBAAiBxqB,UAAUgrB,gBAAkB,WAC3C,GAAI5qB,GAIJ,QAHAA,GAAK,SAAUoC,EAAE4oB,EAAEC,EAAEC,EAAEC,EAAE9jB,EAAE+jB,GAAGhpB,EAAyB,sBAAE+oB,EAAE/oB,EAAE+oB,GAAG/oB,EAAE+oB,IAAI,YAC7D/oB,EAAE+oB,GAAG1qB,EAAE2B,EAAE+oB,GAAG1qB,OAAOrJ,KAAK+I,YAAaiC,EAAE+oB,GAAG9oB,EAAE,EAAE,GAAI5Q,MAAO4V,EAAE2jB,EAAEK,cAAcJ,GAC5EG,EAAEJ,EAAEM,qBAAqBL,GAAG,GAAG5jB,EAAEkkB,MAAM,EAAElkB,EAAEmkB,IAAIN,EAAEE,EAAEK,WAAWC,aAAarkB,EAAE+jB,KAC3Ex6B,OAAQ+6B,SAAU,SAAU,0CAA2C,OAGnFvB,iBAAiBxqB,UAAUmrB,UAAY,SAASn0B,IAAKxC,OACnD,MAAK1D,MAAK65B,aAGL75B,KAAKwoB,IAAI2R,IAGdz2B,MAAQA,OAAS1D,KAAK25B,IAAI,GAAGj2B,MACtB1D,KAAKwoB,IAAI2R,GAAG,OAAQ,YACzBe,KAAQh1B,IACRxC,MAASA,SATX,QAaFg2B,iBAAiBxqB,UAAU8P,WAAa,SAASmc,SAAUC,OAAQC,MAAO/sB,OACxE,MAAKtO,MAAK65B,aAGL75B,KAAKwoB,IAAI2R,GAGPn6B,KAAKwoB,IAAI2R,GAAG,OAAQ,QAASgB,SAAUC,OAAQC,MAAO/sB,OAN7D,QASKorB,kBAEN35B,MAAMkQ,SAETrQ,OAAOsd,QAAQ,eAAgBwc,mBAE9Br2B,KAAKrD,MAsBR,WACE,GAAIs7B,WAAW17B,MAEfA,QAASgD,QAAQhD,OAAO,eAExB07B,UAAY,SAASx1B,QACnB,GAAI4X,KAWJ,OAVK5X,QAAOsC,YACVmzB,OAAOjsB,GAAG+C,MAAQ,WAChB,MAAOrS,MAAKkH,KAAK,WAGrBwW,KAAO,SAASC,OAAQC,KACtB,MAAK9X,QAAOsC,UAAZ,OACSwV,IAAI1W,KAAK,QAASyW,QAAQmI,SAAS,cAI5CpI,KAAMA,OAIV9d,OAAO6d,UAAU,eAAgB,YAAa6d,aAE7Cj4B,KAAKrD,MAsBR,WACE,GAAIw7B,qBAEJA,sBAAuB,SAAS3O,UAC9B,GAAInP,KAOJ,OANAA,MAAO,SAASrL,MAAOjL,QAASq0B,OAC9B,MAAOppB,OAAMK,OAAO+oB,MAAMC,cAAe,SAASvkB,SAAUwkB,UAE1D,MADAv0B,SAAQmmB,KAAKpW,UACN0V,SAASzlB,QAAQw0B,YAAYvpB,WAItCqL,KAAMA,OAIV8d,qBAAqBphB,SAAW,YAEhCxX,QAAQhD,OAAO,eAAe6d,UAAU,gBAAiB+d,uBAExDn4B,KAAKrD,MA2BR,WACE,GAAI67B,qBAAqBC,qBAAsBC,0BAA2BC,mBAAoBC,sBAAuBC,sBAAuBC,6BAA8BC,yBAA0BC,gBAAiBC,4BAA6BC,6BAA8BC,0BAA2BC,0BAA2BC,4BAA6BC,sBAAuBC,0BAA2BC,2BAA4BC,qBAAsBC,uBAAwBC,kBAAmB5sB,SAAUxQ,OAAQG,KAEpgBA,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBxQ,OAASgD,QAAQhD,OAAO,eAExBo8B,mBAAqB,SAASh5B,YAC5B,GAAI0a,MAAMuf,WAiBV,OAhBAA,aAAc,SAASrf,IAAKsf,MAAOC,QACjC,GAAIC,SAASC,SAAU5wB,UAIvB,OAHAA,YAAazJ,WAAW0E,QAAQ,wBAChC21B,SAAWh0B,OAAO6zB,OAAO9X,OAAO3Y,YAChC2wB,QAAU/zB,OAAO8zB,QAAQ/X,OAAO3Y,YACzBmR,IAAI2P,KAAK8P,SAAW,IAAMD,UAEnC1f,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqf,OAAOjqB,IAAKkqB,MAEhB,OADAlqB,KAAM4K,OAAOyf,YAAYjxB,MAAM,KAAM6wB,MAAQjqB,IAAI,GAAIkqB,OAASlqB,IAAI,GAC3D7C,SAASuN,OAAQuf,MAAO,SAASK,UACtC,MAAOntB,UAASuN,OAAQwf,OAAQ,SAASK,WACvC,MAAOP,aAAYrf,IAAK2f,SAAUC,iBAKtC9f,KAAMA,OAIV9d,OAAO6d,UAAU,eAAgB,aAAcue,qBAE/CC,sBAAwB,SAAS9wB,WAAYsyB,yBAC3C,GAAI/f,KA0CJ,OAzCAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI7S,YAAYgwB,aAAc/N,MAmC9B,OAlCA+N,cAAe,KACfhwB,WAAa,WACX,GAAIiwB,iBAiBJ,OAhBAA,kBAAmBF,wBAAwBr4B,MAC3C/E,EAAEu9B,MAAMD,kBACNE,MAAOjgB,IAAI,GACXkgB,SAAU,SAAUv2B,OAClB,MAAO,UAAS1G,MACd,MAAO68B,cAAe78B,OAEvBb,MACH4pB,OAAQ,SAAUriB,OAChB,MAAO,YACL,MAAoB,OAAhBm2B,aACK9f,IAAImgB,OAAOC,QAAQN,cAD5B,SAID19B,QAEE4d,IAAImgB,OAAS,GAAIE,SAAQN,mBAElChO,OAASxkB,WAAWW,IAAI,sBAAuB,SAAUvE,OACvD,MAAO,UAAS0F,KACd,MAAOS,gBAER1N,OACH2d,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASjiB,KAIrC,MAHY,OAAPA,KAAiB4R,IAAImgB,QACxBrwB,aAES,MAAP1B,IACK4R,IAAImgB,OAAOC,QAAQhyB,KAD5B,SAIK2R,OAAO7R,IAAI,WAAY,WAE5B,MADA8R,KAAIgB,MACG+Q,aAITjS,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,kBAAmB,aAAc,4BAA6Bwe,wBAE/EY,2BAA6B,WAC3B,GAAInf,MAAMwgB,cA4BV,OA3BAA,gBAAiB,SAAStgB,IAAKugB,WAAYC,mBACzC,MAAIxgB,KAAIygB,SAAS,qBACRzgB,IAAI0gB,IAAI,QAASH,WAAa,MAErCvgB,IAAIO,KAAK,qBAAqBmgB,IAAI,QAASF,kBAAoB,KACxDxgB,IAAIO,KAAK,WAAWoP,KAAK4Q,WAAa,QAGjDzgB,KAAO,SAASC,OAAQC,IAAKC,QAe3B,MAdAzN,UAASuN,OAAQE,OAAO0gB,oBAAqB,SAASC,QACpD,GAAIC,cAAcN,WAAYO,YAAaN,iBAW3C,OAVAK,cAAeD,OAAOG,cACtBD,YAAcF,OAAOI,aACrBT,WAAa,EACO,IAAhBO,cACFP,WAAal9B,KAAK49B,MAAM,KAAOJ,aAAeC,eAEhDN,kBAAoB,EACA,IAAhBM,cACFN,kBAAoBn9B,KAAK49B,MAAM,IAAMJ,aAAeC,eAE/CR,eAAetgB,IAAKugB,WAAYC,qBAElCzgB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,sBAAuBof,4BAExCd,0BAA4B,SAASjP,UAAWD,SAAU7pB,WAAYwC,UACpE,GAAIkY,KAmBJ,OAlBAA,MAAO,SAASC,OAAQC,IAAKC,QAc3B,MAbAzN,UAASuN,OAAQE,OAAOoQ,QAAS,SAAS1T,OACxC,GAAItH,IACJ,OAAa,OAATsH,OACFoD,OAAOmhB,MAAQvkB,MAAMwkB,mBACnBtP,kBAAmBzsB,WAAW0E,QAAQ,wBACtC8nB,MAAO,IAAMtvB,OAAOyI,SAAW,4BAEjCgV,OAAOzX,KAA+B,OAAvB+M,IAAM0K,OAAOmhB,OAAiB7rB,IAAI2E,UAAY,QAAUpS,SAAS7C,QAAQ,gBACtF6b,SAAUb,OAAOmhB,MAAMtgB,WACpB,GACEb,OAAO9c,KAAOwI,OAAOkR,MAAMykB,cAAc5Z,OAAOpiB,WAAW0E,QAAQ,qBAR5E,SAWKiW,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,UACT7b,OAAO,EACP/O,YAAa,sCAIjB1D,OAAO6d,UAAU,sBAAuB,cAAe,WAAY,aAAc,aAAcse,4BAE/FiB,kBAAoB,SAAS7xB,WAAY3D,SAAU8Y,MAAO2e,QAASnS,UAAWD,SAAU7pB,YACtF,GAAI0a,MAAML,QAmGV,OAlGAA,UAAWyP,UAAU1nB,IAAI,mCAAmC,GAC5DsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI2e,eAAeC,WAAYC,eAAgB9R,IA4F/C,OA3FA6R,YAAa,WACX,GAAIlsB,KAAKosB,IACT,OAAwI,MAAtG,OAAzBpsB,IAAM0K,OAAO1V,UAAkD,OAA9Bo3B,KAAOpsB,IAAIqT,gBAA0B+Y,KAAKl5B,QAAQ0X,OAAOyhB,cAAyB,SAE9HhS,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAASg4B,UACd,GAAI9tB,MAAMrO,OAYV,OAXAqO,MAAO8O,OAAOkN,YAAYnR,QAC1B7K,KAAK8tB,SAAWA,SAChBhf,OAAOif,cAAc/tB,MACrBrO,QAAUkd,MAAMgN,KAAK/M,OAAOkN,aAC5BrqB,QAAQD,KAAK,WAKX,MAJAo8B,UAAWl/B,EAAEC,IAAIi/B,SAAU,SAASE,WAClC,MAAO9hB,QAAO3F,UAAUynB,aAE1BL,eAAeG,UACRp0B,WAAW2V,WAAW,oBAExB1d,QAAQD,KAAK,KAAM,WAExB,MADAod,QAAOkN,YAAYiS,SACZl4B,SAASG,OAAO,aAG1B3H,OACHk/B,cAAgBD,QAAQzX,QAAQ,SAAUjgB,OACxC,MAAO,UAASo4B,YACd,GAAIluB,MAAMrO,OAaV,OAZAqO,MAAO8O,OAAOkN,YAAYnR,QAC1B7K,KAAK8tB,SAAWI,WAChBpf,OAAOif,cAAc/tB,MACrBrO,QAAUkd,MAAMgN,KAAK/M,OAAOkN,aAC5BrqB,QAAQD,KAAK,WACX,GAAIo8B,SAKJ,OAJAA,UAAWl/B,EAAEC,IAAImR,KAAK8tB,SAAU,SAASE,WACvC,MAAO9hB,QAAO3F,UAAUynB,aAE1BL,eAAeG,UACRp0B,WAAW2V,WAAW,oBAExB1d,QAAQD,KAAK,KAAM,WAExB,MADAsO,MAAKiuB,SACEl4B,SAASG,OAAO,aAG1B3H,OACHo/B,eAAiB,SAASG,UACxB,GAAItyB,KAAKsgB,IAMT,OALAtgB,MACEsyB,SAAUA,SACVJ,WAAYA,cAEd5R,KAAOV,SAASxP,SAASpQ,MAAM0Q,QACxBC,IAAI2P,KAAKA,OAElB3P,IAAIc,GAAG,QAAS,qBAAsB,SAAS/Q,OAC7C,GAAIyR,SAAS+M,OAAQzoB,MAAO+7B,SAE5B,OADA9xB,OAAM2Q,iBACD6gB,cAGLhT,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BsX,UAAYtT,OAAOjlB,KAAK,cACxBxD,MAAQV,WAAW0E,QAAQ,kDAC3B0X,QAAUzB,OAAO3F,UAAUynB,WAAWhQ,kBAC/BjoB,SAASsmB,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAUoE,OACzD,MAAO,UAASwmB,aACd,GAAI4R,WAIJ,OAHA5R,aAAYzB,SACZqT,WAAat/B,EAAEic,MAAMiE,OAAOkN,YAAY8R,UAAU,GAClDI,WAAat/B,EAAEu/B,KAAKD,WAAYF,WACzBP,cAAcS,cAEtB3/B,QAfH,SAiBF2d,OAAO7R,IAAI,gBAAiB,SAASmB,IAAKwyB,WACxC,GAAIF,SAIJ,OAHAA,UAAWl/B,EAAEic,MAAMiE,OAAOkN,YAAY8R,UAAU;AAChDA,SAAS74B,KAAK+4B,WACdF,SAAWl/B,EAAE6X,KAAKqnB,UACXjS,KAAKiS,YAEd5hB,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASxc,MACrC,GAAI8tB,SACJ,IAAY,MAAR9tB,KAMJ,MAHA8tB,UAAWl/B,EAAEC,IAAImR,KAAK8tB,SAAU,SAASE,WACvC,MAAO9hB,QAAO3F,UAAUynB,aAEnBL,eAAeG,YAEjB5hB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,cAAe,aAAc,aAAc,UAAW,YAAa,cAAe,WAAY,aAAcuf,oBAE7HnB,oBAAsB,SAAS1wB,WAAY3D,SAAU8Y,MAAOwL,SAAUmT,QAASnS,UAAW9pB,WAAY6pB,SAAUgT,qBAC9G,GAAIniB,MAAML,QA+FV,OA9FAA,UAAWyP,UAAU1nB,IAAI,sCAAsC,GAC/DsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAYW,iBAAkBxS,IAwFlC,OAvFA6R,YAAa,WACX,GAAIlsB,KAAKosB,IACT,OAAwI,MAAtG,OAAzBpsB,IAAM0K,OAAO1V,UAAkD,OAA9Bo3B,KAAOpsB,IAAIqT,gBAA0B+Y,KAAKl5B,QAAQ0X,OAAOyhB,cAAyB,SAE9HhS,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAASqoB,QACd,GAAI1D,gBAAgB9oB,OAcpB,OAbAmd,QAAOkN,YAAYY,YAAcuB,OACjC1D,eAAiBJ,WAAWK,OAAOvO,KAAK/P,QACxCzK,QAAUkd,MAAMgN,KAAK/M,OAAOkN,aAC5BrqB,QAAQD,KAAK,WAGX,MAFA+oB,gBAAeI,SACfwT,iBAAiBvf,OAAOkN,aACjBtiB,WAAW2V,WAAW,oBAE/B1d,QAAQD,KAAK,KAAM,WAGjB,MAFAod,QAAOkN,YAAYiS,SACnBl4B,SAASG,OAAO,SACTukB,eAAeI,WAEjBlpB,UAERpD,OACH8/B,iBAAmB,SAASC,gBAC1B,GAAI9yB,KAAK+yB,SAAUzS,KAAM0S,UAAWC,aAAc1Q,KAoBlD,OAnBsE,QAA/C,MAAlBuQ,eAAyBA,eAAe1R,YAAc,SACzD2R,SAAWD,eAAeI,uBAAuB1Q,kBACjDD,MAAQuQ,eAAeI,uBAAuB3Q,MAC9C0Q,cAAe,IAEfF,SAAWh9B,WAAW0E,QAAQ,6BAC9B8nB,MAAQ,IAAMtvB,OAAOyI,SAAW,sBAChCu3B,cAAe,GAEjBD,UAA8B,MAAlBF,eAAyBA,eAAeK,WAAa,OACjEnzB,KACE+yB,SAAUA,SACVxQ,MAAOA,MACP0Q,aAAcA,aACdf,WAAYA,aACZc,UAAWA,UACXI,kBAAmBH,eAAiBL,oBAAoBryB,oBAE1D+f,KAAOV,SAASxP,SAASpQ,MAAM0Q,QACxBC,IAAI2P,KAAKA,OAElB3P,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OAEzC,MADAA,OAAM2Q,iBACD6gB,aAGExhB,OAAO1J,OAAO,WACnB,MAAO9I,YAAW2V,WAAW,kBAAmBP,OAAOkN,eAJzD,SAOF7P,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAExC,MADAA,OAAM2Q,iBACD6gB,cAGL5e,OAAOkN,YAAYY,YAAcwR,oBAAoBpyB,UAAUrI,IAAI,MAC5DkoB,KAAKuS,oBAAoBpyB,UAAUrI,IAAI,QAJ9C,SAMFwY,IAAIc,GAAG,QAAS,eAAgB,SAAS/Q,OACvC,GAAIjK,MAEJ,OADAiK,OAAM2Q,iBACD6gB,cAGLz7B,MAAQV,WAAW0E,QAAQ,yCACpBF,SAAS84B,IAAI58B,OAAOP,KAAK,SAAUoE,OACxC,MAAO,UAAS5B,UAGd,MAFAA,UAAS2mB,SACT/L,OAAOkN,YAAYY,YAAc,KAC1Bf,KAAK,QAEbttB,QAVH,SAYF2d,OAAO7R,IAAI,oBAAqB,SAASmB,IAAK2iB,OAAQne,MACpD,MAAIA,MAAKsG,KAAOwI,OAAOkN,YAAY1V,GAG5BuV,KAAKsC,QAHZ,SAKFjS,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASsS,UACrC,MAAOT,kBAAiBS,YAEnB5iB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,gBAAiB,aAAc,aAAc,UAAW,aAAc,YAAa,cAAe,aAAc,WAAY,uBAAwBoe,sBAErKC,qBAAuB,SAAS3wB,WAAY2gB,SAAUgB,WACpD,GAAIpP,MAAML,QAuCV,OAtCAA,UAAWyP,UAAU1nB,IAAI,uCACzBsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,WAgCJ,OA/BAA,YAAa,WACX,MAA8D,KAAvDxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,cAE/CwX,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASxc,MACrC,MAAKA,OAGD0tB,cACFvhB,IAAIO,KAAK,eAAe2H,SAAS,YAE/BrU,KAAK+uB,YACP5iB,IAAIO,KAAK,eAAewH,YAAY,aAC7B/H,IAAIO,KAAK,iBAAiB2H,SAAS,eAE1ClI,IAAIO,KAAK,eAAe2H,SAAS,aAC1BlI,IAAIO,KAAK,iBAAiBwH,YAAY,eAX/C,SAcF/H,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OAEtC,MADAA,OAAM2Q,iBACCnT,WAAW2V,WAAW,QAASP,OAAOkN,eAE/C7P,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OACxC,GAAIue,gBAAgBI,MAMpB,OALA3e,OAAM2Q,iBACN4N,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,kBAAkBtQ,QAC9Dye,OAAS,WACP,MAAOJ,gBAAeI,UAEjBnhB,WAAW2V,WAAW,UAAWP,OAAOkN,YAAanB,UAEvD3O,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,UACT7Q,SAAUA,WAIdzd,OAAO6d,UAAU,iBAAkB,aAAc,aAAc,cAAeqe,uBAE9EI,sBAAwB,SAAShxB,KAAMoV,MAAO9Y,SAAUjC,UAAWunB,WACjE,GAAIpP,MAAML,QAkCV,OAjCAA,UAAWyP,UAAU1nB,IAAI,wCACzBsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,MAAK1C,QAAO4iB,gBAGP5iB,OAAO6iB,eAGZ9iB,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OACzC,GAAIgzB,UAAUj9B,KAGd,OAFAA,OAAQma,OAAO6iB,cACfC,SAAWpgB,OAAOkN,YAAYJ,QACvB7lB,SAASsmB,YAAYpqB,MAAOi9B,UAAUx9B,KAAK,SAAUoE,OAC1D,MAAO,UAASwmB,aACd,GAAI3qB,QAQJ,OAPAA,SAAUkd,MAAMvE,OAAOwE,OAAOkN,aAC9BrqB,QAAQD,KAAK,WACX,GAAI+C,IAGJ,OAFA6nB,aAAYzB,SACZpmB,IAAMyX,OAAOlL,MAAMoL,OAAO4iB,iBACnBl7B,UAAU9C,KAAKyD,OAEjB9C,QAAQD,KAAK,KAAM,WAExB,MADA4qB,aAAYzB,QAAO,GACZ9kB,SAASG,OAAO,aAG1B3H,SAEE2d,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,SAxBJ1T,KAAKgU,MAAM,gEAHXhU,KAAKgU,MAAM,sEA+BpBxB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,UACT7Q,SAAUA,WAIdzd,OAAO6d,UAAU,kBAAmB,OAAQ,UAAW,aAAc,cAAe,cAAeye,wBAEnGE,yBAA2B,SAASjxB,WAAYmV,MAAO9Y,SAAUskB,SAAUmT,QAASnS,WAClF,GAAIpP,MAAML,QA2EV,OA1EAA,UAAWyP,UAAU1nB,IAAI,2CACzBsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY7R,IAoEhB,OAnEA3P,QAAO7R,IAAI,iBAAkB,WAE3B,MADA8R,KAAIO,KAAK,iBAAiByiB,OACnBhjB,IAAIO,KAAK,iBAAiBiM,SAEnC+U,WAAa,WACX,MAAsE,KAA/DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ0X,OAAOyhB,eAEtDhS,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS8lB,SACd,GAAInB,gBAAgB9oB,OAgBpB,OAfAmd,QAAOkN,YAAYJ,QAAUA,QAC7BnB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,oBAAoBtQ,QAChEzK,QAAUkd,MAAMgN,KAAK/M,OAAOkN,aAC5BrqB,QAAQD,KAAK,WAIX,MAHAqE,UAASG,OAAO,WAChBwD,WAAW2V,WAAW,kBACtBlD,IAAIO,KAAK,iBAAiByiB,OACnBhjB,IAAIO,KAAK,iBAAiBiM,SAEnChnB,QAAQD,KAAK,KAAM,WACjB,MAAOqE,UAASG,OAAO,WAEzBvE,QAAQ,WAAW,WACjB,MAAO8oB,gBAAeI,WAEjBlpB,UAERpD,OACH4d,IAAIijB,MAAM,WACR,MAAK1B,eAGLvhB,IAAIO,KAAK,iBAAiBiM,OAC1BxM,IAAIO,KAAK,iBAAiByiB,OACnBhjB,IAAIO,KAAK,SAASoO,SALzB,SAOF3O,IAAIc,GAAG,QAAS,QAAS,SAAS1R,GAChC,GAAIqgB,QAGJ,OAFArgB,GAAEsR,iBACF+O,QAAU1P,OAAOlM,KAAK4b,QACfC,KAAKD,WAEdzP,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,GAAI0f,QACJ,OAAsB,MAAlB1f,MAAM6f,SACRH,QAAU1P,OAAOlM,KAAK4b,QACfC,KAAKD,UACe,KAAlB1f,MAAM6f,SACf7P,OAAO1J,OAAO,SAAU1M,OACtB,MAAO,YACL,MAAOgZ,QAAOkN,YAAYiS,WAE3B1/B,OACH4d,IAAIO,KAAK,iBAAiByiB,OACnBhjB,IAAIO,KAAK,iBAAiBiM,QAP5B,SAUTxM,IAAIO,KAAK,iBAAiByiB,OAC1BjjB,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAAS3f,OACrC,MAAKA,QAGLqP,OAAOlM,KAAOnD,MACT6wB,aAAL,OACSvhB,IAAIO,KAAK,uBAAuBpC,UALzC,SAQK4B,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,UACT7Q,SAAUA,WAIdzd,OAAO6d,UAAU,qBAAsB,aAAc,UAAW,aAAc,aAAc,YAAa,cAAe2e,2BAExHD,6BAA+B,SAAShxB,WAAYmV,MAAO9Y,SAAUqlB,SAAUf,SAAUgV,cAAe7B,QAASnS,WAC/G,GAAIpP,MAAMqjB,yBAA0BC,yBAA0B3jB,QA8F9D,OA7FAA,UAAWyP,UAAU1nB,IAAI,+CACzB27B,yBAA2BjU,UAAU1nB,IAAI,6DACzC47B,yBAA2BlU,UAAU1nB,IAAI,6DACzCsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY7R,IAqFhB,OApFA1P,KAAIO,KAAK,qBAAqByiB,OAC9BhjB,IAAIO,KAAK,2BAA2ByiB,OACpCjjB,OAAO7R,IAAI,iBAAkB,WAE3B,MADA8R,KAAIO,KAAK,qBAAqByiB,OACvBhjB,IAAIO,KAAK,qBAAqBiM,SAEvC+U,WAAa,WACX,MAAsE,KAA/DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ0X,OAAOyhB,eAEtDhS,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS5D,aACd,GAAIuoB,gBAAgB9oB,OAapB,OAZAmd,QAAOkN,YAAY9pB,YAAcA,YACjCuoB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,oBAAoBtQ,QAChEzK,QAAUkd,MAAMgN,KAAK/M,OAAOkN,aAC5BrqB,QAAQD,KAAK,WAIX,MAHAqE,UAASG,OAAO,WAChBwD,WAAW2V,WAAW,kBACtBlD,IAAIO,KAAK,qBAAqByiB,OACvBhjB,IAAIO,KAAK,qBAAqBiM,SAEvChnB,QAAQD,KAAK,KAAM,WACjB,MAAOqE,UAASG,OAAO,WAElBvE,QAAQ,WAAW,WACxB,MAAO8oB,gBAAeI,aAGzBtsB,OACH4d,IAAIc,GAAG,UAAW,oBAAqB,SAAS/Q,OAC9C,GAAIwe,OAEJ,OADAA,QAASvpB,QAAQwE,QAAQuG,MAAMwe,SAC1BgT,cAGDhT,OAAO8U,GAAG,MAGVH,cAAc17B,MAAMoH,OANxB,QASAoR,IAAIO,KAAK,qBAAqBiM,OAC9BxM,IAAIO,KAAK,qBAAqByiB,OACvBhjB,IAAIO,KAAK,YAAYoO,WAE9B3O,IAAIc,GAAG,QAAS,IAAK,SAAS/Q,OAC5B,GAAIuzB,MAAM/U,MAGV,OAFAA,QAASvpB,QAAQwE,QAAQuG,MAAMwe,QAC/B+U,KAAO/U,OAAO7Z,KAAK,QACO,IAAtB4uB,KAAK/6B,QAAQ,MACfwH,MAAM2Q,iBACC2J,EAAE,QAAQkZ,UAAUlZ,EAAEiZ,MAAME,SAASC,MAF9C,SAKFzjB,IAAIc,GAAG,QAAS,QAAS,SAAS1R,GAChC,GAAIrJ,YAGJ,OAFAqJ,GAAEsR,iBACF3a,YAAcga,OAAOlM,KAAK9N,YACnB2pB,KAAK3pB,eAEdia,IAAIc,GAAG,UAAW,WAAY,SAAS/Q,OACrC,MAAsB,MAAlBA,MAAM6f,SACR7P,OAAO1J,OAAO,SAAU1M,OACtB,MAAO,YACL,MAAOoW,QAAOlM,KAAKiuB,WAEpB1/B,OACH4d,IAAIO,KAAK,qBAAqByiB,OACvBhjB,IAAIO,KAAK,qBAAqBiM,QAPvC,SAUFzM,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAAS3f,OACrC,MAAKA,QAGLqP,OAAOlM,KAAOnD,MACV6wB,cACFvhB,IAAIO,KAAK,2BAA2BiM,OACpCxM,IAAIO,KAAK,iCAAiC2H,SAAS,YAC5CnI,OAAO2jB,iBAAmBzU,SAASkU,0BAA0BpjB,SAE7DA,OAAO2jB,iBAAmBzU,SAASmU,0BAA0BrjB,SATtE,SAYKA,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,UACT7Q,SAAUA,WAIdzd,OAAO6d,UAAU,yBAA0B,aAAc,UAAW,aAAc,WAAY,aAAc,gBAAiB,YAAa,cAAe0e,+BAEzJE,gBAAkB,SAASkF,mBAAoBC,wBAC7C,GAAI9jB,KAsDJ,OArDAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAIkhB,cAAcC,UAqBlB,OApBAD,cAAe,WACb,MAAO7jB,KAAIO,KAAK,YAAY8iB,GAAG,aAEjCS,WAAa,SAASC,KAAMn4B,MAC1B,MAAK+3B,oBAAmBhjB,SAASojB,MAG1BH,uBAAuBI,cAAcrhB,OAAOkN,YAAYxlB,QAASsY,OAAOkN,YAAY1V,GAAIvO,KAAMm4B,MAAMx+B,KAAK,SAASwQ,QACvH,MAAI5T,OAAM2Q,QAAQiD,OAAOkuB,OAAO,OAAQ,UAC/B,KAAOluB,OAAOkuB,OAAO,OAAQ,SAAW,KAAOluB,OAAOkuB,OAAO,OAAQ,QAAU,IAE/E,IAAMluB,OAAOkuB,OAAO,OAAQ,SAAW,KAAOluB,OAAOkuB,OAAO,OAAQ,QAAU,MAPzF,QAWFjkB,IAAIc,GAAG,WAAY,SAAS1R,GAC1B,GAAI80B,SAEJ,OADAA,UAAWlkB,IAAIO,KAAK,YAAYoO,SACzB,IAEF3O,IAAIc,GAAG,OAAQ,SAAS1R,GAC7B,GAAI+0B,cAAcC,SAAUF,SAAUt4B,IAGtC,OAFAwD,GAAEi1B,kBACFj1B,EAAEsR,iBACEmjB,gBACFM,aAAe/0B,EAAE+0B,cAAiB/0B,EAAEk1B,eAAiBl1B,EAAEk1B,cAAcH,aACrED,SAAWlkB,IAAIO,KAAK,YACpB2jB,SAAShc,SAAS,eAClBtc,KAAO+W,OAAOkN,YAAmB,MACpB,gBAATjkB,KACFA,KAAO,KACW,UAATA,KACTA,KAAO,OACW,WAATA,KACTA,KAAO,QACW,SAATA,OACTA,KAAO,aAETw4B,SAAW3hC,EAAEC,IAAIyhC,aAAaI,MAAO,SAASR,MAC5C,MAAOD,YAAWC,KAAMn4B,QAEnB2D,QAAQkL,IAAI2pB,UAAU7+B,KAAK,SAASwQ,QAKzC,MAJAmuB,UAAWlkB,IAAIO,KAAK,YACpB8J,EAAEma,UACAC,YAAa1uB,OAAOhT,KAAK,OAEpBmhC,SAASnc,YAAY,kBAtBhC,WA4BFjI,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,qBAAsB,uBAAwB,2BAA4B4e,kBAE3FO,0BAA4B,WAC1B,GAAIlf,KAQJ,OAPAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4Q,GAEJ,OADAA,IAAK9Q,OAAOlL,MAAMoL,OAAOykB,oBAClBlyB,SAASuN,OAAQ,eAAgB,SAASga,cAC/C,MAAO/Z,KAAI2P,KAAKoK,aAAalJ,GAAG5oB,QAAQmN,UAI1C0K,KAAMA,OAIV9d,OAAO6d,UAAU,qBAAsBmf,2BAEvCF,4BAA8B,WAC5B,GAAIhf,KAQJ,OAPAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIuP,KAEJ,OADAA,MAAOzP,OAAOlL,MAAMoL,OAAO0kB,sBACpBnyB,SAASuN,OAAQ,iBAAkB,SAAS4Z,gBACjD,MAAO3Z,KAAI2P,KAAKgK,eAAenK,KAAKvnB,QAAQmN,UAI9C0K,KAAMA,OAIV9d,OAAO6d,UAAU,uBAAwBif,6BAEzCJ,4BAA8B,SAASxP,UAAW9pB,YAChD,GAAI0a,MAAML,QAkBV,OAjBAA,UAAWyP,UAAU1nB,IAAI,uDAAuD,GAChFsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQ,YAAa,SAAS3F,WAC5C,GAAI/K,KAAKwE,KAAM6d,MAWf,OAVA7d,MAAOkM,OAAOlL,MAAMoL,OAAO2kB,sBAC3Bv1B,KACE+F,KAAMhQ,WAAW0E,QAAQ,mCACzB6nB,OAAQ,IAAMrvB,OAAOyI,SAAW,uBAElC2mB,OAAStX,UAAUvG,KAAK4c,aACpBiB,SACFriB,IAAIsiB,OAASD,OAAOE,MACpBviB,IAAI+F,KAAOsc,OAAOG,mBAEb7R,IAAI2P,KAAKlQ,SAASpQ,UAI3ByQ,KAAMA,OAIV9d,OAAO6d,UAAU,wBAAyB,cAAe,aAAc6e,8BAEvEC,6BAA+B,WAC7B,GAAI7e,KAQJ,OAPAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4kB,MAEJ,OADAA,OAAQ9kB,OAAOlL,MAAMoL,OAAO6kB,uBACrBtyB,SAASuN,OAAQ,kBAAmB,SAAS0Z,iBAClD,MAAOzZ,KAAI2P,KAAK8J,gBAAgBoL,MAAM58B,QAAQmN,UAIhD0K,KAAMA,OAIV9d,OAAO6d,UAAU,wBAAyB8e,8BAE1CI,sBAAwB,WACtB,GAAIjf,KAmBJ,OAlBAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4H,OAaJ,OAZAA,QAAS,SAASkd,cAAeF,OAC/B,GAAIG,SAASp5B,IAIb,OAHAA,MAAOm5B,cAAcF,MAAMj5B,MAC3Bo5B,QAAUhlB,IAAIO,KAAK,UACnBykB,QAAQtE,IAAI,mBAAoB90B,KAAKq5B,OAC9BD,QAAQtwB,KAAK,QAAS9I,KAAKwJ,OAEpC5C,SAASuN,OAAQ,gBAAiB,SAASglB,eACzC,GAAIF,MAEJ,OADAA,OAAQ9kB,OAAOlL,MAAMoL,OAAOilB,gBACrBrd,OAAOkd,cAAeF,SAExB9kB,OAAOjL,OAAOmL,OAAOilB,eAAgB,SAASL,OACnD,MAAOhd,QAAO9H,OAAOglB,cAAeF,WAItC/kB,KAAMA,KACNpa,YAAa,iCAIjB1D,OAAO6d,UAAU,iBAAkBkf,uBAEnCH,0BAA4B,WAC1B,GAAI9e,KAmBJ,OAlBAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4H,OAaJ,OAZAA,QAAS,SAASiS,aAAc+K,OAC9B,GAAIG,SAASG,QAIb,OAHAA,UAAWrL,aAAa+K,MAAMM,UAC9BH,QAAUhlB,IAAIO,KAAK,UACnBykB,QAAQtE,IAAI,mBAAoByE,SAASF,OAClCD,QAAQtwB,KAAK,QAASywB,SAAS/vB,OAExC5C,SAASuN,OAAQ,eAAgB,SAAS+Z,cACxC,GAAI+K,MAEJ,OADAA,OAAQ9kB,OAAOlL,MAAMoL,OAAOmlB,oBACrBvd,OAAOiS,aAAc+K,SAEvB9kB,OAAOjL,OAAOmL,OAAOmlB,mBAAoB,SAASP,OACvD,MAAOhd,QAAO9H,OAAO+Z,aAAc+K,WAIrC/kB,KAAMA,KACNpa,YAAa,iCAIjB1D,OAAO6d,UAAU,qBAAsB+e,2BAEvCC,0BAA4B,WAC1B,GAAI/e,KAmBJ,OAlBAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4H,OAaJ,OAZAA,QAAS,SAASgS,aAAcgL,OAC9B,GAAIG,SAASK,QAIb,OAHAA,UAAWxL,aAAagL,MAAMQ,UAC9BL,QAAUhlB,IAAIO,KAAK,UACnBykB,QAAQtE,IAAI,mBAAoB2E,SAASJ,OAClCD,QAAQtwB,KAAK,QAAS2wB,SAASjwB,OAExC5C,SAASuN,OAAQ,eAAgB,SAAS8Z,cACxC,GAAIgL,MAEJ,OADAA,OAAQ9kB,OAAOlL,MAAMoL,OAAOqlB,oBACrBzd,OAAOgS,aAAcgL,SAEvB9kB,OAAOjL,OAAOmL,OAAOqlB,mBAAoB,SAAST,OACvD,MAAOhd,QAAO9H,OAAO8Z,aAAcgL,WAIrC/kB,KAAMA,KACNpa,YAAa,iCAIjB1D,OAAO6d,UAAU,qBAAsBgf,2BAEvCM,uBAAyB,SAASjQ,WAChC,GAAIpP,MAAM+H,OAAQpI,QAmBlB,OAlBAA,UAAWyP,UAAU1nB,IAAI,uCAAuC,GAChEqgB,OAAS,SAAS0d,GAAIhF,YACpB,MAAOgF,IAAG5V,KAAKlQ,UACb8gB,WAAYA,eAGhBzgB,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIzW,QAOJ,OANAA,SAAUxE,QAAQwE,QAAQwW,KAC1BD,OAAOjL,OAAOmL,OAAOulB,cAAe,SAASjF,YAG3C,MAFAA,YAAa99B,EAAEgK,KAAK,EAAG8zB,aACvBA,WAAa99B,EAAE+J,KAAK,IAAK+zB,aAClB1Y,OAAO7H,IAAKugB,cAEdxgB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB,cAAesf,yBAElDD,qBAAuB,SAAS95B,YAC9B,GAAI0a,KASJ,OARAA,MAAO,SAASC,OAAQC,IAAKC,QAI3B,MAHAA,QAAOmI,SAAS,kBAAmB,SAASqd,iBAC1C,MAAO1lB,QAAO8Y,YAAc4M,kBAEvB1lB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNpa,YAAa,oCACb+O,OACEskB,YAAa,kBAKnB/2B,OAAO6d,UAAU,eAAgB,aAAcqf,wBAE9Cz5B,KAAKrD,MA2BR,WACE,GAAIsjC,gBAAgBC,iBAAkBpzB,YAAaE,cAAeC,SAAU1Q,OAAQG,MAAOoR,QACzFtO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEboR,QAAUnR,KAAKD,MAAMoR,QAErBd,cAAgBrQ,KAAKD,MAAMsQ,cAE3BC,SAAWtQ,KAAKD,MAAMuQ,SAEtBH,YAAcnQ,KAAKD,MAAMoQ,YAEzBozB,kBACElkB,SACE3b,MAAO,kBACP0b,QAAS,sBAEXF,OACExb,MAAO,uBACP0b,QAAS,6BAEXokB,eACE9/B,MAAO,uBACP0b,QAAS,8BAIbkkB,eAAiB,SAAU5zB,YAKzB,QAAS4zB,gBAAevzB,EAAG0zB,gBAAiB5L,QAASnd,WACnD1a,KAAK+P,EAAIA,EACT/P,KAAKyjC,gBAAkBA,gBACvBzjC,KAAK63B,QAAUA,QACf73B,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MAsQd,MA/QA6C,QAAOygC,eAAgB5zB,YAEvB4zB,eAAelpB,SAAW,KAAM,kBAAmB,aAAc,cAUjEkpB,eAAep0B,UAAU0xB,KAAO,SAASuC,IACvC,MAAIA,KACFnjC,KAAKyjC,gBAAgBxZ,MAAMkZ,IACpBA,GAAGvkB,IAAI,oBAFhB,QAMF0kB,eAAep0B,UAAUoxB,IAAM,SAAS58B,MAAOi9B,SAAUvhB,QAASskB,kBAChE,GAAIxM,SAASiM,EAoCb,OAnCwB,OAApBO,mBACFA,iBAAmB,yBAErBxM,QAAUl3B,KAAK+P,EAAE7M,QACjBigC,GAAKvgC,QAAQwE,QAAQs8B,kBACrBP,GAAGhlB,KAAK,UAAU5K,KAAK7P,OACvBy/B,GAAGhlB,KAAK,aAAa5K,KAAKotB,UAC1BwC,GAAGhlB,KAAK,YAAY5K,KAAK6L,SACzB+jB,GAAGzkB,GAAG,uBAAwB,gBAAiBpO,SAAS,IAAM,SAAU/I,OACtE,MAAO,UAASoG,OACd,GAAIue,gBAAgBC,MAIpB,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B+D,eAAiB3kB,MAAMswB,UAAU1L,OAAOA,QAAQte,QACzCqpB,QAAQv0B,SACb2pB,OAAQ,SAASqX,IAKf,MAJU,OAANA,KACFA,IAAK,GAEPzX,eAAeI,SACXqX,GACKp8B,MAAMq5B,KAAKuC,IADpB,YAMLnjC,QACHmjC,GAAGzkB,GAAG,uBAAwB,cAAe,SAAUnX,OACrD,MAAO,UAASoG,OAGd,MAFAA,OAAM2Q,iBACN4Y,QAAQ5wB,SACDiB,MAAMq5B,KAAKuC,MAEnBnjC,OACHA,KAAKyjC,gBAAgB3b,KAAKqb,IACnBjM,QAAQ9zB,SAGjBkgC,eAAep0B,UAAU4e,YAAc,SAASpqB,MAAO0b,SACrD,MAAOpf,MAAKsgC,IAAI58B,MAAO1D,KAAK0a,UAAUhT,QAAQ,2BAA4B0X,UAG5EkkB,eAAep0B,UAAU00B,UAAY,SAASlgC,MAAOi9B,SAAUkD,QAASC,YAAaC,QAASL,kBAC5F,GAAIM,cAAc9M,QAASiM,EAoD3B,OAnDwB,OAApBO,mBACFA,iBAAmB,wBAErBxM,QAAUl3B,KAAK+P,EAAE7M,QACjBigC,GAAKvgC,QAAQwE,QAAQs8B,kBACrBP,GAAGhlB,KAAK,UAAU5K,KAAK7P,OACvBy/B,GAAGhlB,KAAK,aAAa5K,KAAKotB,UACtBmD,YACFX,GAAGhlB,KAAK,gBAAgB5K,KAAKuwB,aAE7BX,GAAGhlB,KAAK,gBAAgBpC,SAEtBgoB,QACFZ,GAAGhlB,KAAK,YAAY5K,KAAKwwB,SAEzBZ,GAAGhlB,KAAK,YAAYpC,SAEtBioB,aAAeb,GAAGhlB,KAAK,YACvB6lB,aAAazW,KAAK,IAClBltB,EAAE4I,KAAK46B,QAAS,SAASv1B,MAAOU,KAE9B,MADAV,OAAQjO,EAAEggB,OAAO/R,OACV01B,aAAa5b,OAAOxlB,QAAQwE,QAAQ,kBAAoB4H,IAAM,KAAOV,MAAQ,gBAEtF60B,GAAGzkB,GAAG,uBAAwB,iBAAkBpO,SAAS,IAAM,SAAU/I,OACvE,MAAO,UAASoG,OACd,GAAIue,gBAAgBC,MAIpB,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B+D,eAAiB3kB,MAAMswB,UAAU1L,OAAOA,QAAQte,QACzCqpB,QAAQv0B,SACbshC,SAAUD,aAAah4B,MACvBsgB,OAAQ,SAASqX,IAKf,MAJU,OAANA,KACFA,IAAK,GAEPzX,eAAeI,SACXqX,GACKp8B,MAAMq5B,KAAKuC,IADpB,YAMLnjC,QACHmjC,GAAGzkB,GAAG,uBAAwB,cAAe,SAAUnX,OACrD,MAAO,UAASoG,OAGd,MAFAA,OAAM2Q,iBACN4Y,QAAQ5wB,SACDiB,MAAMq5B,KAAKuC,MAEnBnjC,OACHA,KAAKyjC,gBAAgB3b,KAAKqb,IACnBjM,QAAQ9zB,SAGjBkgC,eAAep0B,UAAUgQ,MAAQ,SAASE,SACxC,GAAI8X,SAASiM,EAmBb,OAlBAjM,SAAUl3B,KAAK+P,EAAE7M,QACjBigC,GAAKvgC,QAAQwE,QAAQ,2BACrB+7B,GAAGhlB,KAAK,UAAUoP,KAAKnO,SACvB+jB,GAAGzkB,GAAG,uBAAwB,gBAAiB,SAAUnX,OACvD,MAAO,UAASoG,OAGd,MAFAA,OAAM2Q,iBACN4Y,QAAQv0B,UACD4E,MAAMq5B,KAAKuC,MAEnBnjC,OACHmjC,GAAGzkB,GAAG,uBAAwB,SAAU,SAAUnX,OAChD,MAAO,UAASoG,OAGd,MAFAA,OAAM2Q,iBACN4Y,QAAQv0B,UACD4E,MAAMq5B,KAAKuC,MAEnBnjC,OACHA,KAAKyjC,gBAAgB3b,KAAKqb,IACnBjM,QAAQ9zB,SAGjBkgC,eAAep0B,UAAUmQ,QAAU,SAAS3b,MAAO0b,QAAS8kB,MAC1D,GAAIhN,SAASiN,YAAahB,GAAIiB,MA0C9B,OAzCAlN,SAAUl3B,KAAK+P,EAAE7M,QACjBigC,GAAKvgC,QAAQwE,QAAQ,6BACrB+7B,GAAGhlB,KAAK,OAAOpC,SACfonB,GAAGhlB,KAAK,OAAOpC,SACXmoB,OACgB,QAAdA,KAAK16B,KACP26B,YAAclc,EAAE,SAASnC,SAAS,WAAWxT,KAAK,MAAO4xB,KAAKlxB,MACvC,QAAdkxB,KAAK16B,OACd46B,OAASnJ,SAASoJ,gBAAgB,6BAA8B,OAChED,OAAOE,eAAe,+BAAgC,OAAQ,IAAMJ,KAAKlxB,MACzEmxB,YAAclJ,SAASoJ,gBAAgB,6BAA8B,OACrEF,YAAYI,UAAU/d,IAAI,QAC1B2d,YAAYI,UAAU/d,IAAI,WAC1B2d,YAAYI,UAAU/d,IAAI0d,KAAKlxB,MAC/BmxB,YAAYK,YAAYJ,SAEtBD,aACFhB,GAAGhlB,KAAK,WAAWsmB,QAAQN,cAG3BzgC,OACFy/B,GAAGhlB,KAAK,UAAUoP,KAAK7pB,OAErB0b,SACF+jB,GAAGhlB,KAAK,YAAYoP,KAAKnO,SAE3B+jB,GAAGzkB,GAAG,uBAAwB,gBAAiB,SAAUnX,OACvD,MAAO,UAASoG,OAGd,MAFAA,OAAM2Q,iBACN4Y,QAAQv0B,UACD4E,MAAMq5B,KAAKuC,MAEnBnjC,OACHmjC,GAAGzkB,GAAG,uBAAwB,SAAU,SAAUnX,OAChD,MAAO,UAASoG,OAGd,MAFAA,OAAM2Q,iBACN4Y,QAAQv0B,UACD4E,MAAMq5B,KAAKuC,MAEnBnjC,OACHA,KAAKyjC,gBAAgB3b,KAAKqb,IACnBjM,QAAQ9zB,SAGjBkgC,eAAep0B,UAAUzL,OAAS,SAASC,MAAO0b,SAChD,GAAI+jB,GAQJ,OAPAA,IAAKvgC,QAAQwE,QAAQ,6BACjB1D,OACFy/B,GAAGhlB,KAAK,UAAUoP,KAAK7pB,OAErB0b,SACF+jB,GAAGhlB,KAAK,YAAYoP,KAAKnO,UAGzBvR,MAAO,SAAUtG,OACf,MAAO,YACL,MAAOA,OAAMk8B,gBAAgB3b,KAAKqb,MAEnCnjC,MACH0kC,KAAM,SAAUn9B,OACd,MAAO,YACL,MAAOA,OAAMk8B,gBAAgBxZ,MAAMkZ,MAEpCnjC,MACHgkB,OAAQ,SAAUzc,OAChB,MAAO,UAAS1B,OAAQnC,MAAO0b,QAASulB,SAOtC,MANIjhC,QACFy/B,GAAGhlB,KAAK,UAAUoP,KAAK7pB,OAErB0b,SACF+jB,GAAGhlB,KAAK,YAAYoP,KAAKnO,SAEvBulB,SACFxB,GAAGhlB,KAAK,SAAS2H,SAAS,UAC1Bqd,GAAGhlB,KAAK,yBAAyBwH,YAAY,UAC7Cwd,GAAGhlB,KAAK,gCAAgClS,MAAM04B,QAAU,KACjDxB,GAAGhlB,KAAK,gCAAgCoP,KAAKoX,QAAU,KAAKrG,IAAI,OAASqG,QAAU,EAAK,OAE/FxB,GAAGhlB,KAAK,SAASwH,YAAY,UACtBwd,GAAGhlB,KAAK,yBAAyB2H,SAAS,aAGpD9lB,QAIPsjC,eAAep0B,UAAUvH,OAAS,SAAS6B,KAAM4V,QAAS1b,MAAOqjB,MAC/D,GAAI6d,MAAMzB,GAAI0B,QAGd,OAFAA,UAAW,yBAA2Br7B,KACtC25B,GAAKvgC,QAAQwE,QAAQy9B,UACjB1B,GAAG9E,SAAS,UAAhB,QAGI36B,MACFy/B,GAAGhlB,KAAK,MAAMoP,KAAK7pB,OAEnBy/B,GAAGhlB,KAAK,MAAMoP,KAAKvtB,KAAK0a,UAAUhT,QAAQ67B,iBAAiB/5B,MAAM9F,QAE/D0b,QACF+jB,GAAGhlB,KAAK,KAAKoP,KAAKnO,SAElB+jB,GAAGhlB,KAAK,KAAKoP,KAAKvtB,KAAK0a,UAAUhT,QAAQ67B,iBAAiB/5B,MAAM4V,UAElEwlB,KAAOhiC,QAAQwE,QAAQ,QACvBw9B,KAAKzmB,KAAK,6CAA6CwH,YAAY,UAAUG,SAAS,YACtF8e,KAAKzmB,KAAK0mB,UAAUlf,YAAY,YAAYG,SAAS,UACjD9lB,KAAK8kC,MACPz0B,cAAcrQ,KAAK8kC,MAEhB/d,OACHA,KAAgB,UAATvd,MAA6B,gBAATA,KAAyB,KAAO,MAE7DxJ,KAAK8kC,KAAO3zB,QAAQ4V,KAAM,SAAUxf,OAClC,MAAO,YAIL,MAHAq9B,MAAKzmB,KAAK0mB,UAAUlf,YAAY,UAAUG,SAAS,YAAYif,IAAI,eAAgB,WACjF,MAAO9c,GAAEjoB,MAAM2lB,YAAY,oBAEfpe,OAAMu9B,OAErB9kC,OACImjC,GAAGzkB,GAAG,QAAS,sBAAuB,SAAUnX,OACrD,MAAO,UAASoG,OACd,MAAOi3B,MAAKzmB,KAAK0mB,UAAUlf,YAAY,UAAUG,SAAS,cAE3D9lB,SAGEsjC,gBAENvjC,MAAMkQ,SAETrQ,OAASgD,QAAQhD,OAAO,eAExBA,OAAOsd,QAAQ,aAAcomB,iBAE5BjgC,KAAKrD,MA2BR,WACE,GAAIglC,+BAA+BC,iCAAkCC,gCAAiCC,UAAWC,eAAgBC,UAAWC,aAAcC,SAAUp1B,YAAaC,SAAUE,SAAUnQ,aAAcP,OAAQG,MACzN8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEboQ,YAAcnQ,KAAKD,MAAMoQ,YAEzBC,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtBnQ,aAAeJ,MAAMI,aAErBP,OAASgD,QAAQhD,OAAO,eAExBylC,UAAY,OAEZD,eAAiB,YAEjBD,UAAY,OAEZI,SAAW,MAEXD,eAEIt2B,IAAKq2B,UACLryB,KAAM,wCAENhE,IAAKo2B,eACLpyB,KAAM,yCAENhE,IAAKm2B,UACLnyB,KAAM,wCAENhE,IAAKu2B,SACLvyB,KAAM,uCAIViyB,iCAAmC,SAAUv1B,YAK3C,QAASu1B,kCAAiC5yB,MAAOgI,UAAWkc,KAAMje,GAAIktB,QAASz1B,GAC7E/P,KAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKwlC,QAAUA,QACfxlC,KAAK+P,EAAIA,EACTI,YAAYnQ,MACZA,KAAKwJ,KAAO,KACZxJ,KAAKylC,SAAW,KAChBzlC,KAAKyY,UAAY,KACjBzY,KAAK0lC,oBACL1lC,KAAK2lC,uBAAyB,KAkDhC,MAlEA9iC,QAAOoiC,iCAAkCv1B,YAEzCu1B,iCAAiC7qB,SAAW,SAAU,aAAc,UAAW,eAAgB,aAAc,MAiB7G6qB,iCAAiC/1B,UAAUxB,WAAa,SAASlE,KAAMi8B,UAIrE,MAHAzlC,MAAKiI,QAAUjI,KAAKqS,MAAMpK,QAC1BjI,KAAKwJ,KAAOA,KACZxJ,KAAKylC,SAAWA,SACTzlC,KAAKyY,UAAYzY,KAAKqS,MAAMoG,WAGrCwsB,iCAAiC/1B,UAAU02B,2BAA6B,WACtE,MAAK5lC,MAAKylC,SAGHzlC,KAAKsY,GAAGqtB,uBAAuB3lC,KAAKwJ,MAAMpE,IAAIpF,KAAKylC,UAAUtiC,KAAK,SAAUoE,OACjF,MAAO,UAASo+B,wBAGd,MAFAp+B,OAAMm+B,iBAAmBn+B,MAAMU,QAAQV,MAAMiC,KAAO,sBACpDjC,MAAMo+B,uBAAyBA,uBACxBA,yBAER3lC,OARMA,KAAK2lC,wBAWhBV,iCAAiC/1B,UAAU22B,kBAAoB,SAASC,WACtE,GAAIC,eAGJ,OAFAA,gBAAiB1lC,EAAEic,MAAMwpB,WAAW,GACpCC,eAAez3B,MAAQtO,KAAK2lC,uBAAuBK,kBAAkBF,UAAU/tB,IACxEguB,gBAGTd,iCAAiC/1B,UAAU+2B,qBAAuB,SAASF,gBACzE,GAAIG,kBAAkBnoB,QAASC,SAgB/B,OAfAA,WAAY,SAAUzW,OACpB,MAAO,YACL,MAAOA,OAAM8S,UAAUyG,WAAW,mCAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,UAAS5B,UAEd,MADA4B,OAAMi+B,QAAQ79B,OAAO,SACdJ,MAAMwI,EAAEzJ,WAEhBtG,MACHkmC,iBAAmB7lC,EAAEic,MAAMtc,KAAK2lC,uBAAuBK,mBAAmB,GAC1EE,iBAAiBH,eAAehuB,IAAMguB,eAAez3B,MACrDtO,KAAK2lC,uBAAuBK,kBAAoBE,iBAChDlmC,KAAK2lC,uBAAuB5tB,GAAK/X,KAAKylC,SAC/BzlC,KAAKu2B,KAAKjJ,KAAKttB,KAAK2lC,wBAAwBxiC,KAAK6a,UAAWD,UAG9DknB,kCAENllC,MAAMmQ,YAETg1B,gCAAkC,SAASiB,WAAYC,UACrD,GAAIC,eAAe3oB,KAAML,SAAUC,UAsCnC,OArCAD,UAAW8oB,WAAW/gC,IAAI,mDAAmD,GAC7EihC,cAAgB,SAAS78B,MACvB,MAAOrJ,eAAc,8BAA+BqJ,QAEtDkU,KAAO,SAASC,OAAQC,IAAKC,OAAQyoB,QACnC,GAAIpX,OAAO3O,MAoBX,OAnBA2O,OAAQoX,OAAO,GACf/lB,OAAS+lB,OAAO,GAChBl2B,SAASuN,OAAQE,OAAOoQ,QAAS,SAAS3f,OAExC,MADA4gB,OAAMxhB,WAAWmQ,OAAOrU,KAAM8E,MAAMyJ,IAC7BmX,MAAM0W,+BAEfhoB,IAAIc,GAAG,QAAS,8BAA+B,WAC7C,GAAI6nB,WAAWC,IAIf,OAHAA,MAAOH,cAAcxoB,OAAOrU,MAC5B+8B,WAAcH,SAAShhC,IAAIohC,MAC3BJ,SAASvqB,IAAI2qB,KAAMD,WACfA,WACF3oB,IAAIO,KAAK,+BAA+BwH,YAAY,QAC7C/H,IAAIO,KAAK,uBAAuBwH,YAAY,UAEnD/H,IAAIO,KAAK,+BAA+B2H,SAAS,QAC1ClI,IAAIO,KAAK,uBAAuB2H,SAAS,WAG7CnI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,SAGftB,WAAa,SAASM,IAAKC,QACzB,GAAI0oB,UAEJ,OADAA,WAAYH,SAAShhC,IAAIihC,cAAcxoB,OAAOrU,SAAU,EACjD6T,UACLopB,oBAAqB5oB,OAAO4oB,oBAC5BF,UAAWA,cAIbrY,SAAU,2BAA4B,WACtC3qB,WAAY0hC,iCACZzhC,aAAc,OACdga,SAAU,KACVnL,OAAO,EACPqL,KAAMA,KACNL,SAAUC,aAId1d,OAAO6d,UAAU,4BAA6B,cAAe,aAAc,aAAcynB,kCAEzFF,8BAAgC,SAASlY,UAAWgU,cAAejU,SAAU7pB,WAAYy6B,yBACvF,GAAI/f,MAAML,SAAU0P,YAuHpB,OAtHA1P,UAAWyP,UAAU1nB,IAAI,iDAAiD,GAC1E2nB,aAAeD,UAAU1nB,IAAI,sDAAsD,GACnFsY,KAAO,SAASC,OAAQC,IAAKC,OAAQqR,OACnC,GAAI6W,gBAAgB5G,WAAY1yB,WAAYgZ,OAAQihB,8BAA+BzoB,MA+GnF,OA9GAxR,YAAazJ,WAAW0E,QAAQ,4BAChC+d,OAAS,SAASsgB,eAAgBY,MAChC,GAAI15B,KAAK0wB,iBAAkBiJ,SAAUrZ,KAAMjf,KAkB3C,OAjBY,OAARq4B,OACFA,MAAO,GAGPr4B,MADEy3B,eAAev8B,OAAS27B,WAAaY,eAAez3B,MAC9CjF,OAAO08B,eAAez3B,MAAO,cAAc8W,OAAO3Y,YAElDs5B,eAAez3B,MAEzBs4B,SAAWzH,aACXlyB,KACE8K,GAAIguB,eAAehuB,GACnB/E,KAAM+yB,eAAe/yB,KACrBrP,YAAaoiC,eAAepiC,YAC5B2K,MAAOA,MACP6wB,WAAYyH,SACZp9B,KAAMu8B,eAAev8B,OAEnBo9B,WAAaD,MAASr4B,OAyBxBif,KAAOlQ,SAASpQ,KAChBsgB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,QA1BhBA,KAAOR,aAAa9f,KACpBsgB,KAAOV,SAASU,MAAM5P,QACtBC,IAAI2P,KAAKA,MACLwY,eAAev8B,OAAS27B,WAC1BxH,iBAAmBF,wBAAwBr4B,MAC3C/E,EAAEu9B,MAAMD,kBACNE,MAAOjgB,IAAIO,KAAK,qBAAqB,GACrC2f,SAAU,SAAUv2B,OAClB,MAAO,UAAS1G,MACd,GAAI68B,aACJ,OAAOA,cAAe78B,OAEvBb,MACH4pB,OAAQ,SAAUriB,OAChB,MAAO,YACL,MAA4B,mBAAjBm2B,eAAiD,OAAjBA,aAClC9f,IAAImgB,OAAOC,QAAQN,cAD5B,SAID19B,QAEE4d,IAAImgB,OAAS,GAAIE,SAAQN,mBAlBlC,SA0BJwB,WAAa,WACX,GAAIrO,aAAa2V,mBAGjB,OAFA3V,aAAcnT,OAAO1V,QAAQqe,eAC7BmgB,oBAAsB5oB,OAAO4oB,oBACtB3V,YAAY3qB,QAAQsgC,qBAAuB,IAEpDxoB,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAImQ,MAAM7I,KAGV,OAFAtH,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAGVtJ,MAAQ2I,IAAIO,KAAK,6CACjB4nB,eAAez3B,MAAQ2G,MAAMjJ,MACzB+5B,eAAev8B,OAAS27B,WACtB97B,OAAO08B,eAAez3B,MAAO7B,YAAYC,YAC3Cq5B,eAAez3B,MAAQjF,OAAO08B,eAAez3B,MAAO7B,YAAY2Y,OAAO,eAGpEzH,OAAO1J,OAAO,WACnB,MAAOib,OAAM+W,qBAAqBF,gBAAgB5iC,KAAK,WACrD,MAAOsiB,QAAOsgB,gBAAgB,QAZlC,SAgBD/lC,OACH0mC,8BAAgC,WAC9B,MAAO9oB,KAAIO,KAAK,+CAA+CoO,QAAQsB,UAEzEkY,eAAiBpoB,OAAOlL,MAAMoL,OAAOgpB,wBACrCphB,OAAOsgB,gBACPnoB,IAAIc,GAAG,QAAS,6BAA8B,SAAS/Q,OACrD,MAAOA,OAAMs0B,oBAEfrkB,IAAIc,GAAG,QAAS,sBAAuB,WACrC,MAAKygB,gBAGD2B,cAAc17B,MAAMoH,QAGxBiZ,OAAOsgB,gBAAgB,GAChBW,iCAPP,SASF9oB,IAAIc,GAAG,QAAS,uBAAwB,SAAS/Q,OAG/C,MAFAA,OAAM2Q,iBACNmH,OAAOsgB,gBAAgB,GAChBW,kCAET9oB,IAAIc,GAAG,QAAS,4CAA6C,SAAS/Q,OACpE,MAAsB,MAAlBA,MAAM6f,SAA+C,aAA7B7f,MAAMwa,cAAc3e,KACvCyU,OAAOtQ,OACa,KAAlBA,MAAM6f,QACR/H,OAAOsgB,gBAAgB,GADzB,SAITnoB,IAAIc,GAAG,SAAU,OAAQT,QACzBL,IAAIc,GAAG,QAAS,uBAAwBT,QACjCN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNwQ,QAAS;AACT1Q,SAAU,OAId5d,OAAO6d,UAAU,0BAA2B,cAAe,gBAAiB,WAAY,aAAc,4BAA6BunB,iCAElI3hC,KAAKrD,MA2BR,WACE,GAAI8mC,oBAAoBC,wBAAyBC,sBAAuBv2B,QAAS7Q,OAAQG,MACvFsP,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,YAElE1P,OAAQC,KAAKD,MAEb0Q,QAAUzQ,KAAKD,MAAM0Q,QAErB7Q,OAASgD,QAAQhD,OAAO,eAExBmnC,wBAA0B,SAASE,sBAAuBrb,WAAYtL,MAAOwM,UAAWD,UACtF,GAAInP,KA+BJ,OA9BAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QA0BnC,MAzBA5C,QAAOjL,OAAOmL,OAAOoQ,QAAS,SAASQ,IACrC,GAAIyY,kBACJ,OAAIzY,KACFyY,kBAAoBD,sBAAsB7a,OAAOxO,IAAK6Q,GAAI9Q,OAAO1V,SACjEi/B,kBAAkBC,uBAAyB,SAASC,OAAQC,SAC1D,MAAO1pB,QAAO1J,OAAO,WACnB,MAAOsM,QAAOif,cAAc/Q,OAGhCyY,kBAAkBzhB,OAAS,WACzB,GAAIxY,KAAKsgB,KAAM+Z,aAAcjqB,QAU7B,OATApQ,MACEyxB,YAAa1+B,KAAKunC,uBAClB9vB,MAAOzX,KAAKwnC,iBACZZ,SAAU5mC,KAAKm/B,YAEjBmI,aAAe,uDACfjqB,SAAWyP,UAAU1nB,IAAIkiC,cAAc,GACvC/Z,KAAOlQ,SAASpQ,KAChBsgB,KAAOV,SAASU,MAAM5P,QACf3d,KAAK4d,IAAI2P,KAAKA,OAEhB2Z,kBAAkBzhB,UApB3B,SAuBK9H,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,oBAAqB,wBAAyB,aAAc,UAAW,cAAe,WAAYspB,0BAEnHC,sBAAwB,SAASC,sBAAuBrb,WAAYtL,MAAO2e,QAASnS,UAAWD,UAC7F,GAAInP,KA+BJ,OA9BAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QA0BnC,MAzBA5C,QAAOjL,OAAOmL,OAAOoQ,QAAS,SAASQ,IACrC,GAAIyY,kBACJ,OAAIzY,KACFyY,kBAAoBD,sBAAsB7a,OAAOxO,IAAK6Q,GAAI9Q,OAAO1V,SACjEi/B,kBAAkBC,uBAAyB,SAASC,OAAQC,SAC1D,MAAOrnC,MAAKstB,KAAK8Z,OAAQC,SAASlkC,KAAK,WACrC,MAAOyoB,YAAW9K,WAAW,qBAGjComB,kBAAkBzhB,OAAS,WACzB,GAAIxY,KAAKsgB,KAAM+Z,aAAcjqB,QAU7B,OATApQ,MACEyxB,YAAa1+B,KAAKunC,uBAClB9vB,MAAOzX,KAAKwnC,iBACZZ,SAAU5mC,KAAKm/B,YAEjBmI,aAAe,uDACfjqB,SAAWyP,UAAU1nB,IAAIkiC,cAAc,GACvC/Z,KAAOlQ,SAASpQ,KAChBsgB,KAAOV,SAASU,MAAM5P,QACf3d,KAAK4d,IAAI2P,KAAKA,OAEhB2Z,kBAAkBzhB,UApB3B,SAuBK9H,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,kBAAmB,wBAAyB,aAAc,UAAW,YAAa,cAAe,WAAYupB,wBAE9HF,mBAAqB,SAASha,UAAWmS,QAAS3e,MAAO9Y,SAAUzE,IACjE,GAAI0kC,mBAAmBrb,OAAQsb,cA6J/B,OA5JAA,gBAAiB5a,UAAU1nB,IAAI,+CAA+C,GAC9EqiC,kBAAoB,WAClB,QAASA,mBAAkBE,KAAMC,IAAKC,UACpC7nC,KAAK4d,IAAM+pB,KACX3nC,KAAKyuB,GAAKmZ,IACV5nC,KAAKiI,QAAU4/B,SACf7nC,KAAK8nC,gBAAkBz4B,KAAKrP,KAAK8nC,gBAAiB9nC,MAClDA,KAAKm/B,WAAkE,KAArDn/B,KAAKiI,QAAQqe,eAAengB,QAAQ,aACtDnG,KAAKyX,MAAQzX,KAAKiI,QAAQwP,MAC1BzX,KAAKiyB,OAASjyB,KAAKiI,QAAQgqB,OAC3BjyB,KAAK+nC,WAAat3B,QAAQzQ,KAAKiyB,OAAQ,SAAS1xB,GAC9C,MAAOA,GAAEwX,KAEX/X,KAAKmnC,uBAAyB,SAASC,OAAQC,WAC/CrnC,KAAKylB,OAAS,aAkIhB,MA/HAgiB,mBAAkBv4B,UAAUoe,KAAO,SAAS8Z,OAAQC,SAClD,GAAIpkC,SAiBJ,OAhBAA,UAAWF,GAAGG,QACd+7B,QAAQzY,IAAI,SAAUjf,OACpB,MAAO,YACL,GAAIwW,SAASC,SAUb,OATAA,WAAY,WACV,MAAO/a,UAASN,WAElBob,QAAU,WAIR,MAHAvW,UAASG,OAAO,SAChBJ,MAAMknB,GAAGiR,SACTn4B,MAAMke,SACCxiB,SAASqD,UAEXga,MAAMgN,KAAK/lB,MAAMknB,IAAItrB,KAAK6a,UAAWD,WAE7C/d,OACIiD,SAASG,SAGlBqkC,kBAAkBv4B,UAAUq4B,qBAAuB,WACjD,GAAIS,eAAeC,MAOnB,OANAA,QAAS5nC,EAAEC,IAAIN,KAAKyuB,GAAGwD,OAAQ,SAAU1qB,OACvC,MAAO,UAAS2gC,EAAGC,GACjB,GAAIl1B,IACJ,OAAsC,QAA9BA,IAAM1L,MAAMwgC,WAAWG,IAAcj1B,IAAI3E,MAAQ,SAE1DtO,OACmB,IAAlBioC,OAAOz7B,OACF,KAETw7B,cAAgB3nC,EAAEyM,OAAOm7B,OAAQ,SAASC,GACxC,MAAY,OAALA,IAEoB,IAAzBF,cAAcx7B,OACT,IAEFnM,EAAEmW,OAAOwxB,cAAe,SAASI,IAAKC,KAC3C,MAAOD,KAAMC,QAIjBZ,kBAAkBv4B,UAAUs4B,eAAiB,WAC3C,GAAI7vB,iBAAiBF,KAYrB,OAXAE,iBAAkBtX,EAAEyM,OAAO9M,KAAKiI,QAAQwP,MAAO,cAC/CA,MAAQpX,EAAEC,IAAIqX,gBAAiB,SAAUpQ,OACvC,MAAO,UAAS+gC,MACd,GAAIjB,SAASkB,QAKb,OAJAlB,SAAU9/B,MAAMknB,GAAGwD,OAAOqW,KAAKvwB,IAC/BwwB,SAAWhhC,MAAMwgC,WAAWV,SAC5BiB,KAAOjoC,EAAEic,MAAMgsB,MAAM,GACrBA,KAAKrW,OAAsB,MAAZsW,UAAuC,MAAjBA,SAASv1B,KAAgBu1B,SAASv1B,KAAO,IACvEs1B,OAERtoC,QAILynC,kBAAkBv4B,UAAU44B,gBAAkB,WAa5C,MAZA9nC,MAAK4d,IAAIc,GAAG,QAAS,mBAAoB,SAAUnX,OACjD,MAAO,UAASoG,OACd,GAAIy5B,QAAQjb,MAOZ,OANAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/Bif,OAASjb,OAAOjlB,KAAK,WACrBK,MAAMihC,qBAAqBpB,OAAQjb,QACnCA,OAAOsc,WAAW9iB,YAAY,UACvBwG,OAAOrG,SAAS,YAExB9lB,OACIA,KAAK4d,IAAIc,GAAG,QAAS,SAAU,SAAUnX,OAC9C,MAAO,UAASoG,OACd,GAAI05B,SAASpV,OAAQmV,OAAQjb,MAW7B,OAVAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/Bif,OAASjb,OAAOjlB,KAAK,WACrBmgC,QAAUlb,OAAOjlB,KAAK,YACtBK,MAAMqW,IAAIO,KAAK,YAAYuqB,UAAUze,QACrCgI,OAAS5xB,EAAEic,MAAM/U,MAAMknB,GAAGwD,QAAQ,GAClCA,OAAOmV,QAAUC,QACjB9/B,MAAMknB,GAAGwD,OAASA,OAClB1qB,MAAMke,SACCle,MAAM4/B,uBAAuBC,OAAQC,WAE7CrnC,QAGLynC,kBAAkBv4B,UAAUs5B,qBAAuB,SAASpB,OAAQjb,QAClE,GAAIwc,gBAAgBpb,KAAMqb,eAAgB3W,OAAQ4W,GA+BlD,OA9BA5W,QAAS5xB,EAAEC,IAAIN,KAAKiyB,OAAQ,SAAU1qB,OACpC,MAAO,UAASuhC,OAGd,MAFAA,OAAQzoC,EAAEic,MAAMwsB,OAAO,GACvBA,MAAM7E,SAAW18B,MAAMknB,GAAGwD,OAAOmV,UAAY0B,MAAM/wB,IAAK,GAAQ,EACzD+wB,QAER9oC,OACH4oC,eAAiB,EACjBD,eAAiBtoC,EAAE0oC,KAAK9W,OAAQ,SAAU1qB,OACxC,MAAO,UAASuhC,OACd,MAAOA,OAAM91B,KAAKxG,OAASo8B,iBAE5B5oC,OACHutB,KAAOma,gBACLzV,OAAUA,OACVmV,OAAQA,OACR4B,WAAYL,iBAEd3oC,KAAK4d,IAAIO,KAAK,YAAYuqB,UAAUze,QACpCjqB,KAAK4d,IAAIO,KAAK,oBAAoBpC,SACpB,MAAVoQ,OACFnsB,KAAK4d,IAAIO,KAAKgO,QAAQ/D,OAAOmF,MAE7BvtB,KAAK4d,IAAIwK,OAAOmF,MAElBvtB,KAAK4d,IAAIO,KAAK,oBAAoBuqB,UAAU5gB,KAAK,WAC/C,MAAOG,GAAEjoB,MAAM2lB,YAAY,UAAUsjB,QAAQ,MAAMtjB,YAAY,YAEjE3lB,KAAK4d,IAAIO,KAAK,oBAAoBiM,OAClCye,IAAM7oC,KAAK4d,IAAIO,KAAK,oBAChB0qB,IAAIzH,SAASC,IAAMwH,IAAIK,SAAWjO,SAAS2J,KAAKuE,aAC3CN,IAAI/iB,SAAS,cADtB,QAKK2hB,qBAGTrb,OAAS,SAASxO,IAAK6Q,GAAIxmB,SACzB,GAAIi/B,kBAMJ,OALAtpB,KAAI+R,OAAO,SACXuX,kBAAoB,GAAIO,mBAAkB7pB,IAAK6Q,GAAIxmB,SAC/Ci/B,kBAAkB/H,YACpB+H,kBAAkBY,kBAEbZ,oBAGP9a,OAAQA,SAIZxsB,OAAO4G,QAAQ,yBAA0B,cAAe,YAAa,UAAW,aAAc,KAAMsgC,sBAEnGzjC,KAAKrD,MA2BR,WACE,GAAIopC,eAAexpC,OAAQypC,aAAcC,cAAev4B,WAAYhR,MAAOyR,UAAW+3B,WAEtFxpC,OAAQC,KAAKD,MAEbH,OAASgD,QAAQhD,OAAO,eAExBwpC,cAAgB,WACd,MAAO,UAAS96B,MAAOk7B,cACrB,MAAIl7B,UAAW,KAAM,QACZk7B,aAEFl7B,QAIX1O,OAAOkN,OAAO,UAAWs8B,eAEzBG,YAAc,SAASvmC,YACrB,MAAO,UAASsL,OACd,MAAIA,OACKtL,WAAW0E,QAAQ,cAErB1E,WAAW0E,QAAQ,eAI9B9H,OAAOkN,OAAO,SAAU,aAAcy8B,cAEtC/3B,UAAY,WACV,MAAOzR,OAAMyR,WAGf5R,OAAOkN,OAAO,YAAa0E,WAE3B63B,aAAe,WACb,MAAO,UAASp0B,MAAOmQ,QACrB,MAAInQ,OACK5L,OAAO4L,OAAOmQ,OAAOA,QAEvB,KAIXxlB,OAAOkN,OAAO,eAAgBu8B,cAE9BC,cAAgB,WACd,MAAO,UAASr0B,MAAOw0B,gBACrB,MAAIx0B,OACK5L,OAAO4L,OAAOy0B,QAAQD,iBAAkB,GAE1C,KAIX7pC,OAAOkN,OAAO,gBAAiBw8B,eAE/Bv4B,WAAa,SAAUxJ,OACrB,MAAO,YACL,MAAOA,OAAMxH,MAAMgR,aAEpB/Q,MAEHJ,OAAOkN,OAAO,aAAciE,aAE3B1N,KAAKrD,MA2BR,WACE,GAAI2pC,mBAAmBC,iBAAkBC,eAAgBz5B,SAAUE,SAAU1Q,OAAQG,MAAOuR,KAC1FzO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbuR,KAAOtR,KAAKD,MAAMuR,KAElBlB,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,eAExBiqC,gBACEC,yBAA0B,WAAY,eAAgB,gBAAiB,eAAgB,cAAe,aACtGC,cAAe,WAAY,WAAY,mBACvCC,gBAAiB,aAGnBL,kBAAoB,SAAUj6B,YAK5B,QAASi6B,mBAAkBt3B,MAAOkkB,KAAMje,IACtCtY,KAAKqS,MAAQA,MACbrS,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GA0DZ,MAjEAzV,QAAO8mC,kBAAmBj6B,YAE1Bi6B,kBAAkBvvB,SAAW,SAAU,UAAW,gBAQlDuvB,kBAAkBz6B,UAAUxB,WAAa,SAASlE,KAAMi8B,UAEtD,MADAzlC,MAAKwJ,KAAOA,KACLxJ,KAAKylC,SAAWA,UAGzBkE,kBAAkBz6B,UAAU+6B,YAAc,SAASzgC,KAAMi8B,UACvD,MAAOzlC,MAAKsY,GAAG4xB,QAAQ9kC,IAAIoE,KAAMi8B,UAAUtiC,KAAK,SAAUoE,OACxD,MAAO,UAAS2iC,SACd,GAAIC,aAAaC,aAAcC,cAAe34B,EAAG44B,EAAG52B,IAAK62B,IACzD,KAAK74B,EAAI,EAAGgC,IAAMw2B,QAAQ19B,OAAYkH,IAAJhC,EAASA,IACzC24B,cAAgBH,QAAQx4B,GAC0B,MAA9C24B,cAAcG,YAAYC,mBAC5BJ,cAAcG,YAAY7mC,YAAc0mC,cAAcG,YAAYC,wBAE7DJ,eAAcG,YAAYE,uBAC1BL,eAAcG,YAAYC,iBACkB,MAA/CJ,cAAcG,YAAYG,oBAC5BN,cAAcG,YAAYI,aAAeP,cAAcG,YAAYG,yBAE9DN,eAAcG,YAAYK,wBAC1BR,eAAcG,YAAYG,iBAEnC,KAAKL,EAAI,EAAGC,KAAOL,QAAQ19B,OAAY+9B,KAAJD,EAAUA,IAC3CF,aAAeF,QAAQI,GACvBH,YAAcC,aAAap7B,IAAI3C,MAAM,KAAK,GACP,MAA/Bw9B,eAAeM,eACjBC,aAAaI,YAAcnqC,EAAEgW,WAAW+zB,aAAaI,YAAaX,eAAeM,cAMrF,OAHA5iC,OAAM8K,MAAM63B,QAAU7pC,EAAEyM,OAAOo9B,QAAS,SAASz4B,MAC/C,MAAOuE,QAAO9D,KAAKT,KAAK+4B,aAAah+B,OAAS,IAEzCjF,MAAM8K,MAAMy4B,SAAWzqC,EAAEyM,OAAOo9B,QAAS,SAASz4B,MACvD,MAAwB,KAAjBA,KAAKs5B,YAGf/qC,QAGL2pC,kBAAkBz6B,UAAU87B,cAAgB,SAASxhC,KAAMi8B,SAAUwF,YACnE,MAAOjrC,MAAKsY,GAAG4xB,QAAQc,cAAcxhC,KAAMi8B,SAAUwF,YAAY9nC,KAAK,SAAUoE,OAC9E,MAAO,YACL,MAAOA,OAAM0iC,YAAYzgC,KAAMi8B,YAEhCzlC,QAGL2pC,kBAAkBz6B,UAAUg8B,gBAAkB,SAAS1hC,KAAMi8B,SAAUwF,YACrE,MAAOjrC,MAAKsY,GAAG4xB,QAAQgB,gBAAgB1hC,KAAMi8B,SAAUwF,YAAY9nC,KAAK,SAAUoE,OAChF,MAAO,YACL,MAAOA,OAAM0iC,YAAYzgC,KAAMi8B,YAEhCzlC,QAGE2pC,mBAEN5pC,MAAMmQ,YAET05B,iBAAmB,SAAS1+B,KAAM4gB,SAAUmT,QAASnS,UAAWtlB,SAAUxE,WAAY6pB,SAAUrnB,SAAUomB,WAAYuf,yBACpH,GAAIztB,MAAM0tB,iBAAkBC,aAAcC,oBAAqBC,yBAA0BC,mBAAoBC,sBAAuBC,mBAAoBC,qBAAsBC,sBAyb9K,OAxbAJ,oBAAqB1e,UAAU1nB,IAAI,2CAA2C,GAC9EumC,qBAAuB7e,UAAU1nB,IAAI,6CAA6C,GAClFqmC,sBAAwB3e,UAAU1nB,IAAI,8CAA8C,GACpFmmC,yBAA2Bze,UAAU1nB,IAAI,iDAAiD,GAC1FsmC,mBAAqB5e,UAAU1nB,IAAI,2CAA2C,GAC9EwmC,uBAAyB9e,UAAU1nB,IAAI,+CAA+C,GACtFgmC,iBAAmBte,UAAU1nB,IAAI,wCAAwC,GACzEkmC,oBAAsBxe,UAAU1nB,IAAI,4CAA4C,GAChFimC,aAAeve,UAAU1nB,IAAI,oCAAoC,GACjEsY,KAAO,SAASC,OAAQC,IAAKC,OAAQqR,OACnC,GAAI2c,cAAcC,aAAcC,sBAAuBC,oBAAqBvG,SAAUwG,eAAgBC,sBAAuBC,WAAYC,aAAcC,oBAAqBC,kBAAmBC,wBAAyBC,cAAeC,eAAgBC,4BAA6BC,cAAeC,SAAUtf,KAAMuf,gBAAiBC,gBAAiBtjC,IA4arV,OA3aAA,MAAOqU,OAAOrU,KACdi8B,SAAW,KACXqH,iBAAkB,EAClBD,iBAAkB,EAClBb,oBAAsB,WACpB,MAAOhpC,YAAW0E,QAAQ,sBAE5B0I,SAASuN,OAAQE,OAAOoQ,QAAS,SAAS1T,OAIxC,MAHA/Q,MAAOqU,OAAOrU,KACdi8B,SAAWlrB,MAAMxC,GACjBmX,MAAMxhB,WAAWlE,KAAMi8B,UAChBvW,MAAM+a,YAAYzgC,KAAMi8B,YAEjCsG,sBAAwB,SAASlO,OAC/B,GAAIkP,oBAmCJ,OAlCAA,sBACE1f,QAASrqB,WAAW0E,QAAQ,2BAC5BsL,KAAMhQ,WAAW0E,QAAQ,wBACzB/D,YAAaX,WAAW0E,QAAQ,+BAChCslC,QAAShqC,WAAW0E,QAAQ,2BAC5B7B,OAAQ7C,WAAW0E,QAAQ,0BAC3BulC,UAAWjqC,WAAW0E,QAAQ,6BAC9BwlC,YAAalqC,WAAW0E,QAAQ,+BAChC8B,KAAMxG,WAAW0E,QAAQ,wBACzBq7B,SAAU//B,WAAW0E,QAAQ,4BAC7Bu7B,SAAUjgC,WAAW0E,QAAQ,4BAC7B2mB,YAAarrB,WAAW0E,QAAQ,+BAChC63B,SAAUv8B,WAAW0E,QAAQ,4BAC7BylC,UAAWnqC,WAAW0E,QAAQ,6BAC9B0lC,WAAYpqC,WAAW0E,QAAQ,8BAC/BO,QAASjF,WAAW0E,QAAQ,2BAC5B84B,WAAYx9B,WAAW0E,QAAQ,8BAC/BkjC,aAAc5nC,WAAW0E,QAAQ,gCACjCuqB,OAAQjvB,WAAW0E,QAAQ,0BAC3B2lC,mBAAoBrqC,WAAW0E,QAAQ,sCACvC4lC,iBAAkBtqC,WAAW0E,QAAQ,oCACrC04B,WAAYp9B,WAAW0E,QAAQ,8BAC/BoO,KAAM9S,WAAW0E,QAAQ,wBACzB6lC,YAAavqC,WAAW0E,QAAQ,+BAChC8lC,cAAexqC,WAAW0E,QAAQ,iCAClCkjC,aAAc5nC,WAAW0E,QAAQ,gCACjC84B,WAAYx9B,WAAW0E,QAAQ,8BAC/B+lC,MAAOzqC,WAAW0E,QAAQ,yBAC1BgmC,cAAe1qC,WAAW0E,QAAQ,iCAClCimC,aAAc3qC,WAAW0E,QAAQ,gCACjCkmC,aAAc5qC,WAAW0E,QAAQ,gCACjCmmC,gBAAiB7qC,WAAW0E,QAAQ,mCACpComC,SAAU9qC,WAAW0E,QAAQ,6BAExBqlC,oBAAoBlP,QAAUA,OAEvCgO,aAAe,SAASd,SACtB,MAAO1qC,GAAE6R,KAAK64B,QAAQP,aAAah+B,QAErCs/B,aAAe,SAASiC,QACtB,MAAI1tC,GAAE2tC,QAAQD,QACU,IAAlBA,OAAOvhC,OACFxJ,WAAW0E,QAAQ,yBAErBqmC,OAAOptC,KAAK,MAEN,KAAXotC,OACK/qC,WAAW0E,QAAQ,yBAEb,MAAVqmC,QAAmBA,UAAW,EAC1B/qC,WAAW0E,QAAQ,sBAExBqmC,UAAW,EACN/qC,WAAW0E,QAAQ,uBAErBqmC,QAET7B,sBAAwB,SAAS59B,OAC/B,GAAIi/B,YAoCJ,OAnCAA,aAAcltC,EAAEC,IAAIgO,MAAO,SAAS2/B,QAASzkC,MAC3C,MAAa,QAATA,KACKnJ,EAAEC,IAAI2tC,QAAS,SAASF,QAC7B,MAAOvC,qBACLx4B,KAAMhQ,WAAW0E,QAAQ,2BACzBwmC,KAAMH,OAAOI,aAGC,YAAT3kC,KACFnJ,EAAEC,IAAI2tC,QAAS,SAASF,QAC7B,MAAOvC,qBACLx4B,KAAMhQ,WAAW0E,QAAQ,+BACzBwmC,KAAMH,OAAOI,aAIV9tC,EAAEC,IAAI2tC,QAAS,SAASF,QAC7B,GAAIG,MAAMl7B,IAWV,OAVAA,MAAOhQ,WAAW0E,QAAQ,+BACxBymC,SAAUJ,OAAOI,WAEnBD,KAAO7tC,EAAEC,IAAIytC,OAAOE,QAAS,SAAShG,OAAQj1B,MAC5C,OACEA,KAAM+4B,sBAAsB/4B,MAC5Bo7B,KAAMtC,aAAa7D,OAAO,IAC1BoG,GAAIvC,aAAa7D,OAAO,OAGrBsD,0BACLv4B,KAAMA,KACNk7B,KAAMA,WAKP7tC,EAAEkW,QAAQg3B,aAAa5sC,KAAK,OAErC+rC,4BAA8B,SAASp+B,OACrC,GAAIo3B,iBAkCJ,OAjCAA,kBAAmBrlC,EAAEC,IAAIgO,MAAO,SAAS2/B,QAASzkC,MAChD,MAAa,QAATA,KACKnJ,EAAEC,IAAI2tC,QAAS,SAASF,QAC7B,GAAIxgB,KAOJ,OANAA,MAAOke,uBACLz4B,KAAM+6B,OAAO/6B,KACbo7B,KAAMtC,aAAa,IACnBuC,GAAIvC,aAAaiC,OAAOz/B,SAE1Bif,KAAOV,SAASU,MAAM5P,QACf4P,KAAK,GAAG+gB,YAEC,YAAT9kC,KACFnJ,EAAEC,IAAI2tC,QAAS,SAASF,QAC7B,MAAOvC,qBACLx4B,KAAMhQ,WAAW0E,QAAQ,qCACzBwmC,KAAMH,OAAO/6B,SAIV3S,EAAEC,IAAI2tC,QAAS,SAASF,QAC7B,GAAIQ,mBAQJ,OAPAA,oBAAqBluC,EAAEC,IAAIytC,OAAOE,QAAS,SAAShG,QAClD,MAAOwD,wBACLz4B,KAAM+6B,OAAO/6B,KACbo7B,KAAMtC,aAAa7D,OAAO,IAC1BoG,GAAIvC,aAAa7D,OAAO,QAGrB5nC,EAAEkW,QAAQg4B,oBAAoB5tC,KAAK,UAIzCN,EAAEkW,QAAQmvB,kBAAkB/kC,KAAK,OAE1C2rC,kBAAoB,SAASzO,MAAOvvB,OAClC,GAAIkgC,OAAOJ,KAAM7gB,KAAMva,KAAMy7B,QAASJ,EACtC,OAAc,gBAAVxQ,MACK2N,oBACLx4B,KAAM+4B,sBAAsB,eAC5BmC,KAAM5/B,MAAM,KAEK,iBAAVuvB,MACF2N,oBACLx4B,KAAM+4B,sBAAsB,gBAC5BmC,KAAM5/B,MAAM,KAEK,WAAVuvB,OACTtQ,KAAOoe,sBACL1Z,OAAQ3jB,QAEVif,KAAOV,SAASU,MAAM5P,QACf4P,KAAK,GAAG+gB,WACI,gBAAVzQ,MACFqO,sBAAsB59B,OACV,sBAAVuvB,MACF6O,4BAA4Bp+B,OAChB,SAAVuvB,OAA8B,aAAVA,OAC7B7qB,KAAO+4B,sBAAsBlO,OAC7B4Q,QAAUpuC,EAAEquC,WAAWpgC,MAAM,GAAIA,MAAM,IACvCkgC,MAAQnuC,EAAEquC,WAAWpgC,MAAM,GAAIA,MAAM,IACrCif,KAAOme,oBACL14B,KAAMA,KACNy7B,QAASA,QACTD,MAAOA,QAETjhB,KAAOV,SAASU,MAAM5P,QACf4P,KAAK,GAAG+gB,WACI,gBAAVzQ,OACT7qB,KAAO+4B,sBAAsBlO,OAC7BuQ,KAAOtC,aAAax9B,MAAM,IAAMtL,WAAW0E,QAAQ,+BACnD2mC,GAAKvC,aAAax9B,MAAM,IAAMtL,WAAW0E,QAAQ,+BAC1C+jC,uBACLz4B,KAAMA,KACNo7B,KAAMA,KACNC,GAAIA,OAGNr7B,KAAO+4B,sBAAsBlO,OAC7BuQ,KAAOtC,aAAax9B,MAAM,IAC1B+/B,GAAKvC,aAAax9B,MAAM,IACjBm9B,uBACLz4B,KAAMA,KACNo7B,KAAMA,KACNC,GAAIA,OAIVhC,oBAAsB,SAAS0B,QAC7B,MAAO1tC,GAAEC,IAAIytC,OAAOvD,YAAa,SAASl8B,MAAOuvB,OAC/C,MAAOyO,mBAAkBzO,MAAOvvB,UAGpCi+B,wBAA0B,SAASwB,QACjC,GAAI54B,KAEJ,OADAA,MAAO02B,aAAakC,QACb/qC,WAAW0E,QAAQ,wBACxByN,KAAMA,MACL,kBAELq3B,cAAgB,SAASzB,SACvB,GAAIxd,MAAMta,IAAKosB,KAAMsP,IACrB,OAAI5D,SAAQ6D,sBAA+D,OAAtC37B,IAAM83B,QAAQ8D,qBAA+B57B,IAAID,KAAO,SAC3Fua,KAAOqe,wBACLkD,kBAAmB/D,QAAQ6D,oBAAsBvlC,OAAO0hC,QAAQ6D,qBAAqBxpB,OAAO4mB,uBAAyB,OACrH+C,kBAAmBhE,QAAQ8D,oBAAoB77B,KAC/Cg4B,cAAeD,QAAQiE,aACvB/D,WAAYF,QAAQhzB,GACpBk3B,kBAAmBtxB,OAAOhS,OAASo/B,QAAQ8D,oBAAoBK,KAAOvxB,OAAOhS,KAAKoM,IAAM4F,OAAO1V,QAAQqe,eAAengB,QAAQ,kBAAoB,MAEpJonB,KAAOV,SAASU,MAAM5P,QACf4P,KAAK,GAAG+gB,YAEjB/gB,KAAO6d,kBACL+D,OAAQpE,QAAQp/B,KAAK6jB,MACrB4f,aAAcrE,QAAQp/B,KAAKqH,KAC3Bq8B,eAAgBtE,QAAQp/B,KAAKiM,UAAYpS,SAAS7C,QAAQ,gBACxD6b,SAAUusB,QAAQp/B,KAAK6S,WACpB,GACL8wB,aAAcjmC,OAAO0hC,QAAQwE,YAAYnqB,OAAO4mB,uBAChDjB,QAASA,QAAQiE,aACjBQ,YAAajD,wBAAwBxB,SACrCkD,QAAS5B,oBAAoBtB,SAC7B0E,KAAM,UACNC,yBAA0B1sC,WAAW0E,QAAQ,mBAC7ConC,kBAAmB/D,QAAQ6D,oBAAsBvlC,OAAO0hC,QAAQ6D,qBAAqBxpB,OAAO4mB,uBAAyB,OACrH+C,mBAA4D,OAAvC1P,KAAO0L,QAAQ8D,qBAA+BxP,KAAKrsB,KAAO,QAAU+3B,QAAQ8D,oBAAoB77B,KAAO,OAC5Hi4B,WAAYF,QAAQhzB,GACpB43B,iBAAkB5E,QAAQp/B,KAAKujC,MAAgC,OAAvBP,KAAOhxB,OAAOhS,MAAgBgjC,KAAK52B,GAAK,SAAW4F,OAAO1V,QAAQqe,eAAengB,QAAQ,kBAAoB,KAEvJonB,KAAOV,SAASU,MAAM5P,QACf4P,KAAK,GAAG+gB,YAEjBlC,aAAe,SAAS2B,QACtB,GAAI96B,IACJ,OAAOm4B,mBACL+D,OAAQpB,OAAOpiC,KAAK6jB,MACpB4f,aAAcrB,OAAOpiC,KAAKqH,KAC1Bq8B,eAAgBtB,OAAOpiC,KAAKiM,UAAYpS,SAAS7C,QAAQ,gBACvD6b,SAAUuvB,OAAOpiC,KAAK6S,WACnB,GACL8wB,aAAcjmC,OAAO0kC,OAAOwB,YAAYnqB,OAAO4mB,uBAC/CjB,QAASgD,OAAOiB,aAChBf,QAAS5B,oBAAoB0B,QAC7ByB,YAAa,GACbC,KAAM,WACNX,kBAAmBf,OAAOa,oBAAsBvlC,OAAO0kC,OAAOa,qBAAqBxpB,OAAO4mB,uBAAyB,OACnH+C,mBAA0D,OAArC97B,IAAM86B,OAAOc,qBAA+B57B,IAAID,KAAO,QAAU+6B,OAAOc,oBAAoB77B,KAAO,OACxHi4B,WAAY8C,OAAOh2B,MAGvB40B,cAAgB,SAASiD,QAASC,cAChC,GAAItiB,MAAMuiB,QAWV,OATEA,UADEF,QAAQpjC,SAAWqjC,aACV,EAEAA,aAAeD,QAAQpjC,OAEpC+gB,KAAO+d,qBACLsE,QAASA,QACTE,SAAUA,WAEZviB,KAAOV,SAASU,MAAM5P,SAGxBwuB,WAAa,WACX,GAAI8B,SAASnD,SAAUiF,gBAAiBC,eAAgBziB,IAaxD,OAZAud,UAAWntB,OAAOmtB,aAClBmD,QAAUtwB,OAAOusB,YACjB8F,iBAAmB/B,QAAQzhC,OAC3BujC,kBAAqBjF,SAASt+B,QAAW2+B,wBAAwB8E,MAAM,UAAYpyB,OAAOrU,MAC1F+jB,KAAO8d,cACL6E,QAASryB,OAAOoQ,QAChBzkB,KAAMqU,OAAOrU,KACbimC,KAAM5xB,OAAO4xB,KACbO,eAAgBA,eAChBD,gBAAiBA,kBAEnBxiB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,OAElBqf,SAAW,WAGT,MAFAT,cACAM,iBACOR,kBAETQ,eAAiB,WACf,GAAI3B,UAAUvd,KAAM4iB,aAUpB,OATArF,UAAWntB,OAAOmtB,aAClBqF,cAAgBrF,SAASt+B,OACpBsgC,kBACHhC,SAAWzqC,EAAE+vC,UAAUtF,SAAU,IAEnCA,SAAWzqC,EAAEC,IAAIwqC,SAAU,SAASvqC,GAClC,MAAOisC,eAAcjsC,KAEvBgtB,KAAOof,cAAc7B,SAAUqF,eACxBvyB,IAAIO,KAAK,kBAAkBoP,KAAKA,OAEzC0e,eAAiB,WACf,GAAIgC,SAAS1gB,KAAM8iB,YAUnB,OATApC,SAAUtwB,OAAOusB,YACjBmG,aAAepC,QAAQzhC,OAClBqgC,kBACHoB,QAAU5tC,EAAE+vC,UAAUnC,QAAS,IAEjCA,QAAU5tC,EAAEC,IAAI2tC,QAAS,SAAS1tC,GAChC,MAAO6rC,cAAa7rC,KAEtBgtB,KAAOof,cAAcsB,QAASoC,cACvBzyB,IAAIO,KAAK,iBAAiBoP,KAAKA,OAExCD,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS4kB,QACd,GAAID,gBAAgB3R,MAAOwD,QAASC,SAepC,OAdAL,QAAOmD,WAAW,0BAClBlD,IAAIO,KAAK,iBAAiB2H,SAAS,mBACnCoG,eAAiBJ,WAAWK,OAAOA,QAAQte,QAC3CmQ,UAAY,WAEV,MADA4N,YAAW9K,WAAW,eACfoO,MAAM+a,YAAYzgC,KAAMi8B,UAAU,WAAW,WAClD,MAAOvZ,gBAAeI,YAG1BvO,QAAU,WAER,MADAmO,gBAAeI,SACR9kB,SAASG,OAAO,UAEzB4S,MAAQoD,OAAOlL,MAAMoL,OAAOoQ,SACrBiB,MAAMqH,KAAKjJ,KAAK/S,OAAOpX,KAAK6a,UAAWD,WAE/C/d,OACH2d,OAAOjL,OAAO,WAAYk6B,UAC1BjvB,OAAOjL,OAAO,UAAWk6B,UACzBjvB,OAAO7R,IAAI,iBAAkB,WAC3B,MAAOojB,OAAM+a,YAAYzgC,KAAMi8B,YAEjC7nB,IAAIc,GAAG,QAAS,mCAAoCpO,SAAS,IAAM,SAAS3C,OAC1E,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBmF,KAAKnB,WAEdvO,IAAIc,GAAG,QAAS,IAAK,SAAS/Q,OAC5B,GAAIuzB,MAAM/U,MAGV,OAFAA,QAASvpB,QAAQwE,QAAQuG,MAAMwe,QAC/B+U,KAAO/U,OAAO7Z,KAAK,QACf4uB,MAA8B,IAAtBA,KAAK/6B,QAAQ,MACvBwH,MAAM2Q,iBACC2J,EAAE,QAAQkZ,UAAUlZ,EAAEiZ,MAAME,SAASC,MAF9C,SAKFzjB,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OACrC,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC3BgE,OAAOtd,SAASoyB,GAAG,kBACrB4L,iBAAmBA,gBACZZ,mBAEPa,iBAAmBA,gBACZL,oBAGX7uB,IAAIc,GAAG,QAAS,wBAAyB,SAAS/Q,OAChD,GAAIwe,OAKJ,OAJAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BgE,OAAOmkB,QAAQ,oBAAoBnyB,KAAK,yBAAyBiM,OACjE+B,OAAOmkB,QAAQ,oBAAoBnyB,KAAK,yBAAyByiB,OAC1DzU,OAAOmkB,QAAQ,oBAAoBnyB,KAAK,iBAAiBiM,SAElExM,IAAIc,GAAG,QAAS,wBAAyB,SAAS/Q,OAChD,GAAIwe,OAKJ,OAJAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BgE,OAAOmkB,QAAQ,oBAAoBnyB,KAAK,yBAAyByiB,OACjEzU,OAAOmkB,QAAQ,oBAAoBnyB,KAAK,yBAAyBiM,OAC1D+B,OAAOmkB,QAAQ,oBAAoBnyB,KAAK,iBAAiByiB,SAElEhjB,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OACzC,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBgE,OAAOtd,SAASsP,KAAK,iBAAiBoyB,YAAY,YAE3D3yB,IAAIc,GAAG,QAAS,wBAAyB,SAAS/Q,OAChD,MAAOsa,GAAEjoB,MAAM8lB,SAAS,YAE1BlI,IAAIc,GAAG,QAAS,qBAAsB,SAAS/Q,OAC7C,GAAIwe,OAKJ,OAJAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BvK,IAAIO,KAAK,sBAAsBwH,YAAY,UAC3CwG,OAAOrG,SAAS,UAChBlI,IAAIO,KAAK,oBAAoB2H,SAAS,UAC/BlI,IAAIO,KAAK,oBAAuBgO,OAAOjlB,KAAK,kBAAmBye,YAAY,YAEpF/H,IAAIc,GAAG,QAAS,kBAAmBpO,SAAS,IAAM,SAAS3C,OACzD,GAAIs9B,YAAY9e,MAIhB,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B8iB,WAAa9e,OAAOjlB,KAAK,eAClBgoB,MAAM8b,cAAcxhC,KAAMi8B,SAAUwF,eAE7CrtB,IAAIc,GAAG,QAAS,mBAAoBpO,SAAS,IAAM,SAAS3C,OAC1D,GAAIs9B,YAAY9e,MAIhB,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B8iB,WAAa9e,OAAOjlB,KAAK,eAClBgoB,MAAMgc,gBAAgB1hC,KAAMi8B,SAAUwF,eAE/CttB,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAENutB,eAGP5oC,WAAYomC,kBACZnsB,SAAU,KACVE,KAAMA,OAIV9d,OAAO6d,UAAU,aAAc,OAAQ,aAAc,YAAa,cAAe,aAAc,aAAc,WAAY,aAAc,aAAc,4BAA6BmsB,oBAEjLvmC,KAAKrD,MA2BR,WACE,GAAIwwC,8BAA8BC,uBAAwB7wC,MAE1DA,QAASgD,QAAQhD,OAAO,eAExB4wC,6BAA+B,SAAS9hB,IAAKlnB,SAAUjC,UAAWC,SAAUxC,WAAY0tC,iBAAkBv2B,mBAAoBw2B,SAC5H,GAAIjzB,KA+GJ,OA9GAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI+yB,oBAyDJ,OAxDAA,qBAAsB,SAASj9B,QAC7B,GAAIk9B,UAAUC,eAAgBC,aAAcC,aAAcC,YAAatlC,IACvE,OAAIgI,QAAO3O,SACT6rC,SAAW,GACXllC,KAAOwO,mBAAmB1M,UAC1BqjC,eAAiB,EACbn9B,OAAO3O,QAAQksC,WACjBF,cAAgB72B,mBAAmBg3B,2BAA2BhlC,MAC9D2kC,eAAiB,KAEfC,aADmD,OAAjDplC,KAAKvG,IAAI,qCAAgDuO,OAAO3O,QAAQisB,aAAetlB,KAAKvG,IAAI,qCACnF,GAEA,EAEb4rC,cAAgBD,cAClBF,SAAW,wBACXC,eAAiBnlC,KAAKvG,IAAI,qCACjB4rC,aACTH,SAAW,gBACFE,eACTF,SAAW,kBACXC,eAAiBnlC,KAAKvG,IAAI,uCAG5B6rC,aAAe92B,mBAAmBi3B,0BAA0BjlC,MAE1D4kC,aADkD,OAAhDplC,KAAKvG,IAAI,oCAA+CuO,OAAO3O,QAAQisB,aAAetlB,KAAKvG,IAAI,oCAClF,GAEA,EAEb6rC,aAAeF,cACjBF,SAAW,uBACXC,eAAiBnlC,KAAKvG,IAAI,oCACjB6rC,YACTJ,SAAW,eACFE,eACTF,SAAW,iBACXC,eAAiBnlC,KAAKvG,IAAI,sCAI5B4J,IAAK6hC,SACL5I,QACEoJ,gBAAiBP,eACjB74B,QAAStE,OAAO3O,QAAQisB,gBAIrB,GAGXrT,IAAIc,GAAG,QAAS,yBAA0B,SAAS/Q,OAGjD,MAFAA,OAAM2Q,iBACNV,IAAIO,KAAK,qBAAqBnS,IAAI,IAC3B4R,IAAIO,KAAK,qBAAqBmzB,QAAQ,WAExC1zB,IAAIc,GAAG,SAAU,oBAAqB,SAAS/Q,OACpD,GAAIg0B,MAAMl+B,OAAQsa,QAASC,SAG3B,OAFArQ,OAAM2Q,kBACNqjB,KAAOh0B,MAAMwe,OAAOgW,MAAM,KAI1B1+B,OAAS+D,SAAS/D,OAAOT,WAAW0E,QAAQ,kCAC5CsW,UAAY,SAASrK,QACnB,MAAOwG,oBAAmBo3B,eAAepuC,KAAK,WAC5C,GAAI8J,KAAKmS,QAAS8L,IAAKxnB,KAEvB,OADAD,QAAOihC,OACe,MAAlB/wB,OAAO9N,QACTnC,MAAQV,WAAW0E,QAAQ,0CAC3B0X,QAAUpc,WAAW0E,QAAQ,4CACtBF,SAAS6X,QAAQ3b,MAAO0b,WAE/BnS,KACEhF,QAAS0L,OAAOzM,KAAK+f,MAEvB1hB,UAAU9C,KAAK+C,SAAS7C,QAAQ,wCAAyCsK,MACzEie,IAAMloB,WAAW0E,QAAQ,+BAClBF,SAASG,OAAO,UAAWujB,SAIxCnN,QAAU,SAASpK,QACjB,MAAOg9B,SAAQ5kC,UAAU5I,KAAK,WAC5B,GAAIquC,UAAUv+B,IAAKw+B,gBAGnB,OAFAA,kBAAmBb,oBAAoBj9B,QACvClQ,OAAOihC,OACH+M,iBACKf,iBAAiBtkB,OAAO,sBAC7BslB,QAAS,kCACRD,mBAEHD,SAAWxuC,WAAW0E,QAAQ,wBACR,MAAlBiM,OAAO9N,OACT2rC,SAAWxuC,WAAW0E,QAAQ,0CACE,OAAtBuL,IAAMU,OAAOzM,MAAgB+L,IAAIgM,eAAiB,UAC5DuyB,SAAWxuC,WAAW0E,QAAQ,gCAC5BiqC,cAAeh+B,OAAOzM,KAAK+X,kBAGxBzX,SAASG,OAAO,QAAS6pC,cAItC/tC,OAAOoK,QACA6gB,IAAInW,SAAS,UAAUopB,KAAMl+B,OAAOugB,QAAQ7gB,KAAK6a,UAAWD,UA7CnE,WAiDFL,KAAMA,OAIV9d,OAAO6d,UAAU,yBAA0B,eAAgB,aAAc,YAAa,aAAc,aAAc,oBAAqB,uBAAwB,UAAW+yB,+BAE1KC,uBAAyB,SAAShN,iBAChC,GAAI/lB,KAOJ,OANAA,MAAO,SAASrL,MAAO8wB,GAAI1H,OAEzB,MADAgI,iBAAgB3b,KAAKqb,IACd9wB,MAAM4X,MAAQ,WACnBwZ,gBAAgBxZ,MAAMkZ,OAIxB7/B,YAAa,6CACboa,KAAMA,OAIV+yB,uBAAuBr2B,SAAW,mBAElCxa,OAAO6d,UAAU,kBAAmBgzB,yBAEnCptC,KAAKrD,MA2BR,WACE,GAAI4xC,6BAA6BC,mCAAoCC,uBAAwBC,8BAA+BC,+BAAgCC,6BAA8BC,kBAAmBC,kCAAmCC,qCAAsCC,gBAAiBC,0BAA2BliC,SAAUE,SAAU1Q,OAAQmR,WAAYI,QACxWtO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfxP,QAASgD,QAAQhD,OAAO,eAExBwQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBe,QAAUnR,KAAKD,MAAMoR,QAErBb,SAAWtQ,KAAKD,MAAMuQ,SAEtBS,WAAa/Q,KAAKD,MAAMgR,WAExBshC,gBAAkB,SAAU3iC,YAG1B,QAAS2iC,iBAAgB5rB,eAAgB1W,GACvC/P,KAAKymB,eAAiBA,eACtBzmB,KAAK+P,EAAIA,EA6EX,MAjFAlN,QAAOwvC,gBAAiB3iC,YAOxB2iC,gBAAgBnjC,UAAU4Y,KAAO,SAASlK,KACxC,GAAIsZ,SAASqb,MAAOC,eAkCpB,OAjCInyC,GAAE8T,SAASyJ,OACbA,IAAMqK,EAAErK,MAEVsZ,QAAUl3B,KAAK+P,EAAE7M,QACjBsvC,gBAAkB50B,IAAIub,WAAWsZ,IAAI,UACrCD,gBAAgB5R,OAChB5gC,KAAKymB,eAAeD,IAAI,WACtB,MAAO5I,KAAI0gB,IAAI,UAAW,UAE5Bt+B,KAAKymB,eAAeD,IAAI,WAEtB,MADA5I,KAAIkI,SAAS,QACNlI,IAAImnB,IAAI,gBAAiB,SAAUx9B,OACxC,MAAO,YACL,MAAOqW,KAAIO,KAAK,kBAAkB+e,QAAQ3Q,UAE3CvsB,SAELA,KAAKymB,eAAeD,IAAI,SAAUjf,OAChC,MAAO,YAEL,MADAirC,iBAAgBpoB,OACT8M,QAAQv0B,YAEhB3C,OACHuyC,MAAQ3vC,QAAQwE,QAAQ6zB,UACxBsX,MAAM7zB,GAAG,mBAAoB,SAAUnX,OACrC,MAAO,UAASyF,GACd,GAAI0lC,KAEJ,OADAA,MAAO1lC,EAAEwgB,QAAUxgB,EAAEwgB,QAAUxgB,EAAE2lC,MACpB,KAATD,KACKnrC,MAAM0iB,MAAMrM,KADrB,SAID5d,OACIk3B,QAAQ9zB,SAGjBivC,gBAAgBnjC,UAAU+a,MAAQ,SAASrM,KACzC,GAAI20B,OAAOlgC,KAgBX,OAfIhS,GAAE8T,SAASyJ,OACbA,IAAMqK,EAAErK,MAEV20B,MAAQ3vC,QAAQwE,QAAQ6zB,UACxBsX,MAAM3zB,IAAI,aACV2zB,MAAM3zB,IAAI,wBACVhB,IAAImnB,IAAI,gBAAiB,SAAUx9B,OACjC,MAAO,YAEL,MADAqW,KAAIg1B,WAAW,SACRh1B,IAAI+H,YAAY,QAAQA,YAAY,WAE5C3lB,OACHA,KAAKymB,eAAeD,IAAI,WACtB,MAAO5I,KAAIkI,SAAS,WAElBlI,IAAIygB,SAAS,oBACfhsB,MAAQuL,IAAI1W,KAAK,SACjBmL,MAAM+mB,WACCxb,IAAI7B,UAHb,QAOFs2B,gBAAgBnjC,UAAUlJ,SAAW,WACnC,GAAIusC,OAAO7gC,EAAGgC,IAAKm/B,WAAY5/B,IAAK0F,OAIpC,KAHA45B,MAAQ3vC,QAAQwE,QAAQ6zB,UACxBhoB,IAAMs/B,MAAMp0B,KAAK,kBACjBxF,WACKjH,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IACrCmhC,WAAa5/B,IAAIvB,GACjBiH,QAAQjS,KAAK1G,KAAKiqB,MAAMhC,EAAE4qB,aAE5B,OAAOl6B,UAGF05B,iBAENtyC,MAAMkQ,SAETrQ,OAAOsd,QAAQ,mBAAoB,iBAAkB,KAAMm1B,kBAE3DF,kCAAoC,SAAUziC,YAG5C,QAASyiC,qCACP,MAAOA,mCAAkChjC,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAyD7E,MA5DA5M,QAAOsvC,kCAAmCziC,YAM1CyiC,kCAAkCjjC,UAAUw1B,KAAO,WACjD,GAAI6N,MAEJ,OADAA,OAAQ3vC,QAAQwE,QAAQ6zB,UACjBsX,MAAM3zB,IAAI,yBAGnBuzB,kCAAkCjjC,UAAU4jC,SAAW,SAASl1B,IAAK80B,MACnE,GAAIK,eAAenlC,KAAMolC,IAEzB,IADAD,cAAgBn1B,IAAIO,KAAK,aACZ,KAATu0B,KACF,MAA6C,KAAzC90B,IAAIO,KAAK,qBAAqB3R,OACzBoR,IAAIO,KAAK,2BAA2BmzB,QAAQ,SAE5CyB,cAAczB,QAAQ,QAE1B,IAAa,KAAToB,KAAa,CACtB,IAAKK,cAAcvmC,OACjB,MAAOoR,KAAIO,KAAK,6CAA6C2H,SAAS,WAGtE,IADAlY,KAAOmlC,cAAcnlC,KAAK,qBACtBA,KAAKpB,OAEP,MADAumC,eAAcptB,YAAY,YACnB/X,KAAKkY,SAAS,gBAGpB,IAAa,KAAT4sB,KAAa,CACtB,IAAKK,cAAcvmC,OACjB,MAAOoR,KAAIO,KAAK,0BAA0B2H,SAAS;AAGnD,GADAktB,KAAOD,cAAcC,KAAK,uCACtBA,KAAKxmC,OAEP,MADAumC,eAAcptB,YAAY,YACnBqtB,KAAKltB,SAAS,cAM7BqsB,kCAAkCjjC,UAAUvP,KAAO,SAASie,KAC1D,GAAI20B,MAGJ,OAFAvyC,MAAK0kC,OACL6N,MAAQ3vC,QAAQwE,QAAQ6zB,UACjBsX,MAAM7zB,GAAG,8BAA+B,SAAUnX,OACvD,MAAO,UAASoG,OACd,GAAI+kC,KAEJ,OADAA,MAAO/kC,MAAM6f,QAAU7f,MAAM6f,QAAU7f,MAAMglC,MAChC,KAATD,MAAwB,KAATA,MAAwB,KAATA,MAChC/kC,MAAM2Q,iBACC/W,MAAMurC,SAASl1B,IAAK80B,OAF7B,SAKD1yC,QAGEmyC,mCAENpyC,MAAMkQ,SAETrQ,OAAOsd,QAAQ,oCAAqCi1B,mCAEpDD,kBAAoB,SAASzO,iBAC3B,GAAI/lB,KAOJ,OANAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOD,KAAIc,GAAG,QAAS,SAAU,SAAS/Q,OAExC,MADAA,OAAM2Q,iBACCmlB,gBAAgBxZ,MAAMrM,SAI/BJ,SAAU,IACVE,KAAMA,OAIV9d,OAAO6d,UAAU,YAAa,kBAAmBy0B,oBAEjDJ,uBAAyB,SAAS3mC,WAAY8nC,QAASzrC,SAAUi8B,gBAAiB3X,SAAUmT,QAASj8B,YACnG,GAAI0a,KAwEJ,OAvEAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI2yB,OAAOxvC,MAAOyvC,OA6DlB,OA5DAzvC,OAAQV,WAAW0E,QAAQmW,OAAOna,OAClCka,IAAIO,KAAK,YAAY5K,KAAK7P,OAC1ByvC,QAAUlU,QAAQzX,QAAQ,SAAUjgB,OAClC,MAAO,UAASkK,KAAM2hC,gBACpB,GAAIhwC,QAgBJ,OAfAA,SAAU6vC,QAAQ3lB,KAAK7b,MACvBrO,QAAQD,KAAK,WAIX,MAHAqE,UAASG,OAAO,WAChBwD,WAAW2V,WAAW,kBACtBP,OAAOif,cAAc/tB,MACd2hC,mBAEThwC,QAAQD,KAAK,KAAM,WAGjB,MAFAqE,UAASG,OAAO,SAChB8J,KAAKiuB,SACEnf,OAAOif,cAAc/tB,QAE9BrO,QAAQ,WAAW,WACjB,MAAOgwC,oBAEFhwC,UAERpD,OACHkzC,MAAQjU,QAAQzX,QAAQ,SAAUjgB,OAChC,MAAO,UAASkK,MACd,GAAIya,gBAAgB9oB,OAapB,OAZAmd,QAAOif,cAAc/tB,MACrBya,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,kBAAkBtQ,QAC9DzK,QAAU6vC,QAAQ3lB,KAAK/M,OAAOkN,aAC9BrqB,QAAQD,KAAK,WAEX,MADAqE,UAASG,OAAO,WACTwD,WAAW2V,WAAW,oBAE/B1d,QAAQD,KAAK,KAAM,WAGjB,MAFAqE,UAASG,OAAO,SAChB8J,KAAKiuB,SACEnf,OAAOif,cAAc/tB,QAEvBrO,QAAQ,WAAW,WAExB,MADA8oB,gBAAeI,SACRmX,gBAAgBxZ,MAAMrM,SAGhC5d,OACH2d,OAAO7R,IAAI,QAAS,WAElB,MADA8R,KAAIO,KAAK,WAAWnS,IAAIuU,OAAOkN,YAAYmd,cACpCnH,gBAAgB3b,KAAKlK,OAE9BD,OAAO7R,IAAI,UAAW,SAAUvE,OAC9B,MAAO,UAASoG,MAAO4M,MAAO64B,gBAC5B,GAAI3hC,KAIJ,OAHAA,MAAO8O,OAAOkN,YAAYnR,QAC1B7K,KAAK+uB,YAAa,EAClB/uB,KAAKm5B,aAAe,GACbuI,QAAQ1hC,KAAM2hC,kBAEtBpzC,OACH2d,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAENhB,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAC/C,GAAI8D,KAKJ,OAJA9D,OAAM2Q,iBACN7M,KAAO8O,OAAOkN,YAAYnR,QAC1B7K,KAAK+uB,YAAa,EAClB/uB,KAAKm5B,aAAehtB,IAAIO,KAAK,WAAWnS,MACjCknC,MAAMzhC,UAIfnO,YAAa,sCACboa,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,aAAc,aAAc,UAAW,aAAc,kBAAmB,aAAc,YAAa,aAAcq0B,yBAElIC,8BAAgC,SAAS7mC,KAAM4hB,UAAWD,UACxD,GAAInP,MAAML,SAAUC,UAmBpB,OAlBAD,UAAWyP,UAAU1nB,IAAI,wDAAwD,GACjFsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,MAAK1C,QAAOw1B,MAGL11B,OAAOjL,OAAOmL,OAAOw1B,MAAO,SAAS/kC,OAC1C,MAAIA,UAAU,GAAWA,SAAU,EAC1BsP,IAAIO,KAAK,iBAAiBwH,YAAY,UAEtC/H,IAAIO,KAAK,iBAAiB2H,SAAS,YANrC5a,KAAKgU,MAAM,8DAUtB5B,WAAa,SAASM,IAAKC,QACzB,MAAOR,WACL6yB,QAASryB,OAAOoQ,YAIlB5Q,SAAUC,WACVI,KAAMA,KACNwQ,QAAS,UACT1Q,SAAU,OAId5d,OAAO6d,UAAU,0BAA2B,OAAQ,cAAe,WAAYs0B,gCAE/EE,6BAA+B,SAAS3xB,MAAOC,OAAQmO,IAAK9C,WAAY6X,gBAAiB3X,SAAU9oB,WAAYwE,SAAUzE,GAAIw+B,oBAC3H,GAAI7jB,KAmJJ,OAlJAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,GAAI6X,kBAAkBC,oBAAqBC,kBAAmBC,kBAAmB31B,KAAM41B,iBAAkBz1B,OAAQgO,YA6IjH,OA5IAnO,MAAO,KACPH,OAAOg2B,gBACPh2B,OAAOi2B,OAAQ,EACfN,iBAAmBp4B,UAAU24B,OAC7BN,oBAAsBr4B,UAAU24B,OAChCH,iBAAmB,WAEjB,MADAJ,kBAAmBp4B,UAAU24B,OACtBN,oBAAsBr4B,UAAU24B,QAEzCl2B,OAAOikB,cAAgB,SAASkS,YAC9B,MAAOR,kBAAmBA,iBAAiB5sC,KAAKotC,aAElDn2B,OAAOo2B,iBAAmB,SAASD,YACjC,MAAOP,qBAAsBA,oBAAoB7sC,KAAKotC,aAExDn2B,OAAO7R,IAAI,aAAc,SAASmB,IAAKwL,UAAW5S,OAAQmuC,YAsBxD,MArBIl2B,OACFA,KAAKm2B,QAEPt2B,OAAOi2B,OAAQ,EACfj2B,OAAOu2B,aAAeF,WACtBr2B,OAAO4vB,YAAcryB,UAAU24B,OAC/BH,mBACA/1B,OAAO8Q,GAAKlO,OAAO5E,WAAW,eAC5B1T,QAASwQ,UACTwZ,UACApsB,OAAQA,OACRsuC,aAAa,EACbr+B,UAEF8H,IAAIO,KAAK,iBAAiBoP,KAAKvqB,WAAW0E,QAAQ,kBAClDkW,IAAIO,KAAK,UAAUoP,KAAKvqB,WAAW0E,QAAQ,mCAC3CkW,IAAIO,KAAK,cAAcnS,IAAI,IAC3B4R,IAAIO,KAAK,iBAAiB2H,SAAS,UACnClI,IAAIO,KAAK,iBAAiBwH,YAAY,YACtC/H,IAAIO,KAAK,0BAA0BwH,YAAY,YAC/C/H,IAAIO,KAAK,4BAA4BwH,YAAY,YAC1C8d,gBAAgB3b,KAAKlK,OAE9BD,OAAO7R,IAAI,cAAe,SAASmB,IAAKwhB,GAAI8e,aA4B1C,MA3BIzvB,OACFA,KAAKm2B,QAEPt2B,OAAO8Q,GAAKA,GACZ9Q,OAAO4vB,YAAcryB,UAAUC,OAAOoyB,aACtC5vB,OAAOi2B,OAAQ,EACfF,mBACA91B,IAAIO,KAAK,iBAAiBoP,KAAKvqB,WAAW0E,QAAQ,gBAClDkW,IAAIO,KAAK,UAAUoP,KAAKvqB,WAAW0E,QAAQ,oCAC3CkW,IAAIO,KAAK,cAAcnS,IAAI,IACvByiB,GAAG+R,YACL5iB,IAAIO,KAAK,iBAAiBwH,YAAY,UACtC/H,IAAIO,KAAK,iBAAiB2H,SAAS,cAEnClI,IAAIO,KAAK,iBAAiB2H,SAAS,UACnClI,IAAIO,KAAK,iBAAiBwH,YAAY,aAEpC8I,GAAG6e,iBACL1vB,IAAIO,KAAK,0BAA0B2H,SAAS,YAE5ClI,IAAIO,KAAK,0BAA0BwH,YAAY,YAE7C8I,GAAG4e,mBACLzvB,IAAIO,KAAK,4BAA4B2H,SAAS,YAE9ClI,IAAIO,KAAK,4BAA4BwH,YAAY,YAE5C8d,gBAAgB3b,KAAKlK,OAE9B41B,kBAAoB,SAASz9B,KAC3B,GAAIisB,SAIJ,OAHAA,UAAW3hC,EAAEC,IAAIgzC,iBAAiBl8B,OAAQ,SAAS08B,YACjD,MAAOvS,oBAAmB6S,OAAON,WAAWnS,KAAM5rB,IAAIgC,GAAI4F,OAAO8Q,GAAGxmB,QAAS,QAExElF,GAAGsV,IAAI2pB,WAEhByR,kBAAoB,SAAS19B,KAC3B,GAAIisB,SAIJ,OAHAA,UAAW3hC,EAAEC,IAAIizC,oBAAoBn8B,OAAQ,SAAS08B,YACpD,MAAOvS,oBAAmB,UAAU,KAAMuS,WAAW/7B,MAEhDhV,GAAGsV,IAAI2pB,WAEhB/jB,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAI0mC,gBAAgBnoB,eAAgB9oB,OAGpC,OAFAuK,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QAC7C8P,OAAOi2B,OACTxwC,QAAUkd,MAAM8L,OAAO,cAAezO,OAAO8Q,IAC7C4lB,eAAiB,uBAEjBjxC,QAAUkd,MAAMgN,KAAK3P,OAAO8Q,IAC5B4lB,eAAiB,uBAEnBjxC,QAAQD,KAAK,SAAS+D,MAMpB,MALAusC,mBAAkBvsC,MAAM/D,KAAK,SAAUoE,OACrC,MAAO,YACL,MAAOisC,mBAAkBtsC,QAE1BlH,OACIkH,OAET9D,QAAQD,KAAK,SAAS+D,MAGpB,MAFAglB,gBAAeI,SACfmX,gBAAgBxZ,MAAMrM,KACfgO,WAAW9K,WAAWuzB,eAAgBntC,QAExC9D,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UA3BF,SAgCDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QACzBL,IAAIc,GAAG,QAAS,SAAU,SAAS/Q,OAKjC,MAJAA,OAAM2Q,iBACNX,OAAO1J,OAAO,WACZ,MAAO0J,QAAO8Q,GAAGiR,WAEZ+D,gBAAgBxZ,MAAMrM,OAE/BA,IAAI02B,QAAQ,SAAS3mC,OACnB,GAAI+kC,KAEJ,OADAA,MAAO/kC,MAAM6f,QAAU7f,MAAM6f,QAAU7f,MAAMglC,MAChC,KAATD,MACFjP,gBAAgBxZ,MAAMrM,KACfD,OAAO1J,OAAO,WACnB,MAAO0J,QAAO8Q,GAAGiR,YAHrB,SAOK/hB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,2BAA4B,UAAW,WAAY,eAAgB,aAAc,kBAAmB,aAAc,aAAc,aAAc,KAAM,uBAAwBw0B,+BAE7LD,+BAAiC,SAAS1xB,MAAOoO,IAAKvjB,WAAYs4B,gBAAiB3X,UACjF,GAAIpO,KA+CJ,OA9CAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,GAAI3d,MAAMG,OAAQgO,YAyClB,OAxCAnO,MAAO,KACPH,OAAO7R,IAAI,cAAe,SAASmB,IAAKwL,UAAW5S,QASjD,MARIiY,OACFA,KAAKm2B,QAEPt2B,OAAO,QACLlF,UAAWA,UACX87B,SAAU1uC,OACV2uC,KAAM,IAED/Q,gBAAgB3b,KAAKlK,OAE9BK,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAKpB,OAJAuK,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAqB,IAElBjB,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUsrB,IAAI8D,YAAYiiB,WAAW92B,OAAO,OAAOlF,UAAWkF,OAAO,OAAO42B,SAAU52B,OAAO,OAAO62B,MACpGpxC,QAAQD,KAAK,SAASwQ,QAGpB,MAFAuY,gBAAeI,SACfnhB,WAAW2V,WAAW,sBAAuBnN,QACtC8vB,gBAAgBxZ,MAAMrM,OAExBxa,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UAbF,SAkBDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,6BAA8B,UAAW,eAAgB,aAAc,kBAAmB,aAAcu0B,iCAEzHJ,4BAA8B,SAASnO,gBAAiBiR,kCAAmC5nB,UAAWD,UACpG,GAAInP,KA+FJ,OA9FAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI82B,eAAeC,YAAaC,gBAAiBpvB,OAAQqvB,aAAcC,aAAcC,aAyFrF,OAxFAD,cAAe,KACfD,aAAe,KACfE,cAAgBloB,UAAU1nB,IAAI,mDAAmD,GACjFyvC,gBAAkB,SAASI,QACzB,GAAIC,iBAOJ,OANAA,kBAAmBD,OACnBC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,MAGvF2uC,YAAc,SAASrhC,KAAM5H,MAC3B,GAAI6S,SAKJ,OAJAA,UAAW7S,KAAK8jB,kBAAkB0lB,cAClC32B,SAAWq2B,gBAAgBr2B,UAC3BjL,KAAOA,KAAK4hC,cACZ5hC,KAAOshC,gBAAgBthC,MAChBlT,EAAE8X,SAASqG,SAAUjL,OAE9BkS,OAAS,SAASwe,SAAU1wB,MAC1B,GAAItG,KAAKsgB,KAAM/V,KAiBf,OAhBAA,OAAQnX,EAAEic,MAAMqB,OAAOjG,aAAa,GACpB,MAAZusB,WACFzsB,MAAQnX,EAAEiG,OAAOkR,OACfO,GAAMksB,SAASlsB,MAGP,MAARxE,OACFiE,MAAQnX,EAAEyM,OAAO0K,MAAOnX,EAAE+0C,QAAQR,YAAarhC,QAEjDtG,KACEg3B,SAAUA,SACVzsB,MAAOnX,EAAEuR,MAAM4F,MAAO,EAAG,GACzBs4B,SAAUt4B,MAAMhL,OAAS,GAE3B+gB,KAAOynB,cAAc/nC,KACrBsgB,KAAOV,SAASU,MAAM5P,QACfC,IAAIO,KAAK,qBAAqBoP,KAAKA,OAE5ConB,cAAgB,WAEd,MADAD,mCAAkChQ,OAC3BjB,gBAAgBxZ,MAAMrM,MAE/BD,OAAO7R,IAAI,kBAAmB,SAASmB,IAAKwE,MAC1C,GAAI4jC,aAKJ,OAJAP,cAAerjC,KACf4jC,aAAe5jC,KAAK4c,YACpB0mB,aAAep3B,OAAO3F,UAAUq9B,cAChC5vB,OAAOsvB,cACAtR,gBAAgB3b,KAAKlK,KAAKza,KAAK,WAEpC,MADAya,KAAIO,KAAK,SAASoO,QACXmoB,kCAAkC/0C,KAAKie,SAGlDD,OAAOjL,OAAO,cAAe,SAAS4iC,eACpC,MAAqB,OAAjBA,eACF7vB,OAAOsvB,aAAcO,eACd13B,IAAIO,KAAK,SAASoO,SAF3B,SAKF3O,IAAIc,GAAG,QAAS,oBAAqB,SAAS/Q,OAC5C,GAAIwe,OAIJ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BwsB,gBACOh3B,OAAO1J,OAAO,WAEnB,MADA0J,QAAOmD,WAAW,oBAAqBqL,OAAOjlB,KAAK,WAAY4tC,cACxDn3B,OAAO43B,YAAc,SAGhC33B,IAAIc,GAAG,QAAS,sBAAuB,SAAS/Q,OAI9C,MAHAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACN0S,gBACOh3B,OAAO1J,OAAO,WAEnB,MADA0J,QAAO43B,YAAc,KACd53B,OAAOmD,WAAW,oBAAqB,KAAMg0B,kBAGxDl3B,IAAIc,GAAG,QAAS,SAAU,SAAS/Q,OAGjC,MAFAA,OAAM2Q,iBACNq2B,gBACOh3B,OAAO1J,OAAO,WACnB,MAAO0J,QAAO43B,YAAc,SAGzB53B,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIbtb,YAAa,4CACboa,KAAMA,OAIV9d,OAAO6d,UAAU,kBAAmB,kBAAmB,oCAAqC,cAAe,WAAYm0B,8BAEvHU,0BAA4B,SAAShyB,MAAOmjB,gBAAiBiR,kCAAmC5nB,UAAWD,UACzG,GAAInP,KAgFJ,OA/EAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI82B,eAAea,iBAAkB/vB,OAAQqvB,aAAcE,aA0E3D,OAzEAF,cAAe,KACfE,cAAgBloB,UAAU1nB,IAAI,mDAAmD,GACjFowC,iBAAmB,SAASjiC,MAC1B,GAAIkiC,cAAcj+B,KAiBlB,OAhBY,OAARjE,OACFA,KAAO,IAETkiC,aAAe,SAASliC,KAAM5H,MAC5B,GAAI6S,SACJ,OAAIs2B,eAAgBz0C,EAAE8d,KAAK22B,aAAavV,SAAU,SAASh/B,GACzD,MAAOA,KAAMoL,KAAKoM,MAEX,GAETyG,SAAW7S,KAAK8jB,kBAAkB0lB,cAClC5hC,KAAOA,KAAK4hC,cACL90C,EAAE8X,SAASqG,SAAUjL,QAE9BiE,MAAQnX,EAAEic,MAAMqB,OAAOjG,aAAa,GACpCF,MAAQnX,EAAEyM,OAAO0K,MAAOnX,EAAE+0C,QAAQK,aAAcliC,QAGlDkS,OAAS,SAASjO,OAChB,GAAIvK,KAAKsgB,IAQT,OAPAtgB,MACEg3B,UAAU,EACVzsB,MAAOnX,EAAEuR,MAAM4F,MAAO,EAAG,GACzBs4B,SAAUt4B,MAAMhL,OAAS,GAE3B+gB,KAAOynB,cAAc/nC,KACrBsgB,KAAOV,SAASU,MAAM5P,QACfC,IAAIO,KAAK,oBAAoBoP,KAAKA,OAE3ConB,cAAgB,WAEd,MADAD,mCAAkChQ,OAC3BjB,gBAAgBxZ,MAAMrM,MAE/BD,OAAO7R,IAAI,cAAe,SAASmB,IAAKwE,MACtC,GAAI+F,MAIJ,OAHAs9B,cAAerjC,KACf+F,MAAQg+B,mBACR/vB,OAAOjO,OACAisB,gBAAgB3b,KAAKlK,KAAKza,KAAK,WAEpC,MADAya,KAAIO,KAAK,SAASoO,QACXmoB,kCAAkC/0C,KAAKie,SAGlDD,OAAOjL,OAAO,cAAe,SAAS4iC,eACpC,GAAI99B,MACJ,IAAqB,MAAjB89B,cAKJ,MAFA99B,OAAQg+B,iBAAiBF,eACzB7vB,OAAOjO,OACAoG,IAAIO,KAAK,SAASoO,UAE3B3O,IAAIc,GAAG,QAAS,oBAAqBpO,SAAS,IAAM,SAAS3C,OAC3D,GAAIwe,OAIJ,OAHAwoB,iBACAhnC,MAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBxK,OAAO1J,OAAO,WAEnB,MADA0J,QAAO43B,YAAc,KACd53B,OAAOmD,WAAW,gBAAiBqL,OAAOjlB,KAAK,iBAG1D0W,IAAIc,GAAG,QAAS,SAAU,SAAS/Q,OAGjC,MAFAA,OAAM2Q,iBACNq2B,gBACOh3B,OAAO1J,OAAO,WACnB,MAAO0J,QAAO43B,YAAc,SAGzB53B,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIbtb,YAAa,sCACboa,KAAMA,OAIV9d,OAAO6d,UAAU,gBAAiB,UAAW,kBAAmB,oCAAqC,cAAe,WAAY60B,4BAEhIT,mCAAqC,SAASpO,gBAAiB3W,UAAWD,UACxE,GAAInP,KAIJ,OAHAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,MAAOgI,iBAAgB3b,KAAKlK,OAG5Bta,YAAa,mDACboa,KAAMA,KACNrL,OAAO,IAIXzS,OAAO6d,UAAU,yBAA0B,kBAAmB,cAAe,WAAYo0B,qCAEzFO,qCAAuC,SAAS3O,gBAAiB3W,UAAWD,UAC1E,GAAInP,KAIJ,OAHAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,MAAOgI,iBAAgB3b,KAAKlK,OAG5Bta,YAAa,sDACboa,KAAMA,KACNrL,OAAO,IAIXzS,OAAO6d,UAAU,iCAAkC,kBAAmB20B,wCAErE/uC,KAAKrD,MA2BR,WACE,GAAI01C,QAAQC,gBAAiB/1C,OAAQmR,WAAYhR,MAAOoR,OAExDpR,OAAQC,KAAKD,MAEbgR,WAAa/Q,KAAKD,MAAMgR,WAExBI,QAAUnR,KAAKD,MAAMoR,QAErBvR,OAASgD,QAAQhD,OAAO,eAExB+1C,gBAAkB,SAASC,SAAUzqC,YACnC,GAAIuS,KAWJ,OAVAA,MAAO,SAASC,OAAQC,IAAKC,QAK3B,MAJA+3B,UAASC,QAAQ,WAEf,MADA5tB,GAAEgT,SAAS2J,MAAM9e,SAAS,iBACnBlI,IAAIkI,SAAS,YAEf8vB,SAASE,MAAM,WAEpB,MADA7tB,GAAEgT,SAAS2J,MAAMjf,YAAY,iBACtB/H,IAAI+H,YAAY,cAIzBjI,KAAMA,OAIV9d,OAAO6d,UAAU,YAAa,WAAY,aAAck4B,kBAExDD,OAAS,SAASvqC,YAChB,GAAI4qC,WAAWjwC,OAAQkwC,iBAAkBluB,KAAMmuB,WAAYC,aAAcroC,MAAOsoC,aA8ChF,OA7CArwC,SACEswC,QAAS,KAEXtuB,MAAO,EACPquB,cAAgB,EAChBD,aAAe,EACfF,iBAAmB,EACnBC,WAAa,SAASI,OACpB,GAAInI,MAAMoI,QAASC,YAqBnB,OApBa,OAATF,QACFA,OAAQ,GAENF,gBACFI,aAAe,EACVF,QACHC,SAAU,GAAIv1C,OAAOC,UACrBktC,KAAOoI,QAAUH,cACbjI,KAAOpoC,OAAOswC,UAChBG,aAAezwC,OAAOswC,QAAUlI,OAGpC/8B,QAAQolC,aAAc,WAGpB,MAFAprC,YAAW2V,WAAW,cACtBgH,MAAO,EACA5nB,OAAOye,gBAAiB,KAGnCw3B,cAAgB,EAChBD,aAAe,EACRF,iBAAmB,GAE5BD,UAAY,WACV,GAAIS,aACJ,OAAOA,cAAe9rB,YAAY,WAChC,MAAIsrB,mBAAqC,IAAjBE,cACtBD,aACOlrB,cAAcyrB,eAFvB,QAIE,KAEN3oC,MAAQ,WAGN,MAFAsoC,gBAAgB,GAAIp1C,OAAOC,UAC3BmK,WAAW2V,WAAW,gBACfgH,MAAO,IAGdmuB,WAAYA,WACZpoC,MAAO,SAAS4oC,MAId,MAHY,OAARA,OACFA,MAAO,IAEJ3uB,OACHja,QACI4oC,MACKV,YAHX,QAOFF,QAAS,SAASvmC,IAChB,MAAOnE,YAAWW,IAAI,eAAgBwD,KAExCwmC,MAAO,SAASxmC,IACd,MAAOnE,YAAWW,IAAI,aAAcwD,KAEtCzI,WAAY,WACV,MAAOqvC,iBAETlvC,YAAa,WAEX,MADAkvC,gBACOF,kBAAmB,GAAIj1C,OAAOC,aAK3C00C,OAAOt7B,SAAW,cAElBxa,OAAO4G,QAAQ,WAAYkvC,SAE1BryC,KAAKrD,MA2BR,WACE,GAAI02C,kBAAkBC,iBAAkB/2C,OACtCgS,SAAWA,KAEbhS,QAASgD,QAAQhD,OAAO,eAExB+2C,iBAAmB,SAAS9pB,UAC1B,GAAI+pB,QAEJ,OADAA,SAAU,sCAAwC12C,OAAOyI,SAAW,+CAC7D,WACL,GAAIuU,QAoEJ,OAnEAA,UACE25B,UACE1qB,OAAQ,KACR9Z,MAAO,KACPkU,WACApV,QAAS,EACTkM,SAAU,MAEZ8O,OAAQ,SAASA,QAEf,MADAjP,SAAQ25B,SAAS1qB,OAASA,OACnBjP,SAET7K,MAAO,SAASA,OAEd,MADA6K,SAAQ25B,SAASxkC,MAAQA,MAClB6K,SAETG,SAAU,SAASA,UAEjB,MADAH,SAAQ25B,SAASx5B,SAAWA,SACrBH,SAET45B,cAAe,WACb,GAAIC,SAGJ,OAFAA,UAAW,GAAKtnC,UAAUjD,OAASoF,MAAMvO,KAAKoM,UAAW,MACzDyN,QAAQ25B,SAAStwB,QAAUwwB,SACpB75B,SAET/L,QAAS,SAASA,SAEhB,MADA+L,SAAQ25B,SAAS1lC,QAAUA,QACpB+L,SAETrP,MAAO,WACL,GAAIse,QAAQ6qB,SAeZ,OAdA7qB,QAASjP,QAAQ25B,SAAS1qB,OAC1BjP,QAAQ25B,SAAStwB,QAAQjmB,IAAI,SAAS8lB,WACpC,MAAO+F,QAAOxG,YAAYS,aAEvB+F,OAAOkS,SAAS,YAAenhB,QAAQ25B,SAASx5B,WACnDH,QAAQ25B,SAASx5B,SAAW8O,OAAOoB,QAErCypB,UAAYnjC,WAAW,WACrB,MAAKsY,QAAOkS,SAAS,WAArB,QACElS,OAAOrG,SAAS,WACTqG,OAAOoB,KAAKqpB,WAEnB15B,QAAQ25B,SAAS1lC,SACrB+L,QAAQ25B,SAASG,UAAYA,UACtB95B,SAEToP,OAAQ,WACN,GAAIwqB,eAAe3qB,OAAQ6qB,SAe3B,OAdA7qB,QAASjP,QAAQ25B,SAAS1qB,OAC1B6qB,UAAY95B,QAAQ25B,SAASG,UACzBA,YACFjjC,aAAaijC,WACbF,cAAgB55B,QAAQ25B,SAAStwB,QACjCuwB,cAAcx2C,IAAI,SAAS8lB,WACzB,MAAOlJ,SAAQ25B,SAAS1qB,OAAOrG,SAASM,aAE1C+F,OAAOoB,KAAKrQ,QAAQ25B,SAASx5B,UAC7B8O,OAAOxG,YAAY,WACfzI,QAAQ25B,SAASxkC,OACnBwa,SAASV,OAAOyP,YAAY1e,QAAQ25B,SAASxkC,QAG1C6K,YAOfy5B,iBAAiBv8B,SAAW,YAE5Bxa,OAAO4G,QAAQ,aAAcmwC,kBAE7BD,iBAAmB,SAAS5qB,UAC1B,GAAIpO,KAeJ,OAdAA,MAAO,SAASC,OAAQC,IAAKtL,MAC3B,GAAI4Z,gBAAgB7O,QAGpB,OAFA6O,gBAAiB,KACjB7O,SAAWO,IAAI2P,OACR5P,OAAOjL,OAAOJ,KAAK2kC,UAAW,SAAU1vC,OAC7C,MAAO,UAAS2vC,aACd,MAAIA,aACKhrB,eAAiBJ,WAAWK,OAAOvO,KAAKzM,QAAQ,KAAKkM,SAASA,UAAUhL,MAAMsL,QAAQ9P,QACpFqe,eACFA,eAAeI,SADjB,SAIRtsB,SAGH0d,KAAMA,OAIV9d,OAAO6d,UAAU,aAAc,aAAci5B,oBAE5CrzC,KAAKrD,MA2BR,WACE,GAAIm3C,4BAA4BC,kBAAmBhnC,SAAUE,SAAU1Q,OAAQG,KAE/EA,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,eAExBw3C,kBAAoB,SAAS92B,MAAOwM,WAclC,GAAIpP,MAAML,QAuDV,OAtDAA,UAAWyP,UAAU1nB,IAAI,yCAAyC,GAClEsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOzJ,OAAQgJ,EAwCnB,OAvCAS,OAAQtR,IAAIra,aACZkiB,OAAS,SAASgJ,IAChB,GAAIkJ,cAAc0f,YAAaC,iBAI/B,OAHAA,mBAAoB15B,IAAIO,KAAK,cAC7Bk5B,YAAcz5B,IAAIO,KAAK,8BACvBwZ,aAAeha,OAAOga,aAClBA,aAAalJ,GAAG5oB,SAClBwxC,YAAY9jC,KAAKokB,aAAalJ,GAAG5oB,QAAQmN,MAClCskC,kBAAkBhZ,IAAI,QAAS3G,aAAalJ,GAAG5oB,QAAQg9B,QAFhE,QAKFjlB,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OAGrC,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACCrkB,IAAIO,KAAK,eAAeuqB,UAAU5gB,SAE3ClK,IAAIc,GAAG,QAAS,UAAWpO,SAAS,IAAM,SAAS3C,OACjD,GAAIwe,QAAQsC,EAQZ,OAPA9gB,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BsG,GAAK9Q,OAAOlL,MAAMoL,OAAO05B,YACzB9oB,GAAG5oB,OAASsmB,OAAOjlB,KAAK,aACxBue,OAAOgJ,IACP7Q,IAAIO,KAAK,eAAeuqB,UAAUze,QAC3BtM,OAAO1J,OAAO,WACnB,MAAOqM,OAAMgN,KAAKmB,IAAItrB,KAAK,WACzB,MAAOwa,QAAOlL,MAAMoL,OAAO25B,iBAIjC75B,OAAO7R,IAAI,qBAAsB,WAC/B,MAAO2Z,QAAO9H,OAAOlL,MAAMoL,OAAO05B,eAEpC55B,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEb6P,GAAK9Q,OAAOlL,MAAMoL,OAAO05B,YACzB9xB,OAAOgJ,IACAre,SAASuN,OAAQ,UAAW,SAAS1V,SAC1C,GAAIslB,KAKJ,OAJAA,MAAOlQ,UACLo6B,SAAYxvC,QAAQ2vB,cAEtBha,IAAIwK,OAAOmF,MACgD,KAAvD5P,OAAO1V,QAAQqe,eAAengB,QAAQ,cACxCyX,IAAI+R,OAAO,SACJ/R,IAAIO,KAAK,KAAK2H,SAAS,kBAFhC,WAOFpI,KAAMA,OAIV9d,OAAO6d,UAAU,cAAe,UAAW,cAAe25B,oBAE1DD,2BAA6B,SAAS72B,MAAOwM,WAc3C,GAAIpP,MAAMg6B,kBAAmBC,gBAqD7B,OApDAD,mBAAoB5qB,UAAU1nB,IAAI,mDAAmD,GACrFuyC,iBAAmB,SAAS/5B,IAAKwP,KAAMmK,gBACrC,GAAIqgB,eAAeC,mBAGnB,OAFAA,qBAAsBj6B,IAAIO,KAAK,cAC/By5B,cAAgBh6B,IAAIO,KAAK,kCACrBoZ,eAAenK,KAAKvnB,SACtB+xC,cAAcrkC,KAAKgkB,eAAenK,KAAKvnB,QAAQmN,MACxC6kC,oBAAoBvZ,IAAI,QAAS/G,eAAenK,KAAKvnB,QAAQg9B,QAFtE,QAKFnlB,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOC,SAAUC,YAAahC,IAqClC,OApCA8B,OAAQtR,IAAIra,aACZ6pB,KAAOzP,OAAOlL,MAAMoL,OAAOi6B,qBAC3B1oB,YAAczR,OAAOlL,MAAMoL,OAAOuR,aAClCD,UAAYC,YACZxR,IAAIc,GAAG,QAAS,eAAgB,SAAS/Q,OAGvC,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACCrkB,IAAIO,KAAK,eAAeuqB,UAAU5gB,SAE3ClK,IAAIc,GAAG,QAAS,UAAWpO,SAAS,IAAM,SAAS3C,OACjD,GAAIwe,OAOJ,OANAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BiF,KAAKvnB,OAASsmB,OAAOjlB,KAAK,aAC1B0W,IAAIO,KAAK,eAAeuqB,UAAUze,QAClC0tB,iBAAiB/5B,IAAKwP,KAAMzP,OAAO4Z,gBAC/BpI,SACKxR,OAAO1J,OAAO,WACnB,MAAOqM,OAAMgN,KAAKF,MAAMjqB,KAAK,WAE3B,MADAwa,QAAOlL,MAAMoL,OAAO25B,UACb75B,OAAOqQ,MAAM,oCAJ1B,UASFjuB,MAAMqQ,SAASuN,OAAQ,UAAW,SAAS1V,SAKzC,MAJA2V,KAAIwK,OAAOsvB,mBACTD,SAAYxvC,QAAQuvB,iBAEtBmgB,iBAAiB/5B,IAAKwP,KAAMzP,OAAO4Z,gBACmB,KAAlDtvB,QAAQqe,eAAengB,QAAQ,gBACjCyX,IAAI+R,OAAO,SACJ/R,IAAIO,KAAK,KAAK2H,SAAS,kBAFhC,SAKKnI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,uBAAwB,UAAW,cAAe05B,6BAEnElvB,EAAE3Y,GAAGo5B,QAAU,WACb,GAAI9qB,KAAKqM,MAAOjkB,SAAU+xC,aAAcC,UAAWlwB,IAuEnD,OAtEAlK,KAAM5d,KACNg4C,UAAY,SAAUzwC,OACpB,MAAO,YACL,GAAI0wC,eAAeC,YAAaC,aAAcC,WAAYC,aAAcC,WAAYC,SAAUC,UAAWC,QAASC,SAmBlH,OAlBA96B,KAAI0gB,KACFqa,QAAW,QACXC,WAAc,WAEhBR,WAAanwB,EAAE/nB,QAAQihC,YACvB8W,cAAgBG,WAAanwB,EAAE/nB,QAAQgpC,SACvCmP,aAAepwB,EAAE/nB,QAAQ+L,QACzBksC,aAAeE,aACfH,YAAc,EACdO,QAAU76B,IAAIwjB,SAASC,IACvBiX,WAAaG,QAAU76B,IAAIsrB,SAC3BwP,UAAY96B,IAAI3R,QAChBssC,SAAW36B,IAAIwjB,SAASyX,KACxBL,UAAY56B,IAAIwjB,SAASyX,KAAOH,UAChC96B,IAAI0gB,KACFqa,QAAW,OACXC,WAAc,YAEMX,eAAdK,YAAiCG,SAAWL,YAAgBG,UAAYL,aAA8BC,cAAbK,YAElGx4C,MACH+3C,aAAe,SAAUxwC,OACvB,MAAO,UAASuiB,SAOd,MANIA,UACFA,QAAQzmB,KAAKua,KAEfA,IAAIsK,QAAQ,WACV,MAAOtK,KAAI+H,YAAY,UAAUA,YAAY,SAExC/H,IAAIgB,IAAI,iBAEhB5e,MACHgG,SAAW,SAAUuB,OACnB,MAAO,YACL,MAAO0gB,GAAE,mBAAmBhf,KAAK,WAC/B,MAAOgf,GAAEjoB,MAAMsxC,QAAQ,mBAG1BtxC,MACH8nB,KAAO,SAAUvgB,OACf,MAAO,UAASuiB,SACd,MAAIlM,KAAIygB,SAAS,UACRpU,SAEPjkB,WACKgyC,aACHp6B,IAAIkI,SAAS,OAEflI,IAAIyK,OAAO,WAGT,MAFAzK,KAAIkI,SAAS,UACbmC,EAAEgT,SAAS2J,MAAMhmB,IAAI,WACdqJ,EAAEgT,SAAS2J,MAAMG,IAAI,gBAAiB,WAC3C,MAAO/+B,gBAGJ4X,IAAIc,GAAG,cAAe,SAAS1R,GACpC,MAAO+qC,cAAajuB,cAIzB9pB,MACHiqB,MAAQ,SAAU1iB,OAChB,MAAO,YACL,MAAOqW,KAAI0zB,QAAQ,iBAEpBtxC,OAED8nB,KAAMA,KACNmC,MAAOA,MACPjkB,SAAUA,YAIb3C,KAAKrD,MA2BR,WACE,GAAI84C,yBAAyBl5C,OAAQG,KAErCA,OAAQC,KAAKD,MAEbH,OAASgD,QAAQhD,OAAO,eAExBk5C,wBAA0B,SAAS5tC,KAAMpF,QACvC,GAAIizC,YAGJ,OAFA/4C,MAAK8F,OAASA,OACdizC,YAAc/4C,KAAK8F,OAAOV,IAAI,cAAe,MACzC2zC,aACF7tC,KAAKW,MAAM,wCACXmtC,MAAMlzC,OAAOizC,aAAaE,UACnB,SAAStjC,UAAWujC,OAEzB,MADAhuC,MAAKgU,MAAM1P,MAAMtE,KAAMuE,WAChBupC,MAAMG,iBAAiBxjC,cAGhCzK,KAAKW,MAAM,gDACJ,SAAS8J,UAAWujC,OACzB,MAAOhuC,MAAKgU,MAAM1P,MAAMtE,KAAMuE,cAKpC7P,OAAO4G,QAAQ,qBAAsB,OAAQ,YAAasyC,2BAEzDz1C,KAAKrD,MA2BR,WACE,GAAIo5C,uBAAuBC,mBAAoBC,iBAAkBC,cAAenpC,SAAUxQ,OAAQG,MAAOuR,KACvGnL,WAAaA,SAAW,SAASsL,MAAQ,IAAK,GAAIC,GAAI,EAAGC,EAAI3R,KAAKwM,OAAYmF,EAAJD,EAAOA,IAAO,GAAIA,IAAK1R,OAAQA,KAAK0R,KAAOD,KAAM,MAAOC,EAAK,OAAO,GAEhJ3R,OAAQC,KAAKD,MAEbuR,KAAOtR,KAAKD,MAAMuR,KAElBlB,SAAWpQ,KAAKD,MAAMqQ,SAEtBxQ,OAASgD,QAAQhD,OAAO,eAExB25C,cAAgB,WACd,GAAIC,WAAW97B,KAAM+7B,MAwBrB,OAvBAD,WAAY,SAAStR,GACnB,MAAI7nC,GAAE2tC,QAAQ9F,GACLA,EAAEvnC,KAAK,MAET,IAET84C,OAAS,SAASvR,GAChB,GAAIv0B,OACJ,OAAKu0B,IAGLv0B,OAAStT,EAAE6nC,EAAE77B,MAAM,MAAM/L,IAAI,SAASC,GACpC,MAAOF,GAAEiR,KAAK/Q,KAEToT,OAAOrF,aAEhBoP,KAAO,SAASC,OAAQC,IAAKC,OAAQqR,OAGnC,MAFAA,OAAMwqB,YAAYhzC,KAAK8yC,WACvBtqB,MAAMyqB,SAASjzC,KAAK+yC,QACb97B,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIbsP,QAAS,UACTxQ,KAAMA,OAIV9d,OAAO6d,UAAU,SAAU87B,eAE3BH,sBAAwB,WACtB,GAAI17B,MAAMN,SAkCV,OAjCAA,YACEw8B,QAASv5C,EAAEgd,SAAS,8IACpBw8B,OAAQx5C,EAAEgd,SAAS,qJACnBy8B,UAAWz5C,EAAEgd,SAAS,yJAExBK,KAAO,SAASC,OAAQC,IAAKC,OAAQqR,OACnC,GAAIzJ,OAuBJ,OAtBAA,QAAS,SAASs0B,SAChB,GAAIxsB,MAAMzX,KAAMuH,QAchB,OAbAA,UAAWD,UAAUS,OAAOm8B,oBAC5BD,QAAQE,OACRnkC,KAAOzV,EAAEC,IAAIy5C,QAAS,SAASG,KAC7B,GAAIrX,MAEJ,OADAA,OAAQllB,OAAO1V,QAAQkyC,YAAYD,MAEjClnC,KAAMknC,IACNrX,MAAOA,SAGXtV,KAAOlQ,UACLvH,KAAMA,OAED8H,IAAI2P,KAAKA,OAElB5P,OAAOjL,OAAOmL,OAAOu8B,eAAgB,SAAStkC,MAC5C,MAAY,OAARA,KACK2P,OAAO3P,MADhB,SAIK6H,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB27B,uBAEnCC,mBAAqB,SAAS3qB,IAAK5B,UAAWD,UAC5C,GAAIwtB,WAAWC,UAAW58B,KAAM68B,YAkIhC,OAjIAD,WAAY,GACZD,UAAY,IACZE,aAAeztB,UAAU1nB,IAAI,oCAAoC,GACjEsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAIi6B,UAAUC,YAAaC,eAAgBC,WAAYC,WAAYC,aAAcC,cAyHjF,OAxHAH,YAAa,SAAS7kC,KAAMilC,YAC1B,GAAI9tC,KAAKsgB,IAiBT,OAhBAtgB,MACE6I,KAAMzV,EAAEC,IAAIwV,KAAM,SAASghB,GACzB,OACE9jB,KAAM8jB,EACN+L,MAAOkY,WAAWjkB,OAIxBz2B,EAAEC,IAAI2M,IAAI6I,KAAM,SAAUvO,OACxB,MAAO,UAAS2yC,KACd,MAAIA,KAAIrX,MACCqX,IAAIc,MAAQ,0BAA4Bd,IAAIrX,MADrD,SAID7iC,OACHutB,KAAOV,SAAS0tB,aAAattC,MAAM0Q,QAC5BC,IAAIO,KAAK,mBAAmBoP,KAAKA,OAE1CutB,eAAiB,WACf,MAAOl9B,KAAIO,KAAK,SAASwH,YAAY,WAEvC+0B,eAAiB,WACf,MAAO98B,KAAIO,KAAK,SAAS2H,SAAS,WAEpC80B,WAAa,WAEX,MADAh9B,KAAIO,KAAK,SAASnS,IAAI,IACf4R,IAAIO,KAAK,SAAS88B,aAAa,UAExCT,SAAW,SAASlsC,OAClB,GAAIwH,KAEJ,OADAxH,OAAQgD,KAAKhD,MAAM6E,eACE,IAAjB7E,MAAM9B,QAGVsJ,KAAOzV,EAAEic,MAAMiE,OAAOkN,aAAa,GACvB,MAAR3X,OACFA,SAEE3P,QAAQ9C,KAAKyS,KAAMxH,OAAS,GAC9BwH,KAAKpP,KAAK4H,OAEZqP,OAAO1J,OAAO,WACZ,MAAOsM,QAAOif,cAAc1pB,QAEvB4kC,kBAbP,QAeFD,YAAc,SAASnsC,OACrB,GAAIwH,KAEJ,OADAxH,OAAQgD,KAAKhD,MAAM6E,eACE,IAAjB7E,MAAM9B,QAGVsJ,KAAOzV,EAAEic,MAAMiE,OAAOkN,aAAa,GACnC3X,KAAOzV,EAAEu/B,KAAK9pB,KAAMxH,OACbqP,OAAO1J,OAAO,WACnB,MAAOsM,QAAOif,cAAc1pB,SAN9B,QASF+kC,aAAe,WACb,GAAIvsC,MAGJ,OAFAA,OAAQsP,IAAIO,KAAK,SAASnS,MAC1BwuC,SAASlsC,OACFssC,cAETh9B,IAAIc,GAAG,WAAY,QAAS,SAAS/Q,OACnC,GAAIwe,OAEJ,OADAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC3Bxa,MAAM6f,UAAY8sB,WACpB3sC,MAAM2Q,iBACCu8B,gBACyC,MAAvC/lC,OAAOomC,aAAavtC,MAAM6f,UACnC7f,MAAM2Q,iBACCu8B,gBAEH1uB,OAAOngB,MAAMQ,OACRsuC,iBAEAJ,mBAIb98B,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAEhC,MADAA,OAAM2Q,iBACCu8B,iBAETj9B,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OACtC,GAAIwe,QAAQ7d,KAIZ,OAHAX,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B7Z,MAAQ6d,OAAOsc,SAAS,aAAal1B,OAC9BknC,YAAYnsC,SAErB8B,SAASuN,OAAQ,UAAW,SAAS1V,SACnC,GAAIkzC,oBAQJ,OAPAA,qBAAsB,SAASC,SAAUC,UACvC,GAAIC,KAIJ,OAHAA,MAAOD,SAASj0C,QAAQA,QACxBk0C,KAAKhd,IAAI,QAAS+c,SAASlvB,OAAOlgB,OAClCqvC,KAAKhd,IAAI,MAAO8c,SAAS/Z,KAClBia,KAAKhd,IAAI,OAAQ8c,SAASvC,OAE5Bj7B,IAAIO,KAAK,SAAS88B,cACvBM,OAAQl7C,EAAE6R,KAAKjK,QAAQkyC,aACvBiB,UACEI,GAAI,WACJC,MAAON,qBAETttB,OAAQ,SAASlgB,MAAO+tC,IAEtB,MADAlB,UAASkB,GAAGjqC,KAAKnD,OACVotC,GAAGjqC,KAAKnD,MAAQ,QAI7BqP,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASnY,MACrC,GAAI7C,KAAK8nC,UAET,OADAA,aAAwC,OAAzB9nC,IAAM0K,OAAO1V,SAAmBgL,IAAIknC,YAAc,YAC1DQ,WAAW7kC,KAAMilC,cAEnBp9B,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNwQ,QAAS,UACT5qB,YAAa,gCAIjB1D,OAAO6d,UAAU,eAAgB,eAAgB,cAAe,WAAY47B,qBAE5EC,iBAAmB,SAAS1tB,WAAYtL,MAAOoO,IAAKlnB,SAAUy3B,QAASnS,UAAWD,UAChF,GAAIwtB,WAAWC,UAAWqB,QAASj+B,KAAM68B,YAqMzC,OApMAD,WAAY,GACZqB,QAAU,GACVtB,UAAY,IACZE,aAAeztB,UAAU1nB,IAAI,kCAAkC,GAC/DsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAIi6B,UAAUC,YAAamB,iBAAkBC,qBAAsBC,UAAWpB,eAAgBvb,WAAY4c,qBAAsBpB,WAAYC,WAAYC,aAAcmB,iBAAkBC,qBAAsBC,UAAWpB,cA2LzN,OA1LA3b,YAAa,WACX,MAA2B,OAAvBthB,OAAOyhB,aAC6D,KAA/D3hB,OAAO1V,QAAQqe,eAAengB,QAAQ0X,OAAOyhB,eAE/C,GAETqb,WAAa,SAAS7kC,KAAMilC,YAC1B,GAAI9tC,KAAKsgB,IAWT,OAVAtgB,MACE6I,KAAMzV,EAAEC,IAAIwV,KAAM,SAASghB,GACzB,OACE9jB,KAAM8jB,EACN+L,MAAOkY,WAAWjkB,MAGtBqI,WAAYA,cAEd5R,KAAOV,SAAS0tB,aAAattC,MAAM0Q,QAC5BC,IAAIO,KAAK,sBAAsBoP,KAAKA,OAE7CwuB,qBAAuB,WAGrB,MAFAn+B,KAAIO,KAAK,YAAYpC,SACrB6B,IAAIO,KAAK,SAASpC,SACX6B,IAAIO,KAAK,SAASpC,UAE3BigC,iBAAmB,WACjB,MAAOp+B,KAAIO,KAAK,YAAYwH,YAAY,WAE1Ci2B,iBAAmB,WACjB,MAAOh+B,KAAIO,KAAK,YAAY2H,SAAS,WAEvCm2B,qBAAuB,WACrB,MAAOr+B,KAAIO,KAAK,iBAAiBwH,YAAY,WAE/Ck2B,qBAAuB,WACrB,MAAOj+B,KAAIO,KAAK,iBAAiB2H,SAAS,WAE5Cg1B,eAAiB,WACf,MAAOl9B,KAAIO,KAAK,SAASwH,YAAY,WAEvC+0B,eAAiB,WACf,MAAO98B,KAAIO,KAAK,SAAS2H,SAAS,WAEpCo2B,UAAY,WACV,MAAOt+B,KAAIO,KAAK,SAASwH,YAAY,UAAU4G,SAEjDuvB,UAAY,WACV,MAAOl+B,KAAIO,KAAK,SAAS2H,SAAS,UAAUq2B,QAE9CvB,WAAa,WAEX,MADAh9B,KAAIO,KAAK,SAASnS,IAAI,IACf4R,IAAIO,KAAK,SAAS88B,aAAa,UAExCT,SAAWvb,QAAQzX,QAAQ,SAASlZ,OAClC,GAAIiM,OAAOwD,QAASC,UAAWlI,IAE/B,OADAxH,OAAQgD,KAAKhD,MAAM6E,eACE,IAAjB7E,MAAM9B,QAGVsJ,KAAOzV,EAAEic,MAAMiE,OAAOkN,YAAY3X,MAAM;AAC5B,MAARA,OACFA,SAEE3P,QAAQ9C,KAAKyS,KAAMxH,OAAS,GAC9BwH,KAAKpP,KAAK4H,OAEZiM,MAAQgG,OAAOkN,YAAYnR,QAC3B/B,MAAMzE,KAAOA,KACbyK,OAAOif,cAAcjlB,OACrByD,UAAY,WACV,MAAO4N,YAAW9K,WAAW,mBAE/B/C,QAAU,WAGR,MAFAvW,UAASG,OAAO,SAChB4S,MAAMmlB,SACCnf,OAAOif,cAAcjlB,QAE9BmgC,iBACOp6B,MAAMgN,KAAK/S,OAAOpX,KAAK6a,UAAWD,UAtBzC,SAwBF08B,YAAcxb,QAAQzX,QAAQ,SAASlZ,OACrC,GAAIiM,OAAOwD,QAASC,UAAWlI,IAE/B,OADAxH,OAAQgD,KAAKhD,MAAM6E,eACE,IAAjB7E,MAAM9B,QAGVsJ,KAAOzV,EAAEic,MAAMiE,OAAOkN,YAAY3X,MAAM,GACxCA,KAAOzV,EAAEu/B,KAAK9pB,KAAMxH,OACpBiM,MAAQgG,OAAOkN,YAAYnR,QAC3B/B,MAAMzE,KAAOA,KACbyK,OAAOif,cAAcjlB,OACrByD,UAAY,WACV,MAAO4N,YAAW9K,WAAW,mBAE/B/C,QAAU,WAGR,MAFAvW,UAASG,OAAO,SAChB4S,MAAMmlB,SACCnf,OAAOif,cAAcjlB,QAEvB+F,MAAMgN,KAAK/S,OAAOpX,KAAK6a,UAAWD,UAhBzC,SAkBF88B,aAAe,WACb,GAAIvsC,MAGJ,OAFAA,OAAQsP,IAAIO,KAAK,SAASnS,MAC1BwuC,SAASlsC,OACFssC,cAETh9B,IAAIc,GAAG,WAAY,QAAS,SAAS/Q,OACnC,GAAIwe,OAEJ,OADAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC3Bxa,MAAM6f,UAAY8sB,UACbO,eACyC,MAAvC/lC,OAAOomC,aAAavtC,MAAM6f,UACnC7f,MAAM2Q,iBACCu8B,gBAEH1uB,OAAOngB,MAAMQ,OACRsuC,iBAEAJ,mBAIb98B,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,MAAIA,OAAM6f,UAAYmuB,SACpBf,aACAkB,YACApB,iBACOsB,oBAJT,SAOFp+B,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAEhC,MADAA,OAAM2Q,iBACCu8B,iBAETj9B,IAAIc,GAAG,QAAS,WAAY,SAAS/Q,OAGnC,MAFAA,OAAM2Q,iBACNs9B,mBACOM,cAETt+B,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OACtC,GAAIwe,QAAQ7d,KAIZ,OAHAX,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B7Z,MAAQ6d,OAAOsc,SAAS,aAAal1B,OAC9BknC,YAAYnsC,SAErB8B,SAASuN,OAAQ,sBAAuB,SAASw8B,aAC/C,GAAIgB,oBACJ,OAAKhc,eAIL6c,mBACAb,oBAAsB,SAASC,SAAUC,UACvC,GAAIC,KAIJ,OAHAA,MAAOD,SAASj0C,QAAQA,QACxBk0C,KAAKhd,IAAI,QAAS+c,SAASlvB,OAAOlgB,OAClCqvC,KAAKhd,IAAI,MAAO8c,SAAS/Z,KAClBia,KAAKhd,IAAI,OAAQ8c,SAASvC,OAE5Bj7B,IAAIO,KAAK,SAAS88B,cACvBM,OAAQl7C,EAAE6R,KAAKioC,aACfiB,UACEI,GAAI,WACJC,MAAON,qBAETttB,OAAQ,SAASlgB,MAAO+tC,IAEtB,MADAlB,UAASkB,GAAGjqC,KAAKnD,OACVotC,GAAGjqC,KAAKnD,MAAQ,WAnBzBytC,0BAuBJp+B,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAAS1T,OACrC,GAAItH,KAAKosB,KAAM0b,UACf,IAAKxgC,MASL,OAN0B,OAArBtH,IAAMsH,MAAMzE,MAAgB7C,IAAIzG,OAAS,QAC5CqvC,uBAEAI,uBAEFlB,YAAyC,OAA1B1b,KAAO1hB,OAAO1V,SAAmBo3B,KAAK8a,YAAc,YAC5DQ,WAAWpgC,MAAMzE,KAAMilC,cAEzBp9B,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNwQ,QAAS,UACT5qB,YAAa,6BAIjB1D,OAAO6d,UAAU,aAAc,aAAc,UAAW,eAAgB,aAAc,YAAa,cAAe,WAAY67B,oBAE7Hj2C,KAAKrD,MA2BR,WACE,GAAIo8C,mBAAmBhsC,SAAUxQ,OAAQG,MACvCoG,WAAaA,SAAW,SAASsL,MAAQ,IAAK,GAAIC,GAAI,EAAGC,EAAI3R,KAAKwM,OAAYmF,EAAJD,EAAOA,IAAO,GAAIA,IAAK1R,OAAQA,KAAK0R,KAAOD,KAAM,MAAOC,EAAK,OAAO,GAEhJ3R,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBxQ,OAASgD,QAAQhD,OAAO,eAExBw8C,kBAAoB,SAASjxC,WAAYujB,IAAKoS,cAAehU,UAAWD,SAAU7pB,YAChF,GAAI0a,MAAM2+B,eAmbV,OAlbAA,iBAAkBvvB,UAAU1nB,IAAI,gDAAgD,GAChFsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI+7B,SAASC,kBAAmBC,iBAAkBp1C,QAASq1C,cAAeC,qBAAsBC,QAASC,eAAgBC,kBAAmBC,eAAgBC,iBAAkBptB,OAAQqtB,aA2atL,OA1aA51C,SAAUxE,QAAQwE,QAAQwW,KAC1Bg/B,eAAiB30B,EAAE,UACjBypB,QAAS,YAEX8K,iBAAmB,WAEjB,MADAp1C,SAAQkpC,QAAQ,aAAanyB,KAAK,YAAYpC,SACvC3U,QAAQkpC,QAAQ,aAAalmB,QAEtCzM,OAAO7R,IAAI,yBAA0B,WACnC,MAAO0wC,sBAETD,kBAAoB,KACpBM,mBAAoB,EACpBF,QAAU,WACR,GAAIM,iBAAiBC,eACrB,KAAIL,kBAMJ,MAHAA,oBAAoB,EACpBK,gBAAkB91C,QAAQkpC,QAAQ,aAClC2M,gBAAkB71C,QAAQkpC,QAAQ,aAC3B5hB,IAAIyuB,SAAS13B,OAAO9H,OAAOlF,UAAW8H,OAAOkN,aAAatqB,KAAK,SAAS+D,MAC7E,GAAIqmB,MAAM6vB,QASV,OARA7vB,MAAO8uB,iBACLn1C,KAAMA,KAAKA,OAEbqmB,KAAOV,SAASU,MAAM5P,QACtBu/B,gBAAgB90B,OAAOmF,MACvB0vB,gBAAgBrc,OAChBic,mBAAoB,EACpBO,SAAWh2C,QAAQ6hC,QAAQ,aACpBmU,SAAS1+B,GAAG,kBAAmB,WAAY,SAAS/Q,OACzD,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwe,QAC1BA,OAAO8U,GAAG,OAAQH,cAAc17B,MAAMoH,QAG3C4wC,SAASx+B,IAAI,YACN49B,oBAJP,YAQNO,iBAAmB,SAASjb,SAAUub,eACpC,GAAI9wC,MAAMjC,MAAOgzC,eAAgBC,UAYjC,OAXIzb,UAAS0b,iBACXlzC,MAAQw3B,SAAS0b,kBACjBlzC,MAAMmzC,KAAK,YAAaJ,eACxB/yC,MAAMujB,UACGiU,SAAS4b,iBAClB5b,SAASvV,QACTuV,SAAS6b,kBAAkBN,cAAeA,gBAE5CE,WAAazb,SAASxzB,MAAMjC,MAAM,MAAMG,OACxCD,KAAOu1B,SAASxzB,MAAMsD,MAAM,IAAKyrC,cAAgB,GAAK,GAAK,KAAKhxC,MAAM,MAAMG,OAC5E8wC,eAAiB/wC,KAAOgxC,WACjB3/B,IAAIujB,UAAWmc,eAAiB1/B,IAAI,GAAGggC,aAAiBhgC,IAAIsrB,SAAW,IAEhFoT,QAAU,SAASxa,SAAU+b,MAAO53C,SAClC,GAAI63C,gBAAgBxT,EAAGt7B,IAAK0E,IAAKnH,KAAML,KAQvC,KAPAA,MAAQ41B,SAASxzB,MAAMjC,MAAM,MACzBpG,QACFiG,MAAM2xC,OAAS53C,QAAUiG,MAAM2xC,OAE/B3xC,MAAM2xC,OAAS,GAEjBC,eAAiB,EACZ9uC,IAAMs7B,EAAI,EAAG52B,IAAMxH,MAAMM,OAAYkH,IAAJ42B,IACpC/9B,KAAOL,MAAM8C,KACb8uC,gBAAkBvxC,KAAKC,OAAS,GAAK,EACjCwC,MAAQ6uC,OAHiC7uC,MAAQs7B,GAQvD,MADAxI,UAASxzB,MAAQpC,MAAMvL,KAAK,MACxBsF,QACK63C,eAAiB5xC,MAAM2xC,OAAOrxC,OAASvG,QAAQuG,OAAS,EAExDsxC,gBAGXpB,qBAAuB,SAASta,UAC9B,GAAI2b,SAASC,MAAOrqC,MAIpB,KAHAqqC,MAAQ,cACRrqC,OAAS,EACToqC,WACQpqC,OAASqqC,MAAMC,KAAK7b,SAASN,SAASxzB,QAC5CyvC,QAAQr3C,KAAKiN,OAAOuqC,MAEtB,OAAO9b,UAAS+b,WAAaJ,SAE/Bf,cAAgB,SAAS5a,UACvB,GAAIgc,UAAUnrC,IAAKosB,KAAM2e,MAAOrqC,OAAQ0qC,WAAYn4C,IAAKoI,KAIzD,KAHA0vC,MAAQ,QACRrqC,OAAS,EACT0qC,WAAa,IACA,CAEX,GADA1qC,OAASqqC,MAAMC,KAAK7b,SAASN,SAASxzB,QACjCqF,OACH,KAEF,IAAIV,IAAMU,OAAOuqC,MAAO/3C,QAAQ9C,KAAK++B,SAAS+b,WAAYlrC,KAAO,EAAG,CAClEorC,WAAa1qC,OAAOuqC,KACpB,QAGJ,GAAKvqC,OAAL,CAKA,IAFAqqC,MAAQ,QACRI,SAAW,IACE,CAEX,GADAzqC,OAASqqC,MAAMC,KAAK7b,SAASN,SAASxzB,QACjCqF,OACH,KAEF,IAAI0rB,KAAO1rB,OAAOuqC,MAAO/3C,QAAQ9C,KAAK++B,SAAS+b,WAAY9e,MAAQ,EAAG,CACpE+e,SAAWzqC,OAAOuqC,KAClB,QASJ,MANA5vC,OAAQ8zB,SAASN,SAASxzB,MAC1BpI,IAAMoI,MAAMyG,UAAUspC,WAAYD,UAAUn4C,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAC9EC,IAAMA,IAAID,QAAQ,IAAK,OAAOA,QAAQ,IAAK,OAC3CC,IAAMA,IAAID,QAAQ,IAAK,OAAOA,QAAQ,IAAK,OAC3CqI,MAAQA,MAAMyG,UAAU,EAAGspC,YAAcn4C,IAAMoI,MAAMyG,UAAUqpC,SAAW,EAAG9vC,MAAM9B,QACnF41B,SAASN,SAASxzB,MAAQA,MACnB8zB,SAAS+b,WAAa,SAE/B1B,cAAgB,SAASra,SAAUlvB,MACjC,GAAIorC,SAAS5sC,EAAG44B,EAAGiU,EAAGtrC,GAGtB,KAFAqrC,QAAU,GACVC,EAAIt2B,EAAE3W,KAAK8wB,SAAS7c,WAAa6c,SAASoc,aAAahyC,OAClDkF,EAAI44B,EAAI,EAAGr3B,IAAMsrC,EAAI,EAAQtrC,KAAL,EAAgBA,KAALq3B,EAAWA,GAAKr3B,IAAKvB,EAASuB,KAAL,IAAaq3B,IAAMA,EAClFgU,SAAWprC,IAEb,OAAO,KAAOorC,QAAU,MAE1BxB,eAAiB,WACf,GAAI2B,iBAwKJ,OAvKAA,mBACEC,UAAW,WACXC,cACEC,aAAa,EACbC,SAAU,QAEZC,SACEF,aAAa,EACbvc,YAAa,WACX,MAAKpa,GAAE,0BAA0BgZ,GAAG,YAApC,OACS,MAGX8d,YAAa,SAAS73C,MACpB,GAAI83C,YAAYC,cAAeC,SAAUhzC,MAAOizC,qBAAsBroC,MAAOsoC,eAAgBvB,MAAO53C,OA6CpG,OA5CAiG,OAAQhF,KAAK46B,SAASxzB,MAAMjC,MAAM,MAEhC2yC,WADE93C,KAAKm2C,cAAgB,EACVn2C,KAAK46B,SAASxzB,MAAMsD,MAAM,IAAK1K,KAAKm2C,cAAgB,GAAK,GAAK,KAAKhxC,MAAM,MAAMG,OAE/E,EAEf4yC,eAAiBl4C,KAAK46B,SAASxzB,MAAMsD,MAAM1K,KAAKm2C,eAAehxC,MAAM,MAAM,GAC3E6yC,SAAWhzC,MAAM8yC,WAAa,GAC9BloC,MAAQooC,SAASpoC,MAAM,cACnBA,QACFmoC,cAAgBC,SAASpoC,MAAM,eAC3BmoC,eACFpB,MAAQmB,WAAa,EACrB/4C,QAAU,OAEV43C,MAAQmB,WACR/4C,QAAU,GAAK6Q,MAAM,IAEvBqoC,qBAAuB7C,QAAQp1C,KAAK46B,SAAU+b,MAAO53C,UAEvD6Q,MAAQooC,SAASpoC,MAAM,eACnBA,QACFmoC,cAAgBC,SAASpoC,MAAM,cAC3BmoC,eACFpB,MAAQmB,WAAa,EACrB/4C,QAAU,OAEV43C,MAAQmB,WACR/4C,QAAU,GAAK6Q,MAAM,IAEvBqoC,qBAAuB7C,QAAQp1C,KAAK46B,SAAU+b,MAAO53C,UAEvD6Q,MAAQooC,SAASpoC,MAAM,mBACnBA,QACFmoC,cAAgBC,SAASpoC,MAAM,oBAC3BmoC,eACFpB,MAAQmB,WAAa,EACrB/4C,QAAU,OAEV43C,MAAQmB,WACR/4C,QAAW6Q,MAAM,IAAMqO,SAASrO,MAAM,GAAI,IAAM,GAAM,MAExDqoC,qBAAuB7C,QAAQp1C,KAAK46B,SAAU+b,MAAO53C,UAEnDk5C,qBACKpC,iBAAiB71C,KAAK46B,SAAUqd,sBADzC,SAKJE,YAEIrsC,KAAMhQ,WAAW0E,QAAQ,4BACzBsH,IAAK,IACLwvC,YAAax7C,WAAW0E,QAAQ,iCAChC43C,UAAW,SAASld,UAClB,MAAOqa,eAAcra,SAAU,QAGjCpvB,KAAMhQ,WAAW0E,QAAQ,4BACzBsH,IAAK,IACLwvC,YAAax7C,WAAW0E,QAAQ,iCAChC43C,UAAW,SAASld,UAClB,MAAOqa,eAAcra,SAAU,QAGjCpvB,KAAMhQ,WAAW0E,QAAQ,4BACzBsH,IAAK,IACL6vC,SAAU,OACVL,YAAax7C,WAAW0E,QAAQ,mCAEhC63C,UAAW,oBAEXvsC,KAAMhQ,WAAW0E,QAAQ,8BACzBsH,IAAK,IACL6vC,SAAU,KACVS,UAAW,KACXd,YAAax7C,WAAW0E,QAAQ,4CAEhCsL,KAAMhQ,WAAW0E,QAAQ,qCACzBsH,IAAK,IACL6vC,SAAU,IACVS,UAAW,IACXd,YAAax7C,WAAW0E,QAAQ,uCAEhCsL,KAAMhQ,WAAW0E,QAAQ,gCACzBsH,IAAK,IACL6vC,SAAU,KACVS,UAAW,KACXd,YAAax7C,WAAW0E,QAAQ,uCAEhC63C,UAAW,oBAEXvsC,KAAMhQ,WAAW0E,QAAQ,uCACzBm3C,SAAU,KACVL,YAAax7C,WAAW0E,QAAQ,8CAEhCsL,KAAMhQ,WAAW0E,QAAQ,sCACzBm3C,SAAU,SAASzc,UACjB,MAAOA,UAAS71B,KAAO,MAEzBiyC,YAAax7C,WAAW0E,QAAQ,6CAEhC63C,UAAW,oBAEXvsC,KAAMhQ,WAAW0E,QAAQ,iCACzBsH,IAAK,IACL6vC,SAAU,KACVS,UAAW,6CACXd,YAAax7C,WAAW0E,QAAQ,sCAChC83C,aAAc,SAASpd,UACrB,MAAOsa,sBAAqBta,WAE9B2c,YAAa,SAAS3c,UACpB,MAAO4a,eAAc5a,aAGvBpvB,KAAMhQ,WAAW0E,QAAQ,8BACzBsH,IAAK,IACL6vC,SAAU,IACVS,UAAW,6CACXd,YAAax7C,WAAW0E,QAAQ,mCAChC83C,aAAc,SAASpd,UACrB,MAAOsa,sBAAqBta,WAE9B2c,YAAa,SAAS3c,UACpB,MAAO4a,eAAc5a,aAGvBmd,UAAW,oBAEXvsC,KAAMhQ,WAAW0E,QAAQ,qCACzBm3C,SAAU,KACVL,YAAax7C,WAAW0E,QAAQ,4CAEhCsL,KAAMhQ,WAAW0E,QAAQ,oCACzBm3C,SAAU,QACVL,YAAax7C,WAAW0E,QAAQ,yCAChC43C,UAAW,UAEXC,UAAW,oBAEXvsC,KAAMhQ,WAAW0E,QAAQ,iCACzBrE,KAAMs5C,QACNv2B,UAAW,iBAGf24B,YAAa,SAASpxC,OACpB,GAAIwe,OAEJ,OADAA,QAASvpB,QAAQwE,QAAQuG,MAAMm0B,UACxBvhB,OAAOif,cAAcrT,OAAOngB,SAGhC5E,QAAQq4C,iBAAiBrd,SAASqc,kBAAkBiB,eAEvDC,OAAO,EACP7oC,MAAO,uBACPzQ,OAAQ,SAAS2wB,KAAMzL,UACrB,GAAIze,QAAQ8yC,YAAaC,WAuCzB,OAtCA7oB,MAAOj3B,MAAMiR,QAAQgmB,MACrB6oB,aAAe,SAAU,QAAS,eAClCD,aAAe,MAAO,WACtB9yC,OAAS,SAAUvF,OACjB,MAAO,UAASkK,MACd,GAAI64B,GAAG52B,IAAKosC,IACZ,KAAKxV,EAAI,EAAG52B,IAAMksC,YAAYpzC,OAAYkH,IAAJ42B,EAASA,IAE7C,GADAwV,KAAOF,YAAYtV,GACfvqC,MAAMiR,QAAQS,KAAKquC,OAAO35C,QAAQ6wB,OAAS,EAC7C,OAAO,CAGX,QAAO,IAERh3B,MACCu8C,mBACFA,kBAAkBvkB,QAEpBukB,kBAAoB7tB,IAAIroB,OAAO,MAAMsX,OAAOlF,UAAWue,MACvDulB,kBAAkBp5C,KAAK,SAAUoE,OAC/B,MAAO,UAASw4C,KACd,GAAIzV,GAAG52B,IAAKiF,QAASnP,IACrB,IAAIu2C,IAAIC,MAAQ,GAAKD,IAAIC,QAAUD,IAAI/mB,UAAUxsB,OAC/C,MAAO+e,aAGP,KADA5S,WACK2xB,EAAI,EAAG52B,IAAMmsC,YAAYrzC,OAAYkH,IAAJ42B,EAASA,IAC7C9gC,KAAOq2C,YAAYvV,GACfyV,IAAIv2C,OAASu2C,IAAIv2C,MAAMgD,OAAS,EAClCmM,QAAQjS,KAAK6kB,SAASw0B,IAAIv2C,MAAMsD,OAAOA,SAAS,IAEhD6L,QAAQjS,KAAK,OAGjB,OAAOiS,WAGV3Y,OACIurB,cAETtlB,QAAS,SAAS85C,KAChB,MAAO,MAASA,IAAI9sC,IAAM,KAE5BoK,SAAU,SAAS0iC,IAAK/oB,MACtB,MAAO,IAAO+oB,IAAI9sC,IAAM,MAAQ8sC,IAAI1yB,WAGtCsyB,OAAO,EACP7oC,MAAO,+BACPzQ,OAAQ,SAAS2wB,KAAMzL,UACrB,GAAIq0B,aAAaphC,QAGjB,OAFAA,UAAWze,MAAMiR,QAAQgmB,MACzB4oB,aAAe,WAAY,YAAa,qBAE/Br0B,SADL5N,OAAO1V,QAAQgQ,QAAQzL,OAAS,KAGlBmR,OAAO1V,QAAQgQ,QAAQnL,OAAO,SAAUvF,OACtD,MAAO,UAASoE,MACd,GAAI2+B,GAAG52B,IAAKosC,IACZ,KAAKxV,EAAI,EAAG52B,IAAMksC,YAAYpzC,OAAYkH,IAAJ42B,EAASA,IAE7C,GADAwV,KAAOF,YAAYtV,GACfvqC,MAAMiR,QAAQrF,KAAKm0C,OAAO35C,QAAQqY,WAAa,EACjD,OAAO,CAGX,QAAO,IAERxe,SAGPiG,QAAS,SAAS0F,MAChB,MAAO,MAAQA,KAAK6S,SAAW,KAEjCnB,SAAU,SAAS1R,MACjB,MAAOA,MAAK6S,SAAW,MAAQ7S,KAAK8jB,qBAGtCkwB,OAAO,EACP7oC,MAAO,4BACPzQ,OAAQ,SAAS2wB,KAAMzL,UAErB,MADAyL,MAAOj3B,MAAMiR,QAAQgmB,MACdtI,IAAIroB,OAAO,MAAMsX,OAAOlF,UAAWue,MAAM7zB,KAAK,SAAUoE,OAC7D,MAAO,UAASw4C,KAWd,MAVIA,KAAIC,MAAQ,GACdz0B,aAEEw0B,IAAIC,MAAQ,IAAMD,IAAI/mB,WAAa+mB,IAAI/mB,UAAUxsB,QAAU,EAC7D+e,aAEAA,SAASw0B,IAAI/mB,UAAUlsB,OAAO,SAASouB,MACrC,MAAOn7B,OAAMiR,QAAQkqB,KAAW,MAAG/0B,QAAQ6wB,OAAS,KAClD,GAECzL,eAERvrB,QAELiG,QAAS,SAAS85C,KAChB,MAAO,OAASA,IAAI94B,KAAO,MAE7B5J,SAAU,SAAS0iC,IAAK/oB,MACtB,MAAO+oB,KAAI94B,SAIf3W,SAAU,OAGdwsC,iBACAntB,OAASxkB,WAAWW,IAAI,sBAAuBgxC,gBAC/C11C,QAAQsX,GAAG,WAAY,SAAS/Q,OAC9B,MAAOgQ,QAAO1J,WAET0J,OAAO7R,IAAI,WAAY,WAE5B,MADA8R,KAAIgB,MACG+Q,aAITjS,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,cAAe,aAAc,eAAgB,gBAAiB,cAAe,WAAY,aAAc2+B,qBAEvH/4C,KAAKrD,MA2BR,WACE,GAAIigD,yBAAyB7vC,SAAUG,gBAAiBE,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOsR,UAEnGtR,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBS,WAAarR,KAAKD,MAAMsR,WAExBP,WAAa9Q,KAAKD,MAAM+Q,WAExBV,SAAWpQ,KAAKD,MAAMqQ,SAEtBK,QAAUzQ,KAAKD,MAAM0Q,QAErBF,gBAAkBvQ,KAAKD,MAAMwQ,gBAE7B3Q,OAASgD,QAAQhD,OAAO,gBAExBqgD,wBAA0B,SAASl9C,GAAImI,KAAM3F,UAAW4gC,YACtD,GAAIzoB,MAAML,SAAU6iC,gBA+JpB,OA9JA7iC,UAAW8oB,WAAW/gC,IAAI,wBAAwB,GAClD86C,iBAAmB/Z,WAAW/gC,IAAI,gCAAgC,GAClEsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOixB,mBAAoBC,eAAgBC,0BAA2BC,kBAAmBC,cAAeC,sBAAuBC,cAAeC,gBAAiBC,eAAgBC,YAAaC,qBA6IhM,OA5IAV,oBAAqB,GACrBjxB,MAAQtR,IAAIqrB,QAAQ,YAAY1lC,aAChCm9C,mBACAE,YAAc,SAASl9C,MAAO8F,MAM5B,MALAoU,KAAIO,KAAK,iBAAiByiB,OAC1BhjB,IAAIO,KAAK,gBAAgBwH,YAAY,UACrC/H,IAAIO,KAAK,iBAAiBwH,YAAY,UACtC/H,IAAIO,KAAK,6BAA6BoP,KAAK7pB,OAC3Cka,IAAIO,KAAK,6BAA6B2hC,KAAK,YAAat2C,MACjD22C,mBAAqBC,kBAE9BO,eAAiB,WAGf,MAFA/iC,KAAIO,KAAK,iBAAiBiM,OAC1BxM,IAAIO,KAAK,gBAAgB2H,SAAS,UAC3BlI,IAAIO,KAAK,iBAAiB2H,SAAS,WAE5Cu6B,0BAA4B,WAC1B,GAAI3uC,GAAGgC,IAAKV,KAAMC,IAAKjH,IAAKi8B,MAC5B0Y,kBACAD,mBACAztC,IAAM0K,OAAOvE,OACb,KAAKpG,OAAQC,KAEX,IADAg1B,OAASh1B,IAAID,MACRtB,EAAI,EAAGgC,IAAMu0B,OAAOz7B,OAAYkH,IAAJhC,EAASA,IACxC1F,IAAMi8B,OAAOv2B,GACT1F,IAAIi4B,UACNyc,gBAAgBh6C,KAAKsF,IAI3B,OAAOw0C,0BAETA,sBAAwB,WACtB,GAAIjzB,KAWJ,OAVAltB,GAAEC,IAAIogD,gBAAiB,SAAUn5C,OAC/B,MAAO,UAASu5C,GACd,MAAIA,GAAEje,MACGie,EAAE9F,MAAQ,0BAA4B8F,EAAEje,MADjD,SAID7iC,OACHutB,KAAO2yB,kBACL9mC,QAASsnC,kBAEJ9iC,IAAIO,KAAK,oBAAoBoP,KAAKA,OAE3CgzB,cAAgB,SAASnnC,SACvB,GAAImU,KAWJ,OAVAltB,GAAEC,IAAI8Y,QAAS,SAAU7R,OACvB,MAAO,UAASu5C,GACd,MAAIA,GAAEje,MACGie,EAAE9F,MAAQ,0BAA4B8F,EAAEje,MADjD,SAID7iC,OACHutB,KAAOlQ,UACLjE,QAASA,UAEJwE,IAAIO,KAAK,gBAAgBoP,KAAKA,OAEvC6yB,eAAiB,WACf,MAAOxiC,KAAIO,KAAK,6BAA6B2hC,KAAK,cAEpDQ,kBAAoB,WAElB,MADAH,oBAAqBC,iBACdr9C,GAAGsV,KAAK6W,MAAM6xB,kBAAmB7xB,MAAM8xB,oBAAoB79C,KAAK,WACrE,GAAI89C,eAEJ,OADAA,gBAAiBtjC,OAAOvE,QAAQ+mC,oBACzBI,cAAclgD,EAAEiG,OAAO26C,eAAgB,gBAGlDJ,sBAAwB,SAASr3C,KAAMuO,IACrC,GAAIjL,QAAQsM,OAsBZ,OArBA+mC,oBAAqBC,iBACrBhnC,QAAUuE,OAAOvE,QAAQ5P,MACzBsD,OAASzM,EAAE8d,KAAK/E,SACdrB,GAAIA,KAENjL,OAAOm3B,UAAYn3B,OAAOm3B,SACtBn3B,OAAOm3B,UACTyc,gBAAgBh6C,KAAKoG,QACrB6Q,OAAO1J,OAAO,WACZ,MAAOib,OAAMtW,aAAapP,KAAMuO,QAGlC2oC,gBAAkBrgD,EAAEiG,OAAOo6C,gBAAiB,SAASzc,UACnD,MAAOn3B,QAAOtD,OAASy6B,SAASz6B,MAAQsD,OAAOiL,KAAOksB,SAASlsB,KAEjEmX,MAAM7V,eAAe7P,KAAMuO,KAE7ByoC,sBAAsBE,iBAClBl3C,OAAS22C,oBACXI,cAAclgD,EAAEiG,OAAO8S,QAAS,aAE3BknC,qBAETG,cAAgBlwC,gBAAgB,IAAK,SAASjC,OAC5C,MAAc,UAAVA,OAGiB,IAAjBA,MAAM9B,OACR0iB,MAAMhW,cAAc,IAAK,MAEzBgW,MAAMhW,cAAc,IAAK5K,OAEpBgyC,qBARP,SAUF3iC,OAAOjL,OAAO,WAAY+tC,eAC1B9iC,OAAO7R,IAAI,iBAAkB,SAASmB,KACpC,MAAOozC,+BAET1iC,OAAO7R,IAAI,iBAAkB,SAASmB,KACpC,MAAOiiB,OAAM8xB,kBAAkB79C,KAAK,WAClC,GAAIiW,QAEJ,OADAA,SAAUuE,OAAOvE,QAAQ+mC,oBACrBA,mBACKI,cAAclgD,EAAEiG,OAAO8S,QAAS,aADzC,WAKJwE,IAAIc,GAAG,QAAS,8BAA+B,SAAS/Q,OACtD,GAAImI,MAAMqW,MAKV,OAJAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BrS,KAAO6H,OAAOvE,QAAQ+S,OAAOjlB,KAAK,SAClCq5C,cAAclgD,EAAEiG,OAAOwP,KAAM,aACtB8qC,YAAYz0B,OAAO7Z,KAAK,SAAU6Z,OAAOjlB,KAAK,WAEvD0W,IAAIc,GAAG,QAAS,2DAA4D,SAAS/Q,OAEnF,MADAA,OAAM2Q,iBACCqiC,mBAET/iC,IAAIc,GAAG,QAAS,qBAAsB,SAAS/Q,OAC7C,GAAIoK,IAAIoU,OAAQ3iB,IAKhB,OAJAmE,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BpQ,GAAKoU,OAAOjlB,KAAK,MACjBsC,KAAO2iB,OAAOjlB,KAAK,QACZ25C,sBAAsBr3C,KAAMuO,MAE9B6F,IAAIc,GAAG,QAAS,8BAA+B,SAAS/Q,OAC7D,GAAIoK,IAAIoU,OAAQ3iB,IAUhB,OATAmE,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC3BgE,OAAOkS,SAAS,UAClBlS,OAAOxG,YAAY,UAEnBwG,OAAOrG,SAAS,UAElB/N,GAAKoU,OAAOjlB,KAAK,MACjBsC,KAAO2iB,OAAOjlB,KAAK,QACZ25C,sBAAsBr3C,KAAMuO,QAIrC2F,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB,KAAM,OAAQ,cAAe,cAAewiC,2BAEjF58C,KAAKrD,MA2BR,WACE,GAAIkhD,kBAAkB9wC,SAAUE,SAAU1Q,OAAQG,KAElDA,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,gBAExBshD,iBAAmB,SAAS5gC,MAAO9Y,SAAUknB,IAAKvjB,WAAYs4B,gBAAiB3X,SAAU9oB,YACvF,GAAI0a,KA4KJ,OA3KAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,GAAI0lB,cAAcrjC,KAAMsjC,cAAeC,UAAWtlC,OAAQulC,YAAarjC,MAwKvE,OAvKAojC,YAAY,EACZF,cAAe,EACfrjC,KAAO,KACPwjC,YAAc,WAIZ,MAHIxjC,OACFA,KAAKm2B,QAEAt2B,OAAO6gB,QACZv2B,QAAS,KACT+K,KAAM,KACNuuC,gBAAiB,KACjBC,iBAAkB,OAGtBvjC,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAI0mC,gBAAgBnoB,eAAgBu1B,UAAWh1C,WAAYrJ,QAAS6oB,aAAcE,MAMlF,OALAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B1b,WAAazJ,WAAW0E,QAAQ,4BAChCukB,aAAerO,IAAIO,KAAK,kBACxBL,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAKV8iC,WAAY,EACZI,UAAY7+C,QAAQ8+C,KAAK/jC,OAAO6gB,QAChC6V,eAAiB,KACb8M,cACFM,UAAUF,gBAAkBl4C,OAAOo4C,UAAUF,gBAAiB90C,YAAY2Y,OAAO,cACjFq8B,UAAUD,iBAAmBn4C,OAAOo4C,UAAUD,iBAAkB/0C,YAAY2Y,OAAO,cACnFhiB,QAAUkd,MAAM8L,OAAO,aAAcq1B,WACrCpN,eAAiB,8BAEjBoN,UAAUE,QAAQ,kBAAmBt4C,OAAOo4C,UAAUF,gBAAiB90C,YAAY2Y,OAAO,eAC1Fq8B,UAAUE,QAAQ,mBAAoBt4C,OAAOo4C,UAAUD,iBAAkB/0C,YAAY2Y,OAAO,eAC5FhiB,QAAUkd,MAAMgN,KAAKm0B,WACrBpN,eAAiB,2BAEnBnoB,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAQD,KAAK,SAAS+D,MAMpB,MALAglB,gBAAeI,SACX60B,eACFxjC,OAAOikC,gBAAkB,GAE3Bz2C,WAAW2V,WAAWuzB,eAAgBntC,MAC/Bu8B,gBAAgBxZ,MAAMrM,OAExBxa,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,cAAeT,KAAK+X,gBAClC/X,KAAK26C,QACPr6C,SAASG,OAAO,cAAeT,KAAK26C,QAAQ,IAD9C,WAhCPR,WAAY,MACZzjC,KAAIO,KAAK,qBAAqB2H,SAAS,gBAoC1C9lB,OACH+b,OAAS,WACP,GAAIqD,SAAS1b,KAGb,OAFAA,OAAQV,WAAW0E,QAAQ,gCAC3B0X,QAAUzB,OAAO6gB,OAAOxrB,KACjBxL,SAASsmB,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAUoE,OACzD,MAAO,UAASwmB,aACd,GAAIhQ,SAASC,SAWb,OAVAA,WAAY,WAIV,MAHA+P,aAAYzB,SACZ3O,OAAOmkC,mBAAqB,EAC5Bre,gBAAgBxZ,MAAMrM,KACfzS,WAAW2V,WAAW,4BAA6BnD,OAAO6gB,SAEnEzgB,QAAU,WAER,MADAgQ,aAAYzB,QAAO,GACZ9kB,SAASG,OAAO,UAElB2Y,MAAMvE,OAAO4B,OAAO6gB,QAAQr7B,KAAK6a,UAAWD,WAEpD/d,QAELohD,cAAgB,WACd,GAAIW,aAAaC,aAOjB,OANAD,aAAc1hD,EAAEyM,OAAO6Q,OAAOskC,QAAS,SAASzjB,QAC9C,OAAQA,OAAO0jB,SAEjBF,cAAgB3hD,EAAEwX,OAAOkqC,YAAa,SAASvjB,QAC7C,MAAOn1B,QAAOm1B,OAAOgjB,iBAAkB,cAAcp8B,OAAO,OAEvD48B,cAAcA,cAAcx1C,OAAS,IAE9CmR,OAAO7R,IAAI,oBAAqB,SAAS6B,MAAO8K,WAC9C,GAAI0pC,iBAAiBC,eAAgBC,WAAYC,kBAAmB71C,WAAY8G,IAsChF,OArCA+tC,eACAxjC,KAAOF,IAAIO,KAAK,QAAQnT,YACxB8S,KAAKm2B,QACLkN,cAAe,EACf10C,WAAazJ,WAAW0E,QAAQ,4BAChCiW,OAAO6gB,OAAOv2B,QAAUwQ,UACxBkF,OAAO6gB,OAAOxrB,KAAO,KACrB2K,OAAO6gB,OAAOvX,KAAO,KACrBo7B,WAAajB,gBACbgB,eAAiB/4C,SACbg5C,WACFD,eAAiB/4C,OAAOg5C,WAAWb,kBAC1B7jC,OAAO6gB,OAAO+iB,kBACvBa,eAAiB/4C,OAAOsU,OAAO6gB,OAAO+iB,kBAExC5jC,OAAO6gB,OAAO+iB,gBAAkBa,eAAeh9B,OAAO3Y,YACtD01C,gBAAkB94C,SAASmd,IAAI,EAAG,SAC9B67B,WACFF,gBAAkB94C,OAAOg5C,WAAWb,kBAAkBh7B,IAAI,EAAG,SACpD7I,OAAO6gB,OAAOgjB,mBACvBW,gBAAkB94C,OAAOsU,OAAO6gB,OAAOgjB,mBAEzC7jC,OAAO6gB,OAAOgjB,iBAAmBW,gBAAgB/8B,OAAO3Y,YACxD61C,kBAAoB1kC,IAAIO,KAAK,qBAC0B,OAApC,MAAdkkC,WAAqBA,WAAWrvC,KAAO,UAC1CO,KAAOvQ,WAAW0E,QAAQ,6CACxB26C,WAAYA,WAAWrvC,OAEzBsvC,kBAAkB/0B,KAAKha,OAEzBqK,IAAIO,KAAK,kBAAkB2H,SAAS,UACpCvS,KAAOvQ,WAAW0E,QAAQ,kCAC1BkW,IAAIO,KAAK,UAAU5K,KAAKA,MACxBA,KAAOvQ,WAAW0E,QAAQ,iBAC1BkW,IAAIO,KAAK,iBAAiB5K,KAAKA,MAC/BkwB,gBAAgB3b,KAAKlK,KACrBA,IAAIO,KAAK,gBAAgBoO,QAClB3O,IAAIO,KAAK,qBAAqBwH,YAAY,eAEnDhI,OAAO7R,IAAI,kBAAmB,SAASmB,IAAKuxB,QAC1C,GAAI+jB,YAAY91C,WAAY6gB,IAgB5B,OAfAg0B,eACAH,cAAe,EACf10C,WAAazJ,WAAW0E,QAAQ,4BAChCiW,OAAO1J,OAAO,WAGZ,MAFA0J,QAAO6gB,OAASA,OAChB7gB,OAAO6gB,OAAO+iB,gBAAkBl4C,OAAOsU,OAAO6gB,OAAO+iB,iBAAiBn8B,OAAO3Y,YACtEkR,OAAO6gB,OAAOgjB,iBAAmBn4C,OAAOsU,OAAO6gB,OAAOgjB,kBAAkBp8B,OAAO3Y,cAExFmR,IAAIO,KAAK,kBAAkBwH,YAAY,UACvC48B,WAAav/C,WAAW0E,QAAQ,uBAChCkW,IAAIO,KAAK,UAAU5K,KAAKgvC,YACxBj1B,KAAOtqB,WAAW0E,QAAQ,eAC1BkW,IAAIO,KAAK,iBAAiB5K,KAAK+Z,MAC/BmW,gBAAgB3b,KAAKlK,KACrBA,IAAIO,KAAK,gBAAgBoO,QAAQsB,SAC1BjQ,IAAIO,KAAK,qBAAqB2H,SAAS,eAEhDlI,IAAIc,GAAG,QAAS,eAAgB,SAAS/Q,OACvC,MAAIiQ,KAAIO,KAAK,gBAAgBnS,MAAMQ,OAAS,GAAK60C,UACxCzjC,IAAIO,KAAK,qBAAqB2H,SAAS,aAEvClI,IAAIO,KAAK,qBAAqBwH,YAAY,eAGrD/H,IAAIc,GAAG,SAAU,OAAQT,QACzBL,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OAEzC,MADAA,OAAM2Q,iBACCvC,WAET4B,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEN0iC,gBAGP5jC,KAAMA,OAIV9d,OAAO6d,UAAU,wBAAyB,UAAW,aAAc,eAAgB,aAAc,kBAAmB,aAAc,aAAcyjC,oBAE/I79C,KAAKrD,MA2BR,WACE,GAAIwiD,mBAAmBC,iBAAkBC,8BAA+BC,8BAA+BC,yBAA0BC,kBAAmBC,8BAA+B3yC,YAAaC,SAAUjQ,aAAcsQ,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOoR,QAASE,WAC1QxO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBS,WAAarR,KAAKD,MAAMsR,WAExBP,WAAa9Q,KAAKD,MAAM+Q,WAExBV,SAAWpQ,KAAKD,MAAMqQ,SAEtBK,QAAUzQ,KAAKD,MAAM0Q,QAErBU,QAAUnR,KAAKD,MAAMoR,QAErBhB,YAAcnQ,KAAKD,MAAMoQ,YAEzBhQ,aAAeH,KAAKD,MAAMI,aAE1BP,OAASgD,QAAQhD,OAAO,gBAExB4iD,kBAAoB,SAAU9yC,YAK5B,QAAS8yC,mBAAkBlsB,OAAQjc,UAAWkc,KAAMiP,QAASltB,GAAIyqC,QAAShzC,EAAGF,SAAUtE,eAAgBuE,QAASkzC,OAAQC,UAAWvoC,UAAWmd,QAASqrB,KACrJ,GAAI9/C,QACJpD,MAAKqS,MAAQikB,OACbt2B,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAAS6+C,QACd/iD,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAKuL,eAAiBA,eACtBvL,KAAK8P,QAAUA,QACf9P,KAAKgjD,OAASA,OACdhjD,KAAKijD,UAAYA,UACjBjjD,KAAK0a,UAAYA,UACjB1a,KAAK63B,QAAUA,QACf73B,KAAKkjD,IAAMA,IACX/yC,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,wBAChD1H,KAAKmjD,UAAW,EAChBnjD,KAAKojD,eAAgB,EACrBpjD,KAAKqS,MAAMgxC,qBAAuB,KAClCrjD,KAAKsjD,0BACLlgD,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KASjB,OARAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,sBAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAMmT,UAAUhT,QAAQ,4BACpCivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,KACjC4jB,mBAAoBrvB,MAAM8K,MAAMpK,QAAQtE,cAE1C4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,aAC/B4D,MAAM+Q,GAAGka,YAAY+wB,YAAYh8C,MAAM8K,MAAMoG,YAC/ClR,MAAM47C,UAAW,EACV57C,MAAM8K,MAAMyO,WAAW,WAAYvZ,MAAM47C,WAFlD,SAKDnjD,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAwqBlD,MArtBA6C,QAAO2/C,kBAAmB9yC,YAE1B8yC,kBAAkBpoC,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,mBAAoB,aAAc,YAAa,eAAgB,aAAc,aAAc,eA8C9NooC,kBAAkBtzC,UAAUo0C,wBAA0B,WAiDpD,MAhDAtjD,MAAKqS,MAAMvG,IAAI,sBAAuB,SAAUvE,OAC9C,MAAO,YAGL,MAFAA,OAAMw5C,kBACNx5C,MAAMi8C,mBACCj8C,MAAM07C,UAAUjkC,WAAW,YAAa,SAAU,mCAAoC,KAE9Fhf,OACHA,KAAKqS,MAAMvG,IAAI,4BAA6B,SAAUvE,OACpD,MAAO,YAGL,MAFAA,OAAMk8C,cACNl8C,MAAMi8C,mBACCj8C,MAAM07C,UAAUjkC,WAAW,SAAU,SAAU,2BAA4B,KAEnFhf,OACHA,KAAKqS,MAAMvG,IAAI,qBAAsB,SAAUvE,OAC7C,MAAO,YAIL,MAHAA,OAAMw5C,kBACNx5C,MAAMi8C,mBACNj8C,MAAM8S,UAAUyG,WAAW,kBACpBvZ,MAAM07C,UAAUjkC,WAAW,YAAa,SAAU,8BAA+B,KAEzFhf,OACHA,KAAKqS,MAAMvG,IAAI,0BAA2B,SAAUvE,OAClD,MAAO,YACL,MAAOA,OAAMi8C,qBAEdxjD,OACHA,KAAKqS,MAAMvG,IAAI,4BAA6B,SAAUvE,OACpD,MAAO,UAASoG,MAAO6wB,QAOrB,MANAj3B,OAAMk8C,cACNl8C,MAAMi8C,mBACNj8C,MAAMw5C,kBACFviB,OAAO0jB,QACT36C,MAAMm8C,oBAEDn8C,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,OACHA,KAAKqS,MAAMvG,IAAI,sBAAuB,SAAUvE,OAC9C,MAAO,YAEL,MADAA,OAAMw5C,kBACCx5C,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,OACHA,KAAKqS,MAAMvG,IAAI,iBAAkB9L,KAAK2jD,QACtC3jD,KAAKqS,MAAMvG,IAAI,kBAAmB9L,KAAKyjD,aACvCzjD,KAAKqS,MAAMvG,IAAI,kBAAmB9L,KAAKwjD,kBACvCxjD,KAAKqS,MAAMvG,IAAI,8BAA+B9L,KAAK0jD,mBAC5C1jD,KAAKqS,MAAMvG,IAAI,gCAAiC9L,KAAK4jD,sBAG9DpB,kBAAkBtzC,UAAU20C,uBAAyB,WACnD,GAAIC,aAAaC,WASjB,OARAD,aAAc,mBAAqB9jD,KAAKqS,MAAMoG,UAAY,eAC1DzY,KAAKgjD,OAAO74B,UAAUnqB,KAAKqS,MAAOyxC,YAAa,SAAUv8C,OACvD,MAAO,UAAS6X,SAEd,MADA7X,OAAMw5C,kBACCx5C,MAAMk8C,gBAEdzjD,OACH+jD,YAAc,mBAAqB/jD,KAAKqS,MAAMoG,UAAY,cACnDzY,KAAKgjD,OAAO74B,UAAUnqB,KAAKqS,MAAO0xC,YAAa,SAAUx8C,OAC9D,MAAO,UAAS6X,SACd,MAAO7X,OAAMk8C,gBAEdzjD,QAGLwiD,kBAAkBtzC,UAAU80C,eAAiB,WAC3C,MAAOhkD,MAAKqS,MAAM4B,OAAO,SAAU1M,OACjC,MAAO,YAEL,MADAA,OAAM47C,UAAY57C,MAAM47C,SACjB57C,MAAM+Q,GAAGka,YAAYyxB,cAAc18C,MAAM8K,MAAMoG,UAAWlR,MAAM47C,YAExEnjD,QAGLwiD,kBAAkBtzC,UAAUg1C,oBAAsB,WAChD,MAAOlkD,MAAKojD,eAAiBpjD,KAAKojD,eAGpCZ,kBAAkBtzC,UAAUs0C,iBAAmB,WAC7C,MAAOxjD,MAAKsY,GAAGC,SAAS4rC,MAAMnkD,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OACjE,MAAO,UAAS48C,OACd,GAAIzlB,YASJ,OARAn3B,OAAM8K,MAAM8xC,MAAQA,MACpBzlB,YAAcylB,MAAMvlB,aAAeulB,MAAMvlB,aAAeulB,MAAMC,eAC1D1lB,YACFn3B,MAAM8K,MAAM8xC,MAAME,oBAAsBpjD,KAAK49B,MAAM,IAAMslB,MAAMxlB,cAAgBD,aAE/En3B,MAAM8K,MAAM8xC,MAAME,oBAAsB,EAE1C98C,MAAM8K,MAAMgxC,uBAAgD,MAAtBc,MAAMvlB,cAAoD,MAA1BulB,MAAMG,kBACrEH,QAERnkD,QAGLwiD,kBAAkBtzC,UAAU00C,oBAAsB,WAChD,MAAO5jD,MAAKqS,MAAM4B,OAAO,SAAU1M,OACjC,MAAO,YAEL,MADAA,OAAM8K,MAAMkyC,iBACLh9C,MAAM8S,UAAUyG,WAAW,gCAEnC9gB,QAGLwiD,kBAAkBtzC,UAAUw0C,kBAAoB,WAC9C,GAAIx/C,OAIJ,OAHAA,SACEg+C,QAAQ,GAEHliD,KAAKsY,GAAG2pC,QAAQlzB,KAAK/uB,KAAKqS,MAAMoG,UAAWvU,QAAQf,KAAK,SAAUoE,OACvE,MAAO,UAASoM,QACd,GAAI22B,GAAG52B,IAAK8qB,OAAQyjB,OAGpB,KAFAA,QAAUtuC,OAAO4e,WACjBhrB,MAAM8K,MAAMmyC,sBAAwB7wC,OAAOuuC,OACtC5X,EAAI,EAAG52B,IAAMuuC,QAAQz1C,OAAYkH,IAAJ42B,EAASA,IACzC9L,OAASyjB,QAAQ3X,GACjB9L,OAAOimB,aAAepkD,EAAEwX,OAAO2mB,OAAOimB,aAAc,eAOtD,OALAl9C,OAAM8K,MAAMkyC,cAAgBtC,QAC5B16C,MAAM8K,MAAMqyC,kBAAoBj0C,QAAQwxC,QAAS,SAAS1hD,GACxD,MAAOA,GAAEwX,KAEXxQ,MAAM8S,UAAUyG,WAAW,0BAA2BmhC,SAC/CA,UAERjiD,QAGLwiD,kBAAkBtzC,UAAUu0C,YAAc,WACxC,GAAIv/C,OAIJ,OAHAA,SACEg+C,QAAQ,GAEHliD,KAAKsY,GAAG2pC,QAAQlzB,KAAK/uB,KAAKqS,MAAMoG,UAAWvU,QAAQf,KAAK,SAAUoE,OACvE,MAAO,UAASoM,QACd,GAAI22B,GAAG52B,IAAK8qB,OAAQyjB,OAMpB,KALAA,QAAUtuC,OAAO4e,WACjBhrB,MAAM8K,MAAMsyC,gBAAkB1C,QAC9B16C,MAAM8K,MAAMmyC,sBAAwB7wC,OAAOuuC,OAC3C36C,MAAM8K,MAAMuyC,oBAAsBjxC,OAAOmU,KACzCvgB,MAAM8K,MAAMsyC,gBAAkBp9C,MAAM8K,MAAMuyC,oBAAsBr9C,MAAM8K,MAAMmyC,sBACvEla,EAAI,EAAG52B,IAAMuuC,QAAQz1C,OAAYkH,IAAJ42B,EAASA,IACzC9L,OAASyjB,QAAQ3X,GACjB9L,OAAOimB,aAAepkD,EAAEwX,OAAO2mB,OAAOimB,aAAc,eAetD,OAbAl9C,OAAM8K,MAAM4vC,QAAUA,QACtB16C,MAAM8K,MAAM0vC,YAAc1hD,EAAEyM,OAAOm1C,QAAS,SAASzjB,QACnD,OAAQA,OAAO0jB,SACd2C,UACEt9C,MAAM8K,MAAMkyC,gBACfh9C,MAAM8K,MAAMkyC,kBAEdh9C,MAAM8K,MAAMuvC,eAAiBK,QAAQz1C,OACrCjF,MAAM8K,MAAMyyC,YAAcr0C,QAAQwxC,QAAS,SAAS1hD,GAClD,MAAOA,GAAEwX,KAEXxQ,MAAM8S,UAAUyG,WAAW,iBAAkBmhC,SAC7C16C,MAAM8K,MAAM0yC,cAAgBx9C,MAAMy9C,oBAC3B/C,UAERjiD,QAGLwiD,kBAAkBtzC,UAAU+1C,eAAiB,WAC3C,GAAIC,kBAAkBC,YAGtB,OAFAA,cAAenlD,KAAKqS,MAAM+yC,gBAC1BF,iBAAmBllD,KAAKqS,MAAMgzC,oBACzBH,kBAAqBA,kBAG1BllD,KAAKqS,MAAMizC,SAAWtlD,KAAKqS,MAAMkzC,YACjCvlD,KAAKkZ,cAAc,IAAKlZ,KAAKqS,MAAMizC,UACnCjlD,EAAE4I,MAAMk8C,aAAcD,kBAAmB,SAAU39C,OACjD,MAAO,UAASi+C,WACd,MAAOnlD,GAAE4I,KAAKu8C,UAAW,SAAS/zC,MAChC,GAAI3E,QAAQsM,OAMZ,OALAA,SAAU7R,MAAM8K,MAAM+G,QAAQ3H,KAAKjI,MACnCsD,OAASzM,EAAE8d,KAAK/E,SACdrB,GAAItG,KAAKsG,KAEXjL,OAAOm3B,UAAW,EACX18B,MAAMqR,aAAanH,KAAKjI,KAAMiI,KAAKsG,QAG7C/X,OACIA,KAAK+gD,mBAlBZ,QAqBFyB,kBAAkBtzC,UAAUu2C,aAAe,WACzC,GAAIP,kBAAkBC,YAqBtB,OApBAA,cAAe9kD,EAAEyM,OAAO9M,KAAKqS,MAAM+G,QAAQtD,KAAM,YACjDovC,iBAAmB7kD,EAAEyM,OAAO9M,KAAKqS,MAAM+G,QAAQvT,OAAQ,YACvD7F,KAAKqS,MAAM+yC,gBAAkBD;AAC7BnlD,KAAKqS,MAAMgzC,oBAAsBH,iBACjCllD,KAAKqS,MAAMkzC,YAAcvlD,KAAKqS,MAAMizC,SACpCtlD,KAAKqS,MAAMizC,SAAW,OACtBtlD,KAAKkZ,cAAc,IAAKlZ,KAAKqS,MAAMizC,UACnCjlD,EAAE4I,MAAMk8C,aAAcD,kBAAmB,SAAU39C,OACjD,MAAO,UAASi+C,WACd,MAAOnlD,GAAE4I,KAAKu8C,UAAW,SAAS/zC,MAChC,GAAI3E,QAAQsM,OAMZ,OALAA,SAAU7R,MAAM8K,MAAM+G,QAAQ3H,KAAKjI,MACnCsD,OAASzM,EAAE8d,KAAK/E,SACdrB,GAAItG,KAAKsG,KAEXjL,OAAOm3B,UAAW,EACX18B,MAAM8R,eAAe5H,KAAKjI,KAAMiI,KAAKsG,QAG/C/X,OACIA,KAAK+gD,mBAGdyB,kBAAkBtzC,UAAU6xC,gBAAkB,WAC5C,GAAI39C,QAIJ,OAHApD,MAAKqS,MAAMqzC,WAAa1lD,KAAK2lD,gBAC7B3lD,KAAKsY,GAAGka,YAAYozB,iBAAiB5lD,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAMqzC,YACtEtiD,QAAUpD,KAAKsY,GAAGka,YAAYqzB,eAAe7lD,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAMqzC,YACvEtiD,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASirB,aAMd,MALAjrB,OAAM8K,MAAMmgB,YAAcnyB,EAAEwX,OAAO2a,YAAa,iBAChDjrB,MAAMu+C,uBACNh1C,WAAWvJ,MAAM8K,MAAO,WACtB,MAAO9K,OAAM8K,MAAMyO,WAAW,wBAEzB0R,cAERxyB,QAGLwiD,kBAAkBtzC,UAAU62C,YAAc,WACxC,MAAO/lD,MAAK+P,EAAEsI,KAAKrY,KAAKwjD,mBAAoBxjD,KAAKyjD,cAAezjD,KAAK+gD,qBAGvEyB,kBAAkBtzC,UAAUioB,YAAc,WACxC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAgBd,MAfKA,SAAQif,sBACX3f,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2zC,mBAAqB/9C,QAAQg+C,wBACzC1+C,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAM4f,OAAS5xB,EAAEwX,OAAO5P,QAAQgqB,OAAQ,SAC9C1qB,MAAM8K,MAAM01B,WAAat3B,QAAQxI,QAAQgqB,OAAQ,SAAS1xB,GACxD,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMslB,aAAelnB,QAAQxI,QAAQ2vB,YAAa,SAASr3B,GAC/D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAM6hC,aAAe7zC,EAAEwX,OAAO5P,QAAQ2vB,YAAa,MAClD3vB,UAERjI,QAGLwiD,kBAAkBtzC,UAAUwnB,gBAAkB,WAC5C,GAAItzB,QAQJ,OAPAA,SAAUpD,KAAKm3B,cACf/zB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,UAASU,SAEd,MADAV,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OAC1ClQ,MAAMs8C,2BAEd7jD,OACIoD,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,YACL,MAAOA,OAAMw+C,gBAEd/lD,OAAOmD,KAAK,SAAUoE,OACvB,MAAO,YACL,MAAOA,OAAMy5C,oBAEdhhD,OAAOmD,KAAK,SAAUoE,OACvB,MAAO,YACL,MAAOA,OAAM8K,MAAM2b,MAAM,oBAE1BhuB,QAGLwiD,kBAAkBtzC,UAAUg3C,sBAAwB,SAASC,KAAMtoB,OAIjE,MAHa,OAATA,QACFA,MAAQ,iBAEHx9B,EAAEC,IAAI6lD,KAAM,SAAS5lD,GAC1B,OACE6lD,MAAS7lD,EAAEwX,GACX01B,MAASltC,EAAEs9B,WAKjB2kB,kBAAkBtzC,UAAUm3C,kBAAoB,SAASF,KAAMtoB,OAC7D,GAAIqgB,OAAOzsC,KAAM60C,MAAOhc,EAAG52B,GAK3B,KAJa,MAATmqB,QACFA,MAAQ,iBAEVyoB,SACKpI,MAAQ5T,EAAI,EAAG52B,IAAMyyC,KAAK35C,OAAYkH,IAAJ42B,EAAS4T,QAAU5T,EACxD74B,KAAO00C,KAAKjI,OACZzsC,KAAKosB,OAASqgB,MACVzsC,KAAK80C,cACPD,MAAM5/C,KAAK+K,KAGf,OAAO60C,QAGT9D,kBAAkBtzC,UAAUy0C,OAAS,SAAS12C,IAAKu5C,OAAQC,WAAYC,aACrE,GAAIx/C,MAAMo/C,MAAOhc,EAAG34B,EAAG+B,IAAK62B,KAAMoc,KAAMjsB,EAAGksB,sBAAuBC,oBAAqBpF,UAAWqF,YAAa7+C,QAAS7E,QAAS4+B,SAAUxD,OAAQ/P,GAAI+D,WAmBvJ,IAlBAs0B,YAAcN,OAAO,GAAGrZ,UACxBllC,QAAUu+C,OAAO,GAAGv+C,QACpB2+C,uBAAwB,EACxBC,qBAAsB,EACtBroB,OAASx+B,KAAKqS,MAAMyyC,YAAYgC,cAC3BtoB,QAAUx+B,KAAKqS,MAAMqyC,oBACxBlmB,OAASx+B,KAAKqS,MAAMqyC,kBAAkBoC,aAClCtoB,SACFooB,uBAAwB,IAG5BnF,UAAYzhD,KAAKqS,MAAMyyC,YAAY4B,cAC9BjF,WAAaiF,cAChBjF,UAAYzhD,KAAKqS,MAAMqyC,kBAAkBgC,aACrCjF,YACFoF,qBAAsB,IAGtBH,cAAgBI,YA+ClB,MA9CAR,OAAQ,KACR9zB,YAAc,KAEZA,YADkB,OAAhBk0B,YACY1mD,KAAKqS,MAAMmgB,YAEXivB,UAAUgD,aAE1BzkD,KAAKqS,MAAM4B,OAAO,WAChB,GAAIwT,MAAM6iB,EAAGt7B,IAAK0E,IAAK+mB,EAAGhM,EAC1B,KAAKzf,IAAMs7B,EAAI,EAAG52B,IAAM8yC,OAAOh6C,OAAYkH,IAAJ42B,EAASt7B,MAAQs7B,EACtD7b,GAAK+3B,OAAOx3C,KACZyrB,EAAIjI,YAAYrsB,QAAQsoB,IACxB+D,YAAYu0B,OAAOtsB,EAAG,EAGxB,OADAhT,OAAQg/B,WAAY,GAAGl4C,OAAOi4C,QACvBQ,MAAM93C,UAAU63C,OAAOv3C,MAAMgjB,YAAa/K,QAE/B,OAAhBi/B,aACFJ,MAAQtmD,KAAKqmD,kBAAkB7zB,YAAa,iBAC5CtrB,KAAOlH,KAAKkmD,sBAAsBI,MAAO,iBACzCtmD,KAAKsY,GAAGka,YAAYy0B,uBAAuBh/C,QAASf,MAAM/D,KAAK,SAAUoE,OACvE,MAAO,YACL,GAAI+iC,GAAG52B,IAAKiF,QAAS8V,EAErB,KADA9V,WACK2xB,EAAI,EAAG52B,IAAM8yC,OAAOh6C,OAAYkH,IAAJ42B,EAASA,IACxC7b,GAAK+3B,OAAOlc,GACZ3xB,QAAQjS,KAAKa,MAAM8S,UAAUyG,WAAW,kBAAmB2N,GAAIq4B,YAAaJ,aAE9E,OAAO/tC,WAER3Y,SAEHsmD,MAAQtmD,KAAKqmD,kBAAkB7zB,YAAa,gBAC5CtrB,KAAOlH,KAAKkmD,sBAAsBI,MAAO,gBACzCtmD,KAAKsY,GAAGka,YAAY00B,sBAAsBj/C,QAASf,MAAM/D,KAAK,SAAUoE,OACtE,MAAO,YACL,GAAI+iC,GAAG52B,IAAKiF,QAAS8V,EAErB,KADA9V,WACK2xB,EAAI,EAAG52B,IAAM8yC,OAAOh6C,OAAYkH,IAAJ42B,EAASA,IACxC7b,GAAK+3B,OAAOlc,GACZ3xB,QAAQjS,KAAKa,MAAM8S,UAAUyG,WAAW,kBAAmB2N,GAAIq4B,YAAaJ,aAE9E,OAAO/tC,WAER3Y,QAEEoD,OAET,IAAoB,OAAhBsjD,YAAsB,CACxB,IAAKpc,EAAI,EAAG52B,IAAM8yC,OAAOh6C,OAAYkH,IAAJ42B,EAASA,IACxC7b,GAAK+3B,OAAOlc,GACZ7b,GAAG0e,UAAY,IAgCjB,OA9BAntC,MAAKqS,MAAM4B,OAAO,SAAU1M,OAC1B,MAAO,YACL,GAAIkgB,MAAMzY,IAAK2C,EAAG44B,KAAM9P,EAAG9hB,OAI3B,KAHA8O,MAAQg/B,WAAY,GAAGl4C,OAAOi4C,QAC9BQ,MAAM93C,UAAU63C,OAAOv3C,MAAMjI,MAAM8K,MAAMmgB,YAAa/K,MACtD9O,WACK3J,IAAM2C,EAAI,EAAG44B,KAAOic,OAAOh6C,OAAY+9B,KAAJ54B,EAAU3C,MAAQ2C,EACxD8c,GAAK+3B,OAAOx3C,KACZyrB,EAAI+D,OAAOimB,aAAat+C,QAAQsoB,IAChC9V,QAAQjS,KAAK83B,OAAOimB,aAAasC,OAAOtsB,EAAG,GAE7C,OAAO9hB,WAER3Y,OACHoD,QAAUpD,KAAKu2B,KAAKjJ,KAAKmB,IACzBrrB,QAAUA,QAAQD,KAAK,SAAUoE,OAC/B,MAAO,YAGL,MAFA++C,OAAQ/+C,MAAM8+C,kBAAkB9+C,MAAM8K,MAAMmgB,YAAa,iBACzDtrB,KAAOK,MAAM2+C,sBAAsBI,MAAO,iBACnC/+C,MAAM+Q,GAAGka,YAAYy0B,uBAAuBx4B,GAAGxmB,QAASf,MAAM/D,KAAK,WAExE,MADAoE,OAAM8S,UAAUyG,WAAW,kBAAmB2N,GAAIq4B,YAAaJ,aAC3DE,sBACKr/C,MAAM8S,UAAUyG,WAAW,+BADpC,WAKH9gB,OACHoD,QAAQD,KAAK,KAAM,WACjB,MAAOgkD,SAAQ3xC,IAAI,UAEdpS,QAET,GAAoB,OAAhB0jD,YAAsB,CACxB,IAAKn1C,EAAI,EAAG44B,KAAOic,OAAOh6C,OAAY+9B,KAAJ54B,EAAUA,IAC1C8c,GAAK+3B,OAAO70C,GACZ8c,GAAG0e,UAAYuZ,WAEjB1mD,MAAKqS,MAAM4B,OAAO,SAAU1M,OAC1B,MAAO,YACL,GAAIkgB,MAAMzY,IAAK23C,KAAMjsB,EAAGD,EAAG9hB,OAI3B,KAHA8O,MAAQg/B,WAAY,GAAGl4C,OAAOi4C,QAC9BQ,MAAM93C,UAAU63C,OAAOv3C,MAAMiyC,UAAUgD,aAAch9B,MACrD9O,WACK3J,IAAM0rB,EAAI,EAAGisB,KAAOH,OAAOh6C,OAAYm6C,KAAJjsB,EAAU1rB,MAAQ0rB,EACxDjM,GAAK+3B,OAAOx3C,KACZyrB,EAAIlzB,MAAM8K,MAAMmgB,YAAYrsB,QAAQsoB,IACpC9V,QAAQjS,KAAKa,MAAM8K,MAAMmgB,YAAYu0B,OAAOtsB,EAAG,GAEjD,OAAO9hB,WAER3Y,WACE,CACL,IAAK06B,EAAI,EAAGisB,KAAOH,OAAOh6C,OAAYm6C,KAAJjsB,EAAUA,IAC1CjM,GAAK+3B,OAAO9rB,GACZjM,GAAG0e,UAAYuZ,WAEjB1mD,MAAKqS,MAAM4B,OAAO,SAAU1M,OAC1B,MAAO,YACL,GAAIkgB,MAAM2/B,KAAM7I,EAAG9jB,EAAG9hB,OAItB,KAHA8O,MAAQg/B,WAAY,GAAGl4C,OAAOi4C,QAC9BQ,MAAM93C,UAAU63C,OAAOv3C,MAAMiyC,UAAUgD,aAAch9B,MACrD9O,WACK4lC,EAAI,EAAG6I,KAAOZ,OAAOh6C,OAAY46C,KAAJ7I,EAAUA,IAC1C9vB,GAAK+3B,OAAOjI,GACZ9jB,EAAI+D,OAAOimB,aAAat+C,QAAQsoB,IAChC9V,QAAQjS,KAAK83B,OAAOimB,aAAasC,OAAOtsB,EAAG,GAE7C,OAAO9hB,WAER3Y,OA+BL,MA7BAgiC,UAAW3hC,EAAEC,IAAIkmD,OAAQ,SAAUj/C,OACjC,MAAO,UAASknB,IACd,MAAOlnB,OAAMgvB,KAAKjJ,KAAKmB,MAExBzuB,OACHoD,QAAUpD,KAAK+P,EAAEsI,IAAI2pB,UAAU7+B,KAAK,SAAUoE,OAC5C,MAAO,YAeL,MAdA++C,OAAQ/+C,MAAM8+C,kBAAkB5E,UAAUgD,aAAc,gBACxDv9C,KAAOK,MAAM2+C,sBAAsBI,MAAO,gBAC1C/+C,MAAM+Q,GAAGka,YAAY00B,sBAAsBj/C,QAASf,MAAM/D,KAAK,SAASwQ,QACtE,MAAOpM,OAAM8S,UAAUyG,WAAW,kBAAmB2N,GAAIq4B,YAAaJ,eAExEn/C,MAAM+Q,GAAGka,YAAYy0B,uBAAuBh/C,QAASf,MAAM/D,KAAK,WAC9D,GAAIikD,MAAM7I,EAAG5lC,OAEb,KADAA,WACK4lC,EAAI,EAAG6I,KAAOZ,OAAOh6C,OAAY46C,KAAJ7I,EAAUA,IAC1C9vB,GAAK+3B,OAAOjI,GACZ5lC,QAAQjS,KAAKa,MAAM8S,UAAUyG,WAAW,kBAAmB2N,GAAIq4B,YAAaJ,aAE9E,OAAO/tC,WAELkuC,qBAAuBD,sBAClBr/C,MAAM8K,MAAMyO,WAAW,+BADhC,SAID9gB,OACHoD,QAAQD,KAAK,KAAM,WACjB,MAAOgkD,SAAQ3xC,IAAI,UAEdpS,SAGTo/C,kBAAkBtzC,UAAUm4C,iBAAmB,SAAS79C,KAAMuO,IAC5D,MAA8B,OAAzB/X,KAAKsnD,WAAW99C,OAAkBxJ,KAAKsnD,WAAW99C,MAAMuO,KACpD,GAEF,GAGTyqC,kBAAkBtzC,UAAU42C,qBAAuB,WACjD,GAAI9yC,MAAM2F,QAAS4uC,WAAYv7C,IAAKsC,KACpCi5C,YAAavnD,KAAK2lD,gBACd4B,WAAWx3C,IACb/P,KAAKqS,MAAMizC,SAAWtlD,KAAKqS,MAAMizC,UAAYiC,WAAWx3C,GAE1D/P,KAAKsnD,cACL3uC,UACA,KAAK3F,OAAQu0C,YACXj5C,MAAQi5C,WAAWv0C,MACU,MAAzBhT,KAAKsnD,WAAWt0C,QAClBhT,KAAKsnD,WAAWt0C,UAElB2F,QAAQjS,KAAK,WACX,GAAI4jC,GAAG52B,IAAK2rB,KAAMmoB,QAGlB,KAFAnoB,KAAOt/B,MAAMqR,SAAS9C,OAAOjC,MAAM,KACnCm7C,YACKld,EAAI,EAAG52B,IAAM2rB,KAAK7yB,OAAYkH,IAAJ42B,EAASA,IACtCt+B,IAAMqzB,KAAKiL,GACXkd,SAAS9gD,KAAK1G,KAAKsnD,WAAWt0C,MAAMhH,MAAO,EAE7C,OAAOw7C,WACNnkD,KAAKrD,MAEV,OAAO2Y,UAGT6pC,kBAAkBtzC,UAAUy2C,cAAgB,WAC1C,MAAOtlD,GAAEonD,KAAKznD,KAAK6P,SAASxJ,SAAU,SAAU,OAAQ,MAG1Dm8C,kBAAkBtzC,UAAU8xC,gBAAkB,WAC5C,GAAI/pB,aAAaswB,UASjB,OARAA,YAAavnD,KAAK2lD,gBAClB3lD,KAAKqS,MAAM+G,WACX6d,eACAA,YAAYhvB,QAAUjI,KAAKqS,MAAMoG,UACjCwe,YAAYnhB,KAAOyxC,WAAWzxC,KAC9BmhB,YAAYpxB,OAAS0hD,WAAW1hD,OAChCoxB,YAAYlnB,EAAIw3C,WAAWx3C,EAC3BknB,YAAYkW,UAAY,OACjBntC,KAAKsY,GAAGka,YAAYk1B,YAAYzwB,aAAa9zB,KAAK,SAAUoE,OACjE,MAAO,UAASL,MACd,GAAIygD,sBAAsBzC,iBAAkBC,aAAcyC,gBAqB1D,OApBAD,sBAAuB,SAAS9jB,QAASr6B,KAAMq+C,YAC7C,MAAOxnD,GAAEC,IAAIujC,QAAS,SAAS/M,GAE7B,MADAA,GAAEttB,KAAOA,KACFstB,KAGX8wB,iBAAmB,SAAS9xC,MAC1B,MAAOzV,GAAEC,IAAIwV,KAAM,SAASghB,GAG1B,MAFAA,GAAE/e,GAAK+e,EAAE9jB,KACT8jB,EAAEttB,KAAO,OACFstB,KAGXvvB,MAAM8K,MAAM+G,QAAQvT,OAAS8hD,qBAAqBzgD,KAAKuwC,SAAU,SAAUlwC,MAAM8K,MAAMslB,cACvFpwB,MAAM8K,MAAM+G,QAAQtD,KAAO8xC,iBAAiB1gD,KAAK4O,MACjDqvC,aAAe9kD,EAAEyM,OAAOvF,MAAM8K,MAAM+G,QAAQtD,KAAM,YAClDqvC,aAAe9kD,EAAEC,IAAI6kD,aAAc,MACnCD,iBAAmB7kD,EAAEyM,OAAOvF,MAAM8K,MAAM+G,QAAQvT,OAAQ,YACxDq/C,iBAAmB7kD,EAAEC,IAAI4kD,iBAAkB,MAC3C39C,MAAMugD,oBAAoBvgD,MAAM8K,MAAM+G,QAASmuC,YACxChgD,MAAM+Q,GAAGka,YAAYozB,iBAAiBr+C,MAAM8K,MAAMoG,WACvD5S,OAAUq/C,iBACVpvC,KAAQqvC,aACRl9C,QAAWV,MAAM8K,MAAMoG,UACvB00B,UAAa,SAGhBntC,QAGLwiD,kBAAkBtzC,UAAU44C,oBAAsB,SAAS1uC,QAASmuC,YAClE,GAAIQ,YAAYzd,EAAGt7B,IAAK0E,IAAKV,KAAM+C,IAAKspB,KAAMsP,KAAMh2B,QAAS2uC,WAAYt7C,IAAKsC,KAC9Eg5C,eACAjoB,KAAOh/B,EAAE2nD,KAAKT,WAAY,OAAQ,UAClC,KAAKv0C,OAAQqsB,MAMX,IALA/wB,MAAQ+wB,KAAKrsB,MACW,MAApBs0C,WAAWt0C,QACbs0C,WAAWt0C,UAEb27B,MAAQ,GAAKrgC,OAAOjC,MAAM,KACrBi+B,EAAI,EAAG52B,IAAMi7B,KAAKniC,OAAYkH,IAAJ42B,EAASA,IACtCt+B,IAAM2iC,KAAKrE,GACXgd,WAAWt0C,MAAMhH,MAAO,CAG5B+7C,YAAa,SAASv+C,KAAMuO,IAC1B,MAAyB,OAApBuvC,WAAW99C,OAAkB89C,WAAW99C,MAAMuO,KAC1C,GAEF,GAETY,UACA,KAAK3J,MAAOoK,SACV9K,MAAQ8K,QAAQpK,KAChB2J,QAAQjS,KAAK,WACX,GAAIiL,GAAG44B,KAAMid,QAEb,KADAA,YACK71C,EAAI,EAAG44B,KAAOj8B,MAAM9B,OAAY+9B,KAAJ54B,EAAUA,IACzCoE,IAAMzH,MAAMqD,GACZ61C,SAAS9gD,KAAKqP,IAAIkuB,SAAW8jB,WAAWhyC,IAAIvM,KAAMuM,IAAIgC,KAAM,EAAO,OAErE,OAAOyvC,aAGX,OAAO7uC,UAGT6pC,kBAAkBtzC,UAAU+4C,sBAAwB,WAElD,MADAjoD,MAAK8lD,uBACE9lD,KAAKghD,kBAAkB79C,KAAK,SAAUoE,OAC3C,MAAO,YAEL,MADAA,OAAM8S,UAAUyG,WAAW,kBACpBvZ,MAAMi8C,qBAEdxjD,QAGLwiD,kBAAkBtzC,UAAUg5C,cAAgB,SAASzvC,UAAWxF,IAAKk1C,QACnE,GAAIj8B,gBAAgBC,MAGpB,OAFAA,QAASlE,EAAEkgC,OAAOh8B,QAClBD,eAAiBlsB,KAAK63B,UAAU1L,OAAOA,QAAQ2qB,cAAc,cAAc3lC,QAAQ,KAAKtD,QACjF7N,KAAKsY,GAAGka,YAAY41B,SAAS3vC,UAAWxF,KAAK9P,KAAK,SAAUoE,OACjE,MAAO,UAASknB,IACd,MAAOlnB,OAAM27C,IAAI3V,YAAYxe,KAAK,KAAMN,GAAG1W,GAAIU,WAAWtV,KAAK,SAASoqC,aAEtE,MADAhmC,OAAM8S,UAAUyG,WAAW,cAAe2N,GAAI8e,YAAYn2B,QACnD8U,eAAeI,aAGzBtsB,QAGLwiD,kBAAkBtzC,UAAUm5C,gBAAkB,SAAS55B,IACrD,GAAIrP,SAAS1b,KAGb,OAFAA,OAAQ1D,KAAK0a,UAAUhT,QAAQ,0BAC/B0X,QAAUqP,GAAGpB,QACNrtB,KAAKwlC,QAAQ1X,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAUoE,OAC7D,MAAO,UAASwmB,aACd,GAAI3qB,QAOJ,OANAmE,OAAM8K,MAAMmgB,YAAcnyB,EAAEioD,QAAQ/gD,MAAM8K,MAAMmgB,YAAa/D,IAC7DrrB,QAAUmE,MAAMgvB,KAAKxa,OAAO0S,IAC5BrrB,QAAQD,KAAK,WAEX,MADA4qB,aAAYzB,SACL/kB,MAAMw+C,gBAER3iD,QAAQD,KAAK,KAAM,WAExB,MADA4qB,aAAYzB,QAAO,GACZ/kB,MAAMi+B,QAAQ79B,OAAO,aAG/B3H,QAGLwiD,kBAAkBtzC,UAAUq5C,SAAW,SAAS/+C,MAC9C,OAAQA,MACN,IAAK,WACH,MAAOxJ,MAAKqa,UAAUyG,WAAW,aAAc9gB,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAMpK,QAAQugD,kBAAmBxoD,KAAKqS,MAAM6hC,aACxH,KAAK,OACH,MAAOl0C,MAAKqa,UAAUyG,WAAW,cAAe9gB,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAMpK,QAAQugD,qBAI/FhG,kBAAkBtzC,UAAUu5C,aAAe,WACzC,MAAOzoD,MAAKqa,UAAUyG,WAAW,oBAAqB9gB,KAAKqS,MAAMoG,YAGnE+pC,kBAAkBtzC,UAAU81C,kBAAoB,WAC9C,GAAI0D,YAEJ,OADAA,cAAc,GAAI3nD,OAAOC,UAClBX,EAAE8d,KAAKne,KAAKqS,MAAM4vC,QAAS,SAASzjB,QACzC,GAAImqB,KAAK96C,KAGT,OAFAA,OAAQxE,OAAOm1B,OAAO+iB,gBAAiB,cAAcn8B,OAAO,KAC5DujC,IAAMt/C,OAAOm1B,OAAOgjB,iBAAkB,cAAcp8B,OAAO,KACpDsjC,aAAe76C,OAAwB86C,KAAfD,eAI5BlG,mBAEN5xC,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,oBAAqBi/C,mBAEvCC,iBAAmB,SAASniC,MAAOnV,WAAYnI,YAC7C,GAAI4lD,kBAAkBlrC,KAAMmrC,aAAcC,YAAaC,YAAaC,eAAgBC,YAwNpF,OAvNAL,kBAAmBvoD,EAAEgd,SAAS,yDAC9BwrC,aAAe,SAASlrC,OAAQC,IAAKC,OAAQqR,OAC3C,GAAIg6B,gBAAgBC,WAAYC,eAAgBC,iBA6ChD,OA5CAD,gBAAiB,WACf,GAAIE,aAAaC,WAAY73C,EAAG44B,EAAG52B,IAAK2rB,KAAM1mB,QAASwrC,MAAOvlB,aAAcnQ,EAC5E,IAAqB,MAAhB9Q,OAAOwmC,OAAgD,MAA7BxmC,OAAOwmC,MAAMvlB,cAAuD,IAA9BjhB,OAAOwmC,MAAMvlB,aAAoB,CAKpG,GAJAyqB,oBACAlF,MAAQxmC,OAAOwmC,MACfvlB,aAAeulB,MAAMvlB,aACrB0qB,YAAcnF,MAAMqF,iBACf7rC,OAAO6U,YACV,MAIF,KAFA6M,KAAO1hB,OAAO6U,YACd7Z,WACKjH,EAAI44B,EAAI,EAAG52B,IAAM2rB,KAAK7yB,OAAYkH,IAAJ42B,EAAS54B,IAAM44B,EAAG,CAGnD,GAFA7b,GAAK4Q,KAAK3tB,GACV43C,aAAe76B,GAAGmQ,aACd0qB,YAAc1qB,aAAc,CAC9B2qB,WAAa3rC,IAAIO,KAAK,oCAAoCzM,GAC1Dw3C,eAAeK,WACf,OAEA5wC,QAAQjS,KAAK,QAGjB,MAAOiS,WAGX0wC,kBAAoB,WAClB,MAAOzrC,KAAIO,KAAK,cAAcpC,UAEhCmtC,eAAiB,SAAS9hD,SACxB,GAAImM,KAEJ,OADAA,MAAOvQ,WAAW0E,QAAQ,oBACnBugB,EAAE7gB,SAASqiD,OAAOb,kBACvBr1C,KAAQA,SAGZ41C,WAAa,WACX,GAAIO,YAEJ,OADAA,aAAc9rC,IAAIO,KAAK,oCAChB9d,EAAEC,IAAIopD,YAAa,SAASnpD,GACjC,MAAOqC,SAAQwE,QAAQ7G,MAG3Bod,OAAO7R,IAAI,qBAAsBs9C,gBAC1BzrC,OAAOjL,OAAO,QAAS02C,iBAEhCL,YAAc,SAASprC,OAAQC,IAAKC,OAAQqR,OAC1C,GAAIy6B,eAAeC,YAAaC,YAAaC,oBAAqBC,mBAAoBC,gBAAiBC,YA+FvG,OA9FAL,aAAc,WACZ,GAAIM,OAEJ,OADAA,QAAStsC,IAAIO,KAAK,8CACX9d,EAAEC,IAAI4pD,OAAQ,SAASz4C,MAC5B,GAAI04C,UAIJ,OAHA14C,MAAOwW,EAAExW,MAAMw3B,QAAQ,aACvBkhB,UAAY14C,KAAKY,QACjB83C,UAAU17B,GAAG0e,UAAYxvB,OAAOskC,QAAQ,GAAGlqC,GACpCoyC,UAAU17B,MAGrBu7B,gBAAkB,SAASI,YAAa5rB,QACtC,GAAI6rB,aAAaC,iBAAkBC,UAenC,OAdAA,YAAalqD,EAAEsd,OAAO6U,aACtB7U,OAAO6U,YAAc+3B,WAAWjC,QAAQ94C,MAAM+6C,WAAYH,aAAa97C,QACvE+7C,YAAchqD,EAAEC,IAAI8pD,YAAa,SAASliB,EAAGC,GAC3C,MAAOD,GAAEtJ,eAEX0rB,iBAAmBjqD,EAAEmW,OAAO6zC,YAAa,SAASjiB,IAAKC,KACrD,MAAOD,KAAMC,MAEf7J,OAAOimB,aAAepkD,EAAEmqD,MAAMhsB,OAAOimB,aAAc2F,aACnD5rB,OAAOI,cAAgB0rB,iBACvBhqC,MAAMmqC,QAAQL,aAAajnD,KAAK,WAE9B,MADA+rB,OAAMu0B,cACCv0B,MAAMs0B,qBAER5lC,IAAIO,KAAK,mBAAmByiB,QAErCkpB,oBAAsB,SAASM,aAC7B,MAAOJ,iBAAgBI,YAAazsC,OAAOonC,gBAE7CgF,mBAAqB,SAASK,aAC5B,MAAOJ,iBAAgBI,YAAazsC,OAAOskC,QAAQ,KAErDgI,cAAe,EACfJ,YAAc,KACdF,cAAgB,SAASx9B,QACvB,GAAIu+B,iBAAiBC,aAKrB,OAJAd,aAAc19B,OAAO8c,QAAQ,gBAC7B9c,OAAO8c,QAAQ,gBAAgBsH,YAAY,6BAC3Cma,gBAAkB9sC,IAAIO,KAAK,mBAC3BwsC,cAAgB/sC,IAAIO,KAAK,8CACrBwsC,cAAcn+C,OAAS,GAAKmR,OAAOskC,QAAQz1C,OAAS,EAC/Ck+C,gBAAgBtgC,OAEhBsgC,gBAAgB9pB,QAG3B3Y,EAAE/nB,QAAQwe,GAAG,4CAA6C,SAAS/Q,OAEjE,MADAs8C,gBAAiBt8C,MAAMi9C,UAChB,IAEThtC,IAAIc,GAAG,SAAU,qCAAsC,SAAS/Q,OAC9D,GAAIk9C,SAASxP,SAAUyP,QAASC,QAAS5+B,MAwBzC,OAvBI09B,cAAeI,eACjB5O,YACAwP,QAAU5iC,EAAEta,MAAMwa,eAAe8gB,QAAQ,gBACzC6hB,QAAUjB,YAAYiB,UACtBC,QAAUlB,YAAYkB,UAClB1qD,EAAE0oC,KAAK+hB,QAAS,SAASl9C,MAC3B,MAAOA,QAASi9C,QAAQ,KAExBxP,SAAWwO,YAAYmB,UAAUH,SACxBxqD,EAAE0oC,KAAKgiB,QAAS,SAAS/X,MAClC,MAAOA,QAAS6X,QAAQ,OAExBxP,SAAWwO,YAAYoB,UAAUJ,UAEnCxqD,EAAEC,IAAI+6C,SAAU,SAAS6P,KACvB,GAAIj2C,MAGJ,OAFAA,OAAQgT,EAAEijC,KAAK/sC,KAAK,kBACpBlJ,MAAM6qC,KAAK,WAAW,GACf6J,cAAc10C,UAGzBkX,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BgE,OAAO8c,QAAQ,gBAAgBsH,YAAY,cACpCoZ,cAAcx9B,UAEvBvO,IAAIc,GAAG,QAAS,yBAA0B,SAAUnX,OAClD,MAAO,UAASoG,OACd,GAAIw9C,UAEJ,OADAA,WAAYvB,cACLjsC,OAAO1J,OAAO5T,EAAE+0C,QAAQ2U,mBAAoBoB,cAEpDnrD,OACH4d,IAAIc,GAAG,QAAS,0BAA2B,SAAUnX,OACnD,MAAO,UAASoG,OACd,GAAIw9C,UAEJ,OADAA,WAAYvB,cACLjsC,OAAO1J,OAAO5T,EAAE+0C,QAAQ0U,oBAAqBqB,cAErDnrD,OACI4d,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OAG5C,MAFAA,OAAM2Q,iBACN4Q,MAAM80B,iBACCiF,aAAa/5B,UAGxB+5B,aAAe,SAAS/5B,OACtB,GAAIg8B,KAAK33C,IAET,OADA23C,KAAMtoD,QAAQwE,QAAQ,cAClB8nB,MAAMi0B,UACR+H,IAAIplC,SAAS,UACbvS,KAAOvQ,WAAW0E,QAAQ,qBACnBwjD,IAAI33C,KAAKA,QAEhB23C,IAAIvlC,YAAY,UAChBpS,KAAOvQ,WAAW0E,QAAQ,qBACnBwjD,IAAI33C,KAAKA,QAGpBy1C,eAAiB,SAASrrC,OAAQC,IAAKsR,OACrC,GAAIk8B,UAAUC,SAAUC,QAASn/B,MAoBjC,OAnBAm/B,SAAU1tC,IAAIO,KAAK,uBACnBmtC,QAAQvmB,IAAI,gBAAiB,WAC3B,MAAO5zB,SAAQ,IAAK,WAElB,MADAhG,YAAW2V,WAAW,UACfmH,EAAE,aAAaqW,IAAI,aAAc,eAG5CnS,OAASvpB,QAAQwE,QAAQ,wBACzB6gB,EAAE,aAAaqW,IAAI,aAAc,UACjCgtB,QAAQ/a,YAAY,UACpBpkB,OAAOokB,YAAY,UACnB6a,SAAWpoD,WAAW0E,QAAQ,wBAC9B2jD,SAAWroD,WAAW0E,QAAQ,wBAC9B2J,WAAW8a,QAASi/B,SAAUC,WACzBC,QAAQjtB,SAAS,UAGpBnP,MAAM+1B,iBAFN/1B,MAAMu2B,eAIDv2B,MAAMg1B,uBAEf4E,YAAc,SAASnrC,OAAQC,IAAKC,OAAQqR,OAE1C,MADAvR,QAAO4tC,iBACA3tC,IAAIc,GAAG,QAAS,uBAAwB,SAAS/Q,OAEtD,MADAA,OAAM2Q,iBACCX,OAAO1J,OAAO,WACnB,MAAO+0C,gBAAerrC,OAAQC,IAAKsR,YAIzCxR,KAAO,SAASC,OAAQC,IAAKC,OAAQ1S,YACnC,GAAI+jB,OAAO9V,OAaX,OAZA8V,OAAQtR,IAAIra,aACZwlD,YAAYprC,OAAQC,IAAKC,OAAQqR,OACjC45B,YAAYnrC,OAAQC,IAAKC,OAAQqR,OACjC25B,aAAalrC,OAAQC,IAAKC,OAAQqR,OAClCtR,IAAIO,KAAK,uBAAuBqtC,mBAChCpyC,QAAU8V,MAAMy2B,iBACZvsC,QAAQvT,QAAUuT,QAAQtD,MAAQsD,QAAQrJ,IAC5Ci5C,eAAerrC,OAAQC,IAAKsR,OAE9BvR,OAAO7R,IAAI,WAAY,WACrB,MAAOm9C,cAAa/5B,SAEfvR,OAAO7R,IAAI,WAAY,WAE5B,MADA8R,KAAIgB,MACGqJ,EAAE/nB,QAAQ0e,IAAI,sBAIvBlB,KAAMA,OAIV9d,OAAO6d,UAAU,aAAc,UAAW,aAAc,aAAcglC,mBAEtEK,8BAAgC,SAAS33C,WAAY2hB,UAAWD,SAAU7pB,YACxE,GAAI0a,MAAMg6B,iBAmDV,OAlDAA,mBAAoB5qB,UAAU1nB,IAAI,uCAAuC,GACzEsY,KAAO,SAASC,OAAQC,IAAKC,QA6C3B,MA5CAzN,UAASuN,OAAQ,UAAW,SAAS1V,SACnC,GAAIwjD,eAAeh0C,KAGnB,OAFAA,OAAQpX,EAAEyM,OAAO7E,QAAQwP,MAAO,cAChCg0C,cAAgBprD,EAAE8U,KAAKsC,OACnBg0C,cAAgB,EACX7tC,IAAIwK,OAAOyE,SAAS6qB,mBACzBjgC,MAASA,SACPkG,UAEJC,IAAIO,KAAK,sBAAsBpC,SACxB6B,IAAIO,KAAK,kBAAkB2H,SAAS,oBAG/CnI,OAAO7R,IAAI,kBAAmB,SAASmB,IAAKm6B,OAAQskB,UAElD,MADA9tC,KAAIO,KAAK,YAAYuqB,UAAUze,QACxBrM,IAAIO,KAAK,kBAAkBoP,KAAKm+B,SAAW,yBAEpD/tC,OAAO7R,IAAI,2BAA4B,SAASmB,IAAKm6B,QACnD,GAAI7zB,KAGJ,OAFAqK,KAAIO,KAAK,YAAYuqB,UAAUze,QAC/B1W,KAAOvQ,WAAW0E,QAAQ,wBACnBkW,IAAIO,KAAK,kBAAkB5K,KAAKA,QAEzCqK,IAAIc,GAAG,QAAS,SAAS/Q,OACvB,GAAIwe,OAKJ,OAJAA,QAASvpB,QAAQwE,QAAQuG,MAAMwe,SAC3BA,OAAO8U,GAAG,SAAW9U,OAAO8U,GAAG,SACjCtzB,MAAMs0B,kBAEDrkB,IAAIO,KAAK,YAAYuqB,UAAU5gB,SAExClK,IAAIc,GAAG,QAAS,mBAAoB,SAAS/Q,OAG3C,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACC92B,WAAW2V,WAAW,8BAE/BlD,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,GAAIg+C,UAAUx/B,MAKd,OAJAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BwjC,SAAWx/B,OAAO9Z,QACXlH,WAAW2V,WAAW,kBAAmBqL,OAAOjlB,KAAK,WAAYilB,OAAO5Y,UAE1EoK,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,0BAA2B,aAAc,cAAe,WAAY,aAAcqlC,gCAEnGD,kBAAoB,SAAS5b,sBAAuB3mB,MAAOsrC,aACzD,GAAIluC,MAAMmuC,aA4GV,OA3GAA,eAAgBD,YAAYxmD,IAAI,kDAAkD,GAClFsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAO48B,kBAAmB5kB,kBAAmB6kB,gBAAiBC,oBAAqBC,eAAgBC,sBAqGvG,OApGAh9B,OAAQtR,IAAIra,aACZ2oD,uBAAyB,KACzBD,eAAiB,KACjBF,gBAAkB,KAClB7kB,kBAAoB,KACpBvpB,OAAO7R,IAAI,kBAAmB,SAASmB,IAAKm6B,OAAQskB,UAClD,GAAIj9B,GAGJ,OAFAA,IAAK9Q,OAAOlL,MAAMoL,OAAOsuC,mBACzBF,eAAiB7kB,OACVF,kBAAkBzhB,WAE3B9H,OAAO7R,IAAI,2BAA4B,SAASmB,KAC9C,GAAIwhB,GAGJ,OAFAA,IAAK9Q,OAAOlL,MAAMoL,OAAOsuC,mBACzBF,eAAiB,KACV/kB,kBAAkBzhB,WAE3B9H,OAAOjL,OAAOmL,OAAOsuC,kBAAmB,SAAS19B,IAC/C,GAAIhX,MACJ,OAAIgX,KACFyY,kBAAoBD,sBAAsB7a,OAAOxO,IAAK6Q,GAAI9Q,OAAO1V,SACjEwP,MAAQyvB,kBAAkBM,iBACL,IAAjB/vB,MAAMjL,QACRoR,IAAIO,KAAK,sBAAsBpC,SAC/B6B,IAAIO,KAAK,eAAe2H,SAAS,kBACP,IAAjBrO,MAAMjL,SACfy/C,eAAiB5rD,EAAE6R,KAAKuc,GAAGwD,QAAQ,IAEjCiV,kBAAkB/H,YACpB2sB,oBAEF5kB,kBAAkBC,uBAAyB,SAASC,OAAQC,SAC1D,MAAOrnC,MAAKstB,KAAK8Z,OAAQC,SAASlkC,KAAK,WACrC,MAAO+rB,OAAMs0B,sBAGjBtc,kBAAkBzhB,OAAS,WACzB,GAAIxY,KAAKsgB,KAAM+Z,aAAcD,QAASkB,SAAUlrB,SAAU9J,KAAM7P,MAAOg7B,WAqBvE,OApBAA,aAAc1+B,KAAKunC,uBACI,MAAlB0kB,gBAA4C,IAAjBx0C,MAAMjL,QACpC+G,KAAOmrB,YACPh7B,MAAQg7B,cAER2I,QAAUrnC,KAAKyuB,GAAGwD,OAAOg6B,gBACzB1jB,SAAWvoC,KAAK+nC,WAAWV,SAC3B9zB,KAAOg1B,SAASv1B,KAAO,YAAc0rB,YAAc,UACnDh7B,MAAQ6kC,SAASv1B,KAAO,MAAQ0rB,aAElCzxB,KACEyxB,YAAaA,YACbjnB,MAAOzX,KAAKwnC,iBACZZ,SAAU5mC,KAAKm/B,WACf5rB,KAAMA,KACN7P,MAAOA,OAET4jC,aAAe,6CACfjqB,SAAWuuC,YAAYxmD,IAAIkiC,cAAc,GACzC/Z,KAAOlQ,SAASpQ,KACTjN,KAAK4d,IAAI2P,KAAKA,OAEhB2Z,kBAAkBzhB,UAzC3B,SA4CFumC,oBAAsB,WACpB,GAAIz+B,MAAM9V,KAMV,OALAA,OAAQyvB,kBAAkBM,iBAC1Bja,KAAOs+B,eACLp0C,MAASA,QAEXmG,IAAIwK,OAAOmF,MACJ3P,IAAIO,KAAK,aAAauqB,UAAU5gB,KAAK,WAC1C,MAAOG,GAAEjoB,MAAM+b,YAGnB+vC,kBAAoB,WAalB,MAZAluC,KAAIc,GAAG,QAAS,cAAe,SAAS/Q,OACtC,GAAI8gB,GAKJ,OAJA9gB,OAAM2Q,iBACN3Q,MAAMs0B,kBACNxT,GAAK9Q,OAAOlL,MAAMoL,OAAOsuC,mBACzBD,uBAAyBD,eACH,MAAlBA,eACK/kB,kBAAkBsB,qBAAqByjB,gBAEvCD,wBAGJpuC,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OACvC,GAAIy+C,aAAajgC,OAAQsC,EASzB,OARA9gB,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BsG,GAAK9Q,OAAOlL,MAAMoL,OAAOsuC,mBACzBD,uBAAyB//B,OAAOjlB,KAAK,WACrCklD,YAAcxuC,IAAIO,KAAK,aACvBiuC,YAAYjuC,KAAK,KAAKwH,YAAY,UAClCymC,YAAYjuC,KAAK,mBAAqB+tC,uBAAyB,MAAMpmC,SAAS,UACvEohB,kBAAkBsB,qBAAqB0jB,2BAG3CvuC,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,qBAAsB,wBAAyB,UAAW,cAAeolC,oBAE1FD,yBAA2B,SAASxc,UAClC,GAAIxF,MAAMljB,KAAM0M,IA0ChB,OAzCAwW,MAAO,WAGL,MAFA3Y,GAAE,sBAAsBtC,YAAY,SACpCsC,EAAE,yCAAyCtC,YAAY,UAChDsC,EAAE,sBAAsBtC,YAAY,SAE7CyE,KAAO,SAASiiC,WAEd,MADApkC,GAAE,yCAAyCnC,SAAS,UAChDumC,UACKpkC,EAAE,sBAAsBnC,SAAS,SAEjCmC,EAAE,sBAAsBnC,SAAS,SAG5CpI,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIwuC,WAAW7lB,KAAM8lB,WAuBrB,OAtBAD,YAAY,EACZ7lB,KAAOrmC,cAAc,iCACrBwd,OAAO4uC,yBAA2BnmB,SAAShhC,IAAIohC,QAAS,EACxD8lB,YAAc,WAMZ,MALI3uC,QAAO4uC,yBACT3rB,KAAKyrB,WAELjiC,KAAKiiC,WAEAA,WAAY,GAErB1uC,OAAOjL,OAAO,uBAAwB,WACpC,MAAmC,OAA/BiL,OAAO0lC,sBACT1lC,OAAO4uC,yBAA2B5uC,OAAO4uC,0BAA4B5uC,OAAO0lC,qBACrEiJ,eAFT,SAKF1uC,IAAIc,GAAG,QAAS,wCAAyC,WAGvD,MAFAf,QAAO4uC,0BAA4B5uC,OAAO4uC,yBAC1CnmB,SAASvqB,IAAI2qB,KAAM7oB,OAAO4uC,0BACnBD,gBAEF3uC,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,8BAA+B,aAAcmlC,2BAE9DF,8BAAgC,SAAS1/C,YACvC,GAAI0a,MAAM8uC,WA2JV,OA1JAA,aAAc,SAASplD,QAASqlD,YAC9B,GAAIC,uBAAuBC,OAAQzlD,KAAM0lD,eAAmBC,gBAAiBC,aAAcC,QAAep0C,QAASq0C,oBAAqB/gD,MAAOghD,SAwI/I,OAvIAhhD,OAAQ7E,QAAQ6E,QAChB7E,QAAQ8hC,OAAOj9B,MAAQ,GACvB4gD,gBAAkB,WAChBl0C,UACA,KAAK,GAAI2xB,GAAI,EAAGjL,KAAOotB,WAAWl6B,WAAW/lB,OAAS,EAAQ6yB,MAAL,EAAiBA,MAALiL,EAAYA,GAAKjL,KAAWA,MAAL,EAAYiL,IAAMA,IAAM3xB,QAAQjS,KAAK4jC,EACjI,OAAO3xB,UACNnJ,MAAMxP,MACTkH,QACA+lD,UAAY5sD,EAAEC,IAAImsD,WAAWl6B,WAAY,SAAS26B,IAChD,MAAO,KAEThmD,KAAKR,MACHQ,KAAM7G,EAAE8sD,IAAIN,gBAAiBI,WAC7B/gD,OACEkhD,UAAW,iBAEbn7B,QACE7H,MAAM,KAGV0iC,aAAezsD,EAAEC,IAAImsD,WAAWl6B,WAAY,SAAS26B,IACnD,MAAOA,IAAGG,UAEZnmD,KAAKR,MACHQ,KAAM7G,EAAE8sD,IAAIN,gBAAiBC,cAC7B5gD,OACEkhD,UAAW,2BAGfR,eAAiBvsD,EAAEyM,OAAOzM,EAAEC,IAAImsD,WAAWl6B,WAAY,SAAS26B,IAC9D,MAAOA,IAAGI,YACR,SAASA,WACX,MAAoB,OAAbA,YAETpmD,KAAKR,MACHQ,KAAM7G,EAAE8sD,IAAIN,gBAAiBD,gBAC7B1gD,OACEkhD,UAAW,0BAGfV,sBAAwBrsD,EAAEC,IAAImsD,WAAWl6B,WAAY,SAAS26B,IAC5D,OAAQA,GAAG,kBAAoBA,GAAG,sBAEpChmD,KAAKR,MACHQ,KAAM7G,EAAE8sD,IAAIN,gBAAiBH,uBAC7BxgD,OACEkhD,UAAW,yBAGfJ,oBAAsB3sD,EAAEC,IAAImsD,WAAWl6B,WAAY,SAAS26B,IAC1D,OAAQA,GAAG,oBAEbhmD,KAAKR,MACHQ,KAAM7G,EAAE8sD,IAAIN,gBAAiBG,qBAC7B9gD,OACEkhD,UAAW,yBAGfT,QAAU,gBAAiB,wBAAyB,qBAAsB,oBAAqB,qBAC/FI,SACEQ,MACEC,aACEnsB,IAAK,EACLosB,MAAO,EACP5U,KAAM,EACN6U,OAAQ,GAEVC,YAAa,OACbC,WAAW,GAEbC,OACEC,MAAOrB,WAAWl6B,WAAW/lB,OAC7BuhD,UAAW/qD,WAAW0E,QAAQ,6BAC9BsmD,oBAAoB,EACpBC,wBAAyB,GACzBC,oBAAqB,gDACrBC,iBAAkB,EAClBC,cAAe,SAASpiD,IAAKqiD,MAC3B,MAAO,KAGXC,OACEP,UAAW/qD,WAAW0E,QAAQ,6BAC9BsmD,oBAAoB,EACpBC,wBAAyB,GACzBC,oBAAqB,gDACrBC,iBAAkB,GAEpBI,QACEC,WAAY,EACZtiD,OACEke,MAAM,EACNqkC,MAAM,GAERx8B,QACE7H,MAAM,EACNqkC,MAAM,EACNC,OAAQ,EACRC,UAAW,IAGfhC,OAAQA,OACRiC,SAAS,EACTC,aACE7hB,QAAS,SAAS3R,MAAOyzB,KAAMC,KAAMC,UACnC,GAAI/hD,IACJ,OAA6B,KAAzB+hD,SAASC,aACXhiD,KACEiiD,WAAYzC,WAAWl6B,WAAWu8B,MAAM97C,KACxC1E,MAAOrN,KAAKkuD,IAAIJ,OAEX/rD,WAAW0E,QAAQ,wBAAyBuF,MACjB,IAAzB+hD,SAASC,aAClBhiD,KACEiiD,WAAYzC,WAAWl6B,WAAWu8B,MAAM97C,KACxC1E,MAAOrN,KAAKkuD,IAAIJ,OAEX/rD,WAAW0E,QAAQ,qBAAsBuF,MACd,IAAzB+hD,SAASC,aAClBhiD,KACEiiD,WAAYzC,WAAWl6B,WAAWu8B,MAAM97C,KACxC1E,MAAOrN,KAAKkuD,IAAIJ,OAEX/rD,WAAW0E,QAAQ,iCAAkCuF,OAE5DA,KACEiiD,WAAYzC,WAAWl6B,WAAWu8B,MAAM97C,KACxC1E,MAAOrN,KAAKkuD,IAAIJ,OAEX/rD,WAAW0E,QAAQ,+BAAgCuF,SAKlE7F,QAAQgoD,QACDhoD,QAAQioD,KAAKnoD,KAAM6lD,SAAS7lD,KAAK,SAE1CwW,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIzW,QAUJ,OATAA,SAAUxE,QAAQwE,QAAQwW,KAC1BD,OAAOjL,OAAO,QAAS,SAASpE,OAC9B,MAAoB,OAAhBqP,OAAOwmC,OACTqI,YAAYplD,QAASuW,OAAOwmC,OACrBxmC,OAAO7R,IAAI,SAAU,WAC1B,MAAO0gD,aAAYplD,QAASuW,OAAOwmC,UAHvC,SAOKxmC,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,0BAA2B,aAAcilC,gCAE1DC,8BAAgC,SAAS71B,UAAWD,UAClD,GAAIyiC,kBAAkB5xC,KAAM+H,OAAQpI,QA0CpC,OAzCAA,UAAWyP,UAAU1nB,IAAI,6BAA6B,GACtDqgB,OAAS,SAASpT,MAAO8wB,GAAIosB,wBAAyBC,wBACpD,GAAIjiC,KAMJ,OALAA,MAAOlQ,UACLkyC,wBAAyBA,wBACzBC,uBAAwBA,yBAE1BjiC,KAAOV,SAASU,MAAMlb,OACf8wB,GAAG5V,KAAKA,OAEjB+hC,iBAAmB,SAASnxB,YAC1B,GAAIsxB,SAGJ,OAFAA,UAAWpvD,EAAEgK,KAAK,EAAG8zB,aACrBsxB,SAAWpvD,EAAE+J,KAAK,IAAKqlD,WAChBxuD,KAAK49B,MAAM4wB,WAEpB/xC,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIzW,QAoBJ,OAnBAA,SAAUxE,QAAQwE,QAAQwW,KAC1BD,OAAOjL,OAAOmL,OAAO6xC,qBAAsB,SAASvL,OAClD,GAAI1lB,cAAc+wB,uBAAwBG,cAAeJ,wBAAyB7wB,WAClF,OAAa,OAATylB,OACFzlB,YAAcylB,MAAMvlB,aAAeulB,MAAMvlB,aAAeulB,MAAMC,eAC9DuL,cAAgBxL,MAAMC,eACtB3lB,aAAe0lB,MAAMxlB,cACjBgxB,cAAgBjxB,aAClB6wB,wBAAwC,IAAd7wB,YAAoBixB,cAC9CH,uBAAwC,IAAf/wB,aAAqBkxB,gBAE9CJ,wBAA0B,IAC1BC,uBAAwC,IAAf/wB,aAAqBC,aAEhD6wB,wBAA0BD,iBAAiBC,wBAA0B,GACrEC,uBAAyBF,iBAAiBE,uBAAyB,GAC5D/pC,OAAO9H,OAAQC,IAAK2xC,wBAAyBC,yBAbtD,SAgBK7xC,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,wBAAyB,cAAe,WAAYklC,iCAEpEt/C,KAAKrD,MA2BR,WACE,GAAI4vD,+BAA+BC,yBAA0BC,wBAAyB1/C,SAAU2/C,cAAet/C,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOsR,UAE1JtR,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBS,WAAarR,KAAKD,MAAMsR,WAExBP,WAAa9Q,KAAKD,MAAM+Q,WAExBV,SAAWpQ,KAAKD,MAAMqQ,SAEtBK,QAAUzQ,KAAKD,MAAM0Q,QAErB7Q,OAASgD,QAAQhD,OAAO,gBAExBmwD,cAAgB,SAAS5sB,IAGvB,MAFAA,IAAG9wB,QAAQ+mB,WACX+J,GAAGvkB,MACIukB,GAAGpnB,UAGZ8zC,yBAA2B,SAASvvC,MAAOoO,IAAKvjB,WAAY6kD,WAAYhtD,YACtE,GAAI0a,KAuFJ,OAtFAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIoyC,WAiFJ,OAhFAA,YAAa,SAAU1oD,OACrB,MAAO,UAASknB,IACd,MAAOxG,GAAEwG,IAAIyvB,MAAM,8BAEpBl+C,MACHoQ,SAASuN,OAAQ,UAAW,SAAS1V,SACnC,GAAIioD,YACJ,IAAMjoD,QAAQqe,eAAengB,QAAQ,aAAe,GAqEpD,MAlEA+pD,aAAc,WACZ,GAAI38C,KAEJ,OADAA,MAAOvQ,WAAW0E,QAAQ,iCACnBsoD,WAAWroD,OAAO,QAAS4L,OAEpCqK,IAAIuyC,UACF7J,MAAO,eACP8J,OAAQ,WACRC,YAAa,UACbC,aAAa,EACbC,YAAa,oDACbC,QAAQ,EACRC,yBAAyB,EACzBC,UAAW,UACXhxB,QAAQ,EACR7xB,MAAO,WACL,MAAOoa,GAAEgT,SAAS2J,MAAM9e,SAAS,gBAEnC4e,KAAM,WAEJ,MADAzc,GAAEgT,SAAS2J,MAAMjf,YAAY,eACzB/H,IAAIygB,SAAS,mBACfzgB,IAAIuyC,SAAS,UACND,eAFT,UAMJtyC,IAAIc,GAAG,sBAAuB,SAAS/Q,MAAO+tC,IAC5C,GAAIiV,WAAWC,MACf,OAAIhzC,KAAIygB,SAAS,mBACfqd,GAAGH,OAAO4U,SAAS,cACnBD,iBAGFU,OAASlV,GAAGjqC,KAAKY,QAAQoc,GACzBkiC,UAAYV,WAAWvU,GAAGjqC,MAC1Bs+C,cAAcrU,GAAGjqC,MACjBkM,OAAOqQ,MAAM,kBAAmB4iC,QAASD,UAAW,MAC7CjV,GAAGjqC,KAAK0M,KAAK,KAAKwH,YAAY,cAEvC/H,IAAIc,GAAG,mBAAoB,SAAS/Q,MAAO+tC,IACzC,GAAIwC,OAAOoI,MAAO73B,EAClB,IAAuC,IAAnCxG,EAAEyzB,GAAG4K,MAAM,IAAIz3C,SAASrC,SAGxBoR,IAAIygB,SAAS,kBAoBjB,MAjBAioB,OAAQjmD,EAAEwX,OAAO6jC,GAAG4K,MAAO,SAAS70C,MAClC,MAAOwW,GAAExW,MAAMysC,UAEjBA,MAAQ79C,EAAE+J,IAAI/J,EAAEC,IAAIgmD,MAAO,SAAS70C,MAClC,MAAOw+C,YAAWx+C,SAEpBgd,GAAKpuB,EAAEC,IAAIgmD,MAAO,SAAS70C,MACzB,GAAIm/C,OAQJ,OAPAn/C,MAAOwW,EAAExW,MACTm/C,OAASn/C,KAAKY,QAAQoc,GACtB5a,WAAY,SAAUtM,OACpB,MAAO,YACL,MAAOkK,MAAK0M,KAAK,KAAKwH,YAAY,aAEnC3lB,MAAQ,KACJ4wD,SAEFjzC,OAAOqQ,MAAM,iBAAkBS,GAAIyvB,MAAO;GAE5CtgC,IAAIc,GAAG,YAAa,SAAS/Q,MAAO+tC,IACzC,MAAOA,IAAGjqC,KAAK0M,KAAK,KAAK2H,SAAS,eAG/BnI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIVkyC,8BAAgC,SAAStvC,MAAOoO,IAAKvjB,YACnD,GAAIuS,KAsBJ,OArBAA,MAAO,SAASC,OAAQC,IAAKC,QAiB3B,MAhBAzN,UAASuN,OAAQ,UAAW,SAAS1V,SACnC,MAAIA,SAAQqe,eAAengB,QAAQ,aAAe,IAChDyX,IAAIuyC,UACF7J,MAAO,eACPgK,aAAa,IAER1yC,IAAIc,GAAG,cAAe,SAAS/Q,MAAO+tC,IAC3C,GAAIiV,WAAWC,MAKf,OAJAA,QAASlV,GAAGjqC,KAAKY,QAAQoc,GACzBkiC,UAAYjV,GAAGjqC,KAAKysC,QACpB6R,cAAcrU,GAAGjqC,MACjBkM,OAAOqQ,MAAM,kBAAmB4iC,QAASD,UAAW,MAC7CjV,GAAGjqC,KAAK0M,KAAK,KAAKwH,YAAY,cAXzC,SAeKhI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIVoyC,wBAA0B,SAASxvC,MAAOoO,IAAKvjB,YAC7C,GAAIuS,KAkDJ,OAjDAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQ,UAAW,SAAS1V,SAC1C,MAAIA,SAAQqe,eAAengB,QAAQ,aAAe,IAChDyX,IAAIuyC,UACFK,QAAQ,EACRF,aAAa,EACbhK,MAAO,uCACPmK,yBAAyB,EACzBJ,YAAa,6CACbE,YAAa,uCACbM,sBAAsB,IAExBjzC,IAAIc,GAAG,sBAAuB,SAAS/Q,MAAO+tC,IAC5C,GAAIwC,OAAOoI,MAAO73B,EAclB,OAbA63B,OAAQjmD,EAAEwX,OAAO6jC,GAAG4K,MAAO,SAAS70C,MAClC,MAAOwW,GAAExW,MAAMysC,UAEjBA,MAAQ79C,EAAE+J,IAAI/J,EAAEC,IAAIgmD,MAAO,SAAS70C,MAClC,MAAOwW,GAAExW,MAAMysC,WAEjBzvB,GAAKpuB,EAAEC,IAAIgmD,MAAO,SAAS70C,MACzB,GAAIm/C,OAIJ,OAHAn/C,MAAOwW,EAAExW,MACTm/C,OAASn/C,KAAKY,QAAQoc,GACtBshC,cAAct+C,MACPm/C,SAEFjzC,OAAOqQ,MAAM,iBAAkBS,GAAIyvB,MAAOvgC,OAAO6gB,OAAOzmB,MAEjE6F,IAAIc,GAAG,mBAAoB,SAAS/Q,MAAO+tC,IACzC,GAAIiV,WAAWC,MACf,IAAgC,IAA5BlV,GAAGjqC,KAAK5C,SAASrC,OAUrB,MAPAokD,QAASlV,GAAGjqC,KAAKY,QAAQoc,GACzBkiC,UAAYjV,GAAGjqC,KAAKysC,QACpBrqC,WAAY,SAAUtM,OACpB,MAAO,YACL,MAAOm0C,IAAGjqC,KAAK0M,KAAK,KAAKwH,YAAY,aAEtC3lB,MAAQ,KACJ2d,OAAOqQ,MAAM,kBAAmB4iC,QAASD,UAAWhzC,OAAO6gB,OAAOzmB,MAEpE6F,IAAIc,GAAG,YAAa,SAAS/Q,MAAO+tC,IACzC,MAAOA,IAAGjqC,KAAK0M,KAAK,KAAK2H,SAAS,cA1CtC,WAgDFpI,KAAMA,OAIV9d,OAAO6d,UAAU,qBAAsB,UAAW,eAAgB,aAAc,aAAc,aAAcoyC,2BAE5GjwD,OAAO6d,UAAU,0BAA2B,UAAW,eAAgB,aAAcmyC,gCAErFhwD,OAAO6d,UAAU,oBAAqB,UAAW,eAAgB,aAAcqyC,2BAE9EzsD,KAAKrD,MA2BR,WACE,GAAI8wD,wBAAwBC,6BAA8BC,wCAAyCpxD,OAAQG,KAE3GA,OAAQC,KAAKD,MAEbH,OAASgD,QAAQhD,OAAO,gBAExBkxD,uBAAyB,SAASxwC,MAAOnV,YACvC,GAAIuS,MAAMuzC,aAAcC,qBAAsBC,YAuC9C,OAtCAD,sBAAuB,GACvBD,cACEG,SAAU,IACVC,OAAQ,UAEVF,aAAe,SAAU5pD,OACvB,MAAO,UAASqW,KACd,GAAI0zC,aAAaC,WAIjB,OAHAA,aAAc3zC,IAAIO,KAAK,iBACvBmzC,YAAc1zC,IAAIO,KAAK,mBACvBmzC,YAAY/gB,YAAY,UACjBghB,YAAYhhB,YAAY,UAEhCvwC,MACH0d,KAAO,SAASC,OAAQC,IAAKC,QAoB3B,MAnBAF,QAAOjL,OAAOmL,OAAO2zC,gBAAiB,SAAShzB,QAE7C,MADAA,QAAS7gB,OAAOlL,MAAMoL,OAAO2zC,iBACzBhzB,OAAO0jB,OACFtkC,IAAIkI,SAAS,iBAEbqrC,aAAavzC,OAGxBA,IAAIc,GAAG,QAAS,iCAAkC,SAAS/Q,OAGzD,MAFAA,OAAM2Q,iBACN6yC,aAAavzC,KACNA,IAAIO,KAAK,iBAAiBszC,YAAYR,gBAE/CrzC,IAAIc,GAAG,QAAS,4BAA6B,SAAS/Q,OACpD,GAAI6wB,OAGJ,OAFA7wB,OAAM2Q,iBACNkgB,OAAS7gB,OAAOlL,MAAMoL,OAAO2zC,iBACtBrmD,WAAW2V,WAAW,kBAAmB0d,UAE3C7gB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,UAAW,aAAcqzC,yBAE9DC,6BAA+B,SAASvrD,SAAUsnB,UAAWD,SAAU7pB,YACrE,GAAI0a,MAAML,QA4CV,OA3CAA,UAAWyP,UAAU1nB,IAAI,8BACzBsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY6Y,UAAWvrC,WAAYgZ,MAqCvC,OApCAhZ,YAAazJ,WAAW0E,QAAQ,wBAChCy3B,WAAa,WACX,MAAqE,KAA9DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,qBAE/C6xC,UAAY,WACV,MAAoE,KAA7Dr6B,OAAO1V,QAAQqe,eAAengB,QAAQ,oBAE/Csf,OAAS,SAAS+Y,QAChB,GAAIkzB,kBAAkBzkD,IAAK0kD,mBAAoBrlC,OAAQze,MAAO+jD,aAAcC,aAoB5E,OAnBAD,cAAepsD,SAAS7C,QAAQ,qBAC9BsF,QAAS0V,OAAO1V,QAAQgf,KACxBuX,OAAQA,OAAOvX,OAEjBpZ,MAAQxE,OAAOm1B,OAAO+iB,iBAAiBn8B,OAAO3Y,YAC9C6f,OAASjjB,OAAOm1B,OAAOgjB,kBAAkBp8B,OAAO3Y,YAChDklD,mBAAqB9jD,MAAQ,IAAMye,OACnCrf,KACE+F,KAAMwrB,OAAOxrB,KACb4+C,aAAcA,aACdD,mBAAoBA,mBACpBlzB,aAAcD,OAAOG,eAAiB,EACtCD,YAAaF,OAAOI,cAAgB,EACpCoZ,UAAWA,YACX7Y,WAAYA,cAEd0yB,cAAgBl0C,OAAO0b,OACvBh5B,EAAEyxD,OAAOD,cAAe5kD,KACxBykD,iBAAmB7kC,SAASxP,UAAUw0C,eAC/Bj0C,IAAI2P,KAAKmkC,mBAElB/zC,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASuQ,QACrC,MAAO/Y,QAAO+Y,UAEhB7gB,OAAO7R,IAAI,0BAA2B,WACpC,MAAO2Z,QAAOlF,OAAOkN,eAEhB9P,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,yBAA0B,aAAc,cAAe,WAAY,aAAcszC,+BAElGC,wCAA0C,SAAS7lD,WAAY2gB,SAAU9oB,YACvE,GAAI+uD,sBAAsBr0C,IAkC1B,OAjCAq0C,uBAAuB,EACvBr0C,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqO,gBAAgB8lC,UAiBpB,OAhBAA,YAAa/pC,EAAE,SACfrK,IAAIq0C,MAAMD,YACV9lC,eAAiB,KACjBtO,IAAIc,GAAG,QAAS,SAAS/Q,OAIvB,MAHAA,OAAM2Q,iBACNyzC,sBAAwBA,qBACxB7lC,eAAiBJ,WAAWK,OAAO6lC,YAAYnkD,QAC3CkkD,qBACK5mD,WAAW2V,WAAW,iCAEtB3V,WAAW2V,WAAW,iCAGjCnD,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAENjB,OAAO7R,IAAI,0BAA2B,SAAUvE,OACrD,MAAO,UAAS0F,IAAKg1C,SACnB,GAAIjzC,KAAKuE,IAQT,OAPA2Y,gBAAeI,SAEbtd,IADEizC,QAAQz1C,OAAS,EACb,6CAEA,6CAER+G,KAAOvQ,WAAW0E,QAAQsH,KACnB4O,IAAIO,KAAK,SAAS5K,KAAKA,QAE/BvT,SAGH0d,KAAMA,OAIV9d,OAAO6d,UAAU,6CAA8C,aAAc,aAAc,aAAcuzC,2CAExG3tD,KAAKrD,MA2BR,WACE,GAAIkyD,sBAAsB9hD,SAAUK,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOoR,QAASE,UAExFtR,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBS,WAAarR,KAAKD,MAAMsR,WAExBP,WAAa9Q,KAAKD,MAAM+Q,WAExBV,SAAWpQ,KAAKD,MAAMqQ,SAEtBK,QAAUzQ,KAAKD,MAAM0Q,QAErBU,QAAUnR,KAAKD,MAAMoR,QAErBvR,OAASgD,QAAQhD,OAAO,kBAExBsyD,qBAAuB,SAASlvD,YAC9B,GAAI0a,MAAM8uC,WAuHV,OAtHAA,aAAc,SAASplD,QAASqlD,YAC9B,GAAIvlD,MAAMirD,KAAMpF,QAAS9gD,KAyFzB,OAxFAA,OAAQ7E,QAAQ6E,QAChB7E,QAAQ8hC,OAAO,KACfipB,KAAO9xD,EAAEC,IAAImsD,WAAY,SAASlsD,GAChC,MAAO8I,QAAO9I,EAAE6xD,OAElBlrD,QACAA,KAAKmrD,SACHnrD,KAAM7G,EAAE8sD,IAAIgF,KAAM9xD,EAAEC,IAAImsD,WAAY,SAAS6F,GAC3C,MAAOA,GAAEC,kBAEXrmD,OACEkhD,UAAW,2BAGflmD,KAAKmrD,SACHnrD,KAAM7G,EAAE8sD,IAAIgF,KAAM9xD,EAAEC,IAAImsD,WAAY,SAAS6F,GAC3C,MAAOA,GAAEE,eAEXtmD,OACEkhD,UAAW,0BAGfL,SACEQ,MACEC,aACEnsB,IAAK,EACLosB,MAAO,EACP5U,KAAM,EACN6U,OAAQ,GAEVC,YAAa,OACbC,WAAW,GAEbC,OACE4E,UAAW,EAAG,OACdroD,IAAK+nD,KAAK,GACV9nD,IAAKhK,EAAEqyD,KAAKP,MACZ1iB,KAAM,OACNkjB,UAAWR,KACXpE,UAAW/qD,WAAW0E,QAAQ,gCAC9BsmD,oBAAoB,EACpBC,wBAAyB,GACzBC,oBAAqB,gDACrBC,iBAAkB,GAEpBG,OACElkD,IAAK,EACL2jD,UAAW/qD,WAAW0E,QAAQ,gCAC9BsmD,oBAAoB,EACpBC,wBAAyB,GACzBC,oBAAqB,gDACrBC,iBAAkB,GAEpBI,QACEC,WAAY,EACZtiD,OACEke,MAAM,EACNqkC,MAAM,GAERx8B,QACE7H,MAAM,EACNqkC,MAAM,EACNC,OAAQ,EACRC,UAAW,IAGfhC,QAAS,qBAAsB,yBAC/BiC,SAAS,EACTC,aACE7hB,QAAS,SAAS3R,MAAOyzB,KAAMC,KAAMC,UACnC,GAAI4D,eAAeC,YAGnB,OAFAD,eAAgBvpD,OAAOylD,MAAM1pC,OAAOpiB,WAAW0E,QAAQ,0BACvDmrD,aAAe5xD,KAAK49B,MAAMkwB,MACG,IAAzBC,SAASC,YACJjsD,WAAW0E,QAAQ,4BACxBkrD,cAAeA,cACfC,aAAcA,eAGT7vD,WAAW0E,QAAQ,yBACxBkrD,cAAeA,cACfC,aAAcA,kBAMxBzrD,QAAQgoD,QACDhoD,QAAQioD,KAAKnoD,KAAM6lD,SAAS7lD,KAAK,SAE1CwW,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIzW,QAqBJ,OApBAA,SAAUxE,QAAQwE,QAAQwW,KAC1BD,OAAO7R,IAAI,SAAU,WACnB,MAAI6R,QAAOwmC,MACFqI,YAAYplD,QAASuW,OAAOwmC,MAAMgO,MAD3C,SAIFx0C,OAAO7R,IAAI,oCAAqC,WAE9C,MADA8R,KAAI/O,SAAS0hC,YAAY,QAClBp/B,QAAQ,IAAK,WAClB,MAAIwM,QAAOwmC,MACFqI,YAAYplD,QAASuW,OAAOwmC,MAAMgO,MAD3C,WAKJx0C,OAAOjL,OAAO,QAAS,SAASpE,OAC9B,MAAoB,OAAhBqP,OAAOwmC,MAGJqI,YAAYplD,QAASuW,OAAOwmC,MAAMgO,MAHzC,SAKKx0C,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB,aAAcy0C,wBAEhD7uD,KAAKrD,MA2BR,WACE,GAAI8yD,0BAA0BC,wBAAyB3iD,SAAUE,SAAU1Q,OAAQG,KAEnFA,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtByiD,wBAA0B,SAASzyC,MAAOC,OAAQmO,IAAKvjB,WAAY2gB,SAAU2X,gBAAiBzgC,WAAYD,GAAIw+B,oBAC5G,GAAI7jB,KAkGJ,OAjGAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,GAAI6X,kBAAkBC,oBAAqBC,kBAAmBC,kBAAmBC,iBAAkBz1B,OAAQgO,YA4F3G,OA3FAtO,QAAOi2B,OAAQ,EACfN,iBAAmBp4B,UAAU24B,OAC7BN,oBAAsBr4B,UAAU24B,OAChCH,iBAAmB,WAEjB,MADAJ,kBAAmBp4B,UAAU24B,OACtBN,oBAAsBr4B,UAAU24B,QAEzCl2B,OAAOikB,cAAgB,SAASkS,YAC9B,MAAOR,kBAAmBA,iBAAiB5sC,KAAKotC,aAElDn2B,OAAOo2B,iBAAmB,SAASD,YACjC,MAAOP,qBAAsBA,oBAAoB7sC,KAAKotC,aAExDN,kBAAoB,SAASz9B,KAC3B,GAAIisB,SAIJ,OAHAA,UAAW3hC,EAAEC,IAAIgzC,iBAAiBl8B,OAAQ,SAAS08B,YACjD,MAAOvS,oBAAmB6S,OAAON,WAAWnS,KAAM5rB,IAAIgC,GAAI4F,OAAOyP,KAAKnlB,QAAS,UAE1ElF,GAAGsV,IAAI2pB,WAEhByR,kBAAoB,SAAS19B,KAC3B,GAAIisB,SAIJ,OAHAA,UAAW3hC,EAAEC,IAAIizC,oBAAoBn8B,OAAQ,SAAS08B,YACpD,MAAOvS,oBAAmB,UAAU,OAAQuS,WAAW/7B,MAElDhV,GAAGsV,IAAI2pB,WAEhBrkB,OAAO7R,IAAI,eAAgB,SAASmB,IAAK+lD,SAAUhkC,MACjD,GAAI5C,QAAQgC,OAkBZ,OAjBAzQ,QAAOyP,MACLnlB,QAAS0V,OAAOlF,UAChB00B,UAAW6lB,SACX5lB,WAAYpe,KACZmlB,aAAa,EACbtuC,OAAQ8X,OAAO1V,QAAQsmB,oBACvBF,YAAa,KACbvY,SAEF6H,OAAOi2B,OAAQ,EACfj2B,OAAO4vB,YAAcryB,UAAU24B,OAC/BH,mBACAtnB,OAASppB,WAAW0E,QAAQ,iBAC5BkW,IAAIO,KAAK,iBAAiBoP,KAAKnB,QAC/BgC,QAAUprB,WAAW0E,QAAQ,mCAC7BkW,IAAIO,KAAK,UAAUoP,KAAKa,QAAU,MAClCxQ,IAAIO,KAAK,cAAcnS,IAAI,IACpBy3B,gBAAgB3b,KAAKlK,OAE9BD,OAAO7R,IAAI,gBAAiB,SAASmB,IAAKmgB,KAAMmgB,aAC9C,GAAI5G,MAAMrZ,IAUV,OATA3P,QAAOyP,KAAOA,KACdzP,OAAOi2B,OAAQ,EACfj2B,OAAO4vB,YAAcryB,UAAUC,OAAOoyB,aACtCmG,mBACApmB,KAAOtqB,WAAW0E,QAAQ,eAC1Bi/B,KAAO3jC,WAAW0E,QAAQ,yCAC1BkW,IAAIO,KAAK,iBAAiBoP,KAAKD,MAC/B1P,IAAIO,KAAK,UAAUoP,KAAKoZ,KAAO,MAC/B/oB,IAAIO,KAAK,cAAcnS,IAAI,IACpBy3B,gBAAgB3b,KAAKlK,OAE9BqO,aAAerO,IAAIO,KAAK,kBACxBF,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAI0mC,gBAAgBnoB,eAAgBpO,KAAM1a,OAG1C,OAFAuK,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAGNZ,OAAOi2B,OACTxwC,QAAUkd,MAAM8L,OAAO,QAASzO,OAAOyP,MACvCinB,eAAiB,yBAEjBjxC,QAAUkd,MAAMgN,KAAK3P,OAAOyP,MAC5BinB,eAAiB,yBAEnBjxC,QAAQD,KAAK,SAAS+D,MAGpB,MAFAssC,mBAAkBtsC,MAClBusC,kBAAkBvsC,MACXA,OAETglB,eAAiBJ,WAAWK,OAAOF,cAAcpe,QAC1CzK,QAAQD,KAAK,SAAS+D,MAG3B,MAFAglB,gBAAeI,SACfmX,gBAAgBxZ,MAAMrM,KACfzS,WAAW2V,WAAWuzB,eAAgBntC,SAnB/C,SAsBDlH,OACH4d,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIVo1C,yBAA2B,SAASxyC,MAAOoO,IAAKvjB,WAAY2gB,SAAU2X,iBACpE,GAAI/lB,KA8CJ,OA7CAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,GAAIxd,QAAQgO,YAwCZ,OAvCAtO,QAAOG,MACL5W,KAAM,GACN8nB,KAAM,MAER/Q,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgBhlB,KAAM4W,KAAMrF,UAAWrV,QAAS4vD,SAAUhkC,IAG9D,OAFArhB,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjD3G,KAAOyW,OAAOG,KAAK5W,KACnBuR,UAAYkF,OAAOlF,UACnBu6C,SAAWr1C,OAAOG,KAAKk1C,SACvBhkC,KAAOrR,OAAOG,KAAKkR,KACnB5rB,QAAUsrB,IAAII,MAAM2lB,WAAWh8B,UAAWu6C,SAAUhkC,KAAM9nB,MAC1D9D,QAAQD,KAAK,SAASwQ,QAGpB,MAFAuY,gBAAeI,SACfnhB,WAAW2V,WAAW,wBAAyBnN,QACxC8vB,gBAAgBxZ,MAAMrM,OAExBxa,QAAQD,KAAK,KAAM,WAExB,MADA+oB,gBAAeI,SACR66B,QAAQ3xC,IAAI,WAhBrB,SAmBDxV,OACH2d,OAAO7R,IAAI,gBAAiB,SAASmB,IAAK+lD,SAAUhkC,MAElD,MADAyU,iBAAgB3b,KAAKlK,KACdD,OAAOG,MACZ5W,KAAM,GACN8rD,SAAUA,SACVhkC,KAAMA,QAGV/C,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO6d,UAAU,sBAAuB,UAAW,WAAY,eAAgB,aAAc,aAAc,kBAAmB,aAAc,KAAM,uBAAwBs1C,0BAE1KnzD,OAAO6d,UAAU,uBAAwB,UAAW,eAAgB,aAAc,aAAc,kBAAmBq1C,4BAElHzvD,KAAKrD,MA2BR,WACE,GAAIizD,qBAAqBC,mBAAoBC,+BAAgCC,uBAAwBC,uBAAwBljD,YAAaC,SAAUK,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOoR,QAASE,WACtMxO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbsR,WAAarR,KAAKD,MAAMsR,WAExBT,MAAQ5Q,KAAKD,MAAM6Q,MAEnBH,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBU,WAAa9Q,KAAKD,MAAM+Q,WAExBK,QAAUnR,KAAKD,MAAMoR,QAErBhB,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,kBAExBqzD,oBAAsB,SAAUvjD,YAK9B,QAASujD,qBAAoB5gD,MAAOgI,UAAWkc,KAAMiP,QAAS8tB,IAAKvQ,QAAShzC,EAAGxE,eAAgBsE,SAAUC,QAASkzC,OAAQC,UAAWvoC,WACnI,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKg7C,IACVtzD,KAAKkE,OAAS6+C,QACd/iD,KAAK+P,EAAIA,EACT/P,KAAKuL,eAAiBA,eACtBvL,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKgjD,OAASA,OACdhjD,KAAKijD,UAAYA,UACjBjjD,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,0BAChD1H,KAAKsjD,0BACLlgD,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAMgsD,aAEdvzD,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAgSlD,MA5TA6C,QAAOowD,oBAAqBvjD,YAE5BujD,oBAAoB74C,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,mBAAoB,cAAe,aAAc,YAAa,eAAgB,cA6BpM64C,oBAAoB/jD,UAAUqkD,SAAW,WACvC,GAAI5vD,aAAa8I,WAAY/I,KAiB7B,OAhBA+I,YAAazM,KAAK0a,UAAUhT,QAAQ,wBACpChE,MAAQ1D,KAAK0a,UAAUhT,QAAQ,wBAC7BivB,YAAa32B,KAAKqS,MAAMpK,QAAQ+K,KAChCk8C,WAAYlvD,KAAKqS,MAAMmsB,OAAOxrB,OAEhCrP,YAAc3D,KAAK0a,UAAUhT,QAAQ,8BACnCivB,YAAa32B,KAAKqS,MAAMpK,QAAQ+K,KAChCk8C,WAAYlvD,KAAKqS,MAAMmsB,OAAOxrB,KAC9BwgD,UAAWnqD,OAAOrJ,KAAKqS,MAAMmsB,OAAO+iB,iBAAiBn8B,OAAO3Y,YAC5D2wB,QAAS/zB,OAAOrJ,KAAKqS,MAAMmsB,OAAOgjB,kBAAkBp8B,OAAO3Y,YAC3D43C,oBAAqBrkD,KAAKqS,MAAM8xC,MAAME,qBAAuB,IAC7DoP,gBAAiBzzD,KAAKqS,MAAM8xC,MAAMuP,oBAAsB,KACxDh1B,YAAa1+B,KAAKqS,MAAM8xC,MAAMwP,gBAAkB,KAChDC,UAAW5zD,KAAKqS,MAAM8xC,MAAMyP,WAAa,KACzCC,WAAY7zD,KAAKqS,MAAM8xC,MAAM2P,aAAe,OAEvC9zD,KAAKuL,eAAe0C,OAAOvK,MAAOC,cAG3CsvD,oBAAoB/jD,UAAUo0C,wBAA0B,WAmBtD,MAlBAtjD,MAAKqS,MAAMvG,IAAI,wBAAyB,SAAUvE,OAChD,MAAO,YAEL,MADAA,OAAMwsD,gBACCxsD,MAAM07C,UAAUjkC,WAAW,OAAQ,SAAU,gCAAiC,KAEtFhf,OACHA,KAAKqS,MAAMvG,IAAI,uBAAwB,SAAUvE,OAC/C,MAAO,YAEL,MADAA,OAAMwsD,gBACCxsD,MAAM07C,UAAUjkC,WAAW,OAAQ,SAAU,2BAA4B,KAEjFhf,OACHA,KAAKqS,MAAMvG,IAAI,wBAAyB,SAAUvE,OAChD,MAAO,YACL,MAAOA,OAAMwsD,kBAEd/zD,OACHA,KAAKqS,MAAMvG,IAAI,sBAAuB9L,KAAKg0D,UACpCh0D,KAAKqS,MAAMvG,IAAI,oBAAqB,SAAUvE,OACnD,MAAO,UAAS0F,IAAK2iB,OAAQxC,MAC3B,GAAIhqB,QAGJ,OAFAgqB,MAAKiB,YAAcuB,OACnBxsB,QAAUmE,MAAMgvB,KAAKjJ,KAAKF,MACnBhqB,QAAQD,KAAK,KAAM,WACxB,MAAOgkD,SAAQ3xC,IAAI,YAGtBxV,QAGLizD,oBAAoB/jD,UAAU20C,uBAAyB,WACrD,GAAIz4B,YAAY04B,WAQhB,OAPA14B,YAAa,mBAAqBprB,KAAKqS,MAAMoG,UAAY,SACzDzY,KAAKgjD,OAAO74B,UAAUnqB,KAAKqS,MAAO+Y,WAAY,SAAU7jB,OACtD,MAAO,UAAS6X,SACd,MAAO7X,OAAMwsD,kBAEd/zD,OACH8jD,YAAc,mBAAqB9jD,KAAKqS,MAAMoG,UAAY,eACnDzY,KAAKgjD,OAAO74B,UAAUnqB,KAAKqS,MAAOyxC,YAAa,SAAUv8C,OAC9D,MAAO,UAAS6X,SAGd,MAFA7X,OAAM0sD,oBACN1sD,MAAM2sD,kBACC3sD,MAAM4sD,eAEdn0D,QAGLizD,oBAAoB/jD,UAAUioB,YAAc,WAC1C,MAAOn3B,MAAKsY,GAAGC,SAASnT,IAAIpF,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OAC/D,MAAO,UAASU,SAmBd,MAlBKA,SAAQif,sBACX3f,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM+hD,WAAa/zD,EAAEwX,OAAO5P,QAAQgqB,OAAQ,SAClD1qB,MAAM8K,MAAM01B,WAAat3B,QAAQxI,QAAQgqB,OAAQ,SAASjlB,GACxD,MAAOA,GAAE+K,KAEXxQ,MAAM8K,MAAMgiD,SAAW5jD,QAAQxI,QAAQwP,MAAO,SAASzK,GACrD,MAAOA,GAAE+K,KAEXxQ,MAAM8K,MAAMiiD,eAAiBj0D,EAAEwX,OAAO5P,QAAQuvB,cAAe,SAC7DjwB,MAAM8K,MAAM6hC,aAAe7zC,EAAEwX,OAAO5P,QAAQ2vB,YAAa,SACzDrwB,MAAM8K,MAAMslB,aAAelnB,QAAQxI,QAAQ2vB,YAAa,SAAS5qB,GAC/D,MAAOA,GAAE+K,KAEXxQ,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OAC1CxP,UAERjI,QAGLizD,oBAAoB/jD,UAAUglD,gBAAkB,WAC9C,MAAOl0D,MAAKsY,GAAG2pC,QAAQkC,MAAMnkD,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAM2gD,UAAU7vD,KAAK,SAAUoE,OACrF,MAAO,UAAS48C,OACd,GAAIuP,oBAAoBa,mBAAoBC,eAAgBb,cAoB5D,OAnBAA,gBAAiBtzD,EAAEmW,OAAOnW,EAAE4nC,OAAOkc,MAAMvlB,cAAe,SAAUmhB,IAAKxB,GACrE,MAAOwB,KAAMxB,GACX,GACJmV,mBAAqBrzD,EAAEmW,OAAOnW,EAAE4nC,OAAOkc,MAAMsQ,kBAAmB,SAAU1U,IAAKxB,GAC7E,MAAOwB,KAAMxB,GACX,GACJgW,mBAAqBZ,eAAiBD,mBACtCc,eAAiBrQ,MAAM2P,YAAc3P,MAAMuQ,gBAC3CntD,MAAM8K,MAAM8xC,MAAQA,MACpB58C,MAAM8K,MAAM8xC,MAAMwP,eAAiBA,eACnCpsD,MAAM8K,MAAM8xC,MAAMuP,mBAAqBA,mBACvCnsD,MAAM8K,MAAM8xC,MAAMoQ,mBAAqBA,mBACvChtD,MAAM8K,MAAM8xC,MAAMqQ,eAAiBA,eAC/BrQ,MAAMwP,eACRpsD,MAAM8K,MAAM8xC,MAAME,oBAAsBpjD,KAAK49B,MAAM,IAAMslB,MAAMuP,mBAAqBvP,MAAMwP,gBAE1FpsD,MAAM8K,MAAM8xC,MAAME,oBAAsB,EAE1C98C,MAAM8K,MAAM8xC,MAAMyP,UAAYzP,MAAM2P,YAAc3P,MAAMuQ,gBACjDvQ,QAERnkD,QAGLizD,oBAAoB/jD,UAAU+kD,kBAAoB,WAChD,MAAOj0D,MAAKsY,GAAGC,SAASwiC,WAAW/6C,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OACtE,MAAO,UAAS4yC,aACd,MAAO5yC,OAAM8K,MAAMpK,QAAQkyC,YAAcA,cAE1Cn6C,QAGLizD,oBAAoB/jD,UAAUilD,WAAa,WACzC,MAAOn0D,MAAKsY,GAAG2pC,QAAQ78C,IAAIpF,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAM2gD,UAAU7vD,KAAK,SAAUoE,OACnF,MAAO,UAASi3B,QAGd,MAFAj3B,OAAM8K,MAAMmsB,OAASA,OACrBj3B,MAAM8K,MAAMmgB,YAAcnyB,EAAEwX,OAAO2mB,OAAOimB,aAAc,gBACjDjmB,SAERx+B,QAGLizD,oBAAoB/jD,UAAU2f,UAAY,WACxC,MAAO7uB,MAAKsY,GAAGwW,MAAMC,KAAK/uB,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAM2gD,UAAU7vD,KAAK,SAAUoE,OAClF,MAAO,UAASunB,OACd,GAAIpd,GAAG44B,EAAGnC,EAAGz0B,IAAK62B,KAAMoc,KAAM1zC,IAAKosB,KAAMsP,KAAM9oC,OAAQunB,KAAMqB,GAAIO,IAQjE,KAPAznB,MAAM8K,MAAMyc,MAAQzuB,EAAEwX,OAAOiX,MAAO,mBACpCvnB,MAAM8K,MAAMsiD,WACZ1hD,IAAM5S,EAAEmqD,MAAMjjD,MAAM8K,MAAMmgB,cAEtBza,GAAI,QAGHrG,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IAIrC,IAHA+c,GAAKxb,IAAIvB,GACTnK,MAAM8K,MAAMsiD,QAAQlmC,GAAG1W,OACvBsnB,KAAO93B,MAAM8K,MAAMiiD,eACdhqB,EAAI,EAAGC,KAAOlL,KAAK7yB,OAAY+9B,KAAJD,EAAUA,IACxCzkC,OAASw5B,KAAKiL,GACd/iC,MAAM8K,MAAMsiD,QAAQlmC,GAAG1W,IAAIlS,OAAOkS,MAItC,KADA42B,KAAOpnC,MAAM8K,MAAMyc,MACdqZ,EAAI,EAAGwe,KAAOhY,KAAKniC,OAAYm6C,KAAJxe,EAAUA,IACxC/a,KAAOuhB,KAAKxG,GACiC,MAAxC5gC,MAAM8K,MAAMsiD,QAAQvnC,KAAKggB,aAA8E,MAArD7lC,MAAM8K,MAAMsiD,QAAQvnC,KAAKggB,YAAYhgB,KAAKvnB,SAC/F0B,MAAM8K,MAAMsiD,QAAQvnC,KAAKggB,YAAYhgB,KAAKvnB,QAAQa,KAAK0mB,KAa3D,OAVqB,KAAjB0B,MAAMtiB,SAENwiB,KADEznB,MAAM8K,MAAMmgB,YAAYhmB,OAAS,EAC5BjF,MAAM8K,MAAMmgB,YAAY,GAAGza,GAE3B,KAETxQ,MAAM8K,MAAMsiD,QAAQ3lC,MAAMznB,MAAM8K,MAAMiiD,eAAe,GAAGv8C,IAAIrR,MAC1DkuD,eAAe,KAGZ9lC,QAER9uB,QAGLizD,oBAAoB/jD,UAAU6kD,cAAgB,WAC5C,MAAO/zD,MAAK+P,EAAEsI,KACZrY,KAAKi0D,oBAAqBj0D,KAAKk0D,kBAAmBl0D,KAAKm0D,aAAahxD,KAAK,SAAUoE,OACjF,MAAO,YACL,MAAOA,OAAMsnB,cAEd7uB,UAIPizD,oBAAoB/jD,UAAUwnB,gBAAkB,WAC9C,GAAIxyB,QAAQd,OAaZ,OAZAc,SACEC,MAAOnE,KAAKkE,OAAOC,MACnB0wD,MAAO70D,KAAKkE,OAAO2wD,OAErBzxD,QAAUpD,KAAKu2B,KAAK5zB,QAAQuB,QAAQf,KAAK,SAAUoE,OACjD,MAAO,UAASL,MAId,MAHAK,OAAM8K,MAAMoG,UAAYvR,KAAKe,QAC7BV,MAAM8K,MAAM2gD,SAAW9rD,KAAKimC,UAC5B5lC,MAAMs8C,yBACC38C,OAERlH,OACIoD,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,YACL,MAAOA,OAAM4vB,gBAEdn3B,OAAOmD,KAAK,SAAUoE,OACvB,MAAO,YACL,MAAOA,OAAMwsD,kBAEd/zD,QAGLizD,oBAAoB/jD,UAAU4lD,kBAAoB,SAAShmC,OACzD,GAAI5nB,MAAMo/C,KAGV,OAFAA,OAAQtmD,KAAK+0D,YAAYjmC,OACzB5nB,KAAOlH,KAAKkmD,sBAAsBI,OAC3BtmD,KAAKsY,GAAGwW,MAAMkmC,6BAA6Bh1D,KAAKqS,MAAMpK,QAAQ8P,GAAI7Q,OAG3E+rD,oBAAoB/jD,UAAU6lD,YAAc,SAASjmC,OACnD,GAAIpd,GAAGwsC,MAAOzsC,KAAM60C,MAAO5yC,GAE3B,KADA4yC,SACKpI,MAAQxsC,EAAI,EAAGgC,IAAMob,MAAMtiB,OAAYkH,IAAJhC,EAASwsC,QAAUxsC,EACzDD,KAAOqd,MAAMovB,OACbzsC,KAAsB,gBAAIysC,MACtBzsC,KAAK80C,cACPD,MAAM5/C,KAAK+K,KAGf,OAAO60C,QAGT2M,oBAAoB/jD,UAAUg3C,sBAAwB,SAASC,MAC7D,MAAO9lD,GAAEC,IAAI6lD,KAAM,SAAS5lD,GAC1B,OACE00D,QAAW10D,EAAEwX,GACb01B,MAASltC,EAAmB,oBAKlC0yD,oBAAoB/jD,UAAU8kD,SAAW,SAAS/mD,IAAKmgB,KAAM4B,KAAMulB,SAAU9G,OAC3E,GAAIrqC,SAASq3B,EAAG3L,KAgBhB,OAfA2L,GAAIz6B,KAAKqS,MAAMsiD,QAAQvnC,KAAKggB,YAAYhgB,KAAKvnB,QAAQM,QAAQinB,MAC7DptB,KAAKqS,MAAMsiD,QAAQvnC,KAAKggB,YAAYhgB,KAAKvnB,QAAQkhD,OAAOtsB,EAAG,GAC3D3L,MAAQ9uB,KAAKqS,MAAMsiD,QAAQ3lC,MAAMulB,UACjCzlB,MAAMi4B,OAAOtZ,MAAO,EAAGrgB,MACvBA,KAAKggB,WAAape,KAClB5B,KAAKvnB,OAAS0uC,SACdnnB,KAAKygB,gBAAkBJ,MACvBrqC,QAAUpD,KAAKu2B,KAAKjJ,KAAKF,MACzBptB,KAAKqa,UAAUyG,WAAW,oBAAqBsM,MAC/ChqB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YAEL,MADAA,OAAMutD,kBAAkBhmC,OACjBvnB,MAAM2sD,oBAEdl0D,OACIoD,QAAQD,KAAK,KAAM,SAAUoE,OAClC,MAAO,YACL,MAAO4/C,SAAQ3xC,IAAI,oBAEpBxV,QAGLizD,oBAAoB/jD,UAAUgmD,WAAa,SAAS1rD,KAAMilB,IACxD,OAAQjlB,MACN,IAAK,WACH,MAAOxJ,MAAKqa,UAAUyG,WAAW,eAAgB9gB,KAAKqS,MAAM2gD,SAAgB,MAANvkC,GAAaA,GAAG1W,GAAK,OAC7F,KAAK,OACH,MAAO/X,MAAKqa,UAAUyG,WAAW,gBAAiB9gB,KAAKqS,MAAM2gD,SAAgB,MAANvkC,GAAaA,GAAG1W,GAAK,UAIlGk7C,oBAAoB/jD,UAAUimD,mBAAqB,SAAS/nC,MAC1D,MAAOptB,MAAKqa,UAAUyG,WAAW,kBAAmBsM,OAG/C6lC,qBAENriD,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,sBAAuB0vD,qBAEzCC,mBAAqB,SAAS/nD,YAC5B,GAAIuS,KAsBJ,OArBAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOkmC,YAgBX,OAfAlmC,OAAQtR,IAAIra,aACZqa,IAAIc,GAAG,QAAS,+BAAgC,SAAS/Q,OACvD,GAAIwe,OAIJ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BgE,OAAOokB,YAAY,UACZplC,WAAW2V,WAAW,uCAE/Bs0C,aAAex3C,IAAIO,KAAK,yBACxBi3C,aAAa12C,GAAG,SAAU,SAAS/Q,OACjC,GAAI0nD,gBAAgBlpC,MAGpB,OAFAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BktC,eAAiBz3C,IAAIO,KAAK,kDACnBk3C,eAAe/2B,IAAI,OAAQ,GAAKnS,OAAOmpC,gBAEzC33C,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,eAAgB,aAAcy1C,qBAE/CE,uBAAyB,SAASjoD,WAAY2gB,SAAU4C,IAAK6mC,MAC3D,GAAI73C,KA8BJ,OA7BAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QASnC,MARA3C,KAAI4tC,mBACJ7tC,OAAOjL,OAAO,OAAQ,SAAS0a,MAC7B,MAAIA,MAAKoT,aAAe5iB,IAAIygB,SAAS,WAC5BzgB,IAAIkI,SAAS,YACVsH,KAAKoT,YAAc5iB,IAAIygB,SAAS,WACnCzgB,IAAI+H,YAAY,WADlB,SAIF/H,IAAIO,KAAK,cAAcO,GAAG,QAAS,SAAS/Q,OACjD,MAAIiQ,KAAIO,KAAK,cAAckgB,SAAS,WAApC,OAGO1gB,OAAO1J,OAAO,WACnB,GAAIiY,gBAAgBC,OAAQiB,IAI5B,OAHAjB,QAASlE,EAAEta,MAAMwe,QACjBD,eAAiBJ,WAAWK,OAAOA,QAAQhb,QAAQ,KAAK2lC,cAAc,aAAajpC,QACnFuf,KAAOzP,OAAOyP,KACPsB,IAAII,MAAMs5B,SAASh7B,KAAKnlB,QAASmlB,KAAKna,KAAK9P,KAAK,SAAUoE,OAC/D,MAAO,UAASiuD,aACd,MAAOD,MAAKhoB,YAAYxe,KAAK,OAAQymC,YAAYz9C,GAAIy9C,YAAYvtD,SAAS9E,KAAK,SAASoqC,aAEtF,MADApiC,YAAW2V,WAAW,gBAAiB00C,YAAajoB,YAAYn2B,QACzD8U,eAAeI,aAGzBtsB,aAKP0d,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,aAAc,aAAc,eAAgB,cAAe21C,yBAEhGD,+BAAiC,SAAS76C,IACxC,GAAIm9C,aAAa/3C,KAAMg4C,cA6FvB,OA5FAD,aAAc,GACdC,eAAiB,IACjBh4C,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI83C,cAAcC,6BAA8BC,0BAA2BC,2BAA4BC,oBAgFvG,OA/EAp4C,QAAO7R,IAAI,oBAAqB,SAAUvE,OACxC,MAAO,YACL,MAAOsuD,+BAER71D,OACHoQ,SAASuN,OAAQ,UAAW,SAAS1V,SAGnC,MAFA0V,QAAOq4C,eAAiB19C,GAAGwW,MAAMmnC,qBAAqBt4C,OAAO1V,QAAQ8P,IACrE4F,OAAOu4C,SAAW59C,GAAGwW,MAAMqnC,cAAcx4C,OAAO1V,QAAQ8P,GAAI4F,OAAOq1C,UAC5D6C,8BAETl4C,OAAOy4C,WAAa,SAASvwD,QAG3B,MAFA8X,QAAOq4C,eAAenwD,OAAOkS,KAAS4F,OAAOq4C,eAAenwD,OAAOkS,IACnEO,GAAGwW,MAAMunC,uBAAuB14C,OAAOlF,UAAWkF,OAAOq4C,gBAClDH,6BAETl4C,OAAO24C,OAAS,SAAS7nC,IAOvB,MANKA,IAGH9Q,OAAOu4C,SAASznC,GAAG1W,KAAS4F,OAAOu4C,SAASznC,GAAG1W,IAF/C4F,OAAOu4C,SAAS,OAAWv4C,OAAOu4C,SAAS,MAI7C59C,GAAGwW,MAAMynC,gBAAgB54C,OAAOlF,UAAWkF,OAAOq1C,SAAUr1C,OAAOu4C,UAC5DL,6BAETF,aAAe,SAAUpuD,OACvB,MAAO,UAASynB,KAAMulB,UACpB,GAAIzlB,OAAO0nC,gBAAiBvqD,KAE5B,OADA6iB,OAAQnR,OAAOg3C,QAAQ3lC,MAAMulB,UAAU/nC,OACnCmR,OAAOq4C,eAAezhB,WACpBzlB,OAASnR,OAAOu4C,SAASlnC,OAC3BwnC,gBAAkBv1D,KAAK49B,MAAM59B,KAAKw1D,KAAK3nC,QACvC7iB,MAAQwpD,YAAce,iBAEtBvqD,MAAQwpD,YAEHxpD,OAEF,IAERjM,MACH+1D,qBAAuB,SAAUxuD,OAC/B,MAAO,UAASgtC,SAAUtoC,OACxB,GAAIyqD,OAEJ,OADAA,QAAS94C,IAAIO,KAAK,kBAAoBo2B,UAClCtoC,MACKyqD,OAAOp4B,IAAI,YAAaryB,OAExByqD,OAAOp4B,IAAI,YAAao3B,kBAGlC11D,MACH81D,2BAA6B,SAAUvuD,OACrC,MAAO,YACL,GAAIovD,cAAcC,QAASC,UAS3B,OARAF,iBACAC,QAAUh5C,IAAIO,KAAK,oBACnBw4C,aAAet2D,EAAEC,IAAIs2D,QAAS,SAASF,QACrC,MAAOzuC,GAAEyuC,QAAQI,YAAW,KAE9BD,WAAax2D,EAAEmW,OAAOmgD,aAAc,SAASI,MAAO9qD,OAClD,MAAO8qD,OAAQ9qD,QAEV2R,IAAIO,KAAK,0BAA0BmgB,IAAI,QAASu4B,cAExD72D,MACH41D,6BAA+B,SAAUruD,OACvC,MAAO,UAASgtC,UACd,GAAIyiB,kBASJ,OARAA,mBAAoBrB,aAAa,KAAMphB,UACvCl0C,EAAE6W,QAAQyG,OAAO6U,YAAa,SAAS/D,IACrC,GAAIxiB,MAEJ,OADAA,OAAQ0pD,aAAalnC,GAAG1W,GAAIw8B,UACxBtoC,MAAQ+qD,kBACHA,kBAAoB/qD,MAD7B,SAIK8pD,qBAAqBxhB,SAAUyiB,qBAEvCh3D,MACI61D,0BAA4B,SAAUtuD,OAC3C,MAAO,YACLlH,EAAE6W,QAAQyG,OAAO22C,eAAgB,SAASzuD,QACxC,MAAO+vD,8BAA6B/vD,OAAOkS,MAE7C+9C,+BAED91D,QAGH0d,KAAMA,OAIV9d,OAAO6d,UAAU,2BAA4B,eAAgB01C,iCAE7DE,uBAAyB,SAASnoD,KAAMlI,YACtC,GAAIi0D,WAAWv5C,IAiDf,OAhDAu5C,YAAY,EACZv5C,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIq5C,eAqBJ,OApBAA,gBAAiBt5C,IAAI/O,SAASsP,KAAK,mBACnC+4C,eAAepxC,SAAS,iBACxBnI,OAAOjL,OAAO,mBAAoB,SAAS2b,aACzC,GAAI1iB,KAeJ,OAdAA,MAAOgS,OAAO3F,UAAUqW,aACX,SAAT1iB,KACFtL,EAAEyxD,OAAOn0C,QACP3K,KAAMhQ,WAAW0E,QAAQ,mCACzB6nB,OAAQ,IAAMrvB,OAAOyI,SAAW,sBAChCsuD,UAAWA,YAGb52D,EAAEyxD,OAAOn0C,QACP3K,KAAMrH,KAAK8jB,kBACXF,OAAQ5jB,KAAK6jB,MACbynC,UAAWA,YAGRC,eAAe3jD,KAAKoK,OAAO3K,QAE7B5C,SAASuN,OAAQ,UAAW,SAAS1V,SAC1C,MAAIA,SAAQqe,eAAengB,QAAQ,eAAiB,IAClD8wD,WAAY,EACZr5C,IAAIO,KAAK,uBAAuBO,GAAG,QAAS,SAAUnX,OACpD,MAAO,UAASoG,OACd,GAAIuhB,MACJ,KAAItR,IAAIO,KAAK,KAAKkgB,SAAS,WAI3B,MADAnP,OAAQtR,IAAIra,aACL2rB,MAAMimC,mBAAmBx3C,OAAOyP,QAExCptB,OACHk3D,eAAevxC,YAAY,iBACpBuxC,eAAex4C,GAAG,QAAS,SAAS/Q,OACzC,GAAIuhB,MACJ,KAAItR,IAAIO,KAAK,KAAKkgB,SAAS,WAI3B,MADAnP,OAAQtR,IAAIra,aACL2rB,MAAMimC,mBAAmBx3C,OAAOyP,SAnB3C,WAyBF1P,KAAMA,KACNpa,YAAa,gCACb+O,OACE2F,UAAa,SACb/P,QAAW,IACXmlB,KAAQ,OAKdxtB,OAAO6d,UAAU,yBAA0B,OAAQ,aAAc41C,0BAEhEhwD,KAAKrD,MA2BR,WACE,GAAIm3D,4BAA4B/mD,SAAUK,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOsR,UAErFtR,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBS,WAAarR,KAAKD,MAAMsR,WAExBP,WAAa9Q,KAAKD,MAAM+Q,WAExBV,SAAWpQ,KAAKD,MAAMqQ,SAEtBK,QAAUzQ,KAAKD,MAAM0Q,QAErB7Q,OAASgD,QAAQhD,OAAO,gBAExBu3D,2BAA6B,SAAS72C,MAAOoO,IAAKvjB,YAChD,GAAIuS,KAkDJ,OAjDAA,MAAO,SAASC,OAAQC,IAAKC,QA6C3B,MA5CAzN,UAASuN,OAAQ,UAAW,SAAS1V,SACnC,GAAI8nD,eAAeqH,OAAQC,eAAgBC,eAAgBC,IAC3D,IAAMtvD,QAAQqe,eAAengB,QAAQ,aAAe,GAqCpD,MAlCAmxD,gBAAiB,KACjBD,eAAiB,KACjBD,OAAS,KACTG,KAAO35C,IACPmyC,cAAgB,SAASqH,QAGvB,MAFAA,QAAO/kD,QAAQ+mB,WACfg+B,OAAOx4C,MACAw4C,OAAOr7C,UAEhBw7C,KAAKpH,UACHqH,OAAQ,wBACRlH,aAAa,EACbD,YAAa,uBACb3wB,OAAQ,MAEV63B,KAAK74C,GAAG,WAAY,SAAS/Q,MAAO+tC,IAClC,GAAIiV,WAAW8G,SAAUC,YAAaC,QAASC,YAAaC,QAASC,QAgBrE,OAfAA,UAAWpc,GAAGjqC,KAAK5C,SACnBuoD,OAAS1b,GAAGjqC,KACZgmD,SAAWL,OAAO/kD,QAAQ+a,KAC1BujC,UAAYyG,OAAOlZ,QACnBmZ,eAAiBS,SAASzlD,QAC1BwlD,QAAUP,eAAe7oC,GAAK6oC,eAAe7oC,GAAG1W,GAAK,KACrD6/C,YAAcN,eAAeS,GAAGhgD,GAChC4/C,QAAUN,eAAe5oC,GAAK4oC,eAAe5oC,GAAG1W,GAAK,KACrD2/C,YAAcL,eAAeU,GAAGhgD,IAC5B2/C,cAAgBE,aAAeD,UAAYE,UAC7C9H,cAAcqH,QAEhBz5C,OAAO1J,OAAO,WACZ,MAAO9I,YAAW2V,WAAW,sBAAuB22C,SAAUE,QAASD,YAAa/G,aAE/EjV,GAAGjqC,KAAK0M,KAAK,KAAKwH,YAAY,aAEhC4xC,KAAK74C,GAAG,YAAa,SAAS/Q,MAAO+tC,IAE1C,MADA4b,gBAAiB5b,GAAGjqC,KAAK5C,SAASwD,QAC3BqpC,GAAGjqC,KAAK0M,KAAK,KAAK2H,SAAS,eAG/BnI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,uBAAwB,UAAW,eAAgB,aAAc05C,8BAEjF9zD,KAAKrD,MA2BR,WACE,GAAIg4D,qCAAqCC,mCAAoCC,iBAAkBC,gBAAiBC,4BAA6BC,oBAAqBC,yBAA0BC,wBAAyBpoD,YAAaC,SAAUooD,gBAAiB/nD,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOoR,QAASE,WAAYonD,UAC3T51D,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBS,WAAarR,KAAKD,MAAMsR,WAExBP,WAAa9Q,KAAKD,MAAM+Q,WAExBV,SAAWpQ,KAAKD,MAAMqQ,SAEtBK,QAAUzQ,KAAKD,MAAM0Q,QAErBU,QAAUnR,KAAKD,MAAMoR,QAErBhB,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,eAExB44D,gBAAkB,YAElBC,WAAa,YAAa,aAE1BP,iBAAmB,SAAUxoD,YAK3B,QAASwoD,kBAAiB7lD,MAAOgI,UAAWkc,KAAMiP,QAAS8tB,IAAKvQ,QAAShzC,EAAGF,SAAUtE,eAAgBuE,QAASkzC,OAAQC,UAAWvoC;AAChI,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKg7C,IACVtzD,KAAKkE,OAAS6+C,QACd/iD,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAKuL,eAAiBA,eACtBvL,KAAK8P,QAAUA,QACf9P,KAAKgjD,OAASA,OACdhjD,KAAKijD,UAAYA,UACjBjjD,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,uBAChD1H,KAAKqS,MAAMqmD,mBACX14D,KAAKsjD,0BACLlgD,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAQjB,OAPAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,qBAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAMmT,UAAUhT,QAAQ,2BACpCivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,KACjC4jB,mBAAoBrvB,MAAM8K,MAAMpK,QAAQtE,cAEnC4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAmRlD,MAxTA6C,QAAOq1D,iBAAkBxoD,YAEzBwoD,iBAAiB99C,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,mBAAoB,aAAc,YAAa,eAAgB,cAsCjM89C,iBAAiBhpD,UAAUo0C,wBAA0B,WAuBnD,MAtBAtjD,MAAKqS,MAAMvG,IAAI,qBAAsB,SAAUvE,OAC7C,MAAO,YAGL,MAFAA,OAAMw5C,kBACNx5C,MAAM0sD,oBACC1sD,MAAM07C,UAAUjkC,WAAW,YAAa,SAAU,6BAA8B,KAExFhf,OACHA,KAAKqS,MAAMvG,IAAI,sBAAuB,SAAUvE,OAC9C,MAAO,YAEL,MADAA,OAAMw5C,kBACCx5C,MAAM07C,UAAUjkC,WAAW,YAAa,SAAU,kCAAmC,KAE7Fhf,OACHA,KAAKqS,MAAMvG,IAAI,sBAAuB,SAAUvE,OAC9C,MAAO,YAEL,MADAA,OAAMw5C,kBACCx5C,MAAM0sD,sBAEdj0D,OACHA,KAAKqS,MAAMvG,IAAI,oBAAqB9L,KAAK24D,qBACzC34D,KAAKqS,MAAMvG,IAAI,iBAAkB9L,KAAK2jD,QACtC3jD,KAAKqS,MAAMvG,IAAI,qCAAsC9L,KAAK44D,0BACnD54D,KAAKqS,MAAMvG,IAAI,qCAAsC9L,KAAK64D,2BAGnEX,iBAAiBhpD,UAAUq5C,SAAW,SAAS/+C,KAAM+qC,UACnD,OAAQ/qC,MACN,IAAK,WACH,MAAOxJ,MAAKqa,UAAUyG,WAAW,aAAc9gB,KAAKqS,MAAMoG,UAAW87B,SAAUv0C,KAAKqS,MAAM6hC,aAC5F,KAAK,OACH,MAAOl0C,MAAKqa,UAAUyG,WAAW,cAAe9gB,KAAKqS,MAAMoG,UAAW87B,YAI5E2jB,iBAAiBhpD,UAAU4pD,mBAAqB,SAASrqC,IACvD,MAAOzuB,MAAKqa,UAAUyG,WAAW,kBAAmB2N,KAGtDypC,iBAAiBhpD,UAAUypD,oBAAsB,SAAS1rD,IAAK8rD,OAAQtqC,IACrE,GAAIrrB,QAGJ,OAFAqrB,IAAGJ,YAAc0qC,OACjB31D,QAAUpD,KAAKu2B,KAAKjJ,KAAKmB,IAClBrrB,QAAQD,KAAK,KAAM,WACxB,MAAOgkD,SAAQ3xC,IAAI,WAIvB0iD,iBAAiBhpD,UAAU+kD,kBAAoB,WAC7C,MAAOj0D,MAAKsY,GAAGC,SAASwiC,WAAW/6C,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OACtE,MAAO,UAAS4yC,aACd,MAAO5yC,OAAM8K,MAAMpK,QAAQkyC,YAAcA,cAE1Cn6C,QAGLk4D,iBAAiBhpD,UAAU6xC,gBAAkB,WAC3C,GAAI78C,QAAQd,OAsDZ,OArDAc,SACE80D,qBAAqB,GAEvB51D,QAAUpD,KAAKsY,GAAGka,YAAYymC,QAAQj5D,KAAKqS,MAAMoG,UAAWvU,QAAQf,KAAK,SAAUoE,OACjF,MAAO,UAASirB,aACd,GAAI9gB,GAAG44B,EAAGnC,EAAGz0B,IAAK62B,KAAMoc,KAAM1zC,IAAKosB,KAAMsP,KAAM9oC,OAAQ4oB,GAAIyqC,WAAYC,WAKvE,KAJA5xD,MAAM8K,MAAMmgB,YAAcA,YAC1B0mC,WAAa74D,EAAEoQ,QAAQ+hB,YAAa,UACpC2mC,eACAlmD,IAAM1L,MAAM8K,MAAM6hC,aACbxiC,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IAAK,CAK1C,GAJA7L,OAASoN,IAAIvB,GACgB,MAAzBwnD,WAAWrzD,OAAOkS,MACpBmhD,WAAWrzD,OAAOkS,QAEU,MAA1BxQ,MAAM8K,MAAM6mD,WAEd,IADA75B,KAAO93B,MAAM8K,MAAM6mD,WAAWrzD,OAAOkS,IAChCuyB,EAAI,EAAGC,KAAOlL,KAAK7yB,OAAY+9B,KAAJD,EAAUA,IACxC7b,GAAK4Q,KAAKiL,GACN7b,GAAG5oB,SAAWA,OAAOkS,IACvBohD,YAAYzyD,KAAK+nB,GAIvB,IAAI5oB,OAAOsuC,aAA0C,MAA1B5sC,MAAM8K,MAAM6mD,YAAoE,IAA7C3xD,MAAM8K,MAAM6mD,WAAWrzD,OAAOkS,IAAIvL,OAE9F,IADAmiC,KAAOpnC,MAAM8K,MAAM6mD,WAAWrzD,OAAOkS,IAAIxJ,OAAO4qD,aAC3ChxB,EAAI,EAAGwe,KAAOhY,KAAKniC,OAAYm6C,KAAJxe,EAAUA,IACxC1Z,GAAKkgB,KAAKxG,GACN1Z,GAAG5oB,SAAWA,OAAOkS,IACvBmhD,WAAWrzD,OAAOkS,IAAIrR,KAAK+nB,GAIjCyqC,YAAWrzD,OAAOkS,IAAM1X,EAAEwX,OAAOqhD,WAAWrzD,OAAOkS,IAAK,gBAY1D,MAV2B,KAAvBya,YAAYhmB,SACd3G,OAAS0B,MAAM8K,MAAM6hC,aAAa,GAClCglB,WAAWrzD,OAAOkS,IAAIrR,MACpBkuD,eAAe,KAGnBrtD,MAAM8K,MAAM6mD,WAAaA,WACzBpoD,WAAWvJ,MAAM8K,MAAO,WACtB,MAAO9K,OAAM8K,MAAMyO,WAAW,qBAAsB0R,eAE/CA,cAERxyB,OACHoD,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAM8K,MAAMyO,WAAW,gBAE/B9gB,OACIoD,SAGT80D,iBAAiBhpD,UAAU0pD,yBAA2B,SAAS3rD,IAAKsnC,UAClE,GAAIrwC,OAIJ,OAHAA,SACE2B,OAAQ0uC,UAEHv0C,KAAKsY,GAAGka,YAAYymC,QAAQj5D,KAAKqS,MAAMoG,UAAWvU,QAAQf,KAAK,SAAUoE,OAC9E,MAAO,UAASirB,aAGd,MAFAjrB,OAAM8K,MAAM6mD,WAAW3kB,UAAYl0C,EAAEwX,OAAO2a,YAAa,gBACzDjrB,MAAM8K,MAAMyO,WAAW,sCAAuCyzB,SAAU/hB,aACjEA,cAERxyB,QAGLk4D,iBAAiBhpD,UAAU2pD,yBAA2B,SAAS5rD,IAAKsnC,UAElE,MADAv0C,MAAKqS,MAAM6mD,WAAW3kB,aACfv0C,KAAKqS,MAAMyO,WAAW,uCAAwCyzB,WAGvE2jB,iBAAiBhpD,UAAUkqD,WAAa,WACtC,MAAOp5D,MAAK+P,EAAEsI,KAAKrY,KAAKi0D,oBAAqBj0D,KAAK+gD,qBAGpDmX,iBAAiBhpD,UAAUioB,YAAc,WACvC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAiBd,MAhBKA,SAAQkf,qBACX5f,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAM4f,OAAS5xB,EAAEwX,OAAO5P,QAAQgqB,OAAQ,SAC9C1qB,MAAM8K,MAAM01B,WAAat3B,QAAQxI,QAAQgqB,OAAQ,SAAS1xB,GACxD,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMslB,aAAelnB,QAAQxI,QAAQ2vB,YAAa,SAASr3B,GAC/D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAM6hC,aAAe7zC,EAAEwX,OAAO5P,QAAQ2vB,YAAa,SACzDrwB,MAAM8xD,0BACN9xD,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGLk4D,iBAAiBhpD,UAAU20C,uBAAyB,WAClD,GAAIC,YAEJ,OADAA,aAAc,mBAAqB9jD,KAAKqS,MAAMoG,UAAY,eACnDzY,KAAKgjD,OAAO74B,UAAUnqB,KAAKqS,MAAOyxC,YAAa,SAAUv8C,OAC9D,MAAO,UAAS6X,SACd,MAAO7X,OAAMw5C,oBAEd/gD,QAGLk4D,iBAAiBhpD,UAAUwnB,gBAAkB,WAC3C,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,cACR/zB,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASU,SAGd,MAFAV,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OACjDlQ,MAAMs8C,yBACCt8C,MAAM6xD,eAEdp5D,QAGLk4D,iBAAiBhpD,UAAUmqD,wBAA0B,WACnD,GAAI3nD,GAAGgC,IAAK+7B,KAAMx8B,IAAKpN,OAAQyzD,qBAI/B,KAHAA,sBAAwBt5D,KAAKsY,GAAGuhC,OAAO0f,mBAAmBv5D,KAAKqS,MAAMoG,WACrEzY,KAAKqS,MAAMqmD,mBACXzlD,IAAMjT,KAAKqS,MAAM6hC,aACZxiC,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IACrC7L,OAASoN,IAAIvB,GACb+9B,KAAO6pB,sBAAsBzzD,OAAOkS,KAAOygD,gBAC3Cx4D,KAAKqS,MAAMqmD,gBAAgB7yD,OAAOkS,IAAM03B,IAE1C,OAAOzvC,MAAKw5D,wBAGdtB,iBAAiBhpD,UAAUsqD,qBAAuB,WAChD,MAAOx5D,MAAKsY,GAAGuhC,OAAO2f,qBAAqBx5D,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAMqmD,kBAG9ER,iBAAiBhpD,UAAUuqD,qBAAuB,SAASllB,SAAUmlB,aAEnE,MADA15D,MAAKqS,MAAMqmD,gBAAgBnkB,UAAYmlB,YAChC15D,KAAKw5D,wBAGdtB,iBAAiBhpD,UAAUyqD,YAAc,SAASplB,UAChD,GAAI9E,KAEJ,OADAA,MAAOzvC,KAAKqS,MAAMqmD,gBAAgBnkB,WAAaikB,gBAC/B,cAAT/oB,MAGTyoB,iBAAiBhpD,UAAU0qD,YAAc,SAASrlB,UAChD,GAAI9E,KAEJ,OADAA,MAAOzvC,KAAKqS,MAAMqmD,gBAAgBnkB,WAAaikB,gBAC/B,cAAT/oB,MAGTyoB,iBAAiBhpD,UAAUg3C,sBAAwB,SAASC,KAAMtoB,OAIhE,MAHa,OAATA,QACFA,MAAQ,gBAEHx9B,EAAEC,IAAI6lD,KAAM,SAAS5lD,GAC1B,OACE6lD,MAAS7lD,EAAEwX,GACX01B,MAASltC,EAAEs9B,WAKjBq6B,iBAAiBhpD,UAAUm3C,kBAAoB,SAASF,MACtD,GAAIz0C,GAAGwsC,MAAOzsC,KAAM60C,MAAO5yC,GAE3B,KADA4yC,SACKpI,MAAQxsC,EAAI,EAAGgC,IAAMyyC,KAAK35C,OAAYkH,IAAJhC,EAASwsC,QAAUxsC,EACxDD,KAAO00C,KAAKjI,OACZzsC,KAAKm8B,aAAesQ,MAChBzsC,KAAK80C,cACPD,MAAM5/C,KAAK+K,KAGf,OAAO60C,QAGT4R,iBAAiBhpD,UAAUy0C,OAAS,SAAS12C,IAAKwhB,GAAImpC,YAAaF,YAAaxZ,OAC9E,GAAI2b,aAAaz2D,QAASq3B,CA0B1B,OAzBIm9B,eAAgBF,aAClBj9B,EAAIz6B,KAAKqS,MAAM6mD,WAAWtB,aAAazxD,QAAQsoB,IAC/CzuB,KAAKqS,MAAM6mD,WAAWtB,aAAa7Q,OAAOtsB,EAAG,GAC7Cz6B,KAAKqS,MAAM6mD,WAAWxB,aAAa3Q,OAAO7I,MAAO,EAAGzvB,IACpDA,GAAG5oB,OAAS6xD,cAEZj9B,EAAIz6B,KAAKqS,MAAM6mD,WAAWxB,aAAavxD,QAAQsoB,IAC/CzuB,KAAKqS,MAAM6mD,WAAWxB,aAAa3Q,OAAOtsB,EAAG,GAC7Cz6B,KAAKqS,MAAM6mD,WAAWxB,aAAa3Q,OAAO7I,MAAO,EAAGzvB,KAEtDorC,YAAc75D,KAAKqmD,kBAAkBrmD,KAAKqS,MAAM6mD,WAAWxB,cAC3D13D,KAAKqS,MAAM6mD,WAAWxB,aAAer3D,EAAEwX,OAAO7X,KAAKqS,MAAM6mD,WAAWxB,aAAc,gBAClFt0D,QAAUpD,KAAKu2B,KAAKjJ,KAAKmB,IACzBrrB,QAAUA,QAAQD,KAAK,SAAUoE,OAC/B,MAAO,YACL,GAAIL,KAKJ,OAJA2yD,aAAcx5D,EAAEiG,OAAOuzD,aACrB9hD,GAAM0W,GAAG1W,KAEX7Q,KAAOK,MAAM2+C,sBAAsB2T,aAC5BtyD,MAAM+Q,GAAGka,YAAYsnC,sBAAsBrrC,GAAGxmB,QAASf,MAAM/D,KAAK,WACvE,MAAO02D,iBAGV75D,QAIEk4D,kBAENtnD,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,mBAAoB20D,kBAEtCC,gBAAkB,SAAS73C,MAAOnV,YAChC,GAAIuS,KAcJ,OAbAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIu3C,aAQJ,OAPAA,cAAex3C,IAAIO,KAAK,sBACxBi3C,aAAa12C,GAAG,SAAU,SAAS/Q,OACjC,GAAI0nD,gBAAgBlpC,MAGpB,OAFAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BktC,eAAiBz3C,IAAIO,KAAK,4CACnBk3C,eAAe/2B,IAAI,OAAQ,GAAKnS,OAAOmpC,gBAEzC33C,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,YAAa,UAAW,aAAc06C,kBAEvDH,oCAAsC,SAAS7sD,WAAYnI,YACzD,GAAI+2D,kBAAkBr8C,KAAMs8C,gBA2B5B,OA1BAA,kBAAmBh3D,WAAW0E,QAAQ,+BACtCqyD,iBAAmB/2D,WAAW0E,QAAQ,+BACtCgW,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIo8C,QAAQp0D,MAmBZ,OAlBAA,QAAS8X,OAAOlL,MAAMoL,OAAOq8C,8BAC7BD,QAAS,EACTt8C,OAAO,SAAW,gBAClBA,OAAOja,MAAQs2D,iBACfp8C,IAAIc,GAAG,QAAS,SAAS/Q,OAEvB,MADAssD,SAAUA,OACHt8C,OAAO1J,OAAO,WACnB,MAAIgmD,SACFt8C,OAAO,SAAW,gBAClBA,OAAOja,MAAQs2D,iBACR7uD,WAAW2V,WAAW,qCAAsCjb,OAAOkS,MAE1E4F,OAAO,SAAW,kBAClBA,OAAOja,MAAQq2D,iBACR5uD,WAAW2V,WAAW,qCAAsCjb,OAAOkS,SAIzE4F,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,gCAAiC,aAAc,aAAcu6C,sCAE9EC,mCAAqC,SAASj1D,YAC5C,GAAI0a,MAAMy8C,WAkDV,OAjDAA,gBACAz8C,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIu8C,uBAAuBv0D,OAAQw0D,eA2CnC,OA1CAD,uBAAwBp3D,WAAW0E,QAAQ,8BAC3C7B,OAAS8X,OAAOlL,MAAMoL,OAAOy8C,6BAC7B18C,IAAIrK,KAAK6mD,uBACTC,gBAAkB,WAChB,MAAIF,aAAY3tD,OAAS,EAChBoR,IAAIrK,KAAK,IAETqK,IAAIrK,KAAK6mD,wBAGpBz8C,OAAO7R,IAAI,iBAAkB,SAASmB,IAAK2jD,OAAQgH,YAAaF,YAAa/G,WAC3E,GAAIl2B,EAeJ,OAdI50B,QAAOkS,KAAO2/C,YACZ7xD,OAAOkS,KAAO6/C,aAChBn9B,EAAI0/B,YAAYh0D,QAAQyqD,QACxBuJ,YAAYpT,OAAOtsB,EAAG,GACtB0/B,YAAYpT,OAAO4J,UAAW,EAAGC,UAEjCA,OAAO2J,YAAa,EACpBJ,YAAYpT,OAAO4J,UAAW,EAAGC,SAE1B/qD,OAAOkS,KAAO6/C,cACvBhH,OAAO2J,YAAa,EACpB9/B,EAAI0/B,YAAYh0D,QAAQyqD,QACxBuJ,YAAYpT,OAAOtsB,EAAG,IAEjB4/B,oBAET18C,OAAO7R,IAAI,sCAAuC,SAASmB,IAAKsnC,SAAUimB,mBACxE,MAAIjmB,YAAa1uC,OAAOkS,IACtBoiD,YAAc95D,EAAEyM,OAAO0tD,kBAAmB,SAAS/rC,IACjD,MAAOA,IAAG5oB,SAAWA,OAAOkS,KAEvBsiD,mBAJT,SAOF18C,OAAO7R,IAAI,uCAAwC,SAASmB,IAAKsnC,UAC/D,MAAIA,YAAa1uC,OAAOkS,IACtBoiD,eACOE,mBAFT,SAKK18C,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,+BAAgC,aAAcw6C,qCAE/DK,yBAA2B,SAASntD,WAAY2gB,SAAU4C,IAAK6mC,MAC7D,GAAI73C,KAsCJ,OArCAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QAiCnC,MAhCA3C,KAAI4tC,mBACJ7tC,OAAOjL,OAAO,KAAM,SAAS+b,IAC3B,MAAIA,IAAG+R,aAAe5iB,IAAIygB,SAAS,WAC1BzgB,IAAIkI,SAAS,YACV2I,GAAG+R,YAAc5iB,IAAIygB,SAAS,WACjCzgB,IAAI+H,YAAY,WADlB,SAIT/H,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OACrC,GAAIue,gBAAgBC,OAAQsC,EAC5B,KAAI7Q,IAAIO,KAAK,cAAckgB,SAAS,WAMpC,MAHAlS,QAASlE,EAAEta,MAAMwe,QACjBD,eAAiBJ,WAAWK,OAAOA,QAAQhb,QAAQ,KAAK2lC,cAAc,aAAajpC,QACnF4gB,GAAKlO,OAAOkN,YACLiB,IAAI8D,YAAY41B,SAAS35B,GAAGxmB,QAASwmB,GAAGxb,KAAK9P,KAAK,SAAUoE,OACjE,MAAO,UAASkzD,kBACd,MAAOlF,MAAKhoB,YAAYxe,KAAK,KAAMN,GAAG1W,GAAI0W,GAAGxmB,SAAS9E,KAAK,SAASoqC,aAElE,MADApiC,YAAW2V,WAAW,cAAe25C,iBAAkBltB,YAAYn2B,QAC5D8U,eAAeI,aAGzBtsB,SAEL2d,OAAO+8C,eAAiB,WACtB,MAAI/8C,QAAO8Q,GAAGmmC,cACL,4CAEA,2BAGJj3C,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIbvB,SAAU,uCACVK,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,qBAAsB,aAAc,aAAc,eAAgB,cAAe66C,2BAElGF,4BAA8B,SAAS9/C,IACrC,GAAIoF,KA2BJ,OA1BAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI88C,iBAUJ,OATAh9C,QAAO7R,IAAI,iBAAkB,SAAS6B,MAAO1F,SAE3C,MADA0V,QAAOi9C,MAAQtiD,GAAGuhC,OAAOoc,qBAAqBhuD,QAAQ8P,IAC/C4iD,qBAETh9C,OAAOy4C,WAAa,SAASvwD,QAC3B8X,OAAOi9C,MAAM/0D,OAAOkS,KAAS4F,OAAOi9C,MAAM/0D,OAAOkS,IACjDO,GAAGuhC,OAAOwc,uBAAuB14C,OAAOlF,UAAWkF,OAAOi9C,OAC1DD,oBAEKA,iBAAmB,WACxB,GAAIhE,cAAcE,UAWlB,OAVAF,cAAet2D,EAAEC,IAAIqd,OAAOu2B,aAAc,SAASruC,QACjD,MAAI8X,QAAOi9C,MAAM/0D,OAAOkS,IACf,GAEA,MAGX8+C,WAAax2D,EAAEmW,OAAOmgD,aAAc,SAASI,MAAO9qD,OAClD,MAAO8qD,OAAQ9qD,QAEV2R,IAAIO,KAAK,uBAAuBmgB,IAAI,QAASu4B,eAItDn5C,KAAMA,OAIV9d,OAAO6d,UAAU,wBAAyB,eAAgB26C,8BAE1DG,wBAA0B,WACxB,GAAI76C,KA2BJ,OA1BAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIg9C,gBAAgBh1D,MAqBpB,OApBA+X,KAAI4tC,mBACJ3lD,OAAS8X,OAAOlL,MAAMoL,OAAOi9C,kBAC7BD,eAAiB,SAAUtzD,OACzB,MAAO,YAEL,MADAqW,KAAIO,KAAK,qBAAqBpC,SACvB5K,QAAQ,IAAK,WAClB,GAAI/J,QAEJ,OADAA,SAAUwW,IAAIO,KAAK,gBAAgBtY,OAAOk1D,WACtC3zD,QACKxE,QAAQwE,QAAQA,SAASqiD,OAAO,wCADzC,WAKHzpD,MACC6F,SAAWA,OAAOsuC,cACpBx2B,OAAO7R,IAAI,aAAc+uD,gBACzBl9C,OAAO7R,IAAI,iBAAkB+uD,gBAC7Bl9C,OAAO7R,IAAI,qBAAsB+uD,gBACjCl9C,OAAO7R,IAAI,sBAAuB+uD,iBAE7Bl9C,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB86C,yBAErCF,oBAAsB,SAASntD,KAAM2hB,SAAU7pB,YAC7C,GAAIi0D,WAAWv5C,KAAML,QAqErB,OApEAA,UAAWhd,EAAEgd,SAAS,+NACtB45C,WAAY,EACZv5C,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAIkF,QAAQyxC,eAAgB8D,IAG5B,OAFA9D,gBAAiBt5C,IAAI/O,SAASsP,KAAK,mBACnC+4C,eAAepxC,SAAS,iBACnBjI,OAAOo9C,oBAGZD,KAAOr9C,OAAOjL,OAAOmL,OAAOo9C,mBAAoB,SAAS/yB,GACvD,GAAIv8B,KACJ,OAAwB,OAApBgS,OAAO3F,WACT9M,KAAKgU,MAAM,uDACJ87C,SAEPrvD,KAAOgS,OAAO3F,UAAUkwB,GACjBziB,OAAO9Z,SAGlB8Z,OAAS,SAAS9Z,MAChB,GAAIsB,KAAKsgB,IAgBT,OAdEtgB,KADW,SAATtB,MAEAqH,KAAMhQ,WAAW0E,QAAQ,mCACzB6nB,OAAQ,IAAMrvB,OAAOyI,SAAW,sBAChCsuD,UAAWA,YAIXjkD,KAAMrH,KAAK8jB,kBACXF,OAAQ5jB,KAAK6jB,MACbynC,UAAWA,WAGf1pC,KAAOV,SAASxP,SAASpQ,MAAM0Q,QAC/BC,IAAI2P,KAAKA,MACF2pC,eAAe3jD,KAAKtG,IAAI+F,OAEjC5C,SAASuN,OAAQ,UAAW,SAAS1V,SACnC,MAAIA,SAAQqe,eAAengB,QAAQ,aAAe,IAChD8wD,WAAY,EACZr5C,IAAIc,GAAG,QAAS,SAAUnX,OACxB,MAAO,UAASoG,OACd,GAAIuhB,OAAOT,EACX,KAAI7Q,IAAIO,KAAK,KAAKkgB,SAAS,WAK3B,MAFA5P,IAAKlO,OAAOkN,YACZyB,MAAQtR,IAAIra,aACL2rB,MAAM4pC,mBAAmBrqC,MAEjCzuB,OACHk3D,eAAevxC,YAAY,iBACpBuxC,eAAex4C,GAAG,QAAS,SAAS/Q,OACzC,GAAIuhB,OAAOT,EACX,KAAI7Q,IAAIO,KAAK,KAAKkgB,SAAS,WAK3B,MAFA5P,IAAKlO,OAAOkN,YACZyB,MAAQtR,IAAIra,aACL2rB,MAAM4pC,mBAAmBrqC,OArBpC,SAyBK9Q,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,SA1DJ1T,KAAKgU,MAAM,6CA8DpBxB,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,sBAAuB,OAAQ,WAAY,aAAc46C,uBAEzEh1D,KAAKrD,MA2BR,WACE,GAAIk7D,yBAAyB9qD,SAAUK,QAASG,MAAOhR,OAAQkR,WAAY/Q,MAAOoR,QAASE,UAE3FtR,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBS,WAAarR,KAAKD,MAAMsR,WAExBP,WAAa9Q,KAAKD,MAAM+Q,WAExBV,SAAWpQ,KAAKD,MAAMqQ,SAEtBK,QAAUzQ,KAAKD,MAAM0Q,QAErBU,QAAUnR,KAAKD,MAAMoR,QAErBvR,OAASgD,QAAQhD,OAAO,eAExBs7D,wBAA0B,SAAS56C,MAAOoO,IAAKvjB,YAC7C,GAAIuS,KAgDJ,OA/CAA,MAAO,SAASC,OAAQC,IAAKC,QA2C3B,MA1CAzN,UAASuN,OAAQ,UAAW,SAAS1V,SACnC,GAAI8nD,eAAeqH,OAAQC,eAAgBC,eAAgBC,IAC3D,IAAMtvD,QAAQqe,eAAengB,QAAQ,aAAe,GAmCpD,MAhCAmxD,gBAAiB,KACjBD,eAAiB,KACjBD,OAAS,KACTG,KAAO35C,IACPmyC,cAAgB,SAASqH,QAGvB,MAFAA,QAAO/kD,QAAQ+mB,WACfg+B,OAAOx4C,MACAw4C,OAAOr7C,UAEhBw7C,KAAKpH,UACHqH,OAAQ,qBACRlH,aAAa,EACbD,YAAa,mBACb3wB,OAAQ,MAEV63B,KAAK74C,GAAG,WAAY,SAAS/Q,MAAO+tC,IAClC,GAAIiV,WAAWC,OAAQ8G,YAAaE,YAAaE,QAcjD,OAbAA,UAAWpc,GAAGjqC,KAAK5C,SACnBuoD,OAAS1b,GAAGjqC,KACZm/C,OAASwG,OAAO/kD,QAAQoc,GACxBkiC,UAAYyG,OAAOlZ,QACnBmZ,eAAiBS,SAASzlD,QAC1BqlD,YAAcL,eAAe/8B,EAAEviB,GAC/B6/C,YAAcN,eAAeh9B,EAAEviB,GAC3B2/C,cAAgBE,aAClB7H,cAAcqH,QAEhBz5C,OAAO1J,OAAO,WACZ,MAAO9I,YAAW2V,WAAW,iBAAkB8vC,OAAQA,OAAO/qD,OAAQ6xD,YAAa/G,aAE9EjV,GAAGjqC,KAAK0M,KAAK,KAAKwH,YAAY,aAEhC4xC,KAAK74C,GAAG,YAAa,SAAS/Q,MAAO+tC,IAE1C,MADA4b,gBAAiB5b,GAAGjqC,KAAK5C,SAASwD,QAC3BqpC,GAAGjqC,KAAK0M,KAAK,KAAK2H,SAAS,eAG/BnI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB,UAAW,eAAgB,aAAcy9C,2BAE9E73D,KAAKrD,MA2BR,WACE,GAAIm7D,uBAAuBC,6BAA8BC,6BAA8BC,2BAA4BC,4BAA6BC,yBAA0BC,gCAAiCtrD,YAAaC,SAAUK,QAASE,QAASC,MAAOhR,OAAQG,MAAOqR,SACxQvO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBQ,SAAWpR,KAAKD,MAAMqR,SAEtBT,QAAU3Q,KAAKD,MAAM4Q,QAErBF,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBD,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,eAExBu7D,sBAAwB,SAAUzrD,YAKhC,QAASyrD,uBAAsB9oD,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAU2F,IAAKjK,eAAgB03C,UAAWnzC,QAAS4K,WAChI,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAKwV,IAAMA,IACXxV,KAAKuL,eAAiBA,eACtBvL,KAAKijD,UAAYA,UACjBjjD,KAAK8P,QAAUA,QACf9P,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMqpD,SAAW17D,KAAKkE,OAAOy3D,SAClC37D,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,uBAChD1H,KAAKsjD,0BACLlgD,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YAEL,MADAA,OAAMgsD,WACChsD,MAAMq0D,8BAEd57D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAoMlD,MAlOA6C,QAAOs4D,sBAAuBzrD,YAE9ByrD,sBAAsB/gD,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,OAAQ,mBAAoB,eAAgB,aAAc,cA+BjM+gD,sBAAsBjsD,UAAUqkD,SAAW,WACzC,GAAI5vD,aAAasP,IAAKosB,KAAMsP,KAAMktB,KAAMn4D,KAaxC,OAZAA,OAAQ1D,KAAK0a,UAAUhT,QAAQ,oBAC7Bg0D,SAAU,IAAM17D,KAAKqS,MAAMowB,MAAMxvB,IACjC6oD,aAAc97D,KAAKqS,MAAMowB,MAAMpV,QAC/BsJ,YAAa32B,KAAKqS,MAAMpK,QAAQ+K,OAElCrP,YAAc3D,KAAK0a,UAAUhT,QAAQ,0BACnCq0D,aAAwE,OAAzD9oD,IAAMjT,KAAKqS,MAAM2pD,WAAWh8D,KAAKqS,MAAMowB,MAAM58B,SAAmBoN,IAAID,KAAO,SAAW,KACrGipD,WAAmE,OAAtD58B,KAAOr/B,KAAKqS,MAAM6pD,SAASl8D,KAAKqS,MAAMowB,MAAMj5B,OAAiB61B,KAAKrsB,KAAO,SAAW,KACjGmpD,eAA+E,OAA9DxtB,KAAO3uC,KAAKqS,MAAMolB,aAAaz3B,KAAKqS,MAAMowB,MAAMQ,WAAqB0L,KAAK37B,KAAO,SAAW,KAC7GopD,eAA+E,OAA9DP,KAAO77D,KAAKqS,MAAMqlB,aAAa13B,KAAKqS,MAAMowB,MAAMM,WAAqB84B,KAAK7oD,KAAO,SAAW,KAC7GqpD,iBAAkBz5D,QAAQwE,QAAQpH,KAAKqS,MAAMowB,MAAMiI,kBAAoB,IAAIn3B,SAEtEvT,KAAKuL,eAAe0C,OAAOvK,MAAOC,cAG3Cw3D,sBAAsBjsD,UAAUo0C,wBAA0B,WAkBxD,MAjBAtjD,MAAKqS,MAAMvG,IAAI,oBAAqB,SAAUvE,OAC5C,MAAO,YACL,MAAOA,OAAM07C,UAAUjkC,WAAW,aAAc,SAAU,6BAA8B,KAEzFhf,OACHA,KAAKqS,MAAMvG,IAAI,8BAA+B,SAAUvE,OACtD,MAAO,YAGL,MAFAA,OAAM07C,UAAUjkC,WAAW,QAAS,qBAAsB,6BAA8B,GACxFzX,MAAM8S,UAAUyG,WAAW,kBACpBvZ,MAAM+0D,cAEdt8D,OACHA,KAAKqS,MAAMvG,IAAI,cAAe,SAAUvE,OACtC,MAAO,YACL,MAAOA,OAAM+0D,cAEdt8D,OACIA,KAAKqS,MAAMvG,IAAI,gCAAiC,SAAUvE,OAC/D,MAAO,YACL,MAAOA,OAAM8S,UAAUyG,WAAW,oBAEnC9gB,QAGLm7D,sBAAsBjsD,UAAU0sD,0BAA4B,WAC1D,GAAI3uD,IAIJ,OAHAA,MACEhF,QAASjI,KAAKqS,MAAMpK,QAAQgf,MAE1BjnB,KAAKqS,MAAMpK,QAAQof,oBACdrnB,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,iBAAkBsK,KAEpEjN,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,UAAWsK,MAIxEkuD,sBAAsBjsD,UAAUioB,YAAc,WAC5C,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAoBd,MAnBAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAM2hC,WAAa/rC,QAAQqvB,eACjC/vB,MAAM8K,MAAM2pD,WAAavrD,QAAQxI,QAAQqvB,eAAgB,SAAS/2B,GAChE,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAM6pD,SAAWzrD,QAAQxI,QAAQs0D,YAAa,SAASh8D,GAC3D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMmqD,SAAWn8D,EAAEwX,OAAO5P,QAAQs0D,YAAa,SACrDh1D,MAAM8K,MAAMoqD,aAAex0D,QAAQqqB,WACnC/qB,MAAM8K,MAAMolB,aAAehnB,QAAQxI,QAAQqqB,WAAY,SAAS/xB,GAC9D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMqqD,aAAez0D,QAAQoqB,WACnC9qB,MAAM8K,MAAMqlB,aAAejnB,QAAQxI,QAAQoqB,WAAY,SAAS9xB,GAC9D,MAAOA,GAAEwX,KAEJ9P,UAERjI,QAGLm7D,sBAAsBjsD,UAAUotD,UAAY,WAC1C,MAAOt8D,MAAKsY,GAAGkb,OAAO40B,SAASpoD,KAAKqS,MAAMoG,UAAWzY,KAAKkE,OAAOy3D,UAAUx4D,KAAK,SAAUoE,OACxF,MAAO,UAASk7B,OACd,GAAIx1B,KAAKgG,IAAKosB,IAWd,OAVA93B,OAAM8K,MAAMowB,MAAQA,MACpBl7B,MAAM8K,MAAMsqD,QAAUl6B,MAAM1qB,GAC5BxQ,MAAM8K,MAAMuqD,aAAen6B,MACsD,OAA5B,OAA/CxvB,IAAM1L,MAAM8K,MAAMowB,MAAMo6B,UAAUC,UAAoB7pD,IAAIA,IAAM,UACpEhG,KACEhF,QAASV,MAAM8K,MAAMpK,QAAQgf,KAC7BhU,IAAK1L,MAAM8K,MAAMowB,MAAMo6B,UAAUC,SAAS7pD,KAE5C1L,MAAM8K,MAAM0qD,YAAcx1D,MAAMuI,QAAQnN,QAAQ,wBAAyBsK,MAEI,OAA7B,OAA5CoyB,KAAO93B,MAAM8K,MAAMowB,MAAMo6B,UAAUjvD,MAAgByxB,KAAKpsB,IAAM,SAClEhG,KACEhF,QAASV,MAAM8K,MAAMpK,QAAQgf,KAC7BhU,IAAK1L,MAAM8K,MAAMowB,MAAMo6B,UAAUjvD,KAAKqF,KAEjC1L,MAAM8K,MAAMzM,QAAU2B,MAAMuI,QAAQnN,QAAQ,wBAAyBsK,MAL9E,SAQDjN,QAGLm7D,sBAAsBjsD,UAAUwnB,gBAAkB,WAChD,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,cACR/zB,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASU,SAEd,MADAV,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OAC1ClQ,MAAM+0D,cAEdt8D,QASLm7D,sBAAsBjsD,UAAU8tD,SAAW,WACzC,GAAIj/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAM+0D,YACC/0D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGkb,OAAOypC,OAAOj9D,KAAKqS,MAAMsqD,SAASx5D,KAAK6a,UAAWD,UAGnEo9C,sBAAsBjsD,UAAUguD,WAAa,WAC3C,GAAIn/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAM+0D,YACC/0D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGkb,OAAO2pC,SAASn9D,KAAKqS,MAAMsqD,SAASx5D,KAAK6a,UAAWD,UASrEo9C,sBAAsBjsD,UAAUkuD,QAAU,WACxC,GAAIr/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAM+0D,YACC/0D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGkb,OAAO6f,MAAMrzC,KAAKqS,MAAMsqD,SAASx5D,KAAK6a,UAAWD,UAGlEo9C,sBAAsBjsD,UAAUmuD,UAAY,WAC1C,GAAIt/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAM+0D,YACC/0D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGkb,OAAO3N,QAAQ7lB,KAAKqS,MAAMsqD,SAASx5D,KAAK6a,UAAWD,UAG7Do9C,uBAENvqD,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,wBAAyB43D,uBAE3CI,4BAA8B,SAASzuC,UAAWD,UAChD,GAAInP,MAAML,QAuBV,OAtBAA,UAAWyP,UAAU1nB,IAAI,yCAAyC,GAClEsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4H,OAgBJ,OAfAA,QAAS,SAASgd,OAChB,GAAIlV,MAAM1nB,MAOV,OANAA,QAAS8X,OAAOq+C,WAAWv5B,MAAM58B,QACjC0nB,KAAOlQ,UACL4vB,UAAWpnC,OAAOonC,UAClBpnC,OAAQA,SAEV0nB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,OAElB5P,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASwU,OACrC,MAAa,OAATA,MACKhd,OAAOgd,OADhB,SAIK9kB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,wBAAyB,cAAe,WAAY89C,8BAErED,2BAA6B,SAAS1vC,WAAYtL,MAAO9Y,SAAUskB,SAAUmT,QAASnS,UAAWD,UAC/F,GAAInP,MAAML,QAoEV,OAnEAA,UAAWyP,UAAU1nB,IAAI,mCAAmC,GAC5DsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY1Z,OAAQ6H,IA6DxB,OA5DA6R,YAAa,WACX,MAAiE,KAA1DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,iBAE/Csf,OAAS,SAAUle,OACjB,MAAO,UAASk7B,OACd,GAAIlV,MAAM1nB,MAQV,OAPAA,QAAS8X,OAAOq+C,WAAWv5B,MAAM58B,QACjC0nB,KAAOlQ,UACLxX,OAAQA,OACR4xC,SAAU95B,OAAOq2B,WACjBpN,SAAUzH,eAEZ5R,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,QAEjBvtB,MACHstB,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAASgtC,UACd,GAAIroB,gBAAgBuW,MAAO1kB,QAASC,SAgBpC,OAfAiK,GAAE3Y,GAAGo5B,UAAU1iC,WACfy8B,MAAQliB,OAAOkN,YAAYnR,QAC3BmmB,MAAM58B,OAAS0uC,SACfroB,eAAiBJ,WAAWK,OAAOvO,KAAK/P,QACxCmQ,UAAY,WAGV,MAFAuC,QAAOif,cAAciD,OACrB7W,WAAW9K,WAAW,kBACfoL,eAAeI,UAExBvO,QAAU,WAIR,MAHAvW,UAASG,OAAO,SAChB86B,MAAM/C,SACNnf,OAAOif,cAAciD,OACdvW,eAAeI,UAEjBhM,MAAMgN,KAAKmV,OAAOt/B,KAAK6a,UAAWD,WAE1C/d,OACH4d,IAAIc,GAAG,QAAS,kBAAmB,SAAS/Q,OAG1C,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,aAGEvhB,IAAIO,KAAK,eAAeuqB,UAAU5gB,OAHzC,SAKFlK,IAAIc,GAAG,QAAS,UAAW,SAAS/Q,OAClC,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,cAGLhT,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBmF,KAAKnB,OAAOjlB,KAAK,eAJxB,SAMFyW,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASwU,OACrC,MAAIA,OACKhd,OAAOgd,OADhB,SAIK9kB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,uBAAwB,aAAc,UAAW,aAAc,aAAc,YAAa,cAAe,WAAY69C,6BAEtIE,yBAA2B,SAAS5vC,WAAYtL,MAAO9Y,SAAUskB,SAAUmT,QAASnS,UAAWD,UAC7F,GAAInP,MAAML,QAqEV,OApEAA,UAAWyP,UAAU1nB,IAAI,gCAAgC,GACzDsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY1Z,OAAQ6H,IA8DxB,OA7DA6R,YAAa,WACX,MAAiE,KAA1DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,iBAE/Csf,OAAS,SAAUle,OACjB,MAAO,UAASk7B,OACd,GAAIlV,MAAM/jB,IAQV,OAPAA,MAAOmU,OAAOu+C,SAASz5B,MAAMj5B,MAC7B+jB,KAAOlQ,UACL7T,KAAMA,KACN8zD,OAAQ3/C,OAAO6+C,SACf51B,SAAUzH,eAEZ5R,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,QAEjBvtB,MACHstB,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAASiC,MACd,GAAI0iB,gBAAgBuW,MAAO1kB,QAASC,SAgBpC,OAfAiK,GAAE3Y,GAAGo5B,UAAU1iC,WACfy8B,MAAQliB,OAAOkN,YAAYnR,QAC3BmmB,MAAMj5B,KAAOA,KACb0iB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,gBAAgBtQ,QAC5DmQ,UAAY,WAGV,MAFAuC,QAAOif,cAAciD,OACrB7W,WAAW9K,WAAW,kBACfoL,eAAeI,UAExBvO,QAAU,WAIR,MAHAvW,UAASG,OAAO,SAChB86B,MAAM/C,SACNnf,OAAOif,cAAciD,OACdvW,eAAeI,UAEjBhM,MAAMgN,KAAKmV,OAAOt/B,KAAK6a,UAAWD,WAE1C/d,OACH4d,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OAGrC,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,aAGEvhB,IAAIO,KAAK,aAAauqB,UAAU5gB,OAHvC,SAKFlK,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,GAAIwe,QAAQ3iB,IAGZ,OAFAmE,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,cAGLhT,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B3e,KAAO2iB,OAAOjlB,KAAK,WACZomB,KAAK9jB,OALZ,SAOFmU,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASwU,OACrC,MAAIA,OACKhd,OAAOgd,OADhB,SAIK9kB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,qBAAsB,aAAc,UAAW,aAAc,aAAc,YAAa,cAAe,WAAY+9C,2BAEpIH,6BAA+B,SAASzvC,WAAYtL,MAAO9Y,SAAUskB,SAAUmT,QAASnS,UAAWD,UACjG,GAAInP,MAAML,QAqEV,OApEAA,UAAWyP,UAAU1nB,IAAI,oCAAoC,GAC7DsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY1Z,OAAQ6H,IA8DxB,OA7DA6R,YAAa,WACX,MAAiE,KAA1DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,iBAE/Csf,OAAS,SAAUle,OACjB,MAAO,UAASk7B,OACd,GAAIlV,MAAM0V,QAQV,OAPAA,UAAWtlB,OAAO8Z,aAAagL,MAAMQ,UACrC1V,KAAOlQ,UACL4lB,SAAUA,SACVs6B,WAAY5/C,OAAO8+C,aACnB71B,SAAUzH,eAEZ5R,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,QAEjBvtB,MACHstB,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS07B,UACd,GAAI/W,gBAAgBuW,MAAO1kB,QAASC,SAgBpC,OAfAiK,GAAE3Y,GAAGo5B,UAAU1iC,WACfy8B,MAAQliB,OAAOkN,YAAYnR,QAC3BmmB,MAAMQ,SAAWA,SACjB/W,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,gBAAgBtQ,QAC5DmQ,UAAY,WAGV,MAFAuC,QAAOif,cAAciD,OACrB7W,WAAW9K,WAAW,kBACfoL,eAAeI,UAExBvO,QAAU,WAIR,MAHAvW,UAASG,OAAO,SAChB86B,MAAM/C,SACNnf,OAAOif,cAAciD,OACdvW,eAAeI,UAEjBhM,MAAMgN,KAAKmV,OAAOt/B,KAAK6a,UAAWD,WAE1C/d,OACH4d,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OAGzC,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,aAGEvhB,IAAIO,KAAK,iBAAiBuqB,UAAU5gB,OAH3C,SAKFlK,IAAIc,GAAG,QAAS,YAAa,SAAS/Q,OACpC,GAAIs1B,UAAU9W,MAGd,OAFAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,cAGLhT,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B8a,SAAW9W,OAAOjlB,KAAK,eAChBomB,KAAK2V,WALZ,SAOFtlB,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASwU,OACrC,MAAIA,OACKhd,OAAOgd,OADhB,SAIK9kB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,yBAA0B,aAAc,UAAW,aAAc,aAAc,YAAa,cAAe,WAAY49C,+BAExID,6BAA+B,SAASxvC,WAAYtL,MAAO9Y,SAAUskB,SAAUmT,QAASnS,UAAWD,UACjG,GAAInP,MAAML,QAqEV,OApEAA,UAAWyP,UAAU1nB,IAAI,oCAAoC,GAC7DsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY1Z,OAAQ6H,IA8DxB,OA7DA6R,YAAa,WACX,MAAiE,KAA1DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,iBAE/Csf,OAAS,SAAUle,OACjB,MAAO,UAASk7B,OACd,GAAIlV,MAAMwV,QAQV,OAPAA,UAAWplB,OAAO+Z,aAAa+K,MAAMM,UACrCxV,KAAOlQ,UACL0lB,SAAUA,SACVy6B,WAAY7/C,OAAO++C,aACnB91B,SAAUzH,eAEZ5R,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,QAEjBvtB,MACHstB,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAASw7B,UACd,GAAI7W,gBAAgBuW,MAAO1kB,QAASC;AAgBpC,MAfAiK,GAAE3Y,GAAGo5B,UAAU1iC,WACfy8B,MAAQliB,OAAOkN,YAAYnR,QAC3BmmB,MAAMM,SAAWA,SACjB7W,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,gBAAgBtQ,QAC5DmQ,UAAY,WAGV,MAFAuC,QAAOif,cAAciD,OACrB7W,WAAW9K,WAAW,kBACfoL,eAAeI,UAExBvO,QAAU,WAIR,MAHAvW,UAASG,OAAO,SAChB86B,MAAM/C,SACNnf,OAAOif,cAAciD,OACdvW,eAAeI,UAEjBhM,MAAMgN,KAAKmV,OAAOt/B,KAAK6a,UAAWD,WAE1C/d,OACH4d,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OAGzC,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,aAGEvhB,IAAIO,KAAK,iBAAiBuqB,UAAU5gB,OAH3C,SAKFlK,IAAIc,GAAG,QAAS,YAAa,SAAS/Q,OACpC,GAAIo1B,UAAU5W,MAGd,OAFAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,cAGLhT,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B4a,SAAW5W,OAAOjlB,KAAK,eAChBomB,KAAKyV,WALZ,SAOFplB,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASwU,OACrC,MAAIA,OACKhd,OAAOgd,OADhB,SAIK9kB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,yBAA0B,aAAc,UAAW,aAAc,aAAc,YAAa,cAAe,WAAY29C,+BAExIK,gCAAkC,SAAS7vC,WAAYtL,MAAO9Y,SAAUy3B,QAASj8B,YAC/E,GAAI0a,KA4CJ,OA3CAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI+M,KAsCJ,OArCAA,MAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAASk7B,MAAO1U,aACrB,GAAI7mB,MAAM6W,QAASC,SAmBnB,OAlBA9W,OACEu2D,qBAAsBh7B,MAAM1qB,GAC5B9P,QAASw6B,MAAMx6B,QACfolB,QAASoV,MAAMpV,QACf1pB,YAAa8+B,MAAM9+B,YACnBmS,KAAM2sB,MAAM3sB,KACZ0qB,WAAYiC,MAAMjC,WAClBoK,aAAcnI,MAAMmI,cAEtB5sB,UAAY,WAGV,MAFA+P,aAAYzB,SACZ9kB,SAASG,OAAO,WACTikB,WAAW9K,WAAW,gCAE/B/C,QAAU,WAER,MADAgQ,aAAYzB,SACL9kB,SAASG,OAAO,UAElB2Y,MAAM8L,OAAO,cAAellB,MAAM/D,KAAK6a,UAAWD,WAE1D/d,OACH4d,IAAIc,GAAG,QAAS,IAAK,SAAS/Q,OAC5B,GAAI80B,OAAOrjB,QAASuhB,SAAUj9B,KAM9B,OALAiK,OAAM2Q,iBACNmkB,MAAQliB,OAAOkN,YACf/pB,MAAQV,WAAW0E,QAAQ,gCAC3B0X,QAAUpc,WAAW0E,QAAQ,kCAC7Bi5B,SAAW8B,MAAMpV,QACV7lB,SAAS84B,IAAI58B,MAAOi9B,SAAUvhB,SAASjc,KAAK,SAAUoE,OAC3D,MAAO,UAAS5B,UACd,MAAO2nB,MAAKmV,MAAO98B,YAEpB3F,SAEE2d,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIbpB,SAAU,KACV0Q,QAAS,UACT5qB,YAAa,wCACboa,KAAMA,OAIV9d,OAAO6d,UAAU,4BAA6B,aAAc,UAAW,aAAc,YAAa,aAAcg+C,mCAE/Gp4D,KAAKrD,MA2BR,WACE,GAAI09D,2BAA2BC,qBAAsBvtD,SAAUE,SAAU1Q,OAAQG,KAEjFA,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,eAExB+9D,qBAAuB,SAASr9C,MAAO9Y,SAAU2D,WAAYs4B,gBAAiB3X,SAAU/oB,GAAIw+B,oBAC1F,GAAI7jB,KAkEJ,OAjEAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIy1B,kBAAkBE,kBAAmB11B,KAAM41B,iBAAkBz1B,OAAQgO,YA8DzE,OA7DAnO,MAAOF,IAAIO,KAAK,QAAQnT,YACxB2S,OAAO8kB,SACP9kB,OAAO4vB,YAAcryB,UAAU24B,OAC/Bl2B,OAAO7R,IAAI,gBAAiB,SAASmB,IAAKhF,SAKxC,MAJA6V,MAAKm2B,QACLP,mBACA91B,IAAIO,KAAK,cAAcnS,IAAI,IAC3By3B,gBAAgB3b,KAAKlK,KACdD,OAAO8kB,OACZx6B,QAASA,QAAQ8P,GACjBsV,QAAS,GACTxnB,OAAQoC,QAAQ21D,qBAChBp0D,KAAMvB,QAAQ41D,mBACd96B,SAAU96B,QAAQ61D,iBAClB76B,SAAUh7B,QAAQ81D,iBAClBjoD,WAGJ6H,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEb40B,kBAAoB,SAASz9B,KAC3B,GAAIisB,SAIJ,OAHAA,UAAW3hC,EAAEC,IAAIgzC,iBAAiBl8B,OAAQ,SAAS08B,YACjD,MAAOvS,oBAAmB6S,OAAON,WAAWnS,KAAM5rB,IAAIgC,GAAI4F,OAAO8kB,MAAMx6B,QAAS,WAE3ElF,GAAGsV,IAAI2pB,WAEhBsR,iBAAmBp4B,UAAU24B,OAC7BH,iBAAmB,WAEjB,MADAJ,kBAAmBp4B,UAAU24B,OACtBl2B,OAAO4vB,YAAcryB,UAAU24B,QAExCl2B,OAAOikB,cAAgB,SAASkS,YAC9B,MAAOR,kBAAmBA,iBAAiB5sC,KAAKotC,aAElD71B,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAM8L,OAAO,SAAUzO,OAAO8kB,OACxCr/B,QAAQD,KAAK,SAAS+D,MACpB,MAAOssC,mBAAkBtsC,QAE3B9D,QAAQD,KAAK,SAAS+D,MAIpB,MAHAglB,gBAAeI,SACfnhB,WAAW2V,WAAW,wBAAyB5Z,MAC/Cu8B,gBAAgBxZ,MAAMrM,KACfpW,SAASG,OAAO,aAElBvE,QAAQD,KAAK,KAAM,WAExB,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,YAhBzB,SAmBD3H,OACHisB,aAAerO,IAAIO,KAAK,kBACjBP,IAAIc,GAAG,SAAU,OAAQT,UAGhCP,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,UAAW,aAAc,aAAc,kBAAmB,aAAc,KAAM,uBAAwBkgD,uBAE3ID,0BAA4B,SAASp9C,MAAOoO,IAAKlnB,SAAU2D,WAAY2gB,SAAU2X,iBAC/E,GAAI/lB,KA4CJ,OA3CAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,GAAI3d,MAAMG,OAAQgO,YAsClB,OArCAnO,MAAO,KACPH,OAAO7R,IAAI,iBAAkB,SAASmB,IAAKwL,UAAW5S,QAKpD,MAJIiY,OACFA,KAAKm2B,QAEPxQ,gBAAgB3b,KAAKlK,KACdD,OAAO,QACZlF,UAAWA,UACX+7B,KAAM,MAGVv2B,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgBhlB,KAAMuR,UAAWrV,OAGrC,OAFAuK,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjD3G,KAAOyW,OAAO,OAAO62B,KACrB/7B,UAAYkF,OAAO,OAAOlF,UAC1BrV,QAAUsrB,IAAI8E,OAAOihB,WAAWh8B,UAAWvR,MAC3C9D,QAAQD,KAAK,SAASwQ,QAIpB,MAHAuY,gBAAeI,SACfnhB,WAAW2V,WAAW,wBAAyBnN,QAC/C8vB,gBAAgBxZ,MAAMrM,KACfpW,SAASG,OAAO,aAElBvE,QAAQD,KAAK,KAAM,WAExB,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,YAfzB,SAkBD3H,OACHisB,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,wBAAyB,UAAW,eAAgB,aAAc,aAAc,aAAc,kBAAmBigD,6BAEjIr6D,KAAKrD,MA2BR,WACE,GAAIg+D,uCAAuCC,kCAAmCC,iBAAkBC,gBAAiBC,uBAAwBhuD,SAAUG,gBAAiBE,QAASE,QAASC,MAAOhR,OAAQqR,WAAYlR,MAAOqR,SAAUE,KAChOjC,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,aAChE5M,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBU,KAAOtR,KAAKD,MAAMuR,KAElBF,SAAWpR,KAAKD,MAAMqR,SAEtBT,QAAU3Q,KAAKD,MAAM4Q,QAErBF,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBG,gBAAkBvQ,KAAKD,MAAMwQ,gBAE7BU,WAAajR,KAAKD,MAAMkR,WAExBrR,OAASgD,QAAQhD,OAAO,eAExBs+D,iBAAmB,SAAUxuD,YAK3B,QAASwuD,kBAAiB7rD,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAImC,KAAMvW,OAAQ6L,EAAGF,SAAUtE,eAAgBuE,QAASkzC,OAAQC,UAAWvoC,WACpI,GAAItB,SAAShW,OAkBb,OAjBApD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKya,KAAOA,KACZza,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAKuL,eAAiBA,eACtBvL,KAAK8P,QAAUA,QACf9P,KAAKgjD,OAASA,OACdhjD,KAAKijD,UAAYA,UACjBjjD,KAAK0a,UAAYA,UACjB1a,KAAKq+D,WAAahvD,KAAKrP,KAAKq+D,WAAYr+D,MACxCA,KAAKqS,MAAMokB,YAAc,SACzBz2B,KAAKqS,MAAM+G,WACP/Y,EAAEmZ,QAAQxZ,KAAK6P,SAASxJ,WAC1B+S,QAAUpZ,KAAKsY,GAAGkb,OAAO8qC,WAAWt+D,KAAKkE,OAAOC,OAChDiV,QAAQ8hB,KAAO,EACfl7B,KAAK6P,SAASxJ,OAAO+S,aACrBpZ,MAAK6P,SAAS5J,YAGhB7C,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAQjB,OAPAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,qBAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAMmT,UAAUhT,QAAQ,2BACpCivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,KACjC4jB,mBAAoBrvB,MAAM8K,MAAMpK,QAAQtE,cAEnC4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,WAChDA,MAAKqS,MAAMvG,IAAI,wBAAyB,SAAUvE,OAChD,MAAO,YAEL,MADAA,OAAM07C,UAAUjkC,WAAW,QAAS,SAAU,8BAA+B,GACtEzX,MAAM82D,eAEdr+D,QAuTL,MAzWA6C,QAAOq7D,iBAAkBxuD,YAEzBwuD,iBAAiB9jD,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,UAAW,eAAgB,KAAM,cAAe,mBAAoB,aAAc,YAAa,eAAgB,cAmD5M8jD,iBAAiBhvD,UAAU20C,uBAAyB,WAClD,GAAIz4B,WAEJ,OADAA,YAAa,mBAAqBprB,KAAKqS,MAAMoG,UAAY,UAClDzY,KAAKgjD,OAAO74B,UAAUnqB,KAAKqS,MAAO+Y,WAAY,SAAU7jB,OAC7D,MAAO,UAAS6X,SACd,MAAO7X,OAAM82D,eAEdr+D,QAGLk+D,iBAAiBhvD,UAAUqvD,aAAe,WACxC,MAAOv+D,MAAKsY,GAAGkb,OAAO+qC,aAAav+D,KAAKkE,OAAOC,MAAOnE,KAAK6P,SAASxJ,WAGtE63D,iBAAiBhvD,UAAUioB,YAAc,WACvC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAuBd,MAtBKA,SAAQof,qBACX9f,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAMglB,gBAAkB5mB,QAAQxI,QAAQqvB,eAAgB,SAAS/2B,GACrE,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMmsD,gBAAkBn+D,EAAEwX,OAAO5P,QAAQqvB,eAAgB,SAC/D/vB,MAAM8K,MAAMolB,aAAehnB,QAAQxI,QAAQqqB,WAAY,SAAS/xB,GAC9D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMoqD,aAAep8D,EAAEwX,OAAO5P,QAAQqqB,WAAY,SACxD/qB,MAAM8K,MAAMqlB,aAAejnB,QAAQxI,QAAQoqB,WAAY,SAAS9xB,GAC9D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMqqD,aAAer8D,EAAEwX,OAAO5P,QAAQoqB,WAAY,SACxD9qB,MAAM8K,MAAMosD,WAAap+D,EAAEwX,OAAO5P,QAAQs0D,YAAa,SACvDh1D,MAAM8K,MAAMswB,cAAgBlyB,QAAQxI,QAAQs0D,YAAa,SAASh8D,GAChE,MAAOA,GAAEwX,KAEJ9P,UAERjI,QAGLk+D,iBAAiBhvD,UAAUy2C,cAAgB,WACzC,GAAIvsC,QAKJ,OAJAA,SAAU/Y,EAAEonD,KAAKznD,KAAK6P,SAASxJ,SAAU,OAAQ,OAAQ,SAAU,QAAS,IAAK,aAAc,aAAc,aAAc,YAAa,WACnI+S,QAAQ8hB,OACX9hB,QAAQ8hB,KAAO,GAEV9hB,SAGT8kD,iBAAiBhvD,UAAUwvD,aAAe,SAAS1rD,MACjD,GAAIoG,QAEJ,OADAA,SAAU/Y,EAAEonD,KAAKznD,KAAK6P,SAASxJ,SAAU2M,MAClCoG,QAAQpG,OAGjBkrD,iBAAiBhvD,UAAUyvD,cAAgB,WACzC,MAAO3+D,MAAKsY,GAAGkb,OAAOorC,aAAa5+D,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OACtE,MAAO,UAAS6R,SACd,MAAO/Y,GAAEC,IAAI8Y,QAAS,SAAS9K,MAAOU,KACpC,OACE+I,GAAI/I,IACJgE,KAAMhE,IACNxF,KAAM,YACNy6B,UAAU,OAIfjkC,QAGLk+D,iBAAiBhvD,UAAU2vD,gCAAkC,WAC3D,GAAIC,eAAeC,eAAgBC,WAAYC,YAAaC,eAAgB3X,UAC5EuX,eAAgB9+D,KAAK6P,SAASxJ,SAC9BkhD,WAAavnD,KAAK2lD,eAClB,KAAKqZ,aAAczX,YACjB0X,YAAc1X,WAAWyX,YACN,SAAfA,YAAwC,YAAfA,YAA2C,MAAfA,aAIvDE,eADiB,SAAfF,WACe3+D,EAAEC,KAAK,GAAK2+D,aAAa5yD,MAAM,MAE/BhM,EAAEC,KAAK,GAAK2+D,aAAa5yD,MAAM,KAAM,SAAS9L,GAC7D,MAAU,SAANA,EACK,KAEA4kB,SAAS5kB,KAItBw+D,eAAiB1+D,EAAE8+D,aAAaD,eAAgB7+D,EAAEC,IAAIN,KAAKqS,MAAM+G,QAAQ4lD,YAAa,OAClFE,eAAe1yD,SAAWuyD,eAAevyD,QAC3CxM,KAAK6P,SAASxJ,OAAO24D,WAAYD,eAAep+D,QAGpD,OAAIm+D,iBAAkB9+D,KAAK6P,SAASxJ,SAC3BrG,KAAK6P,SAAS5J,UADvB,QAKFi4D,iBAAiBhvD,UAAU44C,oBAAsB,SAAS1uC,QAASmuC,YACjE,GAAIQ,YAAYzd,EAAGt7B,IAAK0E,IAAKV,KAAM+C,IAAK9C,IAAKosB,KAAM1mB,QAAS2uC,WAAYt7C,IAAKsC,KAC7Eg5C,eACAr0C,IAAM5S,EAAE2nD,KAAKT,WAAY,OAAQ,UACjC,KAAKv0C,OAAQC,KAMX,IALA3E,MAAQ2E,IAAID,MACY,MAApBs0C,WAAWt0C,QACbs0C,WAAWt0C,UAEbqsB,MAAQ,GAAK/wB,OAAOjC,MAAM,KACrBi+B,EAAI,EAAG52B,IAAM2rB,KAAK7yB,OAAYkH,IAAJ42B,EAASA,IACtCt+B,IAAMqzB,KAAKiL,GACXgd,WAAWt0C,MAAMhH,MAAO,CAG5B+7C,YAAa,SAASv+C,KAAMuO,IAC1B,MAAyB,OAApBuvC,WAAW99C,OAAkB89C,WAAW99C,MAAMuO,KAC1C,GAEF,GAETY,UACA,KAAK3J,MAAOoK,SACV9K,MAAQ8K,QAAQpK,KAChB2J,QAAQjS,KAAK,WACX,GAAIyhC,GAAGoC,KAAMid,QAEb,KADAA,YACKrf,EAAI,EAAGoC,KAAOj8B,MAAM9B,OAAY+9B,KAAJpC,EAAUA,IACzCpyB,IAAMzH,MAAM65B,GACZqf,SAAS9gD,KAAKqP,IAAIkuB,SAAW8jB,WAAWhyC,IAAIvM,KAAMuM,IAAIgC,KAAM,EAAO,OAErE,OAAOyvC,aAGX,OAAO7uC,UAGTulD,iBAAiBhvD,UAAU+nB,YAAc,WACvC,GAAIA,aAAa7zB,QAASmkD,UA0B1B,OAzBAA,YAAavnD,KAAK2lD,gBACd4B,WAAWx3C,IACb/P,KAAKqS,MAAMizC,SAAWiC,WAAWx3C,GAEnC3M,QAAUpD,KAAK2+D,gBAAgBx7D,KAAK,SAAUoE,OAC5C,MAAO,UAAS63D,WAEd,MADA73D,OAAM8K,MAAM+G,QAAQgmD,UAAYA,UACzBA,YAERp/D,OACHi3B,eACAA,YAAYhvB,QAAUjI,KAAKqS,MAAMoG,UACjCwe,YAAYnhB,KAAOyxC,WAAWzxC,KAC9BmhB,YAAYpxB,OAAS0hD,WAAW1hD,OAChCoxB,YAAYlnB,EAAIw3C,WAAWx3C,EAC3BknB,YAAYooC,MAAQ9X,WAAW8X,MAC/BpoC,YAAY3E,WAAai1B,WAAWj1B,WACpC2E,YAAY5E,WAAak1B,WAAWl1B,WACpC4E,YAAY5I,YAAck5B,WAAW+X,WACrCroC,YAAY6H,MAAQyoB,WAAWgY,UAC/Bn8D,QAAUA,QAAQD,KAAK,SAAUoE,OAC/B,MAAO,YACL,MAAOA,OAAM+Q,GAAGkb,OAAOk0B,YAAYzwB,eAEpCj3B,OACIoD,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASL,MACd,GAAIygD,sBAAsBC,iBAAkB4X,kBAyC5C,OAxCAA,oBAAqB,SAAShoD,MAAOhO,KAAMi2D,eACzC,GAAIC,iBAAiBC,WAerB,OAdAD,iBAAkBr/D,EAAEC,IAAIkX,MAAO,SAASsf,GAGtC,MAFAA,GAAEttB,KAAOA,KACTstB,EAAE9jB,KAAO8jB,EAAE8oC,UAAY9oC,EAAE8oC,UAAYH,cAC9B3oC,IAET6oC,YAAct/D,EAAE0b,OAAO2jD,gBAAiB,SAASG,GAC/C,OAAQA,EAAE9nD,KAEZ2nD,gBAAkBr/D,EAAEwX,OAAO6nD,gBAAiB,SAASG,GACnD,MAAOA,GAAE7sD,KAAKmiC,gBAEZwqB,YAAYnzD,OAAS,GACvBkzD,gBAAgBrN,QAAQsN,YAAY,IAE/BD,iBAET/X,qBAAuB,SAAS9jB,QAASr6B,KAAMq+C,YAC7C,MAAOxnD,GAAEC,IAAIujC,QAAS,SAAS/M,GAE7B,MADAA,GAAEttB,KAAOA,KACFstB,KAGX8wB,iBAAmB,SAAS9xC,MAC1B,MAAOzV,GAAEC,IAAIwV,KAAM,SAASghB,GAG1B,MAFAA,GAAE/e,GAAK+e,EAAE9jB,KACT8jB,EAAEttB,KAAO,OACFstB,KAGXvvB,MAAM8K,MAAM+G,QAAQvT,OAAS8hD,qBAAqBzgD,KAAKuwC,SAAU,SAAUlwC,MAAM8K,MAAMglB,iBACvF9vB,MAAM8K,MAAM+G,QAAQkZ,WAAaq1B,qBAAqBzgD,KAAKorB,WAAY,aAAc/qB,MAAM8K,MAAMolB,cACjGlwB,MAAM8K,MAAM+G,QAAQiZ,WAAas1B,qBAAqBzgD,KAAKmrB,WAAY,aAAc9qB,MAAM8K,MAAMqlB,cACjGnwB,MAAM8K,MAAM+G,QAAQkmD,WAAaE,mBAAmBt4D,KAAKmnB,YAAa,aAAc,cACpF9mB,MAAM8K,MAAM+G,QAAQmmD,UAAYC,mBAAmBt4D,KAAK44D,OAAQ,YAAa,WAC7Ev4D,MAAM8K,MAAM+G,QAAQimD,MAAQ1X,qBAAqBzgD,KAAKm4D,MAAO,QAAS93D,MAAM8K,MAAMswB,eAClFp7B,MAAM8K,MAAM+G,QAAQtD,KAAO8xC,iBAAiB1gD,KAAK4O,MACjDvO,MAAMs3D,kCACNt3D,MAAMugD,oBAAoBvgD,MAAM8K,MAAM+G,QAASmuC,YACxChgD,MAAM8S,UAAUyG,WAAW,iBAAkBvZ,MAAM8K,MAAM+G,WAEjEpZ,QAGLk+D,iBAAiBhvD,UAAU6wD,mBAAqB,EAEhD7B,iBAAiBhvD,UAAUmvD,WAAa,WACtC,GAAIrrD,MAAM5P,QAAS6P,IAAKg1B,MACxBjoC,MAAKqS,MAAM2tD,WAAahgE,KAAK2lD,gBAC7B3lD,KAAKqS,MAAMqzC,cACXzyC,IAAMjT,KAAKqS,MAAM2tD,UACjB,KAAKhtD,OAAQC,KACXg1B,OAASh1B,IAAID,MACA,eAATA,KACFA,KAAO,WACW,YAATA,KACTA,KAAO,WACW,eAATA,KACTA,KAAO,WACW,eAATA,KACTA,KAAO,cACW,cAATA,KACTA,KAAO,QACW,WAATA,KACTA,KAAO,SACW,UAATA,OACTA,KAAO,QAEThT,KAAKqS,MAAMqzC,WAAW1yC,MAAQi1B,MAgBhC,OAdA7kC,SAAUpD,KAAKsY,GAAGkb,OAAOzE,KAAK/uB,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAMqzC,YAC/D1lD,KAAK+/D,oBAAsB,EAC3B38D,QAAQ86C,MAAQl+C,KAAK+/D,mBACrB38D,QAAQD,KAAK,SAAUoE,OACrB,MAAO,UAASL,MAOd,MANI9D,SAAQ86C,QAAU32C,MAAMw4D,qBAC1Bx4D,MAAM8K,MAAMmhB,OAAStsB,KAAK+4D,OAC1B14D,MAAM8K,MAAM6oB,KAAOh0B,KAAK2jD,QACxBtjD,MAAM8K,MAAM2tC,MAAQ94C,KAAK84C,MACzBz4C,MAAM8K,MAAM6tD,YAAch5D,KAAKg5D,aAE1Bh5D,OAERlH,OACIoD,SAGT86D,iBAAiBhvD,UAAUwnB,gBAAkB,WAC3C,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,cACR/zB,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASU,SAId,MAHAV,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OACjDlQ,MAAMs8C,yBACNt8C,MAAM0vB,cACC1vB,MAAM82D,eAEdr+D,QAGLk+D,iBAAiBhvD,UAAUixD,qBAAuB,SAASC,WACzD,GAAIn9D,SAUJ,OATAA,UAAWjD,KAAK+P,EAAE7M,QAClBlD,KAAKsY,GAAGkb,OAAOorC,aAAa5+D,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OAC/D,MAAO,UAAS6R,SAEd,MADAA,SAAQgnD,WAAa74D,MAAMsI,SAASxJ,SAC7BkB,MAAM+Q,GAAGkb,OAAO6sC,eAAe94D,MAAM8K,MAAMoG,UAAWW,SAASjW,KAAK,WACzE,MAAOF,UAASN,cAGnB3C,OACIiD,SAASG,SAGlB86D,iBAAiBhvD,UAAUoxD,eAAiB,SAASxzD,QACnD,GAAI7J,SAUJ,OATAA,UAAWjD,KAAK+P,EAAE7M,QAClBlD,KAAKsY,GAAGkb,OAAOorC,aAAa5+D,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OAC/D,MAAO,UAAS6R,SAEd,aADOA,SAAQtM,QACRvF,MAAM+Q,GAAGkb,OAAO6sC,eAAe94D,MAAM8K,MAAMoG,UAAWW,SAASjW,KAAK,WACzE,MAAOF,UAASN,cAGnB3C,OACIiD,SAASG,SAGlB86D,iBAAiBhvD,UAAUqxD,YAAc,WACvC,MAAOvgE,MAAKqa,UAAUyG,WAAW,gBAAiB9gB,KAAKqS,MAAMpK,UAG/Di2D,iBAAiBhvD,UAAUsxD,gBAAkB,WAC3C,MAAOxgE,MAAKqa,UAAUyG,WAAW,iBAAkB9gB,KAAKqS,MAAMoG,YAGzDylD,kBAENttD,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,mBAAoB26D,kBAEtCC,gBAAkB,SAASjzD,KAAM3F,UAAWunB,UAAWD,UACrD,GAAInP,MAAM+iD,aAAcC,eAAgBrjD,QAmIxC,OAlIAA,UAAWyP,UAAU1nB,IAAI,8BAA8B,GACvDs7D,eAAiB,SAAS/iD,OAAQC,IAAKC,OAAQqR,OAC7C,GAAIyxC,QAAQC,aAAcC,QAASC,MAAOC,cAAeC,YAAaC,gBAmFtE,OAlFAL,cAAe,EACfG,cAAgB,EAChBF,QAAU,EACVC,MAAQ,EACRH,OAAS/iD,IAAIO,KAAK,qBAClB6iD,YAAc,WACZ,GAAIE,SAOJ,OANAA,UAAWvjD,OAAOqiC,MAAQriC,OAAOuiD,YAE/BgB,SADE/7C,SAAS+7C,SAAU,IAAMA,SAChB/7C,SAAS+7C,SAAU,IAAM,EAEzB/7C,SAAS+7C,SAAU,KAIlCD,iBAAmB,WACjB,GAAIE,OAAO5zC,KAAM7b,EAAG44B,EAAG42B,SAAUnU,QAASqU,MAAOnuD,GAEjD,IADAiuD,SAAWF,cACK,GAAZE,SAEF,WADAP,QAAO//B,MAUT,KAPA+/B,OAAOv2C,OACPg3C,SACArU,WACAA,QAAQqU,MAAQA,MAChBrU,QAAQsU,aAAe1jD,OAAOud,KAAO,EACrC6xB,QAAQuU,WAAa3jD,OAAOud,OAASgmC,UACrCC,MAAQxjD,OAAOud,KACVxpB,EAAI44B,EAAI,EAAGr3B,IAAMiuD,SAAejuD,KAAL,EAAgBA,KAALq3B,EAAWA,GAAKr3B,IAAKvB,EAASuB,KAAL,IAAaq3B,IAAMA,EACjF54B,IAAOyvD,MAAQP,cAAiBM,SAAYC,MAAQP,aAAeE,MACrEM,MAAM16D,MACJ6f,QAAS,OACT/c,KAAM,SAECkI,IAAOyvD,MAAQJ,eAAkBI,MAASN,QAAUE,cAC7DK,MAAM16D,MACJ6f,QAAS,OACT/c,KAAM,SAECkI,EAAKyvD,MAAQP,cAAuBM,SAAWJ,OAAjBpvD,GAEzByvD,MAAQJ,cAAbrvD,GAA+BA,EAAImvD,UAEnCnvD,IAAMyvD,MACfC,MAAM16D,MACJ6f,QAAS,SACT8hB,IAAK32B,EACLlI,KAAM,gBAGR43D,MAAM16D,MACJ6f,QAAS,OACT8hB,IAAK32B,EACLlI,KAAM,SAMZ,OAFA+jB,MAAOlQ,SAAS0vC,SAChBx/B,KAAOV,SAASU,MAAM5P,QACfgjD,OAAOpzC,KAAKA,OAErB5P,OAAOjL,OAAO,SAAU,SAASpE,OAC/B,MAAKA,OAGE2yD,mBAHP,SAKFrjD,IAAIc,GAAG,QAAS,2BAA4B,SAAS/Q,OAEnD,MADAA,OAAM2Q,iBACCX,OAAO1J,OAAO,WAEnB,MADAib,OAAMtW,aAAa,OAAQ+E,OAAOud,KAAO,GAClChM,MAAMmvC,iBAGjBzgD,IAAIc,GAAG,QAAS,+BAAgC,SAAS/Q,OAEvD,MADAA,OAAM2Q,iBACCX,OAAO1J,OAAO,WAEnB,MADAib,OAAMtW,aAAa,OAAQ+E,OAAOud,KAAO,GAClChM,MAAMmvC,iBAGVzgD,IAAIc,GAAG,QAAS,gCAAiC,SAAS/Q,OAC/D,GAAI4zD,SAASp1C,MAIb,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/Bo5C,QAAUp1C,OAAOjlB,KAAK,WACfyW,OAAO1J,OAAO,WAEnB,MADAib,OAAMtW,aAAa,OAAQ2oD,SACpBryC,MAAMmvC,kBAInBoC,aAAe,SAAS9iD,OAAQC,IAAKC,OAAQqR,OAC3C,GAAIsyC,gBAAgBC,aAAcv9B,IAOlC,OANAu9B,cAAevyC,MAAMwvC,aAAa,YAAc,eAC5C+C,eACFv9B,KAAOjzB,WAAWwwD,aAAc,KAAO,gBAAkB,oBACzDD,eAAiB5jD,IAAIO,KAAK,oCAAuC7M,KAAKmwD,aAAc,KAAQ,MAC5FD,eAAej0C,KAAMi0C,eAAej0C,OAAU,qBAAuB2W,KAAO,cAEvEtmB,IAAIc,GAAG,QAAS,mBAAoB,SAAS/Q,OAClD,GAAI+zD,YAAYC,SAAUx1C,MAK1B,OAJAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/Bs5C,aAAevyC,MAAMwvC,aAAa,WAClCiD,SAAWx1C,OAAOjlB,KAAK,aACvBw6D,WAAaD,eAAiBE,SAAW,IAAMA,SAAWA,SACnDhkD,OAAO1J,OAAO,WAGnB,MAFAib,OAAMhW,cAAc,UAAWwoD,YAC/BxyC,MAAMqvC,eACCrvC,MAAMmvC,aAAal7D,KAAK,WAG7B,MAFAya,KAAIO,KAAK,gCAAgCpC,SACzCmoB,KAAOjzB,WAAWywD,WAAY,KAAO,gBAAkB,oBAChDv1C,OAAOoB,KAAMpB,OAAOoB,OAAU,qBAAuB2W,KAAO,oBAK3ExmB,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,MAIJ,OAHAA,OAAQtR,IAAIra,aACZk9D,aAAa9iD,OAAQC,IAAKC,OAAQqR,OAClCwxC,eAAe/iD,OAAQC,IAAKC,OAAQqR,OAC7BvR,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,YAAa,OAAQ,cAAe,cAAe,WAAY0gD,kBAEhFC,uBAAyB,SAASr7D,GAAImI,KAAM3F,UAAWmpB,IAAKlnB,SAAUskB,SAAUgB,UAAW9pB,WAAY6pB,SAAUzhB,OAC/G,GAAIsS,MAAML,SAAU6iC,gBA0QpB,OAzQA7iC,UAAWyP,UAAU1nB,IAAI,6BAA6B,GACtD86C,iBAAmBpzB,UAAU1nB,IAAI,sCAAsC,GACvEsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOkxB,eAAgBC,0BAA2BuhB,aAAcrhB,cAAeC,sBAAuBC,cAAeC,gBAAiBC,eAAgBC,YAAaC,sBAAuBghB,aA+N9L,OA9NA3yC,OAAQtR,IAAIqrB,QAAQ,YAAY1lC,aAChCm9C,mBACAE,YAAc,SAASl9C,MAAO8F,MAK5B,MAJAoU,KAAIO,KAAK,iBAAiByiB,OAC1BhjB,IAAIO,KAAK,gBAAgBwH,YAAY,UACrC/H,IAAIO,KAAK,eAAewH,YAAY,UACpC/H,IAAIO,KAAK,wBAAwBoP,KAAK7pB,OAC/Bka,IAAIO,KAAK,wBAAwB2hC,KAAK,YAAat2C,OAE5Dm3C,eAAiB,WAGf,MAFA/iC,KAAIO,KAAK,iBAAiBiM,OAC1BxM,IAAIO,KAAK,gBAAgB2H,SAAS,UAC3BlI,IAAIO,KAAK,eAAe2H,SAAS,WAE1Cu6B,0BAA4B,SAASjnC,SACnC,GAAIkxB,GAAG52B,IAAKV,KAAMhH,IAAKi8B,MACvByY,mBACA,KAAK1tC,OAAQoG,SAEX,IADA6uB,OAAS7uB,QAAQpG,MACZs3B,EAAI,EAAG52B,IAAMu0B,OAAOz7B,OAAYkH,IAAJ42B,EAASA,IACxCt+B,IAAMi8B,OAAOqC,GACTt+B,IAAIi4B,UACNyc,gBAAgBh6C,KAAKsF,IAI3B,OAAOw0C,uBAAsBE,kBAE/BF,sBAAwB,SAASE,iBAC/B,GAAInzB,KAaJ,OAZAltB,GAAEyM,OAAO4zC,gBAAiB,SAAUn5C,OAClC,MAAO,UAASu5C,GACd,MAAIA,GAAEje,MACGie,EAAE9F,MAAQ,0BAA4B8F,EAAEje,MADjD,SAID7iC,OACHutB,KAAO2yB,kBACL9mC,QAASsnC,kBAEXnzB,KAAOV,SAASU,MAAM5P,QACtBC,IAAIO,KAAK,oBAAoBoP,KAAKA,MAC9BniB,MAAMoC,mBAAqBkzC,gBAAgBl0C,OAAS,EAC/CoR,IAAIO,KAAK,iBAAiBiM,OAE1BxM,IAAIO,KAAK,iBAAiByiB,QAGrC2f,cAAgB,SAASnnC,SACvB,GAAImU,KAYJ,OAXAltB,GAAEyM,OAAOsM,QAAS,SAAU7R,OAC1B,MAAO,UAASu5C,GACd,MAAIA,GAAEje,MACGie,EAAE9F,MAAQ,0BAA4B8F,EAAEje,MADjD,SAID7iC,OACHutB,KAAOlQ,UACLjE,QAASA,UAEXmU,KAAOV,SAASU,MAAM5P,QACfC,IAAIO,KAAK,gBAAgBoP,KAAKA,OAEvC6yB,eAAiB,WACf,MAAOxiC,KAAIO,KAAK,qBAAqB2hC,KAAK,cAE5C8hB,aAAe,WACb,GAAIzhB,mBAEJ,OADAA,oBAAqBC,iBACdr9C,GAAGsV,KAAK6W,MAAMmvC,aAAcnvC,MAAM+H,gBAAgB9zB,KAAK,WAC5D,GAAIiW,QAEJ,OADAA,SAAUuE,OAAOvE,QAAQ+mC,oBAClBI,cAAclgD,EAAEiG,OAAO8S,QAAS,gBAG3CynC,sBAAwB,SAASr3C,KAAMuO,IACrC,GAAIooC,oBAAoBrzC,OAAQg1D,SAAU1oD,OAC1C,OAAa,cAAT5P,MACFklB,IAAI8E,OAAOorC,aAAajhD,OAAOlF,WAAWtV,KAAK,SAAS+D,MACtD,GAAIkS,SAASgmD,SAQb,OAPAA,WAAYl4D,KACZkS,QAAUgmD,UAAUrnD,IACpBqB,QAAQ8hB,KAAO,EACfhM,MAAM/V,kBAAkBC,SACxB8V,MAAMqvC,eACNrvC,MAAMmvC,aACNnvC,MAAM44B,oBAAoBnqC,OAAOvE,QAASA,SACnCinC,0BAA0B1iC,OAAOvE,WAEnC,OAETA,QAAUuE,OAAOvE,QAAQ5P,MACzBs4D,SAAoB,SAATt4D,KAAkBzJ,MAAMqR,SAAS2G,IAAMA,GAClDjL,OAASzM,EAAE8d,KAAK/E,SACdrB,GAAI+pD,WAENh1D,OAAOm3B,UAAYn3B,OAAOm3B,SACf,OAAPlsB,KACFA,GAAK,QAEHjL,OAAOm3B,UACTyc,gBAAgBh6C,KAAKoG,QACrBoiB,MAAMtW,aAAapP,KAAMuO,IACzBmX,MAAMtW,aAAa,OAAQ,GAC3BsW,MAAMqvC,iBAEN7d,gBAAkBrgD,EAAEiG,OAAOo6C,gBAAiB,SAASI,GACnD,MAAOA,GAAE/oC,KAAOjL,OAAOiL,IAAM+oC,EAAEt3C,OAASsD,OAAOtD,OAEjD0lB,MAAM7V,eAAe7P,KAAMuO,IAC3BmX,MAAMtW,aAAa,OAAQ,GAC3BsW,MAAMqvC,gBAERqD,eACAphB,sBAAsBE,iBACtBP,mBAAqBC,iBACjB52C,OAAS22C,mBACJI,cAAclgD,EAAEiG,OAAO8S,QAAS,aADzC,SAIFuE,OAAO7R,IAAI,iBAAkB,SAASmB,IAAKmM,SACzC,MAAOinC,2BAA0BjnC,WAEnCuE,OAAO7R,IAAI,sBAAuB,SAASmB,IAAKmM,SAC9C,GAAImU,KAKJ,OAJAA,MAAOlQ,UACLjE,QAASA,QAAQvT,SAEnB0nB,KAAOV,SAASU,MAAM5P,QACfC,IAAIO,KAAK,gBAAgBoP,KAAKA,QAEvCkzB,cAAgBlwC,gBAAgB,IAAK,SAASjC,MAAOqtB,UACnD,MAAc,UAAVrtB,OAAoBA,QAAUqtB,UAGlCzM,MAAMhW,cAAc,OAAQ,MAAM,GACb,IAAjB5K,MAAM9B,QACR0iB,MAAMhW,cAAc,IAAK,MACzBgW,MAAMqvC,iBAENrvC,MAAMhW,cAAc,IAAK5K,OACzB4gB,MAAMqvC,gBAEDqD,gBAXP,SAaFC,cAAgBlkD,OAAOjL,OAAO,SAAU,SAASyE,UAC/C,MAAK9W,GAAEgU,YAAY8C,UAAnB,QACEwG,OAAOjL,OAAO,WAAY+tC,eACnBohB,mBAGXjkD,IAAIc,GAAG,QAAS,8BAA+B,SAAS/Q,OACtD,GAAImI,MAAMqW,MAKV,OAJAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BrS,KAAO6H,OAAOvE,QAAQ+S,OAAOjlB,KAAK,SAClCq5C,cAAclgD,EAAEiG,OAAOwP,KAAM,aACtB8qC,YAAYz0B,OAAO7Z,KAAK,SAAU6Z,OAAOjlB,KAAK,WAEvD0W,IAAIc,GAAG,QAAS,2DAA4D,SAAS/Q,OAEnF,MADAA,OAAM2Q,iBACCqiC,eAAe/iC,OAExBA,IAAIc,GAAG,QAAS,qBAAsB,SAAS/Q,OAC7C,GAAIoK,IAAIoU,OAAQ3iB,IAKhB,OAJAmE,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BpQ,GAAKoU,OAAOjlB,KAAK,OAAS,KAC1BsC,KAAO2iB,OAAOjlB,KAAK,QACZ25C,sBAAsBr3C,KAAMuO,MAErC6F,IAAIc,GAAG,QAAS,8BAA+B,SAAS/Q,OACtD,GAAIoK,IAAIoU,OAAQ3iB,IAShB,OARAmE,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BgE,OAAOokB,YAAY,UACnBx4B,GAAKoU,OAAOjlB,KAAK,OAAS,KAC1BsC,KAAO2iB,OAAOjlB,KAAK,QACN,cAATsC,MACF2iB,OAAOxG,YAAY,UAEdk7B,sBAAsBr3C,KAAMuO,MAErC6F,IAAIc,GAAG,QAAS,6CAA8C,SAAS/Q,OACrE,GAAIo0D,kBAAkB3iD,QAAS+M,OAAQzoB,KASvC,OARAiK,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B45C,iBAAmB51C,OAAOtd,SAAS3H,KAAK,MACxCxD,MAAQV,WAAW0E,QAAQ,uCAC3B0X,QAAUpc,WAAW0E,QAAQ,yCAC3Bq6D,iBAAkBA,mBAEbv6D,SAASsmB,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAS4qB,aACxD,GAAI3qB,QAaJ,OAZAA,SAAU8rB,MAAMoxC,eAAeyB,kBAC/B3+D,QAAQD,KAAK,WAOX,MANAC,SAAU8rB,MAAMyvC,gBAChBv7D,QAAQD,KAAK,SAASiW,SAGpB,MAFA2U,aAAYzB,SACZ3O,OAAOvE,QAAQgmD,UAAYhmD,QACpBmnC,cAAc5iC,OAAOvE,QAAQgmD,aAE/Bh8D,QAAQD,KAAK,KAAM,WACxB,MAAO4qB,aAAYzB,aAGhBlpB,QAAQD,KAAK,KAAM,WAExB,MADA4qB,aAAYzB,QAAO,GACZ9kB,SAASG,OAAO,eAI7BiW,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAOxC,MANAA,OAAM2Q,iBACNiiC,cAAc5iC,OAAOvE,QAAmB,WACxCwnC,YAAY,aAAc,aAC1BhjC,IAAIO,KAAK,iBAAiByiB,OAC1BhjB,IAAIO,KAAK,mBAAmBwH,YAAY,UACxC/H,IAAIO,KAAK,mBAAmBoO,QACrB5O,OAAO1J,WAET2J,IAAIc,GAAG,QAAS,kBAAmB,SAAS/Q,OACjD,GAAIue,gBAAgBk0C,UAAWh9D,QAAS+oB,MAExC,OADAxe,OAAM2Q,iBACgB,KAAlB3Q,MAAM6f,SACRrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/Bi4C,UAAYj0C,OAAOngB,MACnBkgB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,SAAStQ,QACrDzK,QAAU8rB,MAAMixC,qBAAqBC,WACrCh9D,QAAQD,KAAK,WACX,GAAI6+D,YAaJ,OAZAA,aAAc9yC,MAAMyvC,gBACpBqD,YAAY7+D,KAAK,SAASiW,SACxB,GAAI6oD,mBAQJ,OAPA/1C,gBAAeI,SACf3O,OAAOvE,QAAQgmD,UAAYhmD,QAC3B6oD,mBAAqBrkD,IAAIO,KAAK,wBAAwB2hC,KAAK,aAChC,cAAvBmiB,oBACF1hB,cAAc5iC,OAAOvE,QAAQgmD,WAE/BxhD,IAAIO,KAAK,mBAAmB2H,SAAS,UAC9BlI,IAAIO,KAAK,iBAAiBiM,SAE5B43C,YAAY7+D,KAAK,KAAM,WAE5B,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,QAAS,oCAG7BvE,QAAQD,KAAK,KAAM,WAGxB,MAFA+oB,gBAAeI,SACf1O,IAAIO,KAAK,mBAAmBnS,IAAIo0D,WAAW7zC,QAAQsB,SAC5CrmB,SAASG,OAAO,QAAS,uBAEP,KAAlBgG,MAAM6f,SACf5P,IAAIO,KAAK,mBAAmBnS,IAAI,IAChC4R,IAAIO,KAAK,mBAAmB2H,SAAS,UAC9BlI,IAAIO,KAAK,iBAAiBiM,QAH5B,WAQT1M,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,KAAM,OAAQ,cAAe,eAAgB,aAAc,aAAc,cAAe,aAAc,WAAY,UAAW2gD,yBAElKH,kCAAoC,SAAS39C,MAAOwM,UAAW3hB,YAa7D,GAAIuS,MAAMg6B,kBAAmBwqB,iBAuE7B,OAtEAxqB,mBAAoB5qB,UAAU1nB,IAAI,oDAAoD,GACtF88D,kBAAoB,SAAStkD,IAAK6kB,MAAOpL,iBACvC,GAAI8qC,gBAAgBC,qBAAsBv8D,MAI1C,OAHAu8D,sBAAuBxkD,IAAIO,KAAK,iBAChCgkD,eAAiBvkD,IAAIO,KAAK,oCAC1BtY,OAASwxB,gBAAgBoL,MAAM58B,QAC3BA,QACFs8D,eAAe5uD,KAAK1N,OAAOmN,MAC3BmvD,eAAeriB,KAAK,QAASj6C,OAAOmN,MAC7BovD,qBAAqB9jC,IAAI,QAASz4B,OAAOg9B,QAHlD,QAMFnlB,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOuT,KAqDX,OApDAvT,OAAQtR,IAAIra,aACZk/B,MAAQ9kB,OAAOlL,MAAMoL,OAAOwkD,4BAC5BzkD,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAGxC,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACCrkB,IAAIO,KAAK,eAAeuqB,UAAU5gB,SAE3ClK,IAAIc,GAAG,QAAS,UAAW,SAAS/Q,OAClC,GAAIb,QAAQw9B,EAAG52B,IAAKT,IAAKkZ,MAKzB,KAJAxe,MAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BlV,IAAM0K,OAAOvE,QAAQvT,OAChBykC,EAAI,EAAG52B,IAAMT,IAAIzG,OAAYkH,IAAJ42B,EAASA,IACrCx9B,OAASmG,IAAIq3B,GACTx9B,OAAOiL,KAAO0qB,MAAM58B,QACtBiH,OAAOkzC,OAMX,OAHAvd,OAAM58B,OAASsmB,OAAOjlB,KAAK,aAC3B0W,IAAIO,KAAK,eAAeuqB,UAAUze,QAClCi4C,kBAAkBtkD,IAAK6kB,MAAO9kB,OAAO0Z,iBAC9B1Z,OAAO1J,OAAO,WACnB,GAAIk0B,GAAGoC,KAAMlL,IAKb,KAJA/e,MAAMgN,KAAKmV,OAAOt/B,KAAK,WACrB,MAAO+rB,OAAMmvC,eAEfh/B,KAAO1hB,OAAOvE,QAAQvT,OACjBsiC,EAAI,EAAGoC,KAAOlL,KAAK7yB,OAAY+9B,KAAJpC,EAAUA,IACxCr7B,OAASuyB,KAAK8I,GACVr7B,OAAOiL,KAAO0qB,MAAM58B,QACtBiH,OAAOkzC,OAGX,OAAO70C,YAAW2V,WAAW,sBAAuBnD,OAAOvE,aAG/DrZ,MAAMqQ,SAASuN,OAAQ,UAAW,SAAS1V,SAKzC,MAJA2V,KAAIwK,OAAOsvB,mBACTD,SAAYxvC,QAAQqvB,kBAEtB4qC,kBAAkBtkD,IAAK6kB,MAAO9kB,OAAO0Z,iBACkB,KAAnDpvB,QAAQqe,eAAengB,QAAQ,iBACjCyX,IAAI+R,OAAO,SACJ/R,IAAIO,KAAK,KAAK2H,SAAS,kBAFhC,SAKFnI,OAAOjL,OAAOmL,OAAOwkD,2BAA4B,SAAU96D,OACzD,MAAO,UAASyE,KACd,MAAOk2D,mBAAkBtkD,IAAK5R,IAAK2R,OAAO0Z,mBAE3Cr3B,OACI2d,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,8BAA+B,UAAW,cAAe,aAAcwgD,oCAExFD,sCAAwC,SAAS19C,MAAOnV,WAAYnI,YAClE,GAAI0a,MAAML,QAgDV,OA/CAA,UAAWhd,EAAEgd,SAAS,sFACtBK,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOuT,MAAO6/B,WAyClB,OAxCAA,aAAc,SAAS7/B,OACrB,GAAIx1B,KAAKqiB,MAWT,OAVAriB,MACE+F,KAAMhQ,WAAW0E,QAAQ,mCACzB6nB,OAAQ,IAAMrvB,OAAOyI,SAAW,uBAElC2mB,OAAS3R,OAAO3F,UAAUyqB,MAAMpU,aAC5BiB,SACFriB,IAAI+F,KAAOsc,OAAOG,kBAClBxiB,IAAIsiB,OAASD,OAAOE,OAEtB5R,IAAIO,KAAK,WAAWoP,KAAKlQ,SAASpQ,MAC3B2Q,IAAIO,KAAK,qBAAqB7L,KAAK,QAASrF,IAAI+F,OAEzDkc,MAAQtR,IAAIra,aACZk/B,MAAQ9kB,OAAOlL,MAAMoL,OAAO0kD,gCAC5BD,YAAY7/B,OACZ7kB,IAAIc,GAAG,QAAS,oBAAqB,SAAS/Q,OAC5C,MAAOxC,YAAW2V,WAAW,kBAAmB2hB,SAElD1iC,MAAMqQ,SAASuN,OAAQ,UAAW,SAAS1V,SACzC,MAAuD,KAAnDA,QAAQqe,eAAengB,QAAQ,iBACjCyX,IAAI+R,OAAO,SACJ/R,IAAIO,KAAK,KAAK2H,SAAS,kBAFhC,SAKFnI,OAAO7R,IAAI,oBAAqB,SAAUvE,OACxC,MAAO,UAAS0F,IAAK2iB,OAAQ4yC,cAC3B,MAAIA,cAAazqD,KAAO0qB,MAAM1qB,IAC5ByqD,aAAan0C,YAAcuB,OAC3BtP,MAAMgN,KAAKk1C,cACJF,YAAYE,eAHrB,SAMDxiE,OACH2d,OAAOjL,OAAOmL,OAAO0kD,+BAAgC,SAAUh7D,OAC7D,MAAO,UAASyE,KACd,MAAOs2D,aAAYt2D,OAEpBhM,OACI2d,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,kCAAmC,UAAW,aAAc,aAAcugD,yCAE1F36D,KAAKrD,MA2BR,WACE,GAAIyiE,oCAAoCC,wBAAyBC,yBAA0BC,iCAAkCC,0BAA2B1yD,YAAaC,SAAUK,QAASG,MAAOhR,OAAQG,MACrM8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK;AAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBH,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBD,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,oBAExBijE,0BAA4B,SAAUnzD,YAKpC,QAASmzD,2BAA0BxwD,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAU2F,IAAKjK,eAAgBuE,QAASmzC,UAAWvoC,WACpI,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAKwV,IAAMA,IACXxV,KAAKuL,eAAiBA,eACtBvL,KAAK8P,QAAUA,QACf9P,KAAKijD,UAAYA,UACjBjjD,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMywD,MAAQ9iE,KAAKkE,OAAO6+D,MAC/B/iE,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,mBAChD1H,KAAKsjD,0BACLlgD,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YAEL,MADAA,OAAMgsD,WACChsD,MAAMq0D,8BAEd57D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OA2PlD,MAzRA6C,QAAOggE,0BAA2BnzD,YAElCmzD,0BAA0BzoD,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,OAAQ,mBAAoB,aAAc,eAAgB,cA+BrMyoD,0BAA0B3zD,UAAUqkD,SAAW,WAC7C,GAAIyP,aAAar/D,YAAas/D,mBAAoBhwD,IAAKvP,MAAOmwD,UAqB9D,OApBAA,YAAa7zD,KAAKqS,MAAMyc,MAAMtiB,OAC9Bw2D,YAAc3iE,EAAEyM,OAAO9M,KAAKqS,MAAMyc,MAAO,SAAUvnB,OACjD,MAAO,UAASuvB,GACd,MAAOvvB,OAAM8K,MAAMklB,eAAeT,EAAEjxB,QAAQonC,YAE7CjtC,OAAOwM,OACVy2D,mBAAqBpP,WAAa,EAAI5yD,KAAK49B,MAAM,IAAMmkC,YAAcnP,YAAc,EACnFnwD,MAAQ1D,KAAK0a,UAAUhT,QAAQ,iBAC7Bw7D,aAAc,IAAMljE,KAAKqS,MAAMoc,GAAGxb,IAClCkwD,iBAAkBnjE,KAAKqS,MAAMoc,GAAGpB,QAChCsJ,YAAa32B,KAAKqS,MAAMpK,QAAQ+K,OAElCrP,YAAc3D,KAAK0a,UAAUhT,QAAQ,uBACnC07D,iBAAyE,OAAtDnwD,IAAMjT,KAAKqS,MAAM2pD,WAAWh8D,KAAKqS,MAAMoc,GAAG5oB,SAAmBoN,IAAID,KAAO,SAAW,KACtGqwD,gBAAiBrjE,KAAKqS,MAAMoc,GAAGmQ,aAC/B0kC,qBAAsB1gE,QAAQwE,QAAQpH,KAAKqS,MAAMoc,GAAGic,kBAAoB,IAAIn3B,OAC5EgwD,qBAAsBP,YACtBQ,oBAAqB3P,WACrB4P,4BAA6BR,qBAExBjjE,KAAKuL,eAAe0C,OAAOvK,MAAOC,cAG3Ck/D,0BAA0B3zD,UAAUo0C,wBAA0B,WAkB5D,MAjBAtjD,MAAKqS,MAAMvG,IAAI,uBAAwB,SAAUvE,OAC/C,MAAO,YACL,GAAIm8D,UAKJ,OAJAn8D,OAAM8K,MAAMyc,MAAQzuB,EAAEic,MAAM/U,MAAM8K,MAAMyc,OAAO,GAC/C40C,UAAYrjE,EAAEiM,MAAM/E,MAAM8K,MAAMyc,MAAO,SAAS1B,MAC9C,MAAOA,MAAK6f,YAEV1lC,MAAM8K,MAAMoc,GAAGwe,YAAcy2B,UACxBn8D,MAAMo8D,SADf,SAID3jE,OACHA,KAAKqS,MAAMvG,IAAI,oBAAqB,SAAUvE,OAC5C,MAAO,YACL,MAAOA,OAAM07C,UAAUjkC,WAAW,aAAc,SAAU,iCAAkC,KAE7Fhf,OACIA,KAAKqS,MAAMvG,IAAI,cAAe,SAAUvE,OAC7C,MAAO,YACL,MAAOA,OAAMo8D,WAEd3jE,QAGL6iE,0BAA0B3zD,UAAU0sD,0BAA4B,WAC9D,GAAI3uD,IAKJ,OAJAA,MACEhF,QAASjI,KAAKqS,MAAMpK,QAAQgf,MAE9BjnB,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,UAAWsK,KACzDjN,KAAKqS,MAAMpK,QAAQif,qBACjBlnB,KAAKqS,MAAMoc,GAAG0e,WAChBlgC,IAAIuxB,OAASx+B,KAAKqS,MAAMmsB,OAAOvX,KACxBjnB,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,oBAAqBsK,MAEvEjN,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,kBAAmBsK,KAErEjN,KAAKqS,MAAMpK,QAAQkf,oBACrBnnB,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,iBAAkBsK,KADtE,QAKT41D,0BAA0B3zD,UAAUioB,YAAc,WAChD,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAed,MAdAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAM2hC,WAAa/rC,QAAQ2vB,YACjCrwB,MAAM8K,MAAM2pD,WAAavrD,QAAQxI,QAAQ2vB,YAAa,SAASr3B,GAC7D,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAMklB,eAAiB9mB,QAAQxI,QAAQuvB,cAAe,SAASj3B,GACnE,MAAOA,GAAEwX,KAEXxQ,MAAM8K,MAAM+hD,WAAa/zD,EAAEwX,OAAO5P,QAAQgqB,OAAQ,SAClD1qB,MAAM8K,MAAM01B,WAAat3B,QAAQlJ,MAAM8K,MAAM+hD,WAAY,SAASpnD,GAChE,MAAOA,GAAE+K,KAEJ9P,UAERjI,QAGL6iE,0BAA0B3zD,UAAUy0D,OAAS,WAC3C,GAAIje,YAAYke,YAAaz2B,UAAW02B,WAuBxC,OAtBAne,YAAarlD,EAAEonD,KAAKznD,KAAK6P,SAASxJ,SAAU,YAAa,eAAgB,iBACzE8mC,UAAYuY,WAAWvY,UACnBA,WACFntC,KAAKsY,GAAGka,YAAYozB,iBAAiB5lD,KAAKqS,MAAMoG,WAC9C00B,UAAWA,UACX22B,SAAU,iBAGdD,YAAcne,WAAW,gBACrBme,aACF7jE,KAAKsY,GAAGka,YAAYozB,iBAAiB5lD,KAAKqS,MAAMoG,WAC9C00B,UAAW,OACX22B,SAAU,kBAGdF,YAAcle,WAAW,iBACrBke,aACF5jE,KAAKsY,GAAGka,YAAYozB,iBAAiB5lD,KAAKqS,MAAMoG,WAC9C5S,OAAQ+9D,YACRE,SAAU,iBAGP9jE,KAAKsY,GAAGka,YAAY41B,SAASpoD,KAAKqS,MAAMoG,UAAWzY,KAAKkE,OAAO6+D,OAAO5/D,KAAK,SAAUoE,OAC1F,MAAO,UAASknB,IACd,GAAIxhB,KAAKgG,IAAKosB,IAkBd,OAjBA93B,OAAM8K,MAAMoc,GAAKA,GACjBlnB,MAAM8K,MAAM2c,KAAOP,GAAG1W,GACtBxQ,MAAM8K,MAAMuqD,aAAenuC,GACmD,OAA5B,OAA5Cxb,IAAM1L,MAAM8K,MAAMoc,GAAGouC,UAAUC,UAAoB7pD,IAAIA,IAAM,UACjEhG,KACEhF,QAASV,MAAM8K,MAAMpK,QAAQgf,KAC7BhU,IAAK1L,MAAM8K,MAAMoc,GAAGouC,UAAUC,SAAS7pD,KAEzC1L,MAAM8K,MAAM0qD,YAAcx1D,MAAMuI,QAAQnN,QAAQ,6BAA8BsK,MAEJ,OAA7B,OAAzCoyB,KAAO93B,MAAM8K,MAAMoc,GAAGouC,UAAUjvD,MAAgByxB,KAAKpsB,IAAM,UAC/DhG,KACEhF,QAASV,MAAM8K,MAAMpK,QAAQgf,KAC7BhU,IAAK1L,MAAM8K,MAAMoc,GAAGouC,UAAUjvD,KAAKqF,KAErC1L,MAAM8K,MAAMzM,QAAU2B,MAAMuI,QAAQnN,QAAQ,6BAA8BsK,MAErEwhB,KAERzuB,QAGL6iE,0BAA0B3zD,UAAUilD,WAAa,WAC/C,MAAIn0D,MAAKqS,MAAMoc,GAAG0e,UACTntC,KAAKsY,GAAG2pC,QAAQ78C,IAAIpF,KAAKqS,MAAMoc,GAAGxmB,QAASjI,KAAKqS,MAAMoc,GAAG0e,WAAWhqC,KAAK,SAAUoE,OACxF,MAAO,UAASi3B,QAEd,MADAj3B,OAAM8K,MAAMmsB,OAASA,OACdA,SAERx+B,OANL,QAUF6iE,0BAA0B3zD,UAAU2f,UAAY,WAC9C,MAAO7uB,MAAKsY,GAAGwW,MAAMC,KAAK/uB,KAAKqS,MAAMoG,UAAW,KAAMzY,KAAKqS,MAAM2c,MAAM7rB,KAAK,SAAUoE,OACpF,MAAO,UAASunB,OAEd,MADAvnB,OAAM8K,MAAMyc,MAAQA,MACbA,QAER9uB,QAGL6iE,0BAA0B3zD,UAAUwnB,gBAAkB,WACpD,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,cACR/zB,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASU,SAEd,MADAV,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OAC1ClQ,MAAMo8D,SAASxgE,KAAK,WACzB,MAAOoE,OAAMwI,EAAEsI,KAAK9Q,MAAM4sD,aAAc5sD,MAAMsnB,kBAGjD7uB,QASL6iE,0BAA0B3zD,UAAU8tD,SAAW,WAC7C,GAAIj/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMo8D,SACCp8D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGka,YAAYyqC,OAAOj9D,KAAKqS,MAAM2c,MAAM7rB,KAAK6a,UAAWD,UAGrE8kD,0BAA0B3zD,UAAUguD,WAAa,WAC/C,GAAIn/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMo8D,SACCp8D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGka,YAAY2qC,SAASn9D,KAAKqS,MAAM2c,MAAM7rB,KAAK6a,UAAWD,UASvE8kD,0BAA0B3zD,UAAUkuD,QAAU,WAC5C,GAAIr/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMo8D,SACCp8D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGka,YAAY6gB,MAAMrzC,KAAKqS,MAAM2c,MAAM7rB,KAAK6a,UAAWD,UAGpE8kD,0BAA0B3zD,UAAUmuD,UAAY,WAC9C,GAAIt/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMo8D,SACCp8D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGka,YAAY3M,QAAQ7lB,KAAKqS,MAAM2c,MAAM7rB,KAAK6a,UAAWD,UAG/D8kD,2BAENjyD,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,4BAA6Bs/D,2BAE/CF,yBAA2B,SAAS71C,UAAWD,UAC7C,GAAInP,MAAML,QAuBV,OAtBAA,UAAWyP,UAAU1nB,IAAI,yCAAyC,GAClEsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4H,OAgBJ,OAfAA,QAAS,SAASgJ,IAChB,GAAIlB,MAAM1nB,MAOV,OANAA,QAAS8X,OAAOq+C,WAAWvtC,GAAG5oB,QAC9B0nB,KAAOlQ,UACL4vB,UAAWxe,GAAGwe,UACdpnC,OAAQA,SAEV0nB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,OAElB5P,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASQ,IACrC,MAAU,OAANA,GACKhJ,OAAOgJ,IADhB,SAIK9Q,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,qBAAsB,cAAe,WAAYklD,2BAElED,wBAA0B,SAAS92C,WAAYtL,MAAO9Y,SAAUskB,SAAUmT,QAASnS,WACjF,GAAIpP,MAAML,QAkEV,OAjEAA,UAAWyP,UAAU1nB,IAAI,4BAA4B,GACrDsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY1Z,OAAQ6H,IA2DxB,OA1DA6R,YAAa,WACX,MAA8D,KAAvDxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,cAE/Csf,OAAS,SAAUle,OACjB,MAAO,UAASknB,IACd,GAAIlB,MAAM1nB,MAOV,OANAA,QAAS8X,OAAOq+C,WAAWvtC,GAAG5oB,QAC9B0nB,KAAOlQ,UACLxX,OAAQA,OACR4xC,SAAU95B,OAAOq2B,WACjBpN,SAAUzH,eAELvhB,IAAI2P,KAAKA,QAEjBvtB,MACHstB,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS1B,QACd,GAAIqmB,gBAAgBnO,QAASC,UAAWyQ,EAcxC,OAbAA,IAAKlO,OAAOkN,YAAYnR,QACxBmS,GAAG5oB,OAASA,OACZoiB,EAAE3Y,GAAGo5B,UAAU1iC,WACfkmB,eAAiBJ,WAAWK,OAAOvO,KAAK/P,QACxCmQ,UAAY,WAGV,MAFAuC,QAAOif,cAAc/Q,IACrB7C,WAAW9K,WAAW,kBACfoL,eAAeI,UAExBvO,QAAU,WAER,MADAvW,UAASG,OAAO,SACTukB,eAAeI,UAEjBhM,MAAMgN,KAAKmB,IAAItrB,KAAK6a,UAAWD,WAEvC/d,OACH4d,IAAIc,GAAG,QAAS,kBAAmB,SAAS/Q,OAG1C,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,aAGEvhB,IAAIO,KAAK,eAAeuqB,UAAU5gB,OAHzC,SAKFlK,IAAIc,GAAG,QAAS,UAAW,SAAS/Q,OAClC,GAAI9H,QAAQsmB,MAGZ,OAFAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,cAGLhT,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BtiB,OAASsmB,OAAOjlB,KAAK,aACdomB,KAAKznB,SALZ,SAOF8X,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASQ,IACrC,MAAIA,IACKhJ,OAAOgJ,IADhB,SAIK9Q,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,oBAAqB,aAAc,UAAW,aAAc,aAAc,YAAa,cAAeilD,0BAEvHE,iCAAmC,SAASz3D,WAAY8nC,QAASzrC,SAAUskB,SAAUmT,QAASnS,UAAWD,UACvG,GAAInP,MAAML,QAoDV,OAnDAA,UAAWyP,UAAU1nB,IAAI,sCAAsC,GAC/DsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAIwjD,SAASt+C,OAAQ6H,IA6CrB,OA5CAy2C,SAAU,WACR,MAA8D,KAAvDpmD,OAAO1V,QAAQqe,eAAengB,QAAQ,cAE/Csf,OAAS,SAASgJ,IAChB,GAAIxhB,KAAKsgB,IAOT,OANAtgB,MACE82D,QAASA,UACTC,WAAYv1C,GAAG6e,kBAEjB/f,KAAOlQ,SAASpQ,KAChBsgB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,OAElBD,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS+lC,kBACd,GAAIphB,gBAAgB9oB,QAASqrB,EAU7B,OATAA,IAAKlO,OAAOkN,YAAYnR,QACxBmS,GAAG6e,iBAAmBA,iBACtBphB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,UAAUtQ,QACtDzK,QAAU6vC,QAAQ3lB,KAAKmB,IACvBrrB,QAAQD,KAAK,WAGX,MAFAod,QAAOif,cAAc/Q,IACrBvC,eAAeI,SACRnhB,WAAW2V,WAAW,oBAExB1d,QAAQD,KAAK,KAAM,WAExB,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,aAG1B3H,OACH4d,IAAIc,GAAG,QAAS,oBAAqB,SAAS/Q,OAC5C,GAAI2/B,iBACJ,IAAKy2B,UAIL,MADAz2B,mBAAoB/sB,OAAOkN,YAAY6f,iBAChChgB,KAAKggB,oBAEd3vB,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASQ,IACrC,MAAIA,IACKhJ,OAAOgJ,IADhB,SAIK9Q,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,6BAA8B,aAAc,UAAW,aAAc,aAAc,YAAa,cAAe,WAAYmlD,mCAE5IH,mCAAqC,SAASt3D,WAAY8nC,QAASzrC,SAAUskB,SAAUmT,QAASnS,UAAWD,UACzG,GAAInP,MAAML,QAkDV,OAjDAA,UAAWyP,UAAU1nB,IAAI,wCAAwC,GACjEsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAIwjD,SAASt+C,OAAQ6H,IA2CrB,OA1CAy2C,SAAU,WACR,MAA8D,KAAvDpmD,OAAO1V,QAAQqe,eAAengB,QAAQ,cAE/Csf,OAAS,SAASgJ,IAChB,GAAIxhB,KAAKsgB,IAMT,OALAtgB,MACE82D,QAASA,UACTC,WAAYv1C,GAAG4e,oBAEjB9f,KAAOV,SAASxP,SAASpQ,MAAM0Q,QACxBC,IAAI2P,KAAKA,OAElBD,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS8lC,oBACd,GAAInhB,gBAAgB9oB,QAASqrB,EAU7B,OATAA,IAAKlO,OAAOkN,YAAYnR,QACxBmS,GAAG4e,mBAAqBA,mBACxBnhB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,UAAUtQ,QACtDzK,QAAU6vC,QAAQ3lB,KAAKmB,IACvBrrB,QAAQD,KAAK,WAGX,MAFAod,QAAOif,cAAc/Q,IACrBvC,eAAeI,SACRnhB,WAAW2V,WAAW,oBAExB1d,QAAQD,KAAK,KAAM,WACxB,MAAOqE,UAASG,OAAO,aAG1B3H,OACH4d,IAAIc,GAAG,QAAS,sBAAuB,SAAS/Q,OAC9C,GAAI0/B,mBACJ,IAAK02B,UAIL,MADA12B,qBAAsB9sB,OAAOkN,YAAY4f,mBAClC/f,KAAK+f,sBAEd1vB,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASQ,IACrC,MAAIA,IACKhJ,OAAOgJ,IADhB,SAIK9Q,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,+BAAgC,aAAc,UAAW,aAAc,aAAc,YAAa,cAAe,WAAYglD,sCAE7Ip/D,KAAKrD,MA2BR,WACE,GAAIikE,sBAAsBC,6BAA8BC,0BAA2BC,2BAA4Bj0D,YAAaM,QAASG,MAAOhR,OAAQG,MAClJ8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBH,QAAUzQ,KAAKD,MAAM0Q,QAErBN,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,cAExBqkE,qBAAuB,SAAUv0D,YAK/B,QAASu0D,sBAAqB5xD,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAU2F,IAAKjK,eAAgBuE,QAASmzC,UAAWvoC,WAC/H,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAKwV,IAAMA,IACXxV,KAAKuL,eAAiBA,eACtBvL,KAAK8P,QAAUA,QACf9P,KAAKijD,UAAYA,UACjBjjD,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMgyD,QAAUrkE,KAAKkE,OAAOogE,QACjCtkE,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,qBAChD1H,KAAKsjD,0BACLlgD,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YAEL,MADAA,OAAMgsD,WACChsD,MAAMq0D,8BAEd57D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAiNlD,MA/OA6C,QAAOohE,qBAAsBv0D,YAE7Bu0D,qBAAqB7pD,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,OAAQ,mBAAoB,aAAc,eAAgB,cA+BhM6pD,qBAAqB/0D,UAAUqkD,SAAW,WACxC,GAAI5vD,aAAasP,IAAKvP,KAUtB,OATAA,OAAQ1D,KAAK0a,UAAUhT,QAAQ,mBAC7B28D,QAAS,IAAMrkE,KAAKqS,MAAM+a,KAAKna,IAC/BsxD,YAAavkE,KAAKqS,MAAM+a,KAAKC,QAC7BsJ,YAAa32B,KAAKqS,MAAMpK,QAAQ+K,OAElCrP,YAAc3D,KAAK0a,UAAUhT,QAAQ,yBACnC88D,YAAsE,OAAxDvxD,IAAMjT,KAAKqS,MAAM2pD,WAAWh8D,KAAKqS,MAAM+a,KAAKvnB,SAAmBoN,IAAID,KAAO,SAAW,KACnGyxD,gBAAiB7hE,QAAQwE,QAAQpH,KAAKqS,MAAM+a,KAAKsd,kBAAoB,IAAIn3B,SAEpEvT,KAAKuL,eAAe0C,OAAOvK,MAAOC,cAG3CsgE,qBAAqB/0D,UAAUo0C,wBAA0B,WAWvD,MAVAtjD,MAAKqS,MAAMvG,IAAI,oBAAqB,SAAUvE,OAC5C,MAAO,YACL,MAAOA,OAAM07C,UAAUjkC,WAAW,aAAc,SAAU,4BAA6B,KAExFhf,OACHA,KAAKqS,MAAMvG,IAAI,gCAAiC,SAAUvE,OACxD,MAAO,YACL,MAAOA,OAAM8S,UAAUyG,WAAW,oBAEnC9gB,OACIA,KAAKqS,MAAMvG,IAAI,cAAe,SAAUvE,OAC7C,MAAO,YACL,MAAOA,OAAMm9D,aAEd1kE,QAGLikE,qBAAqB/0D,UAAU0sD,0BAA4B,WACzD,GAAI3uD,IAKJ,IAJAA,KACEhF,QAASjI,KAAKqS,MAAMpK,QAAQgf,MAE9BjnB,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,UAAWsK,KACzDjN,KAAKqS,MAAMpK,QAAQif,qBAAsB,CAC3C,GAAIlnB,KAAKqS,MAAM+a,KAAK+f,UAElB,MADAlgC,KAAIuxB,OAASx+B,KAAKqS,MAAMmsB,OAAOvX,KACxBjnB,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,oBAAqBsK,IACzE,IAAIjN,KAAKqS,MAAM+a,KAAKqB,GAEzB,MADAxhB,KAAIgG,IAAMjT,KAAKqS,MAAMoc,GAAGxb,IACjBjT,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,6BAA8BsK,SAEpF,IAAIjN,KAAKqS,MAAMpK,QAAQkf,qBACxBnnB,KAAKqS,MAAMoc,GAEb,MADAxhB,KAAIgG,IAAMjT,KAAKqS,MAAMoc,GAAGxb,IACjBjT,KAAKqS,MAAMouB,gBAAkBzgC,KAAK8P,QAAQnN,QAAQ,6BAA8BsK,MAK7Fg3D,qBAAqB/0D,UAAUioB,YAAc,WAC3C,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAQd,MAPAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAM2hC,WAAa/rC,QAAQuvB,cACjCjwB,MAAM8K,MAAM2pD,WAAavrD,QAAQxI,QAAQuvB,cAAe,SAASj3B,GAC/D,MAAOA,GAAEwX,KAEJ9P,UAERjI,QAGLikE,qBAAqB/0D,UAAUw1D,SAAW,WACxC,MAAO1kE,MAAKsY,GAAGwW,MAAMs5B,SAASpoD,KAAKqS,MAAMoG,UAAWzY,KAAKkE,OAAOogE,SAASnhE,KAAK,SAAUoE,OACtF,MAAO,UAAS6lB,MACd,GAAIngB,KAAKgG,IAAKosB,IAkBd,OAjBA93B,OAAM8K,MAAM+a,KAAOA,KACnB7lB,MAAM8K,MAAMsyD,OAASv3C,KAAKrV,GAC1BxQ,MAAM8K,MAAMuqD,aAAexvC,KACqD,OAA5B,OAA9Cna,IAAM1L,MAAM8K,MAAM+a,KAAKyvC,UAAUC,UAAoB7pD,IAAIA,IAAM,UACnEhG,KACEhF,QAASV,MAAM8K,MAAMpK,QAAQgf,KAC7BhU,IAAK1L,MAAM8K,MAAM+a,KAAKyvC,UAAUC,SAAS7pD,KAE3C1L,MAAM8K,MAAM0qD,YAAcx1D,MAAMuI,QAAQnN,QAAQ,uBAAwBsK,MAEI,OAA7B,OAA3CoyB,KAAO93B,MAAM8K,MAAM+a,KAAKyvC,UAAUjvD,MAAgByxB,KAAKpsB,IAAM,UACjEhG,KACEhF,QAASV,MAAM8K,MAAMpK,QAAQgf,KAC7BhU,IAAK1L,MAAM8K,MAAM+a,KAAKyvC,UAAUjvD,KAAKqF,KAEvC1L,MAAM8K,MAAMzM,QAAU2B,MAAMuI,QAAQnN,QAAQ,uBAAwBsK,MAE/DmgB,OAERptB,QAGLikE,qBAAqB/0D,UAAUilD,WAAa,WAC1C,MAAIn0D,MAAKqS,MAAM+a,KAAK+f,UACXntC,KAAKsY,GAAG2pC,QAAQ78C,IAAIpF,KAAKqS,MAAM+a,KAAKnlB,QAASjI,KAAKqS,MAAM+a,KAAK+f,WAAWhqC,KAAK,SAAUoE,OAC5F,MAAO,UAASi3B,QAEd,MADAj3B,OAAM8K,MAAMmsB,OAASA,OACdA,SAERx+B,OANL,QAUFikE,qBAAqB/0D,UAAU01D,cAAgB,WAC7C,MAAI5kE,MAAKqS,MAAM+a,KAAKggB,WACXptC,KAAKsY,GAAGka,YAAYptB,IAAIpF,KAAKqS,MAAM+a,KAAKnlB,QAASjI,KAAKqS,MAAM+a,KAAKggB,YAAYjqC,KAAK,SAAUoE,OACjG,MAAO,UAASknB,IAEd,MADAlnB,OAAM8K,MAAMoc,GAAKA,GACVA,KAERzuB,OANL,QAUFikE,qBAAqB/0D,UAAUwnB,gBAAkB,WAC/C,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,cACR/zB,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASU,SAEd,MADAV,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OAC1ClQ,MAAMm9D,WAAWvhE,KAAK,WAC3B,MAAOoE,OAAMwI,EAAEsI,KAAK9Q,MAAM4sD,aAAc5sD,MAAMq9D,sBAGjD5kE,QASLikE,qBAAqB/0D,UAAU8tD,SAAW,WACxC,GAAIj/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMm9D,WACCn9D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGwW,MAAMmuC,OAAOj9D,KAAKqS,MAAMsyD,QAAQxhE,KAAK6a,UAAWD,UAGjEkmD,qBAAqB/0D,UAAUguD,WAAa,WAC1C,GAAIn/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMm9D,WACCn9D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGwW,MAAMquC,SAASn9D,KAAKqS,MAAMsyD,QAAQxhE,KAAK6a,UAAWD,UASnEkmD,qBAAqB/0D,UAAUkuD,QAAU,WACvC,GAAIr/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMm9D,WACCn9D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGwW,MAAMukB,MAAMrzC,KAAKqS,MAAMsyD,QAAQxhE,KAAK6a,UAAWD,UAGhEkmD,qBAAqB/0D,UAAUmuD,UAAY,WACzC,GAAIt/C,SAASC,SAYb,OAXAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMm9D,WACCn9D,MAAM8S,UAAUyG,WAAW,oBAEnC9gB,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,MACIA,KAAKsY,GAAGwW,MAAMjJ,QAAQ7lB,KAAKqS,MAAMsyD,QAAQxhE,KAAK6a,UAAWD,UAG3DkmD,sBAENrzD,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,uBAAwB0gE,sBAE1CG,2BAA6B,SAASt3C,UAAWD,UAC/C,GAAInP,MAAML,QAuBV,OAtBAA,UAAWyP,UAAU1nB,IAAI,yCAAyC,GAClEsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4H,OAgBJ,OAfAA,QAAS,SAAS2H,MAChB,GAAIG,MAAM1nB,MAOV,OANAA,QAAS8X,OAAOq+C,WAAW5uC,KAAKvnB,QAChC0nB,KAAOlQ,UACL4vB,UAAWpnC,OAAOonC,UAClBpnC,OAAQA,SAEV0nB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,OAElB5P,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASb,MACrC,MAAY,OAARA,KACK3H,OAAO2H,MADhB,SAIKzP,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,uBAAwB,cAAe,WAAY2mD,6BAEpED,0BAA4B,SAASv4C,WAAYtL,MAAO9Y,SAAUskB,SAAUmT,QAASpS,SAAU7pB,WAAY8pB,WACzG,GAAIpP,MAAML,QAiEV,OAhEAA,UAAWyP,UAAU1nB,IAAI,4BAA4B,GACrDsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY1Z,OAAQ6H,IA0DxB,OAzDA6R,YAAa,WACX,MAAgE,KAAzDxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,gBAE/Csf,OAAS,SAAUle,OACjB,MAAO,UAAS6lB,MACd,GAAIG,MAAM1nB,MAOV,OANAA,QAAS8X,OAAOq+C,WAAW5uC,KAAKvnB,QAChC0nB,KAAOV,SAASxP,UACdxX,OAAQA,OACR4xC,SAAU95B,OAAOq2B,WACjBpN,SAAUzH,gBACRxhB,QACGC,IAAI2P,KAAKA,QAEjBvtB,MACHstB,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS1B,QACd,GAAIqmB,gBAAgBnO,QAASC,UAAWoP,IAaxC,OAZAA,MAAO7M,OAAOkN,YAAYnR,QAC1B8Q,KAAKvnB,OAASA,OACdqmB,eAAiBJ,WAAWK,OAAOvO,KAAK/P,QACxCmQ,UAAY,WAGV,MAFAuC,QAAOif,cAAcpS,MACrBxB,WAAW9K,WAAW,kBACfoL,eAAeI,UAExBvO,QAAU,WAER,MADAvW,UAASG,OAAO,SACTukB,eAAeI,UAEjBhM,MAAMgN,KAAKF,MAAMjqB,KAAK6a,UAAWD,WAEzC/d,OACH4d,IAAIc,GAAG,QAAS,kBAAmB,SAAS/Q,OAG1C,MAFAA,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,aAGEvhB,IAAIO,KAAK,eAAeuqB,UAAU5gB,OAHzC,SAKFlK,IAAIc,GAAG,QAAS,UAAW,SAAS/Q,OAClC,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACD9C,cAGLhT,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BF,EAAE3Y,GAAGo5B,UAAU1iC,WACRsnB,KAAKnB,OAAOjlB,KAAK,eALxB,SAOFyW,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASb,MACrC,MAAIA,MACK3H,OAAO2H,MADhB,SAIKzP,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,sBAAuB,aAAc,UAAW,aAAc,aAAc,YAAa,WAAY,aAAc,cAAe0mD,4BAEnJD,6BAA+B,SAAS/4D,WAAY8nC,QAASzrC,SAAUskB,SAAUmT,QAASpS,SAAUC,WAClG,GAAIpP,MAAML,QAwDV,OAvDAA,UAAWyP,UAAU1nB,IAAI,6BAA6B,GACtDsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4e,YAAY1Z,OAAQ6H,IAiDxB,OAhDA6R,YAAa,WACX,MAAgE,KAAzDxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,gBAE/Csf,OAAS,SAAS2H,MAChB,GAAIngB,KAAKsgB,IACT,OAAK4R,eAAiB/R,KAAKgT,YAI3BnzB,KACEgzB,UAAW7S,KAAKgT,WAChBjB,WAAYA,cAEd5R,KAAOV,SAASxP,SAASpQ,MAAM0Q,QACxBC,IAAI2P,KAAKA,WARd3P,KAAI2P,KAAK,KAUbD,KAAO2R,QAAQzX,QAAQ,SAAUjgB,OAC/B,MAAO,UAAS64B,YACd,GAAIlU,gBAAgB9oB,QAASgqB,IAY7B,OAXAA,MAAO7M,OAAOkN,YAAYnR,QAC1B8Q,KAAKgT,WAAaA,WAClBlU,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,UAAUtQ,QACtDzK,QAAU6vC,QAAQ3lB,KAAKF,MACvBhqB,QAAQD,KAAK,WAEX,MADAod,QAAOif,cAAcpS,MACdjiB,WAAW2V,WAAW,oBAE/B1d,QAAQD,KAAK,KAAM,WACjB,MAAOqE,UAASG,OAAO,WAElBvE,QAAQ,WAAW,WACxB,MAAO8oB,gBAAeI,aAGzBtsB,OACH4d,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OACtC,GAAIyyB,WACJ,IAAKjB,aAIL,MADAiB,aAAc7f,OAAOkN,YAAY2S,WAC1B9S,KAAK8S,cAEdziB,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASb,MACrC,MAAIA,MACK3H,OAAO2H,MADhB,SAIKzP,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,yBAA0B,aAAc,UAAW,aAAc,aAAc,YAAa,WAAY,cAAeymD,gCAEvI7gE,KAAKrD,MA2BR,WACE,GAAI6kE,uBAAuBC,eAAgBC,qBAAsBC,+BAAgCC,yBAA0BC,qBAAsBC,cAAev0D,MAAOhR,OAAQG,MAC7K8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBhR,OAASgD,QAAQhD,OAAO,aAExBklE,eAAiB,SAAUp1D,YAKzB,QAASo1D,gBAAezyD,MAAOgI,UAAWkc,KAAMje,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAASvE,eAAgBqQ,KAAMlB,UAAWlP,gBACjH,GAAIpI,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKuL,eAAiBA,eACtBvL,KAAK4b,KAAOA,KACZ5b,KAAK0a,UAAYA,UACjB1a,KAAKwL,eAAiBA,eACtBxL,KAAKqS,MAAMokB,YAAc,oBACzBrzB,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAQjB,OAPAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,mBAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAMmT,UAAUhT,QAAQ,yBACpCivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,KACjC4jB,mBAAoBrvB,MAAM8K,MAAMpK,QAAQtE,cAEnC4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OA+GlD,MAhJA6C,QAAOiiE,eAAgBp1D,YAEvBo1D,eAAe1qD,SAAW,SAAU,aAAc,UAAW,eAAgB,eAAgB,KAAM,YAAa,aAAc,mBAAoB,UAAW,aAAc,oBAkC3K0qD,eAAe51D,UAAUk2D,QAAU,SAAS98B,MAC1C,MAAIA,MACKtoC,KAAKqS,MAAMgzD,YAAc/8B,KAEzBtoC,KAAKqS,MAAMgzD,YAAc,MAIpCP,eAAe51D,UAAUo2D,YAAc,WACrC,GAAI5zD,GAAGgC,IAAK4b,OAAQrc,IAAKtH,IAIzB,KAHAA,KAAO3L,KAAK4b,KAAKnO,UACjBzN,KAAKqS,MAAMkzD,UACXtyD,IAAMjT,KAAKqS,MAAMqF,YACZhG,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IACrC4d,OAASrc,IAAIvB,GACb1R,KAAKqS,MAAMkzD,OAAOj2C,OAAOvX,IAAM,CAKjC,OAHA/X,MAAKqS,MAAMmzD,YAAcnlE,EAAE8d,KAAKne,KAAKqS,MAAMqF,aACzCK,GAAY,MAARpM,KAAeA,KAAKoM,GAAK,SAExB/X,KAAKqS,MAAM4e,YAAc5wB,EAAEiG,OAAOtG,KAAKqS,MAAMqF,aAClDK,GAAY,MAARpM,KAAeA,KAAKoM,GAAK,UAIjC+sD,eAAe51D,UAAUioB,YAAc,WACrC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAQd,MAPAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAMozD,cAAgBx9D,QAAQof,oBACpC9f,MAAM8K,MAAMqzD,aAAez9D,QAAQkf,qBAAuBlf,QAAQif,qBAClE3f,MAAM8K,MAAMszD,YAAc19D,QAAQmf,kBAClC7f,MAAM8K,MAAMysB,MAAQ72B,QAAQ62B,MAAM/mB,GAC3B9P,UAERjI,QAGL8kE,eAAe51D,UAAU02D,gBAAkB,WACzC,MAAO5lE,MAAKsY,GAAGC,SAASstD,YAAY7lE,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OACvE,MAAO,UAAS48C,OACd,GAAIohB,OAaJ,OAZAA,WACAllE,EAAE6W,QAAQ3P,MAAM8K,MAAMkzD,OAAQ,SAASxO,MAAOnnC,QAC5C,GAAIk2C,KAOJ,OANAA,MAAOzlE,EAAEC,IAAI6jD,MAAO,SAAS0hB,YAAaE,UACxC,MAAOF,aAAYj2C,UAErBmnC,MAAQ12D,EAAEmW,OAAOsvD,KAAM,SAASE,IAAK7iC,IACnC,MAAO6iC,KAAM7iC,KAER57B,MAAM8K,MAAMkzD,OAAO31C,QAAUmnC,QAEtCxvD,MAAM8K,MAAM8xC,MAAQ58C,MAAM0+D,cAAc9hB,OACjC58C,MAAM8K,MAAM8xC,MAAMohB,OAASh+D,MAAM8K,MAAMkzD,SAE/CvlE,QAGL8kE,eAAe51D,UAAUg3D,aAAe,SAASC,MAC/C,GAAIn3D,KAAK3E,IAAKD,IAAKg8D,WAAY93D,KAC/BjE,KAAMhK,EAAEgK,IAAIhK,EAAE61B,QAAQiwC,OACtB/7D,IAAM/J,EAAE+J,IAAI/J,EAAE61B,QAAQiwC,OACtBC,WAAapwD,QACb,KAAKhH,MAAOm3D,MACLl3D,QAAQ5L,KAAK8iE,KAAMn3D,OACxBV,MAAQ63D,KAAKn3D,KACTV,QAAUlE,IACZg8D,WAAWp3D,KAAO,GACTV,QAAUjE,IACnB+7D,WAAWp3D,KAAO,EAElBo3D,WAAWp3D,KAAgB,GAARV,MAAejE,IAGtC,OAAO+7D,aAGTtB,eAAe51D,UAAU+2D,cAAgB,SAAS9hB,OAChD,GAAIn1C,KAAKV,KACT,KAAKU,MAAOm1C,OACV71C,MAAQ61C,MAAMn1C,KACdm1C,MAAMn1C,KAAOhP,KAAKkmE,aAAa53D,MAEjC,OAAO61C,QAGT2gB,eAAe51D,UAAUwnB,gBAAkB,WACzC,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,cACR/zB,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASU,SACd,GAAIo+D,UASJ,OARA9+D,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OACjDlQ,MAAM+9D,cACNe,UAAYhmE,EAAEC,IAAIiH,MAAM8K,MAAMmF,MAAO,SAAS7L,MAC5C,MAAOA,MAAK28B,OAEd/gC,MAAM8K,MAAMoF,MAAQpX,EAAEyM,OAAOvF,MAAM8K,MAAMoF,MAAO,SAAS6wB,MACvD,MAAsC,KAA/B+9B,UAAUlgE,QAAQmiC,KAAKvwB,MAEzBxQ,MAAMq+D,oBAEd5lE,QAGE8kE,gBAENl0D,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,iBAAkBuhE,gBAEpCC,qBAAuB,WACrB,OACEzhE,YAAa,0BAIjB1D,OAAO6d,UAAU,iBAAkBsnD,uBAEnCE,yBAA2B,WACzB,OACE3hE,YAAa,8BACb+O,OACE8xC,MAAO,IACPv0B,OAAQ,QACR61C,cAAe,iBACfC,aAAc,gBACdC,YAAa,kBAKnB/lE,OAAO6d,UAAU,oBAAqBwnD,0BAEtCD,+BAAiC,WAC/B,OACE1hE,YAAa,qCACb+O,OACEpK,QAAS,WACTu9D,YAAa,eACbrhB,MAAO,IACPshB,cAAe,iBACfC,aAAc,gBACdC,YAAa,eACb7mC,MAAO,YAKbl/B,OAAO6d,UAAU,oBAAqBunD,gCAEtCE,qBAAuB,WACrB,GAAI7nD,SAEJ,OADAA,UAAW,0BAET/Z,YAAa+Z,SACbhL,OACE4e,YAAa,IACbq0B,SAAU,YACV+f,YAAa,eACblhB,MAAO,IACPshB,cAAe,iBACfC,aAAc,gBACdC,YAAa,eACb7mC,MAAO,YAKbl/B,OAAO6d,UAAU,gBAAiBynD,sBAElCL,sBAAwB,SAASvkD,MAAO9Y,SAAUjC,UAAWmpB,IAAK3K,SAAU/gB,WAAYsjE,gBAAiBnsD,oBACvG,GAAIuD,KAsCJ,OArCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI0oD,aAuBJ,OAtBAA,cAAe,WACb,GAAIC,4BAA4BC,kBAGhC,OAFAA,oBAAqBzjE,WAAW0E,QAAQ,6BACxC8+D,2BAA6BxjE,WAAW0E,QAAQ,8BACzCF,SAAS84B,IAAImmC,mBAAoBD,4BAA4BrjE,KAAK,SAAUoE,OACjF,MAAO,UAAS5B,UACd,GAAIvC,QASJ,OARAA,SAAUsrB,IAAInW,SAASmuD,MAAM/oD,OAAO1V,QAAQ8P,IAC5C3U,QAAQD,KAAK,WACX,MAAOgX,oBAAmBo3B,eAAepuC,KAAK,WAG5C,MAFAwC,UAAS2mB,SACT9kB,SAASG,OAAO,WACTpC,UAAU9C,KAAKshB,SAASphB,QAAQ,aAGpCS,QAAQD,KAAK,KAAM,SAASwC,UAEjC,MADAA,UAAS2mB,SACF9kB,SAASG,OAAO,QAAShC,SAASuB,KAAK+X,oBAGjDjf,QAEE2d,OAAO+oD,MAAQ,WACpB,MAAI/oD,QAAO1V,QAAQ62B,MAAM/mB,KAAO4F,OAAOhS,KAAKoM,GACnCuuD,gBAAgBl6C,OAAO,qCAC5BslB,QAAS,4CAETi1B,eAAe,EACf1+D,QAAS0V,OAAO1V,UAGXs+D,kBAKXl0D,OACE1G,KAAM,IACN1D,QAAS,KAEX3E,YAAa,0BACboa,KAAMA,OAIV9d,OAAO6d,UAAU,kBAAmB,UAAW,aAAc,cAAe,eAAgB,aAAc,aAAc,oBAAqB,uBAAwBonD,wBAErKM,cAAgB,WACd,MAAO,UAASltD,QAASqtC,SAAU+f,aACjC,MAAOhlE,GAAEyM,OAAOmL,QAAS,SAASyiB,GAChC,QAAS2qC,aAAe3qC,EAAE4N,OAAS+8B,YAAYttD,OAASutC,UAAY5qB,EAAEklC,UAAUv5D,OAAO,GAAIwP,QAAOyvC,SAAU,OAAS,OAK3H1lD,OAAOkN,OAAO,gBAAiBq4D,gBAE9B9hE,KAAKrD,MA2BR,WACE,GAAI4mE,8BAA8BC,qBAAsBC,qBAAsB12D,SAAUE,SAAUG,QAASG,MAAOhR,OAAQG,MACxH8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBH,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,aAExBinE,qBAAuB,SAAUn3D,YAK/B,QAASm3D,sBAAqBx0D,MAAOgI,UAAWkc,KAAMhc,MAAOirB,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAU/C,OAAQ0I,IAAKjK,eAAgBuE,QAASmzC,UAAWvoC,WAC9I,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKua,MAAQA,MACbva,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8M,OAASA,OACd9M,KAAKwV,IAAMA,IACXxV,KAAKuL,eAAiBA,eACtBvL,KAAK8P,QAAUA,QACf9P,KAAKijD,UAAYA,UACjBjjD,KAAK0a,UAAYA,UACjB1a,KAAKqS,MAAM00D,YAAc/mE,KAAKkE,OAAOC,MACrCnE,KAAKqS,MAAM20D,SAAWhnE,KAAKkE,OAAO+iB,KAClCjnB,KAAKqS,MAAM40D,UAAYjnE,KAAKqS,MAAM20D,SAClChnE,KAAKqS,MAAMokB,YAAc;AACzBz2B,KAAKqS,MAAM60D,cAAe,EAC1B9jE,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAMgsD,aAEdvzD,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAoHlD,MApJA6C,QAAOgkE,qBAAsBn3D,YAE7Bm3D,qBAAqBzsD,SAAW,SAAU,aAAc,UAAW,WAAY,aAAc,eAAgB,eAAgB,KAAM,cAAe,UAAW,OAAQ,mBAAoB,aAAc,eAAgB,cAiCvNysD,qBAAqB33D,UAAUqkD,SAAW,WACxC,GAAI5vD,aAAasP,IAAKosB,KAAMsP,KAAMjrC,KAUlC,OATAA,OAAQ1D,KAAK0a,UAAUhT,QAAQ,mBAC7By/D,aAAcnnE,KAAKqS,MAAM40D,UACzBtwC,YAAa32B,KAAKqS,MAAMpK,QAAQ+K,OAElCrP,YAAc3D,KAAK0a,UAAUhT,QAAQ,yBACnC0/D,gBAAiBxkE,QAAQwE,SAAoC,OAA1B6L,IAAMjT,KAAKqS,MAAM0hB,MAAgB9gB,IAAIsa,KAAO,SAAW,IAAIha,OAC9F8zD,eAA4C,OAA3BhoC,KAAOr/B,KAAKqS,MAAM0hB,MAAgBsL,KAAKioC,SAAW,SAAW,EAC9EC,iBAAkBl+D,OAAmC,OAA3BslC,KAAO3uC,KAAKqS,MAAM0hB,MAAgB4a,KAAK64B,cAAgB,QAAQpiD,OAAOplB,KAAK0a,UAAUhT,QAAQ,oBAElH1H,KAAKuL,eAAe0C,OAAOvK,MAAOC,cAG3CkjE,qBAAqB33D,UAAUioB,YAAc,WAC3C,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAOd,MANKA,SAAQmf,mBACX7f,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGL6mE,qBAAqB33D,UAAUu4D,SAAW,WACxC,GAAIrkE,QASJ,OARAA,SAAUpD,KAAKsY,GAAGyb,KAAKqD,UAAUp3B,KAAKqS,MAAMoG,UAAWzY,KAAKkE,OAAO+iB,MACnE7jB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,UAASwsB,MAGd,MAFAxsB,OAAM8K,MAAM0hB,KAAOA,KACnBxsB,MAAM8K,MAAMq1D,OAAS3zC,KAAKhc,GACnBxQ,MAAM8K,MAAM0hB,OAEpB/zB,OACIoD,QAAQD,KAAK,KAAM,SAAUoE,OAClC,MAAO,UAASqI,KACd,GAAI1I,KAEJ,OADAK,OAAM8K,MAAMq1D,OAAS,KAC+C,KAAhEngE,MAAM8K,MAAMpK,QAAQqe,eAAengB,QAAQ,iBACtC,MAETe,MACEe,QAASV,MAAM8K,MAAMoG,UACrBwO,KAAM1f,MAAM8K,MAAM20D,SAClBh6B,QAAS,IAEXzlC,MAAM8K,MAAM0hB,KAAOxsB,MAAMgT,MAAMoB,WAAW,OAAQzU,MAC3CK,MAAM8K,MAAM0hB,QAEpB/zB,QAGL6mE,qBAAqB33D,UAAUy4D,cAAgB,WAC7C,MAAO3nE,MAAKsY,GAAGyb,KAAK6zC,UAAU5nE,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OACjE,MAAO,UAASsgE,WACd,GAAIC,iBAKJ,OAJAvgE,OAAM8K,MAAMw1D,UAAYA,UACxBC,iBAAmBznE,EAAE8d,KAAK0pD,WACxB3mC,KAAM35B,MAAM8K,MAAM20D,WAEI,MAApBc,iBACKvgE,MAAM8K,MAAM40D,UAAYa,iBAAiBpkE,MADlD,SAID1D,QAGL6mE,qBAAqB33D,UAAUwnB,gBAAkB,WAC/C,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,cACR/zB,QAAQD,KAAK,SAAUoE,OAC5B,MAAO,UAASU,SAEd,MADAV,OAAMgQ,kBAAkBtP,QAAQgQ,QAAShQ,QAAQwP,OAC1ClQ,MAAMwI,EAAEsI,KAAK9Q,MAAMogE,gBAAiBpgE,MAAMkgE,aAAatkE,KAAKoE,MAAMwgE,gBAAgB14D,KAAK9H,UAE/FvH,QAGL6mE,qBAAqB33D,UAAU64D,gBAAkB,WAC/C,MAAsE,KAAlE/nE,KAAKqS,MAAMpK,QAAQqe,eAAengB,QAAQ,qBAAgG,KAAjEnG,KAAKqS,MAAMpK,QAAQqe,eAAengB,QAAQ,oBAA6BnG,KAAKqS,MAAMw1D,UAAUr7D,OAChKxM,KAAKqS,MAAM60D,cAAe,EADnC,QAKFL,qBAAqB33D,UAAU,UAAY,WACzC,GAAIkQ,SAAS1b,KAGb,OAFAA,OAAQ1D,KAAK0a,UAAUhT,QAAQ,8BAC/B0X,QAAUpf,KAAKqS,MAAM40D,UACdjnE,KAAKwlC,QAAQ1X,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAUoE,OAC7D,MAAO,UAASwmB,aACd,GAAIhQ,SAASC,SAcb,OAbAA,WAAY,WACV,GAAI/Q,IAMJ,OALA8gB,aAAYzB,SACZrf,KACEhF,QAASV,MAAM8K,MAAM00D,aAEvBx/D,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,eAAgBsK,MACnD1F,MAAMi+B,QAAQ79B,OAAO,YAE9BoW,QAAU,WAER,MADAgQ,aAAYzB,QAAO,GACZ/kB,MAAMi+B,QAAQ79B,OAAO,UAEvBJ,MAAMgvB,KAAKxa,OAAOxU,MAAM8K,MAAM0hB,MAAM5wB,KAAK6a,UAAWD,WAE5D/d,QAGE6mE,sBAENj2D,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,uBAAwBsjE,sBAE1CC,qBAAuB,SAAS57D,KAAM4hB,UAAWD,SAAU7pB,YACzD,GAAI0a,MAAML,QAyCV,OAxCAA,UAAWyP,UAAU1nB,IAAI,0BAA0B,GACnDsY,KAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAIkF,OAkCJ,OAjCAA,QAAS,SAASsO,MAChB,GAAI9mB,KAAKsgB,KAAM5hB,IAwBf,OAvBwB,OAApBgS,OAAO3F,UACT9M,KAAKgU,MAAM,wDAEXvT,KAAOgS,OAAO3F,UAAU+b,KAAKi0C,eAG7Br8D,KADW,SAATA,MAEAqH,KAAM,UACNi1D,OAAQ,IAAM/nE,OAAOyI,SAAW,6BAIhCqK,KAAMrH,KAAK8jB,kBACXw4C,OAAQt8D,KAAK6jB,OAGjBviB,KACEo6D,cAAetzC,KAAKuzC,SACpBC,iBAAkBl+D,OAAO0qB,KAAKyzC,eAAepiD,OAAOpiB,WAAW0E,QAAQ,kBACvEiE,KAAMA,MAER4hB,KAAOlQ,SAASpQ,KAChBsgB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,OAElB5P,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASi6C,UACrC,MAAKA,UAGEziD,OAAOyiD,UAHd,SAKKvqD,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,iBAAkB,OAAQ,cAAe,WAAY,aAAcqpD,uBAEpFF,6BAA+B,SAAShmD,QAASyE,UAAW/E,MAAO9Y,SAAUskB,SAAUxgB,WAAY2zB,SACjG,GAAIvhB,KA6HJ,OA5HAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI4nD,eAAeC,eAAgBC,gBAAiBlpC,WAAY7R,KAAMg7C,iBAAkBC,gBAuHxF,OAtHAppC,YAAa,WACX,MAAqE,KAA9DxhB,OAAO1V,QAAQqe,eAAengB,QAAQ,qBAE/CmiE,iBAAmB,WAGjB,MAFA1qD,KAAIO,KAAK,sBAAsBiM,OAC/BxM,IAAIO,KAAK,sBAAsByiB,OACxBhjB,IAAIO,KAAK,YAAYoO,SAE9Bg8C,iBAAmB,WAEjB,MADA3qD,KAAIO,KAAK,sBAAsByiB,OACxBhjB,IAAIO,KAAK,sBAAsBiM,QAExCg+C,eAAiB,WAEf,MADAxqD,KAAIO,KAAK,4BAA4BpC,SAC9B6B,IAAIO,KAAK,sBAAsBpC,UAExCosD,cAAgB,WACd,MAAK5nD,QAAOkN,YAAY1V,IAGxB4F,OAAO1J,OAAO,SAAU1M,OACtB,MAAO,YACL,MAAOgZ,QAAOkN,YAAYiS,WAE3B1/B,OACIuoE,oBARP,QAUFF,gBAAkB,WAChB,MAAIznD,SAAQ0E,aACH1E,QAAQ0E,eAAelU,WACrBiU,UAAUE,UACZF,UAAUE,UAAUC,cAAcjS,KAEpC,MAET+Z,KAAO2R,QAAQzX,QAAQ,SAASuM,MAC9B,GAAI7H,gBAAgBnO,QAASC,UAAW5a,OAkBxC,OAjBA4a,WAAY,SAASkqD,UAMnB,MALe,OAAXn0C,KAAKhc,IACPzM,WAAW0T,WAAW,WAAY,SAAU,mBAAoB,GAElEuB,OAAOif,cAAc0oC,SAAS5rD,SAC9B9U,SAASG,OAAO,WACT4gE,oBAETxqD,QAAU,WACR,MAAOvW,UAASG,OAAO,UAEzBukB,eAAiBJ,WAAWgrB,cAAc,eAAe3qB,OAAOvO,IAAIO,KAAK,iBAAiBtQ,QAExFzK,QADa,MAAX2wB,KAAKhc,GACGuI,MAAMgN,KAAKyG,MAAM5wB,KAAK6a,UAAWD,SAEjCuC,MAAM8L,OAAO,OAAQ2H,MAAM5wB,KAAK6a,UAAWD,SAEhD3a,QAAQ,WAAW,WACxB,MAAO8oB,gBAAeI,aAG1B1O,IAAIc,GAAG,QAAS,IAAK,SAAS/Q,OAC5B,GAAIuzB,MAAM/U,MAGV,OAFAA,QAASvpB,QAAQwE,QAAQuG,MAAMwe,QAC/B+U,KAAO/U,OAAO7Z,KAAK,QACO,IAAtB4uB,KAAK/6B,QAAQ,MACfwH,MAAM2Q,iBACC2J,EAAE,QAAQkZ,UAAUlZ,EAAEiZ,MAAME,SAASC,MAF9C,SAKFzjB,IAAIc,GAAG,YAAa,qBAAsB,SAAS/Q,OACjD,GAAIwe,OACJA,QAASvpB,QAAQwE,QAAQuG,MAAMwe,QAC1BgT,cAGgB,IAAjBxxB,MAAM66D,SAIZ5qD,IAAIc,GAAG,UAAW,qBAAsB,SAAS/Q,OAC/C,GAAIwe,OAEJ,OADAA,QAASvpB,QAAQwE,QAAQuG,MAAMwe,QAC3Bk8C,oBAGClpC,cAGDhT,OAAO8U,GAAG,MAGV9U,OAAO8U,GAAG,OATd,OAYOqnC,qBAET1qD,IAAIc,GAAG,QAAS,QAASpO,SAAS,IAAM,WACtC,MAAOgd,MAAK3P,OAAOoW,SAErBnW,IAAIc,GAAG,QAAS,UAAW,WACzB,MAAOypD,mBAETvqD,IAAIc,GAAG,UAAW,WAAY,SAAS/Q,OACrC,MAAsB,MAAlBA,MAAM6f,QACD26C,gBADT,SAIFxqD,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAASi6C,UACrC,MAAKA,UAGD/oC,cACFvhB,IAAIkI,SAAS,YACO,MAAfoiD,SAASnwD,IAAmD,IAApCkQ,EAAE3W,KAAK42D,SAASl7B,SAASxgC,OAC7C87D,mBADT,QAIOF,iBATT,SAYKzqD,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNF,SAAU,KACV0Q,QAAS,UACT5qB,YAAa,oCAIjB1D,OAAO6d,UAAU,yBAA0B,UAAW,YAAa,UAAW,aAAc,aAAc,eAAgB,YAAampD,gCAEtIvjE,KAAKrD,MA2BR,WACE,GAAIyoE,kBAAkBr4D,SAAUK,QAASG,MAAOhR,OAAQG,KAExDA,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBH,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBxQ,OAASgD,QAAQhD,OAAO,aAExB6oE,iBAAmB,SAASx1B,QAAS/nC,KAAM3F,UAAWiC,SAAUhC,SAAU8F,WAAYwgB,SAAUgB,UAAWD,SAAU7pB,YACnH,GAAI0a,MAAML,QA0HV,OAzHAA,UAAWyP,UAAU1nB,IAAI,sBAAsB,GAC/CsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOzJ,MAEX,OADAyJ,OAAQtR,IAAIra,aACU,MAAlBsa,OAAOoQ,QACF/iB,KAAKgU,MAAM,kDAEpBuG,OAAS,SAASoiD,WAChB,GAAIa,uBAAuBC,yBAA0Bp7C,IA8DrD,OA7DAm7C,uBAAwB/qD,OAAO1V,QAAQqe,eAAengB,QAAQ,iBAAmB,GACjFwiE,yBAA2BhrD,OAAO1V,QAAQqe,eAAengB,QAAQ,oBAAsB,GACvFonB,KAAOlQ,UACLwqD,UAAWA,UACXd,YAAappD,OAAOopD,YACpB2B,sBAAuBA,sBACvBC,yBAA0BA,2BAE5Bp7C,KAAOV,SAASU,MAAM5P,QACtBC,IAAIgB,MACJhB,IAAI2P,KAAKA,MACT3P,IAAIc,GAAG,QAAS,yBAA0B,SAAS/Q,OACjD,GAAIi7D,QAAQC,SAAU18C,MAKtB,OAJAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BygD,OAASz8C,OAAOmkB,QAAQ,cAAcppC,KAAK,MAC3C2hE,SAAWlrD,OAAOkqD,UAAUe,QAAQ1nC,KAC7BvjB,OAAO1J,OAAO,WACnB,GAAIhH,IAKJ,OAJAA,MACEhF,QAAS0V,OAAOopD,YAChB9/C,KAAM4hD,UAEDtjE,UAAU9C,KAAK+C,SAAS7C,QAAQ,oBAAqBsK,UAGhE2Q,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OAItC,MAHAA,OAAM2Q,iBACNV,IAAIO,KAAK,QAAQwH,YAAY,UAC7B/H,IAAIO,KAAK,cAAcoO,QAChB3O,IAAIO,KAAK,eAAeyiB,SAEjChjB,IAAIc,GAAG,QAAS,0BAA2B,SAAS/Q,OAClD,GAAIi7D,QAAQxpD,QAAS+M,OAAQzoB,KAO7B,OANAiK,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BygD,OAASz8C,OAAOmkB,QAAQ,cAAcppC,KAAK,MAC3CxD,MAAQV,WAAW0E,QAAQ,8BAC3B0X,QAAUzB,OAAOkqD,UAAUe,QAAQllE,MAC5B8D,SAASsmB,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAUoE,OACzD,MAAO,UAASwmB,aACd,GAAI3qB,QAYJ,OAXAA,SAAU6vC,QAAQl3B,OAAO4B,OAAOkqD,UAAUe,SAC1CxlE,QAAQD,KAAK,WAMX,MALAC,SAAU8rB,MAAMy4C,gBAChBvkE,QAAQD,KAAK,WAEX,MADA4qB,aAAYzB,SACL7G,OAAO9H,OAAOkqD,aAEhBzkE,QAAQD,KAAK,KAAM,WACxB,MAAO4qB,aAAYzB,aAGhBlpB,QAAQD,KAAK,KAAM,WAExB,MADA4qB,aAAYzB,QAAO,GACZ9kB,SAASG,OAAO,aAG1B3H,SAEE4d,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OAC5C,GAAIue,gBAAgB48C,QAAS1lE,QAAS+oB,MAEtC,OADAxe,OAAM2Q,iBACgB,KAAlB3Q,MAAM6f,SACRrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B2gD,QAAU38C,OAAOngB,MACjBkgB,eAAiBJ,WAAWK,OAAOvO,IAAIO,KAAK,SAAStQ,QACrDzK,QAAU6vC,QAAQ7mB,OAAO,cACvBnkB,QAAS0V,OAAOlF,UAChB/U,MAAOolE,UAET1lE,QAAQD,KAAK,WACX,GAAI6+D,YAUJ,OATA12D,YAAW0T,WAAW,WAAY,SAAU,mBAAoB,GAChEgjD,YAAc9yC,MAAMy4C,gBACpB3F,YAAY7+D,KAAK,WAKf,MAJA+oB,gBAAeI,SACf1O,IAAIO,KAAK,QAAQ2H,SAAS,UAC1BlI,IAAIO,KAAK,cAAcnS,IAAI,IAC3B4R,IAAIO,KAAK,eAAeiM,OACjB3E,OAAO9H,OAAOkqD,aAEhB7F,YAAY7+D,KAAK,KAAM,WAK5B,MAJA+oB,gBAAeI,SACf1O,IAAIO,KAAK,QAAQ2H,SAAS,UAC1BlI,IAAIO,KAAK,cAAcnS,IAAI,IAC3B4R,IAAIO,KAAK,eAAeiM,OACjB5iB,SAASG,OAAO,QAAS,gCAG7BvE,QAAQD,KAAK,KAAM,SAAS+b,OACjC,GAAIjM,IAIJ,OAHAiZ,gBAAeI,SACf1O,IAAIO,KAAK,cAAcnS,IAAI88D,SAC3BlrD,IAAIO,KAAK,cAAcoO,QAAQsB,SACmD,OAApE,MAAT3O,OAAyC,OAAxBjM,IAAMiM,MAAM2iC,SAAmB5uC,IAAI,GAAc,QAC9DzL,SAASG,OAAO,QAAS,2BAEzBH,SAASG,OAAO,YAGA,KAAlBgG,MAAM6f,SACfrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BvK,IAAIO,KAAK,QAAQ2H,SAAS,UAC1BlI,IAAIO,KAAK,cAAcnS,IAAI,IACpB4R,IAAIO,KAAK,eAAeiM,QAJ1B,UAQJha,SAASuN,OAAQE,OAAOoQ,QAASxI,WAGxC/H,KAAMA,OAIV9d,OAAO6d,UAAU,aAAc,UAAW,OAAQ,cAAe,aAAc,aAAc,eAAgB,aAAc,cAAe,WAAY,aAAcgrD,oBAEnKplE,KAAKrD,MA2BR,WACE,GAAI+oE,+BAA+BC,6BAA8BC,4BAA6BC,6BAA8BC,4BAA6BC,0CAA2CC,qCAAsC/4D,SAAU1Q,OAAQG,KAE5PA,OAAQC,KAAKD,MAEbuQ,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,eAExBspE,6BAA+B,WAG7B,QAASA,8BAA6B5yC,OAAQgzC,iBAAkB1zB,SAAUpQ,QAAS8tB,IAAK5qC,WACtF,GAAI6gD,oBACJvpE,MAAKqS,MAAQikB,OACbt2B,KAAKyjC,gBAAkB6lC,iBACvBtpE,KAAK41C,SAAWA,SAChB51C,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKg7C,IACVtzD,KAAK0oB,UAAYA,UACjB1oB,KAAKwpE,mBAAqB,EAC1BxpE,KAAKypE,aAAezpE,KAAKiI,QAAQwP,MAAM,GAAGM,GAC1C/X,KAAK8d,KAAO,KACZ9d,KAAK0pE,eAAgB,EACrB1pE,KAAK2pE,aAAc,EACnB3pE,KAAK4pE,iBACgC,OAAjC5pE,KAAKiI,QAAQopC,gBACfrxC,KAAK6pE,aAAe7pE,KAAKwpE,oBAEzBD,oBAAsBtoE,KAAKoJ,IAAIrK,KAAKiI,QAAQopC,gBAAkBrxC,KAAKiI,QAAQ6hE,kBAAmB,GAC9F9pE,KAAK6pE,aAAe5oE,KAAKmJ,IAAIm/D,oBAAqBvpE,KAAKwpE,qBAEzDxpE,KAAK+pE,kBAkDP,MAxEAb,8BAA6B9uD,SAAW,SAAU,kBAAmB,WAAY,aAAc,eAAgB,cAyB/G8uD,6BAA6Bh6D,UAAU66D,gBAAkB,WAQvD,MAPA/pE,MAAK4pE,cAAcljE,MACjB+C,MAAO,GACPugE,QAAShqE,KAAKypE,eAEZzpE,KAAK4pE,cAAcp9D,QAAUxM,KAAK6pE,eACpC7pE,KAAK2pE,aAAc,GAEd3pE,KAAKiqE,oBAAsBjqE,KAAK2pE,aAAe3pE,KAAKiI,QAAQ6hE,kBAAoB9pE,KAAK4pE,cAAcp9D,SAAWxM,KAAKiI,QAAQopC,iBAGpI63B,6BAA6Bh6D,UAAUg7D,mBAAqB,SAAShsB,OAGnE,MAFAl+C,MAAK4pE,cAAc7iB,OAAO7I,MAAO,GACjCl+C,KAAK2pE,aAAc,EACZ3pE,KAAKiqE,mBAA2C,IAAtBjqE,KAAK6pE,cAGxCX,6BAA6Bh6D,UAAU+O,OAAS,WAC9C,GAAI7a,QAGJ,OAFApD,MAAK8d,KAAKqsD,mBACVnqE,KAAK8d,KAAKm2B,QACLj0C,KAAK8d,KAAKS,YAGfve,KAAK4pE,cAAgBvpE,EAAEyM,OAAO9M,KAAK4pE,cAAe,SAASQ,SACzD,MAAyB,KAAlBA,QAAQ3gE,QAEjBzJ,KAAK0pE,eAAgB,EACrBtmE,QAAUpD,KAAKsY,GAAG2Y,YAAYo5C,sBAAsBrqE,KAAKiI,QAAQ8P,GAAI/X,KAAK4pE,cAAe5pE,KAAKsqE,gBACvFlnE,QAAQD,KAAKnD,KAAKuqE,iBAAiBl7D,KAAKrP,MAAOA,KAAKwqE,eAAen7D,KAAKrP,QAR/E,QAWFkpE,6BAA6Bh6D,UAAUq7D,iBAAmB,WAIxD,MAHAvqE,MAAK0pE,eAAgB,EACrB1pE,KAAK0oB,UAAU5H,WAAW,2BAC1B9gB,KAAKyjC,gBAAgBz9B,WACdhG,KAAKwlC,QAAQ79B,OAAO,YAG7BuhE,6BAA6Bh6D,UAAUs7D,eAAiB,SAAS7kE,UAG/D,MAFA3F,MAAK0pE,eAAgB,EACrB1pE,KAAK8d,KAAKqB,UAAUxZ,SAASuB,MACzBvB,SAASuB,KAAK+X,eACTjf,KAAKwlC,QAAQ79B,OAAO,QAAShC,SAASuB,KAAK+X,gBADpD,QAKKiqD,gCAITtpE,OAAO2D,WAAW,yBAA0B2lE,8BAE5CC,4BAA8B,SAAS1lC,iBACrC,GAAI/lB,KAKJ,OAJAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAEhC,MADAhnC,iBAAgB3b,KAAKqb,IACdsnC,KAAK3sD,KAAOqlB,GAAGhlB,KAAK,QAAQnT,cAGnCqH,SACAq4D,kBACEziE,QAAS,KAEX1E,WAAY,yBACZC,aAAc,KACdF,YAAa,kCACboa,KAAMA,OAIV9d,OAAO6d,UAAU,kBAAmB,kBAAmB0rD,8BAEvDC,0CAA4C,WAC1C,OACE9lE,YAAa,sEACb+O,OACEpK,QAAS,OAKfrI,OAAO6d,UAAU,sCAAuC2rD,4CAExDH,4BAA8B,SAASxlC,gBAAiBnrB,GAAIqyD,eAAgB3nE,YAC1E,OACE0a,KAAM,SAASrL,MAAO8wB,IAEpB,MADAM,iBAAgB3b,KAAKqb,IACd9wB,MAAMzL,QAAU,WAErB,MADAyL,OAAMwlB,SAAU,EACTvf,GAAGC,SAASqyD,gBAAgBv4D,MAAMoG,WAAWtV,KAAK,WAGvD,MAFAkP,OAAMwlB,SAAU,EAChB4L,gBAAgBxZ,MAAMkZ,IACfwnC,eAAehjE,OAAO,UAAW3E,WAAW0E,QAAQ,wDAIjEpE,YAAa,oDAIjB1D,OAAO6d,UAAU,wBAAyB,kBAAmB,cAAe,aAAc,aAAcwrD,8BAExGF,8BAAgC,WAC9B,QAASA,+BAA8BzV,IAAKgW,iBAAkB9jC,QAAS9qB,WACrE1a,KAAKsY,GAAKg7C,IACVtzD,KAAKyjC,gBAAkB6lC,iBACvBtpE,KAAKwlC,QAAUA,QACfxlC,KAAK0a,UAAYA,UACjB1a,KAAKwX,SACLxX,KAAK+P,EAAI,GACT/P,KAAK6qE,aAAc,EA2ErB,MAxEA9B,+BAA8B75D,UAAU47D,MAAQ,EAEhD/B,8BAA8B75D,UAAU2lC,gBAAkB,SAASK,kBAMjE,MALAA,kBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KACrFivC,iBAAmBA,iBAAiBjvC,QAAQ,IAAK,KAAKA,QAAQ,IAAK,KAAKA,QAAQ,IAAK,MAIvF8iE,8BAA8B75D,UAAU0lC,YAAc,SAASjpC,MAC7D,GAAI4H,MAAMiL,QAKV,OAJAA,UAAW7S,KAAK8jB,kBAAkB0lB,cAClC32B,SAAWxe,KAAK60C,gBAAgBr2B,UAChCjL,KAAOvT,KAAK+P,EAAEolC,cACd5hC,KAAOvT,KAAK60C,gBAAgBthC,MACrBlT,EAAE8X,SAASqG,SAAUjL,OAG9Bw1D,8BAA8B75D,UAAU67D,SAAW,WACjD,GAAIvzD,MAUJ,OANEA,OAHGxX,KAAKwX,MAAMhL,QAAWxM,KAAK+P,EAAEvD,OAGxBxM,KAAKwX,MAFLxX,KAAK0X,YAIfF,MAAQA,MAAM5F,MAAM,EAAG5R,KAAK8qE,OAC5BtzD,MAAQnX,EAAEiG,OAAOkR,OACfysB,UAAY,IAEP5jC,EAAEiG,OAAOkR,OACdO,GAAM/X,KAAKgrE,kBAIfjC,8BAA8B75D,UAAU+7D,WAAa,WAKnD,MAJAjrE,MAAKwX,MAAQxX,KAAK0X,YAClB1X,KAAKikC,SAAW5jC,EAAE8d,KAAKne,KAAKwX,OAC1BysB,UAAY,IAEVjkC,KAAK+P,EACA/P,KAAKwX,MAAQnX,EAAEyM,OAAO9M,KAAKwX,MAAOxX,KAAK40C,YAAYvlC,KAAKrP,OADjE,QAKF+oE,8BAA8B75D,UAAUg8D,WAAa,SAASv/D,MAM5D,MALA3L,MAAK0X,YAAcrX,EAAEC,IAAIN,KAAK0X,YAAa,SAAS/L,MAElD,MADAA,MAAKs4B,UAAW,EACTt4B,OAETA,KAAKs4B,UAAW,EACTjkC,KAAKirE,cAGdlC,8BAA8B75D,UAAU+O,OAAS,WAE/C,MADAje,MAAK63B,SAAU,EACR73B,KAAKsY,GAAGC,SAAS4yD,cAAcnrE,KAAKyY,UAAWzY,KAAKikC,SAASlsB,GAAI/X,KAAK+qC,SAAS5nC,KAAK,SAAUoE,OACnG,MAAO,YACL,GAAI8iB,MAAM3mB,KAKV,OAJA6D,OAAMswB,SAAU,EAChBtwB,MAAMk8B,gBAAgBz9B,WACtBtC,MAAQ6D,MAAMmT,UAAUhT,QAAQ,oDAChC2iB,KAAO9iB,MAAMmT,UAAUhT,QAAQ,mDACxBH,MAAMi+B,QAAQnmB,QAAQ3b,MAAO2mB,MAClC7gB,KAAM,MACNwJ,KAAM,oBAGThT,QAGE+oE,iCAITA,8BAA8B3uD,SAAW,cAAe,kBAAmB,aAAc,cAEzFxa,OAAO2D,WAAW,sBAAuBwlE,+BAEzCC,6BAA+B,SAASvlC,gBAAiBiR,kCAAmC5nB,UAAWD,UACrG,GAAInP,KAIJ,OAHAA,MAAO,SAASrL,MAAO8wB,IACrB,MAAOM,iBAAgB3b,KAAKqb,MAG5B9wB,OAAO,EACP9O,WAAY,sBACZC,aAAc,KACdknE,kBACEM,eAAgB,IAChBvyD,UAAW,IACXf,YAAa,KAEfpU,YAAa,6CACboa,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,kBAAmB,oCAAqC,cAAe,WAAYurD,+BAExHK,qCAAuC,SAAS5lC,iBAC9C,GAAI/lB,KAOJ,OANAA,MAAO,SAASrL,MAAO8wB,IAIrB,MAHA9wB,OAAM4X,MAAQ,WACZ,MAAOwZ,iBAAgBxZ,MAAMkZ,KAExBM,gBAAgB3b,KAAKqb,MAG5B7/B,YAAa,+DACboa,KAAMA,OAIV9d,OAAO6d,UAAU,mCAAoC,kBAAmB4rD,wCAEvEhmE,KAAKrD,MA2BR,WACE,GAAIorE,uBAAuBC,qBAAsBC,+BAAgCC,qCAAsCC,8BAA+BC,oCAAqCC,sCAAuCv7D,YAAaS,MAAOhR,OAAQG,MAC5P8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBT,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,cAExBwrE,sBAAwB,SAAU17D,YAKhC,QAAS07D,uBAAsB/4D,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAASmzC,UAAW13C,eAAgBmP,UAAWkB,KAAM+vD,kBAC5I,GAAIvoE,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKijD,UAAYA,UACjBjjD,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjB1a,KAAK4b,KAAOA,KACZ5b,KAAKsmE,gBAAkBqF,iBACvBx7D,YAAYnQ,MACZA,KAAKqS,MAAMpK,WACXjI,KAAKqS,MAAM+G,WACXhW,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAKjB,OAJAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,gCAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAChDA,KAAKqS,MAAMvG,IAAI,0BAA2B,SAAUvE,OAClD,MAAO,YAEL,MADAA,OAAMmvB,kBACCnvB,MAAM07C,UAAUjkC,WAAW,aAAc,SAAU,8BAA+B,KAE1Fhf,OAyEL,MAjHA6C,QAAOuoE,sBAAuB17D,YAE9B07D,sBAAsBhxD,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,aAAc,eAAgB,mBAAoB,aAAc,UAAW,qBAyClNgxD,sBAAsBl8D,UAAUioB,YAAc,WAC5C,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAQd,MAPKA,SAAQ2jE,YACXrkE,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAMs3D,YAA0C,OAA5B1hE,QAAQopC,iBAA4BppC,QAAQopC,gBAAkBppC,QAAQ6hE,kBAChGviE,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGLorE,sBAAsBl8D,UAAUo2D,YAAc,WAC5C,GAAIuG,YAEJ,OADAA,aAAc7rE,KAAK2lD,gBACZ3lD,KAAKsY,GAAG2Y,YAAYlC,KAAK/uB,KAAKqS,MAAMoG,UAAWozD,aAAa1oE,KAAK,SAAUoE,OAChF,MAAO,UAASL,MAOd,MANAK,OAAM8K,MAAM4e,YAAc5wB,EAAEyM,OAAO5F,KAAK+4D,OAAQ,SAAS6L,YACvD,MAA2B,QAApBA,WAAWngE,MAAiBmgE,WAAWC,iBAEhDxkE,MAAM8K,MAAM6oB,KAAOh0B,KAAK2jD,QACxBtjD,MAAM8K,MAAM2tC,MAAQ94C,KAAK84C,MACzBz4C,MAAM8K,MAAM6tD,YAAch5D,KAAKg5D,YACxBh5D,OAERlH,QAGLorE,sBAAsBl8D,UAAUwnB,gBAAkB,WAChD,MAAO12B,MAAKm3B,cAAch0B,KAAK,SAAUoE,OACvC,MAAO,YACL,MAAOA,OAAMwI,EAAEsI,KAAK9Q,MAAM+9D,cAAe/9D,MAAMqU,KAAK7P,cAErD/L,QAGLorE,sBAAsBl8D,UAAUy2C,cAAgB,WAC9C,GAAIvsC,QAKJ,OAJAA,SAAU/Y,EAAEonD,KAAKznD,KAAK6P,SAASxJ,SAAU,QACpC+S,QAAQ8hB,OACX9hB,QAAQ8hB,KAAO,GAEV9hB,SAGTgyD,sBAAsBl8D,UAAU88D,cAAgB,WAC9C,MAAOhsE,MAAKsmE,gBAAgBl6C,OAAO,qBACjCslB,QAAS,+BACTzpC,QAAW,YAEXA,QAAWjI,KAAKqS,MAAMpK,WAI1BmjE,sBAAsBl8D,UAAU+8D,6BAA+B,WAC7D,GAAI/nC,MAAM9kB,QAAS1b,KAMnB,OALAA,OAAQ1D,KAAK0a,UAAUhT,QAAQ,yCAC/B0X,QAAUpf,KAAK0a,UAAUhT,QAAQ,iDAC/BuQ,QAASjY,KAAKqS,MAAMpK,QAAQopC,kBAE9BnN,KAAO,IAAMhkC,OAAOyI,SAAW,+BACxB3I,KAAKwlC,QAAQnmB,QAAQ3b,MAAO0b,SACjCpM,KAAMkxB,KACN16B,KAAM,SAIH4hE,uBAENx6D,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,wBAAyB6nE,uBAE3CC,qBAAuB,SAASv+C,UAAWD,UACzC,GAAInP,MAAMgjD,eAAgBrjD,QAyG1B,OAxGAA,UAAWyP,UAAU1nB,IAAI,yCAAyC,GAClEs7D,eAAiB,SAAS/iD,OAAQC,IAAKC,OAAQqR,OAC7C,GAAIyxC,QAAQC,aAAcC,QAASC,MAAOC,cAAeC,YAAaC,gBAmFtE,OAlFAL,cAAe,EACfG,cAAgB,EAChBF,QAAU,EACVC,MAAQ,EACRH,OAAS/iD,IAAIO,KAAK,0BAClB6iD,YAAc,WACZ,GAAIE,SAOJ,OANAA,UAAWvjD,OAAOqiC,MAAQriC,OAAOuiD,YAE/BgB,SADE/7C,SAAS+7C,SAAU,IAAMA,SAChB/7C,SAAS+7C,SAAU,IAAM,EAEzB/7C,SAAS+7C,SAAU,KAIlCD,iBAAmB,WACjB,GAAIE,OAAO5zC,KAAM7b,EAAG44B,EAAG42B,SAAUnU,QAASqU,MAAOnuD,GAEjD,IADAiuD,SAAWF,cACK,GAAZE,SAEF,WADAP,QAAO//B,MAST,KANAwgC,SACArU,WACAA,QAAQqU,MAAQA,MAChBrU,QAAQsU,aAAe1jD,OAAOud,KAAO,EACrC6xB,QAAQuU,WAAa3jD,OAAOud,OAASgmC,UACrCC,MAAQxjD,OAAOud,KACVxpB,EAAI44B,EAAI,EAAGr3B,IAAMiuD,SAAejuD,KAAL,EAAgBA,KAALq3B,EAAWA,GAAKr3B,IAAKvB,EAASuB,KAAL,IAAaq3B,IAAMA,EACjF54B,IAAOyvD,MAAQP,cAAiBM,SAAYC,MAAQP,aAAeE,MACrEM,MAAM16D,MACJ6f,QAAS,OACT/c,KAAM,SAECkI,IAAOyvD,MAAQJ,eAAkBI,MAASN,QAAUE,cAC7DK,MAAM16D,MACJ6f,QAAS,OACT/c,KAAM,SAECkI,EAAKyvD,MAAQP,cAAuBM,SAAWJ,OAAjBpvD,GAEzByvD,MAAQJ,cAAbrvD,GAA+BA,EAAImvD,UAEnCnvD,IAAMyvD,MACfC,MAAM16D,MACJ6f,QAAS,SACT8hB,IAAK32B,EACLlI,KAAM,gBAGR43D,MAAM16D,MACJ6f,QAAS,OACT8hB,IAAK32B,EACLlI,KAAM,SAOZ,OAHA+jB,MAAOlQ,SAAS0vC,SAChBx/B,KAAOV,SAASU,MAAM5P,QACtBgjD,OAAOpzC,KAAKA,MACLozC,OAAOv2C,QAEhBzM,OAAOjL,OAAO,cAAe,SAASpE,OACpC,MAAKA,OAGE2yD,mBAHP,SAKFrjD,IAAIc,GAAG,QAAS,gCAAiC,SAAS/Q,OAExD,MADAA,OAAM2Q,iBACCX,OAAO1J,OAAO,WAEnB,MADAib,OAAMtW,aAAa,OAAQ+E,OAAOud,KAAO,GAClChM,MAAMo2C,kBAGjB1nD,IAAIc,GAAG,QAAS,oCAAqC,SAAS/Q,OAE5D,MADAA,OAAM2Q,iBACCX,OAAO1J,OAAO,WAEnB,MADAib,OAAMtW,aAAa,OAAQ+E,OAAOud,KAAO,GAClChM,MAAMo2C,kBAGV1nD,IAAIc,GAAG,QAAS,qCAAsC,SAAS/Q,OACpE,GAAI4zD,SAASp1C,MAIb,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/Bo5C,QAAUp1C,OAAOjlB,KAAK,WACfyW,OAAO1J,OAAO,WAEnB,MADAib,OAAMtW,aAAa,OAAQ2oD,SACpBryC,MAAMo2C,mBAInB5nD,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,MAGJ,OAFAA,OAAQtR,IAAIra,aACZm9D,eAAe/iD,OAAQC,IAAKC,OAAQqR,OAC7BvR,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB,cAAe,WAAY4tD,uBAE9DG,8BAAgC,SAAStgE,KAAM4hB,UAAW9pB,YACxD,GAAI0a,MAAML,QA0BV,OAzBAA,UAAWyP,UAAU1nB,IAAI,qCAAqC,GAC9DsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIyR,QAAQ48C,QAASzmD,MAcrB,OAbAymD,SAAUlpE,WAAW0E,QAAQ,mCAC7B+d,OAAS,SAAS6J,QAChB,GAAIriB,KAAKsgB,IAST,OARAtgB,MACE2yD,UAAWtwC,OAAOswC,UAAYtwC,OAAOswC,UAAY,GACjDn2D,MAAO6lB,OAAO68C,WAAa78C,OAAO68C,WAAa78C,OAAO7lB,MACtD8lB,OAAQD,OAAOE,MAAQF,OAAOE,MAAQ,IAAMtvB,OAAOyI,SAAW,sBAC9DujE,QAAU58C,OAAOy8C,eAA2B,GAAVG,QAClCE,QAAS98C,OAAO+8C,UAElB9+C,KAAOlQ,SAASpQ,KACT2Q,IAAI2P,KAAKA,OAEmB,MAAjC1P,OAAOyuD,uBACFphE,KAAKgU,MAAM,+DAEpBoQ,OAAS3R,OAAOlL,MAAMoL,OAAOyuD,wBAC7B7mD,OAAO6J,QACA3R,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,WAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,0BAA2B,OAAQ,cAAe,aAAc+tD,gCAEjFD,qCAAuC,SAASrgE,KAAMoV,MAAO9Y,SAAUslB,UAAWD,UAChF,GAAInP,MAAML,QA6CV,OA5CAA,UAAWyP,UAAU1nB,IAAI,6CAA6C,GACtEsY,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI0P,MAAM+B,OAAQ7J,MAIlB,OAHA9H,QAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAE+B,MAAxCf,OAAO0uD,8BACFrhE,KAAKgU,MAAM,sEAEpBoQ,OAAS3R,OAAOlL,MAAMoL,OAAO0uD,+BACzBj9C,OAAO+8C,aACTzuD,KAAIO,KAAK,aAAapC,UAGxB0J,OAAS,SAAS6J,QAChB,GAAIriB,KAAKsgB,IAMT,OALAtgB,MACEu/D,QAAS,YAAcl9C,OAAOvX,IAEhCwV,KAAOlQ,SAASpQ,KAChBsgB,KAAOV,SAASU,MAAM5P,QACfC,IAAI2P,KAAKA,OAElB3P,IAAIc,GAAG,QAAS,YAAa,SAAUnX,OACrC,MAAO,UAASoG,OACd,GAAIoQ,SAASC,UAAWmO,MAWxB,OAVAnO,WAAY,WACV,MAAOxW,UAASG,OAAO,YAEzBoW,QAAU,SAAS7W,MAGjB,MAFAooB,QAAOoQ,SACP9hB,IAAIO,KAAK,aAAa2hC,KAAK,UAAWxwB,OAAOm9C,UACtCjlE,SAASG,OAAO,QAAST,KAAKulE,SAAS,KAEhDtgD,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BmH,OAAOm9C,SAAWtgD,OAAO2zB,KAAK,WACvBx/B,MAAMgN,KAAKgC,QAAQnsB,KAAK6a,UAAWD,WAE3C/d,OACHutB,KAAO9H,OAAO6J,QACVA,OAAOm9C,SACF7uD,IAAIO,KAAK,aAAa2hC,KAAK,WAAW,GAD/C,WAKApiC,KAAMA,OAIV9d,OAAO6d,UAAU,iCAAkC,OAAQ,UAAW,aAAc,cAAe,WAAY8tD,uCAE/GE,oCAAsC,SAASvgE,KAAMoV,MAAO9Y,UAC1D,GAAIkW,MAAML,QAwCV,OAvCAA,UAAWhd,EAAEgd,SAAS,+NACtBK,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAO3B,KAAM+B,OAAQ7J,MAUzB,OATAA,QAAS,SAAS6J,QAChB,GAAIriB,KAAKsgB,IAMT,OALAtgB,MACEy/D,SAAU/uD,OAAO1V,QAAQwP,MACzBk1D,aAAcr9C,OAAOgZ,MAEvB/a,KAAOlQ,SAASpQ,KACT2Q,IAAI2P,KAAKA,OAEyB,MAAvC1P,OAAO+uD,6BACF1hE,KAAKgU,MAAM,qEAEpBgQ,MAAQtR,IAAIra,aACZ+rB,OAAS3R,OAAOlL,MAAMoL,OAAO+uD,8BAC7Br/C,KAAO9H,OAAO6J,QACd1R,IAAIc,GAAG,SAAU,SAAU,SAAUnX,OACnC,MAAO,UAASoG,OACd,GAAIk/D,SAAS9uD,QAASC,UAAWmO,MASjC,OARAnO,WAAY,WACV,MAAOxW,UAASG,OAAO,YAEzBoW,QAAU,WACR,MAAOvW,UAASG,OAAO,UAEzBwkB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B0kD,QAAU1nD,SAASgH,OAAOngB,MAAO,IAC7BsjB,OAAOgZ,OAASukC,SAClBv9C,OAAOgZ,KAAOukC,QACPvsD,MAAMgN,KAAKgC,QAAQnsB,KAAK6a,UAAWD,UAF5C,SAKD/d,OACI2d,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,WAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,gCAAiC,OAAQ,UAAW,aAAcguD,sCAEnFH,+BAAiC,SAASpgE,KAAMoV,MAAOoO,IAAKlnB,SAAUqlB,SAAU7pB,WAAYuC,UAAWC,SAAU8gE,iBAC/G,GAAIwG,iBAAiBpvD,KAAMqvD,eAgG3B,OA/FAD,iBAAkB,0QAClBC,gBAAkB,yUAClBrvD,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOq3C,aAAcj3C,OAAQ7J,MAUjC,OATAA,QAAS,SAAS6J,QAChB,GAAI/B,KAMJ,OAJEA,MADE+B,OAAO3jB,KACFkhB,SAASigD,iBAAiBnvD,QAE1BkP,SAASkgD,iBAAiBpvD,QAE5BC,IAAI2P,KAAKA,OAEoB,MAAlC1P,OAAOmvD,wBACF9hE,KAAKgU,MAAM,gEAEpBgQ,MAAQtR,IAAIra,aACZ+rB,OAAS3R,OAAOlL,MAAMoL,OAAOmvD,yBAC7BvnD,OAAO6J,QACP1R,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OACrC,GAAIoQ,SAASC,SAcb,OAbArQ,OAAM2Q,iBACNN,UAAY,WACV,GAAIzK,KAIJ,OAHAA,MAAOvQ,WAAW0E,QAAQ,4CACxB+B,MAAOkU,OAAO2R,OAAO7lB,QAEhBjC,SAASG,OAAO,UAAW4L,OAEpCwK,QAAU,WACR,GAAIxK,KAEJ,OADAA,MAAOvQ,WAAW0E,QAAQ,0CACnBF,SAASG,OAAO,QAAS4L,OAE3Bmb,IAAIuC,YAAYg8C,iBAAiBtvD,OAAO2R,OAAOvX,IAAI5U,KAAK6a,UAAWD,WAE5EwoD,aAAe,WACb,GAAI2G,YAAY9tD,QAAS1b,KAMzB,OALAA,OAAQV,WAAW0E,QAAQ,kCAC3BwlE,WAAalqE,WAAW0E,QAAQ,2CAC9B+B,MAAO6lB,OAAO7lB,QAEhB2V,QAAUkQ,OAAO3jB,KAAO2jB,OAAOswC,UAAYsN,WACpC1lE,SAASsmB,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAS4qB,aACxD,GAAIhQ,SAASC,SA6Bb,OA5BAA,WAAY,SAAUzW,OACpB,MAAO,YACL,GAAIgM,KAaJ,OAZAwa,aAAYzB,SACRgD,OAAO3jB,OAASgS,OAAOhS,KAAKoM,IAC1B4F,OAAOud,KAAO,GAAMvd,OAAOqiC,MAAQ,GAAMriC,OAAOuiD,aAClDhxC,MAAMtW,aAAa,OAAQ+E,OAAOud,KAAO,GAE3ChM,MAAMwH,mBAENnxB,UAAU9C,KAAK+C,SAAS7C,QAAQ,SAElC4Q,KAAOvQ,WAAW0E,QAAQ,mCACxB0X,QAASA,UAEJ5X,SAASG,OAAO,UAAW4L,KAAM,KAAM,OAE/CvT,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YACL,GAAIgM,KAKJ,OAJAwa,aAAYzB,QAAO,GACnB/Y,KAAOvQ,WAAW0E,QAAQ,iCACxB0X,QAASA,UAEJ5X,SAASG,OAAO,QAAS4L,QAEjCvT,MACIsgB,MAAMvE,OAAOuT,QAAQnsB,KAAK6a,UAAWD,YAGhDH,IAAIc,GAAG,QAAS,UAAW,SAAS/Q,OAClC,GAAIg5D,cAEJ,OADAh5D,OAAM2Q,iBACFX,OAAO1V,QAAQ62B,MAAM/mB,KAAOuX,OAAO3jB,MACrCg7D,cAAgBhpD,OAAOhS,KAAKoM,KAAOuX,OAAO3jB;AACnC26D,gBAAgBl6C,OAAO,qCAC5BslB,QAAS,4CAETi1B,cAAeA,cACf1+D,QAAS0V,OAAO1V,WAGXs+D,iBAGJ5oD,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,WAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,2BAA4B,OAAQ,UAAW,eAAgB,aAAc,WAAY,aAAc,cAAe,aAAc,oBAAqB6tD,iCAE1KI,sCAAwC,WACtC,OACEpoE,YAAa,6CACb+O,OACEpK,QAAS,OAKfrI,OAAO6d,UAAU,kCAAmCiuD,yCAEnDroE,KAAKrD,MA2BR,WACE,GAAImtE,0BAA0BvtE,MAE9ButE,0BAA2B,WACzB,GAAIzvD,KAUJ,OATAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI7Z,QAIJ,OAHAA,SAAU6Z,OAAOuvD,kBACjBxvD,IAAIO,KAAK,WAAWwH,YAAY,UAChC/H,IAAIO,KAAK,cAAgBna,QAAU,MAAM8hB,SAAS,UAC3CnI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAASgD,QAAQhD,OAAO,cAExBA,OAAO6d,UAAU,oBAAqB0vD,2BAErC9pE,KAAKrD,MA2BR,WACE,GAAIqtE,kCAAkCC,sCAAuCC,kCAAmCC,sBAAuBC,4BAA6BC,2BAA4BC,iCAAkCC,kBAAmBC,iBAAkBC,eAAgBC,8BAA+BC,uBAAwBC,qBAAsBC,0BAA2BC,wBAAyBC,yBAA0BC,wBAAyBj+D,SAAUE,SAAUG,QAASE,QAASC,MAAOhR,OAAQG,MAAOqR,SAAUE,KAC/gBzO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,eACbC,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,YAElE1P,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBU,KAAOtR,KAAKD,MAAMuR,KAElBF,SAAWpR,KAAKD,MAAMqR,SAEtBT,QAAU3Q,KAAKD,MAAM4Q,QAErBF,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,cAExBwuE,yBAA2B,SAAU1+D,YAKnC,QAAS0+D,0BAAyB93C,OAAQjc,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAASvE,eAAgBmP,UAAW4zD,OAAQ3zD,qBACvI,GAAIvX,QACJpD,MAAKqS,MAAQikB,OACbt2B,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjB1a,KAAKsuE,OAASA,OACdtuE,KAAKma,mBAAqBQ,oBAC1B3a,KAAKqS,MAAMpK,WACX7E,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAa8yB,YAAa/yB,KAQ9B,OAPA+yB,aAAclvB,MAAMmT,UAAUhT,QAAQH,MAAM8K,MAAMokB,aAClD/yB,MAAQ6D,MAAMmT,UAAUhT,QAAQ,oCAC9B+uB,YAAaA,YACbE,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAClC4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,aAC5B4D,MAAMgQ,kBAAkBhQ,MAAM8K,MAAMpK,QAAQgQ,QAAS1Q,MAAM8K,MAAMpK,QAAQwP,SAEjFzX,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAChDA,KAAKqS,MAAMvG,IAAI,iBAAkB,SAAUvE,OACzC,MAAO,YACL,GAAI5D,aAAa8yB,YAAa/yB,KAO9B,OANA+yB,aAAclvB,MAAMmT,UAAUhT,QAAQH,MAAM8K,MAAMokB,aAClD/yB,MAAQ6D,MAAMmT,UAAUhT,QAAQ,oCAC9B+uB,YAAaA,YACbE,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OAgCL,MA9EA6C,QAAOurE,yBAA0B1+D,YAEjC0+D,yBAAyBh0D,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,aAAc,mBAAoB,aAAc,UAAW,wBA+CrMg0D,yBAAyBl/D,UAAUioB,YAAc,WAC/C,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAcd,MAbKA,SAAQ2jE,YACXrkE,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM+hD,WAAa/zD,EAAEwX,OAAO5P,QAAQgqB,OAAQ,SAClD1qB,MAAM8K,MAAM6hC,aAAe7zC,EAAEwX,OAAO5P,QAAQ2vB,YAAa,SACzDrwB,MAAM8K,MAAMiiD,eAAiBj0D,EAAEwX,OAAO5P,QAAQuvB,cAAe,SAC7DjwB,MAAM8K,MAAMk8D,eAAiBluE,EAAEwX,OAAO5P,QAAQoqB,WAAY,SAC1D9qB,MAAM8K,MAAMm8D,eAAiBnuE,EAAEwX,OAAO5P,QAAQqqB,WAAY,SAC1D/qB,MAAM8K,MAAMo8D,eAAiBpuE,EAAEwX,OAAO5P,QAAQs0D,YAAa,SAC3Dh1D,MAAM8K,MAAMmsD,gBAAkBn+D,EAAEwX,OAAO5P,QAAQqvB,eAAgB,SAC/D/vB,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGLouE,yBAAyBl/D,UAAUwnB,gBAAkB,WACnD,MAAO12B,MAAK+P,EAAEsI,KAAKrY,KAAKm3B,cAAen3B,KAAKsuE,OAAOviE,aAGrDqiE,yBAAyBl/D,UAAUw/D,mBAAqB,WACtD,MAAO1uE,MAAKqa,UAAUyG,WAAW,qBAAsB9gB,KAAKqS,MAAMpK,UAG7DmmE,0BAENx9D,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,2BAA4B6qE,0BAE9CC,wBAA0B,SAAS/tD,MAAO9Y,SAAUskB,SAAU/H,SAAUxe,UAAWiG,eAAgB2O,oBACjG,GAAIuD,KAwCJ,OAvCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOpR,KAAMG,OAAQgO,YAoCzB,OAnCAiD,OAAQtR,IAAIra,aACZua,KAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAuB,IAEzBd,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAMgN,KAAK3P,OAAO1V,SAC5B7E,QAAQD,KAAK,WACX,GAAIwrE,OASJ,OARAziD,gBAAeI,SACf9kB,SAASG,OAAO,WAChBgnE,OAAS5qD,SAASphB,QAAQ,yCACxBsF,QAAS0V,OAAO1V,QAAQgf,OAE1B1hB,UAAU9C,KAAKksE,QACfz/C,MAAMwH,kBACNlrB,eAAeojE,eACRz0D,mBAAmBo3B,iBAErBnuC,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UApBF,SAyBDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACjBP,IAAIc,GAAG,SAAU,OAAQT,UAGhCP,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB,UAAW,aAAc,aAAc,aAAc,cAAe,mBAAoB,uBAAwB4wD,0BAEtJN,8BAAgC,SAASztD,MAAO9Y,SAAUskB,UACxD,GAAIpO,KAkCJ,OAjCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMG,OAAQgO,YA4BlB,OA3BAnO,MAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAuB,IAEzBd,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAMgN,KAAK3P,OAAO1V,SAC5B7E,QAAQD,KAAK,WAEX,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,aAElBvE,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UAZF,SAiBDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,0BAA2B,UAAW,aAAc,aAAcswD,gCAEnFI,wBAA0B,SAAS7tD,MAAO9Y,SAAUskB,SAAUtgB,gBAC5D,GAAIkS,KA+DJ,OA9DAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAII,OAqDJ,OApDAA,QAAS,SAAU1W,OACjB,MAAO,YACL,GAAIuW,MAAM1a,OAIV,OAHA0a,MAAOF,IAAIO,KAAK,QAAQnT,YACxB8S,KAAKqsD,mBACLrsD,KAAKm2B,QACAn2B,KAAKS,YAGVnb,QAAUkd,MAAMgN,KAAK3P,OAAO1V,SAC5B7E,QAAQD,KAAK,WAGX,MAFAwa,QAAOqQ,MAAM,iBAAkBrQ,OAAO1V,SACtCT,SAASG,OAAO,WACT6D,eAAeojE,iBAEjBxrE,QAAQD,KAAK,KAAM,SAAS+D,MAEjC,MADA4W,MAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UAXF,SAgBDjf,MACH4d,IAAIc,GAAG,SAAU,gDAAiD,SAAS/Q,OAEzE,MADAA,OAAM2Q,iBACCL,WAETL,IAAIc,GAAG,SAAU,OAAQ,SAAS/Q,OAEhC,MADAA,OAAM2Q,iBACCL,WAETL,IAAIc,GAAG,QAAS,aAAc,SAAS/Q,OAErC,MADAA,OAAM2Q,iBACCL,WAETL,IAAIc,GAAG,UAAW,oCAAqC,SAAS1R,GAC9D,MAAmB,MAAZA,EAAE2lC,QAEXh1B,OAAOjL,OAAO,2BAA4B,SAASm8D,OAAQC,QACzD,MAAe,OAAVD,QAA8B,MAAVC,QAAmBD,SAAWC,OAC9CnxD,OAAO1V,QAAQ8mE,4BAA8B,GADtD,SAIFpxD,OAAOjL,OAAO,6BAA8B,SAASyE,SAAUwkB,UAC7D,MAAIxkB,aAAa,IACfwG,OAAO1V,QAAQ+mE,iBAAmB,KAClCrxD,OAAO1V,QAAQ8mE,4BAA8B,GACzCpzC,YAAa,GACR1d,SAJX,SAQKN,OAAOjL,OAAO,UAAW,SAASzK,SACvC,MAAgC,OAA5BA,QAAQ+mE,iBACHrxD,OAAOsxD,4BAA6B,EAEpCtxD,OAAOsxD,4BAA6B,MAK/CvxD,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB,UAAW,aAAc,aAAc,mBAAoB0wD,0BAEjGH,uBAAyB,SAASptD,QAAS8N,IAAKlnB,SAAUxE,YACxD,GAAI0a,KA+GJ,OA9GAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqxD,cAAcC,UAAWC,gBAAiBC,YAAaC,WAAYC,YAAaC,YAAaC,cAAeC,SAAUC,gBAAiBC,cAAeC,gBAAiBC,cAAeC,kBAAmBC,gBAAiBC,eAAgBC,aAAcC,YAAaC,cAAeC,0BAA2BC,yBAA0BC,gBAAiBC,WAAYC,YAAaC,UAAWC,WA6ElY,OA5EAxB,WAAYvxD,IAAIO,KAAK,iCACrBgyD,YAAc,WACZ,MAAOhB,WAAUxpD,YAAY,WAE/B0pD,YAAc,WACZ,MAAOF,WAAUrpD,SAAS,WAE5B4pD,SAAW9xD,IAAIO,KAAK,gCACpBqyD,WAAa,WACX,MAAOd,UAAS/pD,YAAY,WAE9B2pD,WAAa,WACX,MAAOI,UAAS5pD,SAAS,WAE3B4qD,UAAY9yD,IAAIO,KAAK,SACrBsyD,YAAc,WACZ,MAAOC,WAAU/qD,YAAY,WAE/B4pD,YAAc,WACZ,MAAOmB,WAAU5qD,SAAS,WAE5B8pD,cAAgBhyD,IAAIO,KAAK,iBACzBsxD,cAAgBzsE,WAAW0E,QAAQ,sCACnC8nE,YAAcxsE,WAAW0E,QAAQ,wCACjC0nE,gBAAkB,WAChB,MAAOQ,eAAcriD,KAAKvqB,WAAW0E,QAAQ,qCAE/CwnE,aAAe,WACb,MAAOU,eAAcriD,KAAKvqB,WAAW0E,QAAQ,wCAE/CipE,YAAc,SAASzqE,KACrB,MAAO0pE,eAAcriD,KAAKvqB,WAAW0E,QAAQ,qCAC3CxB,IAAKA,QAGT8pE,gBAAkB,WAChB,MAAOJ,eAAcriD,KAAKkiD,gBAE5BK,cAAgB,WACd,MAAOF,eAAcriD,KAAKiiD,cAE5BU,aAAe,WACb,MAAON,eAAcriD,KAAK6hD,kBAE5BO,gBAAkB/xD,IAAIO,KAAK,oBAC3B4xD,kBAAoB,WAClB,MAAOJ,iBAAgBpiD,KAAKiiD,cAE9BK,gBAAkB,WAChB,MAAOF,iBAAgBpiD,KAAK2hD,eAE9Be,eAAiB,SAAS/pE,KACxB,MAAOypE,iBAAgBpiD,KAAKojD,YAAYzqE,OAE1CqqE,gBAAkB,WAKhB,MAJAE,eACAT,kBACAD,oBACAV,cACOmB,cAETH,0BAA4B,WAG1B,MAFAd,eACAO,gBACOD,mBAETS,yBAA2B,SAASpqE,KAGlC,MAFAqpE,eACAW,eACOD,eAAe/pE,MAExBkqE,cAAgB,WAGd,MAFAb,eACAD,aACOa,eAEFvyD,IAAIc,GAAG,QAAS,kBAAmBpO,SAAS,IAAM,SAAU/I,OACjE,MAAO,UAASoG,OACd,GAAIoQ,SAASC,SA0Bb,OAzBArQ,OAAM2Q,iBACNN,UAAY,SAASrK,QACnB,GAAIi9D,QACJ,OAAsB,OAAlBj9D,OAAO9N,OACFwqE,6BAEPO,QAAUj9D,OAAOzM,KAAKhB,IACtBoqE,yBAAyBM,SAClBhwD,QAAQkH,KAAK8oD,QAAS,YAGjC7yD,QAAU,SAASpK,QACjB,GAAI69B,UAAUv+B,GAUd,OATAm9D,iBACA5+B,SAAWxuC,WAAW0E,QAAQ,8BACR,MAAlBiM,OAAO9N,OACT2rC,SAAWxuC,WAAW0E,QAAQ,oCACE,OAAtBuL,IAAMU,OAAOzM,MAAgB+L,IAAIgM,eAAiB,UAC5DuyB,SAAWxuC,WAAW0E,QAAQ,mCAC5B0X,QAASzL,OAAOzM,KAAK+X,kBAGlBzX,SAASG,OAAO,QAAS6pC,WAElC++B,kBACO7hD,IAAInW,SAAS,UAAUoF,OAAOlF,WAAWtV,KAAK6a,UAAWD,WAEjE/d,UAGH0d,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,UAAW,eAAgB,aAAc,aAAcuwD,yBAE5FR,sBAAwB,SAAU99D,YAKhC,QAAS89D,uBAAsBl3C,OAAQjc,UAAWI,KAAM+qB,QAASltB,GAAIoC,WACnE1a,KAAKqS,MAAQikB,OACbt2B,KAAKqa,UAAYA,UACjBra,KAAKya,KAAOA,KACZza,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAK0a,UAAYA,UACjB1a,KAAK6wE,cAAgBxhE,KAAKrP,KAAK6wE,cAAe7wE,MAC9CA,KAAK8wE,WAAazhE,KAAKrP,KAAK8wE,WAAY9wE,MACxCA,KAAKqa,UAAUvO,IAAI,iBAAkB9L,KAAK8wE,YAC1C9wE,KAAKqS,MAAMK,OAAO,UAAW,SAAUnL,OACrC,MAAO,UAAS+G,OACd,MAAIA,OACK/G,MAAM8K,MAAM0+D,OAASxpE,MAAMkT,KAAKu2D,gBAAgBzpE,MAAMiC,KAAO,OAAQ8E,OAErE/G,MAAM8K,MAAM0+D,OAAS,KAG/B/wE,OA2CL,MAjEA6C,QAAO2qE,sBAAuB99D,YAE9B89D,sBAAsBpzD,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,cAuBlGozD,sBAAsBt+D,UAAU4hE,WAAa,WAC3C,MAAO9wE,MAAKqS,MAAM4+D,QAAUjxE,KAAKqS,MAAMpK,QAAQjI,KAAKwJ,KAAO,cAG7DgkE,sBAAsBt+D,UAAU2hE,cAAgB,SAASlrE,UACvD,GAAIvC,QAqBJ,OApBgB,OAAZuC,WACFA,SAAW,MAEbvC,QAAUpD,KAAKsY,GAAGC,SAAS,cAAgBvY,KAAKwJ,KAAO,aAAaxJ,KAAKqS,MAAMoG,WAC/ErV,QAAQD,KAAK,SAAUoE,OACrB,MAAO,UAASL,MACd,GAAI+L,IACJ,OAAO1L,OAAM8K,MAAM4+D,QAA+B,OAApBh+D,IAAM/L,KAAKA,MAAgB+L,IAAIi+D,KAAO,SAErElxE,OACHoD,QAAQD,KAAK,KAAM,SAAUoE,OAC3B,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,OACHoD,QAAQ,WAAW,WACjB,MAAIuC,UACKA,SAAS2mB,SADlB,SAIKlpB,SAGToqE,sBAAsBt+D,UAAUiiE,eAAiB,WAC/C,GAAIxwC,UAAUj9B,KACd,OAAI1D,MAAKqS,MAAM4+D,SACbvtE,MAAQ1D,KAAK0a,UAAUhT,QAAQ,kCAC/Bi5B,SAAW3gC,KAAK0a,UAAUhT,QAAQ,qCAC3B1H,KAAKwlC,QAAQlF,IAAI58B,MAAOi9B,UAAUx9B,KAAKnD,KAAK6wE,gBAE5C7wE,KAAK6wE,iBAITrD,uBAENztE,MAAMmQ,YAETy9D,iCAAmC,SAAUj+D,YAG3C,QAASi+D,oCACP,MAAOA,kCAAiCx+D,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAK5E,MARA5M,QAAO8qE,iCAAkCj+D,YAMzCi+D,iCAAiCz+D,UAAU1F,KAAO,cAE3CmkE,kCAENH,uBAEHE,2BAA6B,SAAUh+D,YAGrC,QAASg+D,8BACP,MAAOA,4BAA2Bv+D,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAKtE,MARA5M,QAAO6qE,2BAA4Bh+D,YAMnCg+D,2BAA2Bx+D,UAAU1F,KAAO,QAErCkkE,4BAENF,uBAEHC,4BAA8B,SAAU/9D,YAGtC,QAAS+9D,+BACP,MAAOA,6BAA4Bt+D,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAKvE,MARA5M,QAAO4qE,4BAA6B/9D,YAMpC+9D,4BAA4Bv+D,UAAU1F,KAAO,SAEtCikE,6BAEND,uBAEH5tE,OAAO2D,WAAW,mCAAoCoqE,kCAEtD/tE,OAAO2D,WAAW,6BAA8BmqE,4BAEhD9tE,OAAO2D,WAAW,8BAA+BkqE,6BAEjDK,eAAiB,SAAS9qE,YACxB,GAAI0a,KAIJ,OAHAA,MAAO,SAASC,QACd,MAAOA,QAAOyzD,aAAe,+BAG7B7tE,WAAY,mCACZC,aAAc,OACdF,YAAa,yBACboa,KAAMA,KACNrL,OAAO,IAIXzS,OAAO6d,UAAU,WAAY,aAAcqwD,iBAE3CD,iBAAmB,SAAS7qE,YAC1B,GAAI0a,KAIJ,OAHAA,MAAO,SAASC,QACd,MAAOA,QAAOyzD,aAAe,iCAG7B7tE,WAAY,6BACZC,aAAc,OACdF,YAAa,yBACboa,KAAMA,KACNrL,OAAO,IAIXzS,OAAO6d,UAAU,aAAc,aAAcowD,mBAE7CD,kBAAoB,SAAS5qE,YAC3B,GAAI0a,KAIJ,OAHAA,MAAO,SAASC,QACd,MAAOA,QAAOyzD,aAAe,kCAG7B7tE,WAAY,8BACZC,aAAc,OACdF,YAAa,yBACboa,KAAMA,KACNrL,OAAO,IAIXzS,OAAO6d,UAAU,cAAe,aAAcmwD,oBAE9CK,qBAAuB,SAAS7iE,MAAOmV,OAAQmO,IAAKlnB,UAClD,GAAIkW,KAqCJ,OApCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIE,SAASC,UAAWqzD,YA+BxB,OA9BAA,cAAe,WACb,MAAOzzD,KAAIO,KAAK,cAAc2H,SAAS,WAEzC9H,UAAY,SAASrY,UACnB,GAAIsC,QAIJ,OAHAA,SAAUsY,OAAO5E,WAAW,WAAYhW,SAASuB,MACjDyW,OAAO1V,QAAUA,QACjB2V,IAAIO,KAAK,oBAAoBwH,YAAY,UAClCne,SAASG,OAAO,YAEzBoW,QAAU,SAASpY,UAKjB,MAJwB,OAApBA,SAASE,QACXwrE,eAEFzzD,IAAIO,KAAK,oBAAoBwH,YAAY,UAClCne,SAASG,OAAO,QAAShC,SAASuB,KAAK+X,iBAEhDrB,IAAIc,GAAG,QAAS,kBAAmB,WACjC,MAAOd,KAAIO,KAAK,eAAe0iB,UAEjCjjB,IAAIc,GAAG,SAAU,cAAe,SAAS/Q,OACvC,MAAIgQ,QAAO2zD,gBACT1zD,IAAIO,KAAK,oBAAoB2H,SAAS,UAC/B4I,IAAInW,SAASg5D,WAAW5zD,OAAO1V,QAAQ8P,GAAI4F,OAAO2zD,gBAAgBnuE,KAAK6a,UAAWD,UAF3F,SAKFH,IAAIc,GAAG,QAAS,wBAAyB,SAAS/Q,OAEhD,MADAiQ,KAAIO,KAAK,oBAAoB2H,SAAS,UAC/B4I,IAAInW,SAASi5D,WAAW7zD,OAAO1V,QAAQ8P,IAAI5U,KAAK6a,UAAWD,WAE7DJ,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB,UAAW,WAAY,eAAgB,aAAcwwD,uBAExFC,0BAA4B,SAASuD,QACnC,GAAI/zD,KAWJ,OAVAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAItD,OAAOm3D,WAGX,OAFAn3D,OAAQk3D,OAAO5zD,OAAO8zD,oBACtBD,YAAcn3D,MAAMu3C,OACbl0C,IAAIvO,KAAK,SAAU,WACxB,MAAOsO,QAAO1J,OAAO,WACnB,MAAOy9D,aAAY/zD,OAAQC,IAAI,GAAGukB,MAAM,UAK5CzkB,KAAMA,OAIV9d,OAAO6d,UAAU,sBAAuB,SAAUywD,4BAElDX,kCAAoC,WAClC,OACEl7D,OACEpK,QAAW,KAEb3E,YAAa,0CAIjB1D,OAAO6d,UAAU,8BAA+B8vD,oCAEhDD,sCAAwC,SAAShH,iBAC/C,OACE5oD,KAAM,SAASrL,OACb,MAAOA,OAAMu/D,iBAAmB,WAC9B,MAAOtL,iBAAgBl6C,OAAO,2BAC5BslB,QAAS,wCAETj5B,UAAWpG,MAAMoG,cAIvBpG,OACEoG,UAAa,IACbqmB,MAAS,KAEXx7B,YAAa,+CAIjB1D,OAAO6d,UAAU,kCAAmC,oBAAqB6vD,wCAEzED,iCAAmC,SAAS/G,iBAC1C,OACE5oD,KAAM,SAASrL,OACb,MAAOA,OAAMw/D,YAAc,WACzB,MAAOvL,iBAAgBl6C,OAAO,sBAC5BslB,QAAS,gCACTogC,aAAc,YACdC,eAAgB,cAChBC,mBAAoB,mBAEpBv5D,UAAWpG,MAAMoG,UACjBf,YAAarF,MAAMqF,YACnBszD,eAAgB34D,MAAMysB,MAAM/mB,GAC5BE,QAAS5F,MAAM4F,YAIrB5F,OACEqF,YAAe,IACfe,UAAa,IACbqmB,MAAS,IACT7mB,QAAW,KAEb3U,YAAa,0CAIjB1D,OAAO6d,UAAU,6BAA8B,oBAAqB4vD,oCAEnEhqE,KAAKrD,MA2BR,WACE,GAAIiyE,yBAAyB9sC,UAAWC,eAAgB8sC,kCAAmCC,iCAAkCC,wBAAyBC,uBAAwBC,+BAAgCjtC,UAAWC,aAAcC,SAAUn1B,SAAUE,SAAUG,QAASE,QAASC,MAAOhR,OAAQG,MAAOqR,SAAUE,KACrTzO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,eACbC,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,YAElE1P,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBU,KAAOtR,KAAKD,MAAMuR,KAElBF,SAAWpR,KAAKD,MAAMqR,SAEtBT,QAAU3Q,KAAKD,MAAM4Q,QAErBF,QAAUzQ,KAAKD,MAAM0Q,QAErBL,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,cAExB0yE,+BAAiC,SAAU5iE,YAKzC,QAAS4iE,gCAA+BjgE,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAASvE,eAAgBmP,WACzH,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjB1a,KAAKqS,MAAMpK,WACX7E,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAa8yB,YAAa/yB,KAO9B,OANA+yB,aAAclvB,MAAMmT,UAAUhT,QAAQH,MAAM8K,MAAMokB,aAClD/yB,MAAQ6D,MAAMmT,UAAUhT,QAAQ,mCAC9B+uB,YAAeA,YACfE,YAAepvB,MAAM8K,MAAMpK,QAAQ+K,OAErCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAuBlD,MAtDA6C,QAAOyvE,+BAAgC5iE,YAEvC4iE,+BAA+Bl4D,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,aAAc,mBAAoB,cAgClLk4D,+BAA+BpjE,UAAUioB,YAAc,WACrD,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAOd,MANKA,SAAQ2jE,YACXrkE,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGLsyE,+BAA+BpjE,UAAUwnB,gBAAkB,WACzD,GAAItzB,QAEJ,OADAA,SAAUpD,KAAKm3B,eAIVm7C,gCAEN1hE,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,iCAAkC+uE,gCAEpDF,wBAA0B,SAAU1iE,YAKlC,QAAS0iE,yBAAwB//D,MAAOgI,UAAWkc,KAAMiP,QAASltB,IAChEtY,KAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKuyE,UAAYljE,KAAKrP,KAAKuyE,UAAWvyE,MACtCA,KAAKwyE,WAAanjE,KAAKrP,KAAKwyE,WAAYxyE,MACxCA,KAAKqS,MAAMvG,IAAI,4BAA6B9L,KAAKuyE,WACjDvyE,KAAKqa,UAAUvO,IAAI,iBAAkB9L,KAAKwyE,YAyB5C,MAtCA3vE,QAAOuvE,wBAAyB1iE,YAEhC0iE,wBAAwBh4D,SAAW,SAAU,aAAc,UAAW,aAAc,gBAcpFg4D,wBAAwBljE,UAAUsjE,WAAa,WAC7C,MAAOxyE,MAAKsY,GAAGtY,KAAKqS,MAAMogE,UAAUC,WAAW1yE,KAAKqS,MAAMoG,UAAWzY,KAAKqS,MAAM7I,MAAMrG,KAAK,SAAUoE,OACnG,MAAO,UAAS0gC,QAGd,MAFA1gC,OAAM8K,MAAM41B,OAASA,OACrB1gC,MAAM8K,MAAMsgE,cAAgBtyE,EAAEuyE,MAAM3qC,OAAQ,SAASwF,MAC9CxF,SAERjoC,QAGLoyE,wBAAwBljE,UAAUqjE,UAAY,SAAStlE,IAAK4lE,UAAWliB,WACrE,GAAIl2B,GAAGwN,MAQP,OAPAA,QAASjoC,KAAKqS,MAAM41B,OACpBxN,EAAIwN,OAAO9hC,QAAQ0sE,WACnB5qC,OAAO8e,OAAOtsB,EAAG,GACjBwN,OAAO8e,OAAO4J,UAAW,EAAGkiB,WAC5BxyE,EAAE4I,KAAKg/B,OAAQ,SAAS35B,MAAO4vC,OAC7B,MAAO5vC,OAAMm/B,MAAQyQ,QAEhBl+C,KAAKu2B,KAAKk0B,QAAQxiB,SAGpBmqC,yBAENryE,MAAMmQ,YAETtQ,OAAO2D,WAAW,0BAA2B6uE,yBAE7CC,uBAAyB,SAASnnE,KAAMoV,MAAO9Y,SAAUjC,UAAWkhB,eAAgBzjB,WAAYmI,YAC9F,GAAIuS,MAAMo1D,gBAAiBC,SAmN3B,OAlNAD,iBAAkB,SAASn1D,OAAQC,IAAKC,QACtC,GAAIu5C,QAAQC,eAAgBC,eAAgBC,IAmB5C,OAlBAD,gBAAiB,KACjBD,eAAiB,KACjBD,OAAS,KACTG,KAAO35C,IAAIO,KAAK,aAChBo5C,KAAKpH,UACHqH,OAAQ,gCACRlH,aAAa,EACbD,YAAa,uBACb3wB,OAAQ,IACR2uB,KAAM,MAERkJ,KAAK74C,GAAG,WAAY,SAAS/Q,MAAO+tC,IAClC,GAAIiV,WAAWkiB,SAIf,OAHAzb,QAAS1b,GAAGjqC,KACZohE,UAAYzb,OAAO/kD,QAAQ/D,MAC3BqiD,UAAYyG,OAAOlZ,QACZvgC,OAAOmD,WAAW,4BAA6B+xD,UAAWliB,aAE5DhzC,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,SAGfm0D,UAAY,SAASp1D,OAAQC,IAAKC,QAChC,GAAIqR,OAAOkhC,OAAQ4iB,eAAgBC,mBAAoBC,2BAA4BC,QAASC,aAAcC,UAAWC,SAgJrH,OA/IApkD,OAAQtR,IAAIra,aACZ+vE,UAAYz1D,OAAOrU,KACnB2pE,QAAUt1D,OAAO01D,QACjBN,mBAAqB,WACnB,MAAOt1D,QAAOxG,UACZnE,KAAQ,GACRi6B,WAAa,EACbkH,aAAe,IAGnB++B,2BAA6B,WAC3B,MAAOv1D,QAAO61D,kBAAoBxwE,WAAW0E,QAAQ,wBAA2ByrE,QAAQh+B,cAAiB,gBAE3G89B,qBACAC,6BACA/nE,WAAWW,IAAI,sBAAuB,WACpC,MAAO6R,QAAOrQ,WAAW4lE,8BAE3BF,eAAiB,SAAUzrE,OACzB,MAAO,UAASglB,OACd,GAAIknD,MAMJ,OALa,OAATlnD,QACFA,OAAQ,GAEVknD,MAAQ71D,IAAIO,KAAK,eACjB8J,EAAEgT,SAAS2J,MAAMzD,UAAUsyC,MAAMryC,SAASC,IAAMoyC,MAAMvqC,UAClD3c,MACK3O,IAAIO,KAAK,4BAA4B+e,QAAQ3Q,QADtD,SAIDvsB,MACHqzE,UAAY,SAASlnD,QACnB,GAAIrO,MAAM41D,OAAQtwE,QAASkL,KAG3B,OAFAolE,QAASvnD,OAAOmkB,QAAQ,QACxBxyB,KAAO41D,OAAO1oE,YACT8S,KAAKS,YAGVjQ,MAAQolE,OAAOrhE,QAAQ/D,MACvBlL,QAAUkd,MAAMgN,KAAKhf,OACrBlL,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAIosE,IAGJ,OAFAA,KAAMxnD,OAAOmkB,QAAQ,mBACrBqjC,IAAI7tD,SAAS,UACN6tD,IAAIlrC,SAAS,kBAAkB9iB,YAAY,YAEnD3lB,OACIoD,QAAQD,KAAK,KAAM,SAAS+D,MACjC,MAAO4W,MAAKqB,UAAUjY,SAdxB,QAiBFksE,aAAe,SAASjnD,QACtB,GAAIrO,MAAM41D,OAAQtwE,OAGlB,OAFAswE,QAASvnD,OAAOmkB,QAAQ,QACxBxyB,KAAO41D,OAAO1oE,YACT8S,KAAKS,YAGVZ,OAAOxG,SAASlP,QAAU0V,OAAO1V,QAAQ8P,GACzC4F,OAAOxG,SAASs2B,MAAQ9vB,OAAOg1D,cAAgBh1D,OAAOg1D,cAAgB,EAAI,EAC1EvvE,QAAUkd,MAAM8L,OAAOknD,UAAW31D,OAAOxG,UACzC/T,QAAQD,KAAK,SAAUoE,OACrB,MAAO,UAASL,MAId,MAHAilB,QAAOrG,SAAS,UAChBnI,OAAOsqB,OAAOvhC,KAAKQ,MACnByW,OAAOg1D,cAAgBzrE,KAAKumC,MACrBwlC,uBAERjzE,OACIoD,QAAQD,KAAK,KAAM,SAAS+D,MACjC,MAAO4W,MAAKqB,UAAUjY,SAfxB,QAkBFkpD,OAAS,SAASjkC,QAChB,GAAIunD,QAAQC,IAAKrlE,KAIjB,OAHAqlE,KAAMxnD,OAAOmkB,QAAQ,mBACrBojC,OAASvnD,OAAOmkB,QAAQ,QACxBhiC,MAAQolE,OAAOrhE,QAAQ/D,MAChBqP,OAAO1J,OAAO,WAGnB,MAFA0/D,KAAI7tD,SAAS,UACbxX,MAAMoxB,SACCi0C,IAAIlrC,SAAS,kBAAkB9iB,YAAY,aAGtD/H,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAGxC,MAFAA,OAAM2Q,iBACNV,IAAIO,KAAK,cAAcwH,YAAY,UAC5BqtD,gBAAe,KAExBp1D,IAAIc,GAAG,QAAS,WAAYpO,SAAS,IAAM,SAAS3C,OAClD,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvO,IAAIO,KAAK,cACXi1D,aAAajnD,WAEtBvO,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OAGtC,MAFAA,OAAM2Q,iBACNV,IAAIO,KAAK,cAAc2H,SAAS,UACzBmtD,uBAETr1D,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OACtC,GAAIimE,YAAYD,IAAKxnD,MAOrB,OANAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BwrD,IAAMxnD,OAAOmkB,QAAQ,mBACrBqjC,IAAI7tD,SAAS,UACb8tD,WAAaD,IAAIlrC,SAAS,YAC1BmrC,WAAWjuD,YAAY,UAChBiuD,WAAWz1D,KAAK,iBAAiB+e,QAAQ3Q,QAAQsB,WAE1DjQ,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OACzC,GAAIwe,OACJ,OAAsB,MAAlBxe,MAAM6f,SACRrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBkrD,UAAUlnD,SACU,KAAlBxe,MAAM6f,SACfrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBioC,OAAOjkC,SAFT,SAKTvO,IAAIc,GAAG,QAAS,mBAAoB,SAAS/Q,OAC3C,GAAIwe,OACJ,OAAsB,MAAlBxe,MAAM6f,SACRrB,OAASvO,IAAIO,KAAK,cACXi1D,aAAajnD,SACO,KAAlBxe,MAAM6f,SACf5P,IAAIO,KAAK,cAAc2H,SAAS,UACzBmtD,sBAFF,SAKTr1D,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBkrD,UAAUlnD,UAEnBvO,IAAIc,GAAG,QAAS,UAAW,SAAS/Q,OAClC,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBioC,OAAOjkC,UAETvO,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAC/C,GAAIk2B,SAAS6vC,OAAQ/yC,SAAUxU,OAAQ5Y,KAAM7P,MAAO4K,KAYpD,OAXAX,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAOmkB,QAAQ,QACxBhiC,MAAQolE,OAAOrhE,QAAQ/D,MACvBu1B,WACAxjC,EAAE4I,KAAK0U,OAAOsqB,OAAQ,SAAS4rC,QAC7B,MAAIvlE,OAAMyJ,KAAO87D,OAAO97D,GACf8rB,QAAQgwC,OAAO97D,IAAM87D,OAAO7gE,KADrC,SAIF2tB,SAAWryB,MAAM0E,KACc,IAA3B3S,EAAE6R,KAAK2xB,SAASr3B,OACXhF,SAAS0X,MAAMlc,WAAW0E,QAAQ,2CAE3ChE,MAAQV,WAAW0E,QAAQ,0CAC3B6L,KAAOvQ,WAAW0E,QAAQ,oCACnBF,SAASo8B,UAAUlgC,MAAOi9B,SAAUkD,QAAStwB,MAAMpQ,KAAK,SAASwC,UACtE,GAAIoY,SAAS+1D,QASb,OARAA,UAAW,WACT,MAAO5kD,OAAMsjD,aAAa,WAAW,WACnC,MAAO7sE,UAAS2mB,YAGpBvO,QAAU,WACR,MAAOvW,UAASG,OAAO,UAElB2Y,MAAMvE,OAAOzN,OAClBylE,OAAUpuE,SAASs+B,WAClB9gC,KAAK2wE,SAAU/1D,eAIxBL,KAAO,SAASC,OAAQC,IAAKC,QAG3B,MAFAi1D,iBAAgBn1D,OAAQC,IAAKC,QAC7Bk1D,UAAUp1D,OAAQC,IAAKC,QAChBF,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,mBAAoB,OAAQ,UAAW,aAAc,cAAe,iBAAkB,aAAc,aAAc40D,yBAEnIJ,wBAA0B,WACxB,GAAIv0D,KA4CJ,OA3CAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ0C,QACnC,GAAI2O,MAsCJ,OArCAA,OAAQtR,IAAIra,aACZoa,OAAOjL,OAAOmL,OAAOoQ,QAAS,SAAS7mB,SACrC,MAAOuW,QAAOklB,MAAQz7B,QAAQy7B,QAEhCjlB,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OACzC,GAAIi3B,MAAMzY,MAOV,OANAxe,OAAM2Q,iBACN3Q,MAAMs0B,kBACN9V,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BvK,IAAIO,KAAK,iBAAiByiB,OAC1BzU,OAAOsc,SAAS,iBAAiBre,OACjCwa,KAAOhiC,QAAQwE,QAAQ,QAChBw9B,KAAKlmB,GAAG,QAAS,SAAUnX,OAChC,MAAO,UAASoG,OACd,MAAqE,KAAjE/K,QAAQwE,QAAQuG,MAAMwe,QAAQtd,OAAO,iBAAiBrC,QACxDoR,IAAIO,KAAK,iBAAiByiB,OACnBgE,KAAKjV,OAAO,UAFrB,SAKD3vB,SAEL4d,IAAIc,GAAG,QAAS,uBAAwB,SAAS/Q,OAC/C,GAAIwe,OAMJ,OALAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BxK,OAAO1J,OAAO,WACZ,MAAOsM,QAAOkN,YAAYoV,MAAQ1W,OAAOjlB,KAAK,WAEzC0W,IAAIO,KAAK,iBAAiByiB,SAEnChjB,IAAIc,GAAG,QAAS,gCAAiC,SAAS/Q,OAKxD,MAJAA,OAAM2Q,iBACNX,OAAO1J,OAAO,WACZ,MAAOsM,QAAOkN,YAAYoV,MAAQllB,OAAOklB,QAEpCjlB,IAAIO,KAAK,iBAAiByiB,SAE5BjjB,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,KACNwQ,QAAS,YAIbtuB,OAAO6d,UAAU,mBAAoBw0D,yBAErC5sC,UAAY,OAEZD,eAAiB,YAEjBD,UAAY,OAEZI,SAAW,MAEXD,eAEIt2B,IAAKq2B,UACLryB,KAAM,wCAENhE,IAAKo2B,eACLpyB,KAAM,yCAENhE,IAAKm2B,UACLnyB,KAAM,wCAENhE,IAAKu2B,SACLvyB,KAAM,uCAIVk/D,kCAAoC,SAAUxiE,YAK5C,QAASwiE,mCAAkC7/D,MAAOgI,UAAWkc,KAAMje,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAASvE,eAAgBmP,WACnH1a,KAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjB1a,KAAKg0E,qBAAuB3kE,KAAKrP,KAAKg0E,qBAAsBh0E,MAC5DA,KAAKi0E,sBAAwB5kE,KAAKrP,KAAKi0E,sBAAuBj0E,MAC9DA,KAAKk0E,oBAAsB7kE,KAAKrP,KAAKk0E,oBAAqBl0E,MAC1DA,KAAKm0E,sBAAwB9kE,KAAKrP,KAAKm0E,sBAAuBn0E,MAC9DA,KAAKo0E,qBAAuB/kE,KAAKrP,KAAKo0E,qBAAsBp0E,MAC5DA,KAAKqS,MAAMizB,aAAeA,aAC1BtlC,KAAKqS,MAAMpK,WACXjI,KAAKqa,UAAUvO,IAAI,iBAAkB,SAAUvE,OAC7C,MAAO,YACL,GAAI5D,aAAa8yB,YAAa/yB,KAQ9B,OAPA6D,OAAM6sE,uBACN39C,YAAclvB,MAAMmT,UAAUhT,QAAQH,MAAM8K,MAAMokB,aAClD/yB,MAAQ6D,MAAMmT,UAAUhT,QAAQ,sCAC9B+uB,YAAeA,YACfE,YAAepvB,MAAM8K,MAAMpK,QAAQ+K,OAErCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OAqCL,MAvEA6C,QAAOqvE,kCAAmCxiE,YAE1CwiE,kCAAkC93D,SAAW,SAAU,aAAc,UAAW,eAAgB,eAAgB,KAAM,cAAe,aAAc,mBAAoB,cAmCvK83D,kCAAkChjE,UAAUklE,qBAAuB,WACjE,MAAOp0E,MAAKsY,GAAGotB,iBAAiB1lC,KAAKqS,MAAM7I,MAAMulB,KAAK/uB,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OACzF,MAAO,UAASm+B,kBAGd,MAFAn+B,OAAM8K,MAAMqzB,iBAAmBA,iBAC/Bn+B,MAAM8K,MAAMgiE,SAAWh0E,EAAEuyE,MAAMltC,iBAAkB,SAAS+H;AACnD/H,mBAER1lC,QAGLkyE,kCAAkChjE,UAAUilE,sBAAwB,SAASG,YAC3E,MAAOt0E,MAAKu2B,KAAKnK,OAAO,qBAAuBpsB,KAAKqS,MAAM7I,KAAM8qE,aAGlEpC,kCAAkChjE,UAAUglE,oBAAsB,SAASK,WACzE,MAAOv0E,MAAKu2B,KAAKjJ,KAAKinD,YAGxBrC,kCAAkChjE,UAAU+kE,sBAAwB,SAASM,WAC3E,MAAOv0E,MAAKu2B,KAAKxa,OAAOw4D,YAG1BrC,kCAAkChjE,UAAU8kE,qBAAuB,SAASO,UAAWC,UACrF,GAAI9uC,kBAAkBjL,CAQtB,OAPAiL,kBAAmB1lC,KAAKqS,MAAMqzB,iBAC9BjL,EAAIiL,iBAAiBv/B,QAAQouE,WAC7B7uC,iBAAiBqhB,OAAOtsB,EAAG,GAC3BiL,iBAAiBqhB,OAAOytB,SAAU,EAAGD,WACrCl0E,EAAE4I,KAAKy8B,iBAAkB,SAAS15B,IAAKyoE,KACrC,MAAOzoE,KAAIyhC,MAAQgnC,MAEdz0E,KAAKu2B,KAAKk0B,QAAQ/kB,mBAGpBwsC,mCAENthE,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,oCAAqC2uE,mCAEvDC,iCAAmC,SAASjnE,KAAM1D,SAAUif,eAAgBzjB,YAC1E,GAAI0a,KAiNJ,OAhNAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAOwlD,aAAcC,aAAcvoD,OAAQ6nD,sBAAuBW,cAAeC,iBAAkBC,eAAgBC,aAAcC,aAAcC,+BAAgCC,cAAeC,iBAAkBC,eAAgBC,aAAcC,WAAYtxD,MAuM9P,OAtMAkL,OAAQtR,IAAIra,aACZoa,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEb02D,WAAa13D,IAAIO,KAAK,gBACtBm3D,WAAWnlB,UACTqH,OAAQ,wBACRlH,aAAa,EACb5wB,OAAQ,IACR2uB,KAAM,MAERinB,WAAW52D,GAAG,WAAY,SAAS/Q,MAAO+tC,IACxC,GAAI65B,UAAUne,OAAQzG,SAItB,OAHAyG,QAAS1b,GAAGjqC,KACZ8jE,SAAWne,OAAO/kD,QAAQC,KAC1Bq+C,UAAYyG,OAAOlZ,QACZhvB,MAAM8kD,qBAAqBuB,SAAU5kB,aAE9CykB,eAAiB,WAEf,MADAx3D,KAAIO,KAAK,wBAAwBwH,YAAY,UACtC/H,IAAIO,KAAK,sCAAsC+e,QAAQ3Q,SAEhEuoD,eAAiB,WACf,MAAOl3D,KAAIO,KAAK,wBAAwB2H,SAAS,WAEnDovD,cAAgB,WACd,MAAOt3D,KAAIO,KAAK,+BAA+BwH,YAAY,WAE7DivD,cAAgB,WACd,MAAOh3D,KAAIO,KAAK,+BAA+B2H,SAAS,WAE1DqvD,iBAAmB,WACjB,MAAOv3D,KAAIO,KAAK,sCAAsCwH,YAAY,WAEpEkvD,iBAAmB,WACjB,MAAOj3D,KAAIO,KAAK,sCAAsC2H,SAAS,WAEjEkvD,aAAe,WACb,MAAOr3D,QAAO63D,YAEhBppD,OAAS,SAASsnD,QAChB,GAAIphE,MAAMwL,KAAMC,QAAS+1D,QAEzB,OADAh2D,MAAO41D,OAAO1oE,YACT8S,KAAKS,YAGVu1D,SAAW,SAAUvsE,OACnB,MAAO,YAIL,MAHA2nB,OAAMklD,uBACNU,iBACAE,eACOxtE,SAASG,OAAO,aAExB3H,MACH+d,QAAU,SAAUxW,OAClB,MAAO,UAASL,MACd,MAAO4W,MAAKqB,UAAUjY,QAEvBlH,MACHsS,KAAOqL,OAAO63D,QACdljE,KAAKrK,QAAU0V,OAAOlF,UACtBnG,KAAKm7B,MAAQ9vB,OAAO02D,SAAW12D,OAAO02D,SAAW,EAAI,EAC9CnlD,MAAMilD,sBAAsB7hE,MAAMnP,KAAK2wE,SAAU/1D,UAnBxD,QAqBF22D,aAAe,WAEb,MADAI,kBACOE,gBAETr3D,OAAOjL,OAAO,mBAAoB,SAASgzB,kBACzC,MAAKA,kBAG2B,IAA5BA,iBAAiBl5B,QACnBqoE,mBACAD,gBACOQ,mBAEPN,iBACAI,gBACOC,oBAVT,SAaFv3D,IAAIc,GAAG,QAAS,8BAA+B,SAAS/Q,OAEtD,MADAA,OAAM2Q,iBACC82D,mBAETx3D,IAAIc,GAAG,QAAS,iCAAkCpO,SAAS,IAAM,SAAS3C,OACxE,GAAI+lE,QAAQvnD,MAIZ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjB7c,OAAOsnD,WAEhB91D,IAAIc,GAAG,QAAS,qCAAsC,SAAS/Q,OAE7D,MADAA,OAAM2Q,iBACCo2D,iBAET92D,IAAIc,GAAG,QAAS,6BAA8B,SAAS/Q,OACrD,GAAI+lE,QAAQvnD,MACZ,OAAsB,MAAlBxe,MAAM6f,SACRrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjB7c,OAAOsnD,SACa,KAAlB/lE,MAAM6f,QACRknD,eADF,SAITW,aAAe,SAAS3B,QAGtB,MAFAA,QAAOv1D,KAAK,yBAAyB2H,SAAS,UAC9C4tD,OAAOv1D,KAAK,yBAAyBwH,YAAY,UAC1C+tD,OAAOv1D,KAAK,uCAAuC+e,QAAQ3Q,QAAQsB,UAE5EknD,aAAe,SAASrB,QAEtB,MADAA,QAAOv1D,KAAK,yBAAyB2H,SAAS,UACvC4tD,OAAOv1D,KAAK,yBAAyBwH,YAAY,WAE1DsvD,+BAAiC,SAASvB,QACxC,MAAO/1D,QAAO1J,OAAO,WACnB,MAAOy/D,QAAOrhE,QAAQC,KAAKotB,YAG/B1b,OAAS,SAAS0vD,QAChB,GAAIphE,MAAMwL,KAAMC,QAAS+1D,QAEzB,OADAh2D,MAAO41D,OAAO1oE,YACT8S,KAAKS,YAGVu1D,SAAW,SAAUvsE,OACnB,MAAO,YAGL,MAFA2nB,OAAMklD,uBACNW,aAAarB,QACNlsE,SAASG,OAAO,aAExB3H,MACH+d,QAAU,SAAUxW,OAClB,MAAO,UAASL,MACd,MAAO4W,MAAKqB,UAAUjY,QAEvBlH,MACHsS,KAAOohE,OAAOrhE,QAAQC,KACf4c,MAAMglD,oBAAoB5hE,MAAMnP,KAAK2wE,SAAU/1D,UAhBtD,QAkBF42D,aAAe,SAASjB,QAEtB,MADAqB,cAAarB,QACNuB,+BAA+BvB,SAExC91D,IAAIc,GAAG,QAAS,+BAAgC,SAAS/Q,OACvD,GAAI+lE,QAAQvnD,MAIZ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjBosC,aAAa3B,UAEtB91D,IAAIc,GAAG,QAAS,iCAAkCpO,SAAS,IAAM,SAAS3C,OACxE,GAAI+lE,QAAQvnD,MAIZ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjBjlB,OAAO0vD,WAEhB91D,IAAIc,GAAG,QAAS,sCAAuC,SAAS/Q,OAC9D,GAAI+lE,QAAQvnD,MAIZ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjB0rC,aAAajB,UAEtB91D,IAAIc,GAAG,QAAS,8BAA+B,SAAS/Q,OACtD,GAAI+lE,QAAQvnD,MACZ,OAAsB,MAAlBxe,MAAM6f,SACRrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjBjlB,OAAO0vD,SACa,KAAlB/lE,MAAM6f,SACfrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjB0rC,aAAajB,SAHf,SAMTO,sBAAwB,SAASP,QAC/B,GAAIphE,MAAM8M,QAAS7L,KAAM7P,KAKzB,OAJA4O,MAAOohE,OAAOrhE,QAAQC,KACtB8M,QAAU9M,KAAKU,KACftP,MAAQV,WAAW0E,QAAQ,mCAC3B6L,KAAOvQ,WAAW0E,QAAQ,2CACnBF,SAAS84B,IAAI58B,MAAO6P,KAAM6L,SAASjc,KAAK,SAASwC,UACtD,GAAIoY,SAAS+1D,QASb,OARAA,UAAW,WACT,MAAO5kD,OAAMklD,uBAAuB,WAAW,WAC7C,MAAOzuE,UAAS2mB,YAGpBvO,QAAU,WACR,MAAOvW,UAASG,OAAO,QAAS,KAAM,oCAAsCyX,QAAU,OAEjF8P,MAAM+kD,sBAAsB3hE,MAAMnP,KAAK2wE,SAAU/1D,YAGrDH,IAAIc,GAAG,QAAS,iCAAkCpO,SAAS,IAAM,SAAS3C,OAC/E,GAAI+lE,QAAQvnD,MAIZ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BurD,OAASvnD,OAAO8c,QAAQ,QACjBgrC,sBAAsBP,aAI/Bh2D,KAAMA,OAIV9d,OAAO6d,UAAU,6BAA8B,OAAQ,aAAc,iBAAkB,aAAc00D,oCAEpG9uE,KAAKrD,MA2BR,WACE,GAAIy1E,mBAAmBC,iBAAkBC,yBAA0BC,gBAAiBC,eAAgB1lE,YAAaC,SAAUE,SAAUM,MAAOhR,OAAQG,MAClJsP,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,aAChE5M,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,eACbjJ,WAAaA,SAAW,SAASsL,MAAQ,IAAK,GAAIC,GAAI,EAAGC,EAAI3R,KAAKwM,OAAYmF,EAAJD,EAAOA,IAAO,GAAIA,IAAK1R,OAAQA,KAAK0R,KAAOD,KAAM,MAAOC,EAAK,OAAO,GAEhJ3R,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBR,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtBH,YAAcnQ,KAAKD,MAAMoQ,YAEzBvQ,OAASgD,QAAQhD,OAAO,cAExBg2E,gBAAkB,SAAUlmE,YAK1B,QAASkmE,iBAAgBvjE,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAASvE,eAAgBmP,WAC1G,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjB1a,KAAK81E,mBAAqBzmE,KAAKrP,KAAK81E,mBAAoB91E,MACxDA,KAAK+1E,kBAAoB1mE,KAAKrP,KAAK+1E,kBAAmB/1E,MACtDmQ,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAc,yBACzBz2B,KAAKqS,MAAMpK,WACXjI,KAAKqS,MAAM2jE,mBAAoB,EAC/B5yE,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAKjB,OAJAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,0BAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAqJlD,MAvLA6C,QAAO+yE,gBAAiBlmE,YAExBkmE,gBAAgBx7D,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,aAAc,mBAAoB,cAmCnKw7D,gBAAgB1mE,UAAUioB,YAAc,WACtC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAUd,MATKA,SAAQ2jE,YACXrkE,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAM2jE,kBAAoB31E,EAAE0oC,KAAK1oC,EAAEC,IAAI2H,QAAQwP,MAAO,SAASqxB,OACnE,MAAOA,OAAMmtC,cAERhuE,UAERjI,QAGL41E,gBAAgB1mE,UAAUgnE,UAAY,WACpC,MAAOl2E,MAAKsY,GAAGb,MAAMsX,KAAK/uB,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OAC7D,MAAO,UAASkQ,OACd,GAAI0+D,kBAaJ,OAZA1+D,OAAQA,MAAMnX,IAAI,SAASgoC,MAEzB,MADAA,MAAK8tC,eAAgB,EACd9tC,OAET6tC,mBACEnjE,KAAQzL,MAAMmT,UAAUhT,QAAQ,6BAChCopB,YAAevpB,MAAM8K,MAAMpK,QAAQouE,mBACnCD,eAAiB,GAEnB3+D,MAAM/Q,KAAKyvE,mBACX5uE,MAAM8K,MAAMoF,MAAQA,MACpBlQ,MAAM8K,MAAMi2B,KAAO/gC,MAAM8K,MAAMoF,MAAM,GAC9BA,QAERzX,QAGL41E,gBAAgB1mE,UAAUwnB,gBAAkB,WAC1C,GAAItzB,QAOJ,OANAA,SAAUpD,KAAKm3B,cACf/zB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAM2uE,cAEdl2E,OACIoD,SAGTwyE,gBAAgB1mE,UAAUk2D,QAAU,SAAS98B,MAE3C,MADAtoC,MAAKqS,MAAMi2B,KAAOA,KACXtoC,KAAKqS,MAAMyO,WAAW,eAAgB9gB,KAAKqS,MAAMi2B,OAG1DstC,gBAAgB1mE,UAAU,UAAY,WACpC,GAAI20B,SAASnyB,EAAGgC,IAAKT,IAAK6wB,YAAawE,KAAM3H,SAAUj9B,MAAOqgC,OAG9D,KAFAF,WACA5wB,IAAMjT,KAAKqS,MAAMoF,MACZ/F,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IACrC42B,KAAOr1B,IAAIvB,GACP42B,KAAKvwB,KAAO/X,KAAKqS,MAAMi2B,KAAKvwB,KAC9B8rB,QAAQyE,KAAKvwB,IAAMuwB,KAAKt1B,KAG5B,OAA+B,KAA3B3S,EAAE6R,KAAK2xB,SAASr3B,OACXxM,KAAKwlC,QAAQtmB,MAAMlf,KAAK0a,UAAUhT,QAAQ,kCAEnDhE,MAAQ1D,KAAK0a,UAAUhT,QAAQ,iCAC/Bi5B,SAAW3gC,KAAKqS,MAAMi2B,KAAKt1B,KAC3B8wB,YAAc9jC,KAAK0a,UAAUhT,QAAQ,gCACrCq8B,QAAU/jC,KAAK0a,UAAUhT,QAAQ,mCAC1B1H,KAAKwlC,QAAQ5B,UAAUlgC,MAAOi9B,SAAUkD,QAASC,YAAaC,SAAS5gC,KAAK,SAAUoE,OAC3F,MAAO,UAAS5B,UACd,GAAIoY,SAASC,SAUb,OATAA,WAAY,WAEV,MADAzW,OAAM4vB,cACC5vB,MAAM2uE,YAAY,WAAW,WAClC,MAAOvwE,UAAS2mB,YAGpBvO,QAAU,WACR,MAAOxW,OAAMi+B,QAAQ79B,OAAO,UAEvBJ,MAAMgvB,KAAKxa,OAAOxU,MAAM8K,MAAMi2B,MACnCyrC,OAAQpuE,SAASs+B,WAChB9gC,KAAK6a,UAAWD,WAEpB/d,SAGL41E,gBAAgB1mE,UAAU6mE,kBAAoB,WAC5C,GAAIh4D,SAASC,SAab,OAZAA,WAAY,SAAUzW,OACpB,MAAO,YAEL,MADAA,OAAMi+B,QAAQ79B,OAAO,WACdJ,MAAM4vB,gBAEdn3B,MACH+d,QAAU,SAAUxW,OAClB,MAAO,YAEL,MADAA,OAAMi+B,QAAQ79B,OAAO,SACdJ,MAAM8K,MAAMi2B,KAAK5I,WAEzB1/B,MACIA,KAAKu2B,KAAKjJ,KAAKttB,KAAKqS,MAAMi2B,MAAMnlC,KAAK6a,UAAWD,UAGzD63D,gBAAgB1mE,UAAU4mE,mBAAqB,WAC7C,GAAIQ,YAAYC,aAAcn3D,QAASuhB,SAAUj9B,KA2BjD,OA1BA6yE,cAAe,SAAUhvE,OACvB,MAAO,UAAS5B,UACd,GAAIoY,SAASC,SAWb,OAVAA,WAAY,WAGV,MAFArY,UAAS2mB,SACT/kB,MAAMi+B,QAAQ79B,OAAO,WACdJ,MAAM4vB,eAEfpZ,QAAU,WAGR,MAFApY,UAAS2mB,SACT/kB,MAAMi+B,QAAQ79B,OAAO,SACdJ,MAAM8K,MAAMi2B,KAAK5I,UAEnBn4B,MAAMgvB,KAAKjJ,KAAK/lB,MAAM8K,MAAMi2B,MAAMnlC,KAAK6a,UAAWD,WAE1D/d,MACHs2E,WAAa,SAAU/uE,OACrB,MAAO,UAAS5B,UACd,MAAO4B,OAAM8K,MAAMi2B,KAAK5I,WAEzB1/B,MACH0D,MAAQ1D,KAAK0a,UAAUhT,QAAQ,8CAC/Bi5B,SAAW3gC,KAAK0a,UAAUhT,QAAQ,iDAChCgkD,SAAU1rD,KAAKqS,MAAMi2B,KAAKt1B,OAE5BoM,QAAUpf,KAAK0a,UAAUhT,QAAQ,gDAC1B1H,KAAKwlC,QAAQlF,IAAI58B,MAAOi9B,SAAUvhB,SAASjc,KAAKozE,aAAcD,aAGvEV,gBAAgB1mE,UAAUsnE,iBAAmBlmE,SAAS,IAAM,WAC1D,MAAKtQ,MAAKqS,MAAMi2B,KAAK2tC,WAGZj2E,KAAK+1E,oBAFL/1E,KAAK81E,uBAMTF,iBAENhlE,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,kBAAmBqyE,iBAErCH,kBAAoB,SAASn1D,MAAO9Y,UAClC,GAAIkW,KAyCJ,OAxCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAII,QAAQw4D,UAmCZ,OAlCAA,YAAa,WAEX,MADA74D,KAAIO,KAAK,UAAUu4D,SACZ94D,IAAIO,KAAK,cAAcu4D,UAEhCz4D,OAAS,WACP,GAAI7a,QASJ,OARAua,QAAO2qB,KAAKt1B,KAAO4K,IAAIO,KAAK,SAASnS,MACrC5I,QAAUkd,MAAMgN,KAAK3P,OAAO2qB,MAC5BllC,QAAQD,KAAK,WACX,MAAOqE,UAASG,OAAO,aAEzBvE,QAAQD,KAAK,KAAM,SAAS+D,MAC1B,MAAOM,UAASG,OAAO,WAElB8uE,cAET74D,IAAIc,GAAG,QAAS,cAAe,WAG7B,MAFA+3D,cACA74D,IAAIO,KAAK,SAASoO,QACX3O,IAAIO,KAAK,SAASnS,IAAI2R,OAAO2qB,KAAKt1B,QAE3C4K,IAAIc,GAAG,QAAS,SAAUT,QAC1BL,IAAIc,GAAG,QAAS,QAAS,SAAS/Q,OAChC,MAAsB,MAAlBA,MAAM6f,QACDvP,SACoB,KAAlBtQ,MAAM6f,QACRipD,aADF,SAIT94D,OAAO7R,IAAI,eAAgB,WACzB,MAAI8R,KAAIO,KAAK,cAAc8iB,GAAG,YACrBw1C,aADT,SAIK94D,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,cAAe,UAAW,aAAcg4D,oBAEzDI,eAAiB,WACf,GAAIn4D,KAQJ,OAPAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,MAEJ,OADAA,OAAQtR,IAAIra,aACLoa,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,UAAWo4D,gBAE5BH,iBAAmB,SAASziC,QAASzrC,UACnC,GAAImvE,qBAAqBj5D,IAkDzB,OAjDAi5D,sBAAuB,eAAgB,kBAAmB,UAAW,aAAc,eACnFj5D,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,MAWJ,OAVAA,OAAQtR,IAAIra,aACZoa,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEbhB,IAAIc,GAAG,QAAS,eAAgB,SAAS/Q,OAIvC,MAHAA,OAAM2Q,iBACNV,IAAIO,KAAK,QAAQwH,YAAY,UAC7B/H,IAAIO,KAAK,QAAQoO,QACV3O,IAAIO,KAAK,eAAeyiB,SAE1BhjB,IAAIc,GAAG,QAAS,OAAQ,SAAS/Q,OACtC,GAAIk/D,SAAS9uD,QAASC,UAAWmO,MAEjC,OADAxe,OAAM2Q,iBACgB,KAAlB3Q,MAAM6f,SACRrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B0kD,SACE5kE,QAAS0V,OAAOlF,UAChBzF,KAAMmZ,OAAOngB,MACb8kB,YAAa6lD,oBACblpC,MAAOptC,EAAEuyE,MAAMj1D,OAAOlG,MAAO,SAASgjB,GACpC,MAAOA,GAAEgT,QACRA,MAAQ,EACXwoC,YAAY,GAEdr4D,IAAIO,KAAK,QAAQ2H,SAAS,UAC1BlI,IAAIO,KAAK,QAAQnS,IAAI,IACrBgS,UAAY,SAASsqB,MACnB,GAAIsuC,eAKJ,OAJAA,gBAAiBj5D,OAAOlG,MAAMjL,OAAS,EACvCmR,OAAOlG,MAAMsvC,OAAO6vB,eAAgB,EAAGtuC,MACvCpZ,MAAMk2C,QAAQ98B,MACd1qB,IAAIO,KAAK,eAAeiM,OACjB8E,MAAMiI,eAEfpZ,QAAU,WACR,MAAOvW,UAASG,OAAO,UAElBsrC,QAAQ7mB,OAAO,QAASygD,SAAS1pE,KAAK6a,UAAWD,UAC7B,KAAlBpQ,MAAM6f,SACfrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BvK,IAAIO,KAAK,QAAQ2H,SAAS,UAC1BlI,IAAIO,KAAK,QAAQnS,IAAI,IACd4R,IAAIO,KAAK,eAAeiM,QAJ1B,WAST1M,KAAMA,OAIV9d,OAAO6d,UAAU,aAAc,UAAW,aAAci4D,mBAExDC,yBAA2B,SAASxqE,WAAYmV,MAAO9Y,SAAUqlB,UAC/D,GAAIgqD,cAAcC,iBAAkBp5D,KAAMq5D,cA+N1C,OA9NAA,gBAAiB12E,EAAEgd,SAAS,+gBAC5By5D,iBAAmBz2E,EAAEgd,SAAS,o6BAC9Bw5D,aAAex2E,EAAEgd,SAAS,4CAC1BK,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIqR,OAAO8nD,2BAA4BC,eAAgBC,kBAAmBC,YAwN1E,OAvNAjoD,OAAQtR,IAAIra,aACZyzE,2BAA6B,SAAS1uC,MACpC,GAAI8uC,YAAYC,qBAAsBC,iBAAkBC,qBAAsBC,qBAAsBC,gCAAiCC,gBAAiBC,qBAAsBC,eAoI5K,OAnIAJ,sBAAuB,SAAS1mD,aAC9B,MAAOzwB,GAAEC,IAAIwwB,YAAa,SAASvwB,GACjC,GAAI0S,IACJ,OAAO5S,GAAEwC,UAAWtC,GAClBs3E,QAAS5kE,IAAM1S,EAAO,IAAG4F,QAAQ9C,KAAKilC,KAAKxX,YAAa7d,MAAQ,QAItEokE,qBAAuB,SAAS3xD,WAAY4iB,KAAMrgC,SAChD,MAAIqgC,MAAK8tC,gBAAkBnuE,QAAQ6vE,YAAkD,IAApCpyD,WAAW1W,IAAI7I,QAAQ,UAC/D,GAEA,GAGXsxE,gCAAkC,SAASt8C,UACzC,MAAO96B,GAAEC,IAAI66B,SAAU,SAAS48C,KAK9B,MAJAA,KAAIjnD,YAAcinD,IAAIjnD,YAAYxwB,IAAI,SAASolB,YAE7C,MADAA,YAAWkhB,SAAWywC,qBAAqB3xD,WAAY4iB,KAAM3qB,OAAO1V,SAC7Dyd,aAEFrlB,EAAEwC,UAAWk1E,KAClBC,kBAAmB33E,EAAEyM,OAAOirE,IAAiB,YAAG,UAAUvrE,YAIhE4qE,cACAG,uBAEIvoE,IAAK,kBACLgE,KAAM,sDAENhE,IAAK,gBACLgE,KAAM,qDAENhE,IAAK,mBACLgE,KAAM,wDAENhE,IAAK,mBACLgE,KAAM,wDAGVokE,WAAW1wE,MACTsM,KAAM,4CACN8d,YAAa0mD,qBAAqBD,wBAEpCI,uBAEI3oE,IAAK,UACLgE,KAAM,gEAENhE,IAAK,SACLgE,KAAM,+DAENhE,IAAK,YACLgE,KAAM,kEAENhE,IAAK,YACLgE,KAAM,kEAGVokE,WAAW1wE,MACTsM,KAAM,iDACN8d,YAAa0mD,qBAAqBG,wBAEpCD,kBAEI1oE,IAAK,aACLgE,KAAM,kDAENhE,IAAK,WACLgE,KAAM,iDAENhE,IAAK,cACLgE,KAAM,oDAENhE,IAAK,cACLgE,KAAM,oDAGVokE,WAAW1wE,MACTsM,KAAM,0CACN8d,YAAa0mD,qBAAqBE,mBAEpCJ,mBAEItoE,IAAK,cACLgE,KAAM,oDAENhE,IAAK,YACLgE,KAAM,mDAENhE,IAAK,eACLgE,KAAM,sDAENhE,IAAK,eACLgE,KAAM,sDAGVokE,WAAW1wE,MACTsM,KAAM,2CACN8d,YAAa0mD,qBAAqBF,oBAEpCM,kBAEI5oE,IAAK,kBACLgE,KAAM,sDAENhE,IAAK,gBACLgE,KAAM,qDAENhE,IAAK,mBACLgE,KAAM,wDAENhE,IAAK,mBACLgE,KAAM,wDAENhE,IAAK,kBACLgE,KAAM,sDAENhE,IAAK,gBACLgE,KAAM,qDAENhE,IAAK,mBACLgE,KAAM,wDAGVokE,WAAW1wE,MACTsM,KAAM,yCACN8d,YAAa0mD,qBAAqBI,mBAE7BH,gCAAgCL,aAEzCD,aAAe,SAAS/vE,QAAS+zB,UAC/B,MAAO/zB,SAAQ+W,KAAK,WAAWoP,KAAKV,SAASkqD,gBAC3C57C,SAAUA,YACRxd,UAENs5D,eAAiB,SAAS97C,SAAU+iB,OAClC,GAAI3wB,KAOJ,OANAA,MAAOupD,kBACL37C,SAAUA,SACV+iB,MAAOA,QAET3wB,KAAO3qB,QAAQwE,QAAQmmB,MACvB4pD,aAAa5pD,KAAM4N,UACZtO,SAASU,MAAM5P,SAExBu5D,kBAAoB,WAClB,GAAI3pD,KAcJ,OAbA3P,KAAIgB,MACJ2O,KAAOspD,eACPx2E,EAAE4I,KAAK+tE,2BAA2Br5D,OAAO2qB,MAAO,SAASnN,SAAU+iB,OACjE,MAAO3wB,MAAO3qB,QAAQwE,QAAQmmB,MAAMnF,OAAO6uD,eAAe97C,SAAU+iB,UAEtEtgC,IAAI2P,KAAKA,MACT3P,IAAIc,GAAG,QAAS,UAAW,SAAS/Q,OAClC,GAAIwe,OAIJ,OAHAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BgE,OAAOokB,YAAY,eACZpkB,OAAOve,OAAO2iC,YAAY,UAE5B3yB,IAAIc,GAAG,SAAU,uBAAwB,SAAS/Q,OACvD,GAAIsqE,sBAAsBl6D,QAASC,UAAWmO,MA+B9C,OA9BA8rD,sBAAuB,WACrB,GAAID,kBAWJ,OAVAA,mBAAoB33E,EAAEyM,OAAO8Q,IAAIO,KAAK,wBAAyB,SAAS2Y,GACtE,MAAOl0B,SAAQwE,QAAQ0vB,GAAGmK,GAAG,cAE/B+2C,kBAAoB33E,EAAEwX,OAAOxX,EAAEC,IAAI03E,kBAAmB,SAASlhD,GAC7D,GAAIpR,WACJ,OAAOA,YAAa9iB,QAAQwE,QAAQ0vB,GAAGwZ,QAAQ,kBAAkBppC,KAAK,SAEpE8wE,kBAAkBxrE,QACpBwrE,kBAAkBtxE,KAAK,gBAElBsxE,mBAET7rD,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BxK,OAAO2qB,KAAKxX,YAAcmnD,uBAC1Bj6D,UAAY,WACV,GAAIo5D,YAAYc,UAMhB,OALAd,YAAaJ,2BAA2Br5D,OAAO2qB,MAC/C4vC,WAAa/rD,OAAOmkB,QAAQ,oBAAoBppC,KAAK,MACrDiwE,aAAahrD,OAAOmkB,QAAQ,oBAAqB8mC,WAAWc,aAC5D/sE,WAAW2V,WAAW,mBACtBtZ,SAASG,OAAO,WACTunB,MAAMiI,eAEfpZ,QAAU,WAGR,MAFAvW,UAASG,OAAO,SAChBwkB,OAAO2zB,KAAK,WAAY3zB,OAAO2zB,KAAK,YAC7BniC,OAAO2qB,KAAKxX,YAAcmnD,wBAE/Bt6D,OAAO2qB,KAAK8tC,eACdz4D,OAAO1V,QAAQouE,mBAAqB14D,OAAO2qB,KAAKxX,YAChDnT,OAAO1V,QAAQkwE,iBAAmBx6D,OAAO2qB,KAAKxX,YAAYhkB,OAAO,SAAS4Y,YACxE,MAAuC,KAAhCA,WAAWvf,QAAQ,WAErBma,MAAMgN,KAAK3P,OAAO1V,SAAS9E,KAAK6a,UAAWD,UAE3CuC,MAAMgN,KAAK3P,OAAO2qB,MAAMnlC,KAAK6a,UAAWD,YAIrDJ,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEbjB,OAAO7R,IAAI,eAAgB,WACzB,MAAOorE,uBAEF9mE,SAASuN,OAAQE,OAAOoQ,QAASipD,qBAGxCx5D,KAAMA,OAIV9d,OAAO6d,UAAU,qBAAsB,aAAc,UAAW,aAAc,WAAYk4D,4BAEzFtyE,KAAKrD,MA2BR,WACE,GAAIo4E,qBAAqBC,2BAA4BC,iBAAkBC,wBAAyBC,iBAAkBC,wBAAyBC,oBAAqBC,gBAAiBC,wBAAyBC,iBAAkBC,mBAAoB3oE,YAAaG,SAAUM,MAAOhR,OAAQG,MAAOoR,QAC3RtO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBT,YAAcnQ,KAAKD,MAAMoQ,YAEzBG,SAAWtQ,KAAKD,MAAMuQ,SAEtBa,QAAUnR,KAAKD,MAAMoR,QAErBvR,OAASgD,QAAQhD,OAAO,cAExBk5E,mBAAqB,SAAUppE,YAK7B,QAASopE,oBAAmBzmE,MAAOkkB,KAAMje,GAAIpU,OAAQ2L,SAAUC,QAASvE,eAAgBmP,WACtF,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAc,8BACzBz2B,KAAKqS,MAAMpK,WACX7E,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAKjB,OAJAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,6BAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAChDA,KAAKqS,MAAMvG,IAAI,kBAAmB9L,KAAK+4E,cAoCzC,MAjEAl2E,QAAOi2E,mBAAoBppE,YAE3BopE,mBAAmB1+D,SAAW,SAAU,UAAW,eAAgB,eAAgB,cAAe,aAAc,mBAAoB,cA8BpI0+D,mBAAmB5pE,UAAU6pE,aAAe,WAC1C,MAAO/4E,MAAKsY,GAAG0c,SAASjG,KAAK/uB,KAAKqS,MAAMoG,WAAWtV,KAAK,SAAUoE,OAChE,MAAO,UAASytB,UACd,MAAOztB,OAAM8K,MAAM2iB,SAAWA,WAE/Bh1B,QAGL84E,mBAAmB5pE,UAAUioB,YAAc,WACzC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAOd,MANKA,SAAQ2jE,YACXrkE,MAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,sBAE5C4E,MAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGL84E,mBAAmB5pE,UAAUwnB,gBAAkB,WAC7C,GAAItzB,QAOJ,OANAA,SAAUpD,KAAKm3B,cACf/zB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAMwxE,iBAEd/4E,OACIoD,SAGF01E,oBAENloE,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,qBAAsBu1E,oBAExCD,iBAAmB,SAASnqD,IAAKpO,MAAO9Y,SAAUskB,SAAU9oB,YAC1D,GAAI0a,KAgKJ,OA/JAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIuyC,QAAQ4oB,YAAa1rD,KAAM2rD,aAAcC,sBAAuBC,WAAYC,0BAA2BC,OAmJ3G,OAlJAA,SAAU17D,OAAOlL,MAAMoL,OAAOy7D,WAC9BH,WAAa,WACX,GAAI1sE,WAEJ,OADAA,YAAazJ,WAAW0E,QAAQ,uBACzBgnB,IAAIwG,YAAYnG,KAAKsqD,QAAQthE,IAAI5U,KAAK,SAAUoE,OACrD,MAAO,UAAS2tB,aACd,GAAIxjB,GAAGgC,IAAK8B,IAAKvC,GACjB,KAAKvB,EAAI,EAAGgC,IAAMwhB,YAAY1oB,OAAYkH,IAAJhC,EAASA,IAC7C8D,IAAM0f,YAAYxjB,GAClB8D,IAAI+jE,YAAe,MAAQtmE,IAAMuC,IAAI3P,SAAiB,IAANoN,IAChDuC,IAAIgkE,kBAAoBn5E,EAAEC,IAAID,EAAEo5E,QAAQjkE,IAAIkkE,iBAAkB,SAASC,KACrE,GAAIC,QAAQtrE,KAEZ,OADAsrE,QAASD,IAAI,GAAIrrE,MAAQqrE,IAAI,GACtBC,OAAS,KAAOtrE,QACtB3N,KAAK,MACR6U,IAAIqkE,eAAiBr5E,KAAKC,UAAU+U,IAAIskE,cACxCtkE,IAAI/I,WAAapD,OAAOmM,IAAIukE,SAAS30D,OAAO3Y,WAI9C,OAFA4sE,SAAQW,aAAe9kD,YAAY1oB,OACnC6sE,QAAQY,KAAO/kD,YACRkkD,8BAERp5E,QAELo5E,0BAA4B,WAC1B,GAAIc,gBAAgB3mE,KAAM4mE,YAAaz2E,KAWvC,OAVAy2E,aAAcv8D,IAAIO,KAAK,mBACvB+7D,eAAiBC,YAAY7pC,QAAQ,2BAA2BnyB,KAAK,qBACjE+7D,eAAe77C,SAAS,SAC1B9qB,KAAOvQ,WAAW0E,QAAQ,sCAC1BhE,MAAQV,WAAW0E,QAAQ,8CAE3B6L,KAAOvQ,WAAW0E,QAAQ,sCAC1BhE,MAAQV,WAAW0E,QAAQ,6CAE7ByyE,YAAY5mE,KAAKA,MACV4mE,YAAYr6B,KAAK,QAASp8C,QAEnCw1E,sBAAwB,WAEtB,MADAt7D,KAAIO,KAAK,iBAAiB2H,SAAS,UAC5BlI,IAAIO,KAAK,uBAAuBwH,YAAY,WAErDszD,aAAe,WAEb,MADAr7D,KAAIO,KAAK,uBAAuB2H,SAAS,UAClClI,IAAIO,KAAK,iBAAiBwH,YAAY,WAE/CqzD,YAAc,WACZ,MAAOp7D,KAAIO,KAAK,qBAAqB2H,SAAS,SAEhDsqC,OAAS,WAEP,MADA8oB,yBACOv7D,OAAO1J,OAAO,WACnB,MAAOolE,SAAQ35C,YAGnBpS,KAAOhd,SAAS,IAAM,SAAS6b,QAC7B,GAAIrO,MAAM1a,OAEV,OADA0a,MAAOqO,OAAOmkB,QAAQ,QAAQtlC,YACzB8S,KAAKS,YAGVnb,QAAUkd,MAAMgN,KAAK+rD,SACrBj2E,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAO2xE,2BAERl5E,OACIoD,QAAQD,KAAK,KAAM,SAAS+D,MAEjC,MADAM,UAASG,OAAO,SACTmW,KAAKqB,UAAUjY,SAXxB,SAcF0W,IAAIc,GAAG,QAAS,gBAAiB,WAE/B,MADAs6D,eACOtqD,IAAIsG,SAASolD,KAAKf,QAAQthE,IAAI5U,KAAK,SAAUoE,OAClD,MAAO,YACL,MAAO4xE,gBAERn5E,SAEL4d,IAAIc,GAAG,QAAS,gBAAiB,WAC/B,MAAOu6D,kBAETr7D,IAAIc,GAAG,QAAS,mBAAoB,WAClC,MAAO0xC,YAETxyC,IAAIc,GAAG,QAAS,iBAAkB,SAAS/Q,OACzC,GAAIwe,OAGJ,OAFAxe,OAAM2Q,iBACN6N,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBmF,KAAKnB,UAEdvO,IAAIc,GAAG,QAAS,sBAAuB,SAAS/Q,OAC9C,GAAIwe,OACJ,OAAsB,MAAlBxe,MAAM6f,SACRrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBmF,KAAKnB,SACe,KAAlBxe,MAAM6f,SACfrB,OAASvpB,QAAQwE,QAAQuG,MAAMwa,eACxBioC,OAAOjkC,SAFT,SAKTvO,IAAIc,GAAG,QAAS,kBAAmB,WACjC,GAAIU,SAAS1b,KAKb,OAJAA,OAAQV,WAAW0E,QAAQ,yBAC3B0X,QAAUpc,WAAW0E,QAAQ,+BAC3BsL,KAAMqmE,QAAQrmE,OAETxL,SAASsmB,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAUoE,OACzD,MAAO,UAASwmB,aACd,GAAIhQ,SAAS+1D,QASb,OARAA,UAAW,WAET,MADA/lD,aAAYzB,SACL3O,OAAOqQ,MAAM,oBAEtBjQ,QAAU,WAER,MADAgQ,aAAYzB,QAAO,GACZ9kB,SAASG,OAAO,UAElB2Y,MAAMvE,OAAOs9D,SAASl2E,KAAK2wE,SAAU/1D,WAE7C/d,SAEL4d,IAAIc,GAAG,QAAS,kBAAmB,SAAS/Q,OAC1C,GAAIwe,OAEJ,OADAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eACV,MAAhBkxD,QAAQY,MAAyC,IAAxBZ,QAAQY,KAAKztE,OAClC2sE,aAAah2E,KAAK,WACvB,MAAOgO,SAAQ,EAAG,WAEhB,MADAyM,KAAIO,KAAK,qBAAqBoyB,YAAY,QACnC6oC,iCAIXx7D,IAAIO,KAAK,qBAAqBoyB,YAAY,QACnC5yB,OAAO1J,OAAO,WACnB,MAAOmlE,kCAIbx7D,IAAIc,GAAG,QAAS,kBAAmB,SAAS/Q,OAC1C,GAAIwe,OAGJ,OAFAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/BgE,OAAOokB,YAAY,uBACZpkB,OAAOsc,SAAS,4BAA4B8H,YAAY,UAE1D3yB,IAAIc,GAAG,QAAS,kBAAmB,SAAS/Q,OACjD,GAAI6H,KAAK2W,MAGT,OAFAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/B3S,IAAM2W,OAAOjlB,KAAK,OACXwnB,IAAIwG,YAAYmlD,OAAO7kE,KAAKrS,KAAK,SAAUoE,OAChD,MAAO,YACL,MAAO4xE,gBAERn5E,WAIL0d,KAAMA,OAIV9d,OAAO6d,UAAU,aAAc,eAAgB,UAAW,aAAc,aAAc,aAAco7D,mBAEpGH,oBAAsB,SAAShqD,IAAKpO,MAAO9Y,SAAUskB,UACnD,GAAIpO,KAmEJ,OAlEAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIy8D,mBAAmBC,YAAatH,mBAAoB3lD,KAAM+rD,OA4D9D,OA3DAA,SAAU17D,OAAOlL,MAAMoL,OAAOy7D,WAC9BiB,YAAc38D,IAAIO,KAAK,qBACvBm8D,kBAAoB18D,IAAIO,KAAK,gBAC7B80D,mBAAqB,WACnB,MAAOt1D,QAAOxG,UACZnE,KAAQ,GACR9M,IAAO,GACP8I,IAAO,KAGXikE,qBACAt1D,OAAOjL,OAAO,WAAY,SAASsiB,UACjC,MAAgB,OAAZA,SACsB,IAApBA,SAASxoB,QACX+tE,YAAY50D,YAAY,UACxB20D,kBAAkBx0D,SAAS,UACpBy0D,YAAYp8D,KAAK,SAAS,GAAGoO,UAEpCguD,YAAYz0D,SAAS,UACdw0D,kBAAkB30D,YAAY,WAPzC,SAWF2H,KAAOhd,SAAS,IAAM,WACpB,GAAIwN,MAAM1a,OAEV,OADA0a,MAAOy8D,YAAYvvE,YACd8S,KAAKS,YAGVZ,OAAOxG,SAASlP,QAAU0V,OAAO1V,QAAQ8P,GACzC3U,QAAUkd,MAAM8L,OAAO,WAAYzO,OAAOxG,UAC1C/T,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YAEL,MADAoW,QAAOqQ,MAAM,mBACNilD,uBAERjzE,OACIoD,QAAQD,KAAK,KAAM,SAAS+D,MAEjC,MADAM,UAASG,OAAO,SACTmW,KAAKqB,UAAUjY,SAbxB,SAgBFqzE,YAAY77D,GAAG,QAAS,WAAY,SAAS/Q,OAE3C,MADAA,OAAM2Q,iBACCgP,SAETitD,YAAY77D,GAAG,QAAS,QAAS,SAAS/Q,OACxC,MAAsB,MAAlBA,MAAM6f,QACDF,OADT,SAIFitD,YAAY77D,GAAG,QAAS,cAAe,SAAS/Q,OAC9C,MAAOgQ,QAAO1J,OAAO,WAEnB,MADAg/D,sBACIt1D,OAAOqX,SAASxoB,QAAU,EACrB+tE,YAAYz0D,SAAS,UAD9B,WAKGw0D,kBAAkB57D,GAAG,QAAS,SAAS/Q,OAE5C,MADA4sE,aAAY50D,YAAY,UACjB40D,YAAYp8D,KAAK,SAAS,GAAGoO,YAItC7O,KAAMA,OAIV9d,OAAO6d,UAAU,gBAAiB,eAAgB,UAAW,aAAc,aAAci7D,sBAEzFJ,iBAAmB,SAAU5oE,YAK3B,QAAS4oE,kBAAiBjmE,MAAOkkB,KAAMje,GAAIpU,OAAQqH,eAAgBmP,WACjE,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKu2B,KAAOA;AACZv2B,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,6BAChD1H,KAAKqS,MAAMpK,WACX7E,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAKjB,OAJAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,2BAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAiClD,MA3DA6C,QAAOy1E,iBAAkB5oE,YAEzB4oE,iBAAiBl+D,SAAW,SAAU,UAAW,eAAgB,eAAgB,mBAAoB,cA2BrGk+D,iBAAiBppE,UAAUsrE,YAAc,WACvC,MAAOx6E,MAAKsY,GAAGzY,QAAQkvB,KAAK/uB,KAAKqS,MAAMoG,UAAW,UAAUtV,KAAK,SAAUoE,OACzE,MAAO,UAASkzE,QACd,MAAOlzE,OAAM8K,MAAMooE,OAASA,SAE7Bz6E,QAGLs4E,iBAAiBppE,UAAUioB,YAAc,WACvC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAId,MAHAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGLs4E,iBAAiBppE,UAAUwnB,gBAAkB,WAC3C,GAAItzB,QAOJ,OANAA,SAAUpD,KAAKm3B,cACf/zB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAMizE,gBAEdx6E,OACIoD,SAGFk1E,kBAEN1nE,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,mBAAoB+0E,kBAEtCE,iBAAmB,SAAU9oE,YAK3B,QAAS8oE,kBAAiBnmE,MAAOkkB,KAAMje,GAAIpU,OAAQqH,eAAgBmP,WACjE,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,6BAChD1H,KAAKqS,MAAMpK,WACX7E,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAKjB,OAJAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,2BAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAChDA,KAAKqS,MAAMvG,IAAI,yBAA0B,SAAUvE,OACjD,MAAO,YACL,MAAOA,OAAMizE,gBAEdx6E,OAiCL,MAhEA6C,QAAO21E,iBAAkB9oE,YAEzB8oE,iBAAiBp+D,SAAW,SAAU,UAAW,eAAgB,eAAgB,mBAAoB,cAgCrGo+D,iBAAiBtpE,UAAUsrE,YAAc,WACvC,MAAOx6E,MAAKsY,GAAGzY,QAAQkvB,KAAK/uB,KAAKqS,MAAMoG,UAAW,UAAUtV,KAAK,SAAUoE,OACzE,MAAO,UAASmzE,QACd,MAAOnzE,OAAM8K,MAAMqoE,OAASA,SAE7B16E,QAGLw4E,iBAAiBtpE,UAAUioB,YAAc,WACvC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAId,MAHAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGLw4E,iBAAiBtpE,UAAUwnB,gBAAkB,WAC3C,GAAItzB,QAOJ,OANAA,SAAUpD,KAAKm3B,cACf/zB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAMizE,gBAEdx6E,OACIoD,SAGFo1E,kBAEN5nE,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,mBAAoBi1E,kBAEtCJ,oBAAsB,SAAU1oE,YAK9B,QAAS0oE,qBAAoB/lE,MAAOkkB,KAAMje,GAAIpU,OAAQqH,eAAgBmP,WACpE,GAAItX,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjBvK,YAAYnQ,MACZA,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,gCAChD1H,KAAKqS,MAAMpK,WACX7E,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,GAAI5D,aAAaD,KAKjB,OAJAA,OAAQ6D,MAAMmT,UAAUhT,QAAQ,8BAC9BivB,YAAapvB,MAAM8K,MAAMpK,QAAQ+K,OAEnCrP,YAAc4D,MAAM8K,MAAMpK,QAAQtE,YAC3B4D,MAAMgE,eAAe0C,OAAOvK,MAAOC,eAE3C3D,OACHoD,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAChDA,KAAKqS,MAAMvG,IAAI,yBAA0B,SAAUvE,OACjD,MAAO,YACL,MAAOA,OAAMizE,gBAEdx6E,OAiCL,MAhEA6C,QAAOu1E,oBAAqB1oE,YAE5B0oE,oBAAoBh+D,SAAW,SAAU,UAAW,eAAgB,eAAgB,mBAAoB,cAgCxGg+D,oBAAoBlpE,UAAUsrE,YAAc,WAC1C,MAAOx6E,MAAKsY,GAAGzY,QAAQkvB,KAAK/uB,KAAKqS,MAAMoG,UAAW,aAAatV,KAAK,SAAUoE,OAC5E,MAAO,UAASozE,WACd,MAAOpzE,OAAM8K,MAAMsoE,UAAYA,YAEhC36E,QAGLo4E,oBAAoBlpE,UAAUioB,YAAc,WAC1C,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAId,MAHAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SAC7BA,UAERjI,QAGLo4E,oBAAoBlpE,UAAUwnB,gBAAkB,WAC9C,GAAItzB,QAOJ,OANAA,SAAUpD,KAAKm3B,cACf/zB,QAAQD,KAAK,SAAUoE,OACrB,MAAO,YACL,MAAOA,OAAMizE,gBAEdx6E,OACIoD,SAGFg1E,qBAENxnE,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzX,OAAO2D,WAAW,sBAAuB60E,qBAEzCO,gBAAkB,WAChB,GAAIj7D,KAOJ,OANAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOD,KAAIc,GAAG,QAAS,wBAAyB,WAE9C,MADAd,KAAIO,KAAK,SAAS0P,SACXjQ,IAAIO,KAAK,cAAc2H,SAAS,eAIzCpI,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqBk7D,iBAEtCJ,wBAA0B,SAASj4D,MAAO9Y,SAAUskB,UAClD,GAAIpO,KA+BJ,OA9BAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMG,OAAQgO,YA2BlB,OA1BAnO,MAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAuB,IAEzBd,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAMs6D,cAAcj9D,OAAO88D,OAAQ,UAC7Cr3E,QAAQD,KAAK,WAEX,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,aAElBvE,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UAZF,SAiBDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACjBP,IAAIc,GAAG,SAAU,OAAQT,UAGhCP,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB,UAAW,aAAc,aAAc86D,0BAE7EE,wBAA0B,SAASn4D,MAAO9Y,SAAUskB,UAClD,GAAIpO,KAgCJ,OA/BAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMG,OAAQgO,YA4BlB,OA3BAnO,MAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAuB,IAEzBd,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAMs6D,cAAcj9D,OAAO+8D,OAAQ,UAC7Ct3E,QAAQD,KAAK,WAGX,MAFA+oB,gBAAeI,SACf9kB,SAASG,OAAO,WACTgW,OAAOqQ,MAAM,4BAEf5qB,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UAbF,SAkBDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACjBP,IAAIc,GAAG,SAAU,OAAQT,UAGhCP,KAAMA,OAIV9d,OAAO6d,UAAU,oBAAqB,UAAW,aAAc,aAAcg7D,0BAE7EJ,2BAA6B,SAAS/3D,MAAO9Y,SAAUskB,UACrD,GAAIpO,KAgCJ,OA/BAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIC,MAAMG,OAAQgO,YA4BlB,OA3BAnO,MAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAuB,IAEzBd,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAMs6D,cAAcj9D,OAAOg9D,UAAW,aAChDv3E,QAAQD,KAAK,WAGX,MAFA+oB,gBAAeI,SACf9kB,SAASG,OAAO,WACTgW,OAAOqQ,MAAM,4BAEf5qB,QAAQD,KAAK,KAAM,SAAS+D,MAGjC,MAFAglB,gBAAeI,SACfxO,KAAKqB,UAAUjY,MACXA,KAAK+X,eACAzX,SAASG,OAAO,QAAST,KAAK+X,gBADvC,UAbF,SAkBDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACjBP,IAAIc,GAAG,SAAU,OAAQT,UAGhCP,KAAMA,OAIV9d,OAAO6d,UAAU,uBAAwB,UAAW,aAAc,aAAc46D,6BAEhFO,wBAA0B,WACxB,GAAIl7D,KAUJ,OATAA,MAAO,SAASC,OAAQC,IAAKC,OAAQg9D,UACnC,MAAOA,UAASlhC,SAASjzC,KAAK,SAAS4H,OAErC,MADAA,OAAQ2Z,EAAE3W,KAAKhD,OACD,KAAVA,SAGGA,MAAMjC,MAAM,SAIrBqR,KAAMA,KACNF,SAAU,KACV0Q,QAAS,YAIbtuB,OAAO6d,UAAU,mBAAoBm7D,0BAEpCv1E,KAAKrD,MAER,WACE,GAAI86E,mCAAmCl7E,MAEvCA,QAASgD,QAAQhD,OAAO,gBAExBk7E,kCAAoC,WAClC,OACEx3E,YAAa,qCAIjB1D,OAAO6d,UAAU,8BAA+Bq9D,qCAE/Cz3E,KAAKrD,MA2BR,WACE,GAAI+6E,eAAeC,uBAAwB5qE,SAAUE,SAAU1Q,OAAQG,MAAOoR,OAE9EpR,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBe,QAAUnR,KAAKD,MAAMoR,QAErBb,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,gBAExBm7E,cAAgB,SAAS5vE,WAAYmV,MAAO9Y,SAAUjC,UAAWwe,SAAU2K,IAAKusD,YAAanvD,SAAU2X,gBAAiBy3C,cAAel4E,WAAYmX,mBAAoB/O,OACrK,GAAIqS,WAAWC,IAkFf,OAjFAA,MAAO,SAASC,OAAQC,IAAK6d,OAC3B,GAAIvP,gBAAgBpO,KAAMe,cAAeC,gBAAiBkN,aAAc/N,OAAQgO,YAyEhF,OAxEAtO,QAAOzW,QACPyW,OAAOP,aACP8O,eAAiB,KACjB9gB,MAAMW,UACN4R,OAAOwzB,yBAA2Bh3B,mBAAmBg3B,2BACrDxzB,OAAOyzB,wBAA0Bj3B,mBAAmBi3B,0BACpDtzB,KAAOF,IAAIO,KAAK,QAAQnT,WACtB+T,qBAAuB,IAEzBD,gBAAkB,SAASnZ,UAOzB,MANAu1E,eAAc91E,IAAI,SAAS+1E,YAC3BjvD,eAAeI,SACfnhB,WAAW2V,WAAW,mBACtBtZ,SAASG,OAAO,UAAW3E,WAAW0E,QAAQ,gBAC9CnC,UAAUW,IAAI+0E,YAAY71E,IAAIO,WAC9B89B,gBAAgBxZ,MAAMrM,KACfzD,mBAAmBo3B,gBAE5B1yB,cAAgB,SAASlZ,UACvB,GAAIy1E,aAAa1pE,EAAGgC,IAAKT,IAAK0F,QAAS0iE,SAMvC,KALAnvD,eAAeI,SACfxO,KAAKqB,UAAUxZ,UACf01E,aACApoE,IAAM5S,EAAE6R,KAAKvM,UACbgT,WACKjH,EAAI,EAAGgC,IAAMT,IAAIzG,OAAYkH,IAAJhC,EAASA,IACrC0pE,YAAcnoE,IAAIvB,GAClBiH,QAAQjS,KAAK20E,UAAU30E,KAAK,SAAW00E,YAAc,KAEvD,OAAOziE,UAETsF,OAAS,SAAU1W,OACjB,MAAO,UAASoG,OACd,GAAIvK,QAEJ,OADAuK,OAAM2Q,iBACDR,KAAKS,YAGV2N,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAM8L,OAAO,WAAYzO,OAAOzW,MACnC9D,QAAQD,KAAK2b,gBAAiBD,gBALrC,SAOD7e,MACHgsB,aAAe,WAkBb,MAjBArO,QAAOzW,MACL4wE,YAAY,GAETn6D,OAAOP,UAAU5Q,OAUpBmR,OAAOzW,KAAKo0E,kBAAoBj7E,EAAEk7E,KAAKl7E,EAAEyM,OAAO6Q,OAAOP,UAAW,SAAS7c,GACzE,MAAkB,UAAXA,EAAE0mB,QACPlP,GAXJ2W,IAAInW,SAAS6E,YAAYja,KAAK,SAAUoE,OACtC,MAAO,UAASoM,QAEd,MADAgK,QAAOP,UAAYzJ,OACZgK,OAAOzW,KAAKo0E,kBAAoBj7E,EAAEk7E,KAAKl7E,EAAEyM,OAAO6Q,OAAOP,UAAW,SAAS7c,GAChF,MAAkB,UAAXA,EAAE0mB,QACPlP,KAEL/X,OAMEyjC,gBAAgB3b,KAAKlK,MAE9BqO,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QACzBL,IAAIc,GAAG,QAAS,SAAU,SAAS/Q,OAEjC,MADAA,OAAM2Q,iBACCmlB,gBAAgBxZ,MAAMrM,OAE/BD,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAENoN,gBAETvO,WACEC,KAAMA,KACNpa,YAAa,qCACb+O,WAKJzS,OAAO6d,UAAU,qBAAsB,aAAc,UAAW,aAAc,YAAa,aAAc,eAAgB,cAAe,aAAc,kBAAmB,gBAAiB,aAAc,uBAAwB,UAAWs9D,gBAE3OC,uBAAyB,SAAS16D,MAAOnV,WAAYC,MAAO7F,UAAWC,SAAUgC,SAAUi8B,gBAAiBmS,SAAUz7B,oBACpH,GAAIuD,KAqCJ,OApCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI29D,iBAAiBv9D,MA8BrB,OA7BAu9D,iBAAkB,KAClB79D,OAAO7R,IAAI,qBAAsB,SAASmB,IAAKhF,SAE7C,MADAw7B,iBAAgB3b,KAAKlK,KACd49D,gBAAkBvzE,UAE3B0V,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEbX,OAAS,WACP,GAAI7a,QAWJ,OAVAwyC,UAAS/nC,QACT41B,gBAAgBxZ,MAAMrM,KACtBxa,QAAUkd,MAAMvE,OAAOy/D,iBACvBp4E,QAAQD,KAAK,SAAS+D,MAKpB,MAJA0uC,UAASK,aACT9qC,WAAW2V,WAAW,mBACtBvb,UAAU9C,KAAK+C,SAAS7C,QAAQ,SAChC6E,SAASG,OAAO,WACTwS,mBAAmBo3B,iBAErBnuC,QAAQD,KAAK,KAAM,WAExB,MADAqE,UAASG,OAAO,SACT87B,gBAAgBxZ,MAAMrM,QAGjCA,IAAIc,GAAG,QAAS,cAAe,SAAS/Q,OAEtC,MADAA,OAAM2Q,iBACCmlB,gBAAgBxZ,MAAMrM,OAExBA,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAE/C,MADAA,OAAM2Q,iBACCL,aAITP,KAAMA,OAIV9d,OAAO6d,UAAU,qBAAsB,UAAW,aAAc,UAAW,cAAe,aAAc,aAAc,kBAAmB,WAAY,uBAAwBu9D,0BAE5K33E,KAAKrD,MA2BR,WACE,GAAIy7E,mBAAmBC,qBAAsBC,sBAAuBC,sBAAuBC,sBAAuBC,qBAAsBC,qBAAsBC,uBAAwBC,mBAAoB7rE,SAAUxQ,MAEpNwQ,UAAWpQ,KAAKD,MAAMqQ,SAEtBurE,sBAAwB,WACtB,GAAIj+D,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQE,OAAOq+D,SAAU,SAASlwE,KAChD,MAAO4R,KAAIrK,KAAKvH,SAIlB0R,KAAMA,OAIVm+D,sBAAwB,WACtB,GAAIn+D,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQE,OAAOs+D,SAAU,SAASnwE,KAChD,MAAO4R,KAAI2P,KAAKvhB,SAIlB0R,KAAMA,OAIVo+D,qBAAuB,WACrB,GAAIp+D,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQE,OAAOu+D,QAAS,SAASpwE,KAC/C,MAAO4R,KAAI2P,KAAK,IAAMvhB,IAAM,SAI9B0R,KAAMA,OAIVq+D,qBAAuB,WACrB,GAAIr+D,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQE,OAAOw+D,QAAS,SAASrwE,KAC/C,MAAO4R,KAAItL,KAAK,MAAOtG,SAIzB0R,KAAMA,OAIVk+D,sBAAwB,WACtB,GAAIl+D,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQE,OAAOy+D,SAAU,SAAStwE,KAChD,MAAO4R,KAAItL,KAAK,OAAQtG,SAI1B0R,KAAMA,OAIVg+D,qBAAuB,WACrB,GAAIh+D,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQE,OAAO0+D,QAAS,SAASvwE,KAC/C,MAAO4R,KAAItL,KAAK,MAAOtG,SAIzB0R,KAAMA,OAIVs+D,uBAAyB,WACvB,GAAIt+D,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOzN,UAASuN,OAAQE,OAAO2+D,UAAW,SAASxwE,KACjD,MAAO4R,KAAItL,KAAK,QAAStG,SAI3B0R,KAAMA,OAIVu+D,mBAAqB,WACnB,GAAIv+D,KAQJ,OAPAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOF,QAAOjL,OAAOmL,OAAO4+D,YAAa,SAASzwE,KAChD,MAAW,OAAPA,IACK4R,IAAItL,KAAK,QAAStG,KAD3B,WAMF0R,KAAMA,OAIV+9D,kBAAoB,WAClB,GAAI/9D,KAQJ,OAPAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOF,QAAOjL,OAAOmL,OAAO6+D,WAAY,SAAS1wE,KAC/C,MAAW,OAAPA,IACK4R,IAAI2P,KAAKvhB,KADlB,WAMF0R,KAAMA,OAIV9d,OAASgD,QAAQhD,OAAO,aAExBA,OAAO6d,UAAU,WAAYk+D,uBAE7B/7E,OAAO6d,UAAU,WAAYo+D,uBAE7Bj8E,OAAO6d,UAAU,UAAWq+D,sBAE5Bl8E,OAAO6d,UAAU,UAAWs+D,sBAE5Bn8E,OAAO6d,UAAU,WAAYm+D,uBAE7Bh8E,OAAO6d,UAAU,UAAWi+D,sBAE5B97E,OAAO6d,UAAU,YAAau+D,wBAE9Bp8E,OAAO6d,UAAU,cAAew+D,oBAEhCr8E,OAAO6d,UAAU,aAAcg+D,oBAE9Bp4E,KAAKrD,MA2BR,WACE,GAAI28E,sBAAsB/8E,MAE1B+8E,sBAAuB,WACrB,QAASA,wBACP38E,KAAK8F,OAAS5F,OAAO0E,YAavB,MAVA+3E,sBAAqBztE,UAAU9J,IAAM,SAAS4J,IAAKw6B,cAIjD,MAHoB,OAAhBA,eACFA,aAAe,MAEbnpC,EAAEu8E,IAAI58E,KAAK8F,OAAQkJ,KACdhP,KAAK8F,OAAOkJ,KAEdw6B,cAGFmzC,wBAIT/8E,OAASgD,QAAQhD,OAAO,aAExBA,OAAOsd,QAAQ,YAAay/D,uBAE3Bt5E,KAAKrD,MA2BR,WACE,GAAI68E,mBAAmBC,8BAA+Bl9E,OACpDiD,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfxP,QAASgD,QAAQhD,OAAO,aAExBi9E,kBAAoB,SAAUntE,YAK5B,QAASmtE,mBAAkBn0D,UAAWrW,MAAOnO,OAAQqyB,KAAMje,GAAIktB,SAC7D,GAAIpiC,QACJpD,MAAK0oB,UAAYA,UACjB1oB,KAAKqS,MAAQA,MACbrS,KAAKkE,OAASA,OACdlE,KAAKu2B,KAAOA,KACZv2B,KAAKsY,GAAKA,GACVtY,KAAKwlC,QAAUA,QACfxlC,KAAKqS,MAAM0qE,cAAgB18E,EAAEk7E,KAAKl7E,EAAEyM,OAAO9M,KAAK0oB,UAAU7b,cACxDoa,KAAQjnB,KAAKkE,OAAOmK,UAEtBrO,KAAKqS,MAAM00D,YAAc/mE,KAAKkE,OAAOC,MACrCf,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,KAAM,SAAUoE,OAC3B,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,OAmBL,MAxCA6C,QAAOg6E,kBAAmBntE,YAE1BmtE,kBAAkBziE,SAAW,aAAc,SAAU,eAAgB,UAAW,eAAgB,cAsBhGyiE,kBAAkB3tE,UAAUioB,YAAc,WACxC,MAAOn3B,MAAKsY,GAAGC,SAAS6e,UAAUp3B,KAAKkE,OAAOC,OAAOhB,KAAK,SAAUoE,OAClE,MAAO,UAASU,SAKd,MAJAV,OAAM8K,MAAMoG,UAAYxQ,QAAQ8P,GAChCxQ,MAAM8K,MAAMpK,QAAUA,QACtBV,MAAM8K,MAAM2b,MAAM,iBAAkB/lB,SACpCV,MAAM8K,MAAMyO,WAAW,iBAAkB7Y,SAClCA,UAERjI,QAGL68E,kBAAkB3tE,UAAUwnB,gBAAkB,WAC5C,MAAO12B,MAAKm3B,eAGP0lD,mBAEN98E,MAAMmQ,YAETtQ,OAAO2D,WAAW,oBAAqBs5E,mBAEvCC,8BAAgC,SAAUptE,YAKxC,QAASotE,+BAA8Bp0D,UAAWrW,MAAOnO,QACvDlE,KAAK0oB,UAAYA,UACjB1oB,KAAKqS,MAAQA,MACbrS,KAAKkE,OAASA,OACdlE,KAAKqS,MAAM0qE,cAAgB18E,EAAEk7E,KAAKl7E,EAAEyM,OAAO9M,KAAK0oB,UAAU3b,qBACxDka,KAAQjnB,KAAKkE,OAAOmK,UAIxB,MAbAxL,QAAOi6E,8BAA+BptE,YAEtCotE,8BAA8B1iE,SAAW,aAAc,SAAU,gBAW1D0iE,+BAEN/8E,MAAMmQ,YAETtQ,OAAO2D,WAAW,gCAAiCu5E,gCAElDz5E,KAAKrD,MA2BR,WACE,GAAIg9E,uBAAuBj9E,MACzB8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbi9E,sBAAwB,SAAUttE,YAKhC,QAASstE,uBAAsB1iE,QAASpW,QACtClE,KAAKsa,QAAUA,QACfta,KAAKkE,OAASA,OAahB,MAnBArB,QAAOm6E,sBAAuBttE,YAE9BstE,sBAAsB5iE,SAAW,aAAc,gBAO/C4iE,sBAAsB9tE,UAAU/O,aAAe,SAASC,YAOtD,MANkB,OAAdA,aACFA,eAEFA,WAAaC,EAAEC,IAAIF,WAAY,SAASG,GACtC,MAAOC,MAAKC,UAAUF,KAEjBG,SAASN,WAAWO,KAAK,OAG3Bq8E,uBAENj9E,MAAMkQ,UAER5M,KAAKrD,MA2BR,WACE,GAAIi9E,aAAar9E,OAAQG,MACvB8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbk9E,YAAc,SAAUvtE,YAKtB,QAASutE,aAAYziE,KAAMzK,EAAGuK,QAASoO,UAAWw0D,aAAcxiE,WAC9D1a,KAAKwa,KAAOA,KACZxa,KAAK+P,EAAIA,EACT/P,KAAKsa,QAAUA,QACfta,KAAK0oB,UAAYA,UACjB1oB,KAAKk9E,aAAeA,aACpBl9E,KAAK0a,UAAYA,UACjBuiE,YAAY9tE,UAAUJ,YAAY1L,KAAKrD,MACvCA,KAAK2/C,MAAQ3/C,KAAKk9E,aAAa,WA8FjC,MA1GAr6E,QAAOo6E,YAAavtE,YAEpButE,YAAY7iE,SAAW,QAAS,KAAM,aAAc,aAAc,gBAAiB,cAanF6iE,YAAY/tE,UAAUlK,QAAU,WAC9B,GAAIA,SAASuD,KAAM0T,KAUnB,OATAjX,YACAiX,MAAQjc,KAAKsa,QAAQlV,IAAI,SACrB6W,QACFjX,QAAuB,cAAI,UAAYiX,OAEzC1T,KAAOvI,KAAK0a,UAAU5R,oBAClBP,OACFvD,QAAQ,mBAAqBuD,MAExBvD,SAGTi4E,YAAY/tE,UAAUtI,QAAU,SAASmmD,SAEvC,MADAA,SAAQ/nD,QAAU3E,EAAEyxD,UAAW/E,QAAQ/nD,YAAehF,KAAKgF,WACpDhF,KAAKwa,KAAKuyC,UAGnBkwB,YAAY/tE,UAAU9J,IAAM,SAASc,IAAKhC,OAAQ6oD,SAShD,MARAA,SAAU1sD,EAAEyxD,QACVj/C,OAAQ,MACR3M,IAAKA,KACJ6mD,SACC7oD,SACF6oD,QAAQ7oD,OAASA,QAEnB6oD,QAAQpN,MAAQ3/C,KAAK2/C,MACd3/C,KAAK4G,QAAQmmD,SAAS,WAAW,SAAUxlD,OAChD,MAAO,UAASL,MACd,MAAOK,OAAMo4C,MAAMw7B,cAEpBn7E,QAGLi9E,YAAY/tE,UAAUhK,KAAO,SAASgB,IAAKgB,KAAMhD,OAAQ6oD,SAWvD,MAVAA,SAAU1sD,EAAEyxD,QACVj/C,OAAQ,OACR3M,IAAKA,KACJ6mD,SACC7lD,OACF6lD,QAAQ7lD,KAAOA,MAEbhD,SACF6oD,QAAQ7oD,OAASA,QAEZlE,KAAK4G,QAAQmmD,UAGtBkwB,YAAY/tE,UAAU/J,IAAM,SAASe,IAAKgB,KAAMhD,OAAQ6oD,SAWtD,MAVAA,SAAU1sD,EAAEyxD,QACVj/C,OAAQ,MACR3M,IAAKA,KACJ6mD,SACC7lD,OACF6lD,QAAQ7lD,KAAOA,MAEbhD,SACF6oD,QAAQ7oD,OAASA,QAEZlE,KAAK4G,QAAQmmD,UAGtBkwB,YAAY/tE,UAAUjK,MAAQ,SAASiB,IAAKgB,KAAMhD,OAAQ6oD,SAWxD,MAVAA,SAAU1sD,EAAEyxD,QACVj/C,OAAQ,QACR3M,IAAKA,KACJ6mD,SACC7lD,OACF6lD,QAAQ7lD,KAAOA,MAEbhD,SACF6oD,QAAQ7oD,OAASA,QAEZlE,KAAK4G,QAAQmmD,UAGtBkwB,YAAY/tE,UAAU,UAAY,SAAShJ,IAAKgB,KAAMhD,OAAQ6oD,SAW5D,MAVAA,SAAU1sD,EAAEyxD,QACVj/C,OAAQ,SACR3M,IAAKA,KACJ6mD,SACC7lD,OACF6lD,QAAQ7lD,KAAOA,MAEbhD,SACF6oD,QAAQ7oD,OAASA,QAEZlE,KAAK4G,QAAQmmD,UAGfkwB,aAENl9E,MAAMkQ,SAETrQ,OAASgD,QAAQhD,OAAO,aAExBA,OAAOsd,QAAQ,UAAW+/D,cAEzB55E,KAAKrD,MA2BR,WACE,GAAIm9E,iBAAiBv9E,MAErBu9E,iBAAkB,SAAS53E,UAAW0yB,OAAQ9sB,YAe5C,MAdA5F,WAAU0T,SAAW,SAAS5G,OAC5B,GAAI+qE,WAAW1xE,EAMf,OALA0xE,WAAYnlD,OAAO4yB,QACnBn/C,GAAK2G,MAAMvG,IAAI,yBAA0B,WAEvC,MADAmsB,QAAO4yB,QAAUuyB,UACV1xE,OAEFnG,WAETA,UAAUyT,uBAAyB,SAAShG,KAAM1E,OAChD,GAAIpK,OAEJ,OADAA,QAASqB,UAAUc,aACZnC,OAAO8O,QAAU1E,OAEnB/I,WAGT3F,OAASgD,QAAQhD,OAAO,aAExBA,OAAO4G,QAAQ,eAAgB,YAAa,SAAU,aAAc22E,mBAEnE95E,KAAKrD,MA2BR,WACE,GAAIq9E,OAAOC,aAAc19E,OAAQuJ,SAAUpJ,MACzCoG,WAAaA,SAAW,SAASsL,MAAQ,IAAK,GAAIC,GAAI,EAAGC,EAAI3R,KAAKwM,OAAYmF,EAAJD,EAAOA,IAAO,GAAIA,IAAK1R,OAAQA,KAAK0R,KAAOD,KAAM,MAAOC,EAAK,OAAO,IAC9I7O,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfiuE,OAAQ,WACN,QAASA,OAAMrqE,KAAM9L,KAAMq2E,WACzBv9E,KAAKw9E,OAASt2E,KACdlH,KAAKy9E,MAAQzqE,KACbhT,KAAK09E,WAAaH,UAClBv9E,KAAK29E,SAASz2E,MACdlH,KAAK0N,aAsIP,MAnIA2vE,OAAMnuE,UAAUoN,MAAQ,WACtB,GAAIikB,SAIJ,OAHAA,UAAW,GAAI88C,OAAMr9E,KAAKy9E,MAAOz9E,KAAKw9E,OAAQx9E,KAAK09E,YACnDn9C,SAASq9C,eAAiB59E,KAAK49E,eAC/Br9C,SAASs9C,YAAc79E,KAAK69E,YACrBt9C,UAGT88C,MAAMnuE,UAAU4uE,WAAa,WAC3B,GAAIC,UAAUC,WAAYC,SAAUhrE,IAAK0F,OACzC1F,KAAMjT,KAAK09E,WACX/kE,UACA,KAAKolE,WAAY9qE,KACfgrE,SAAWhrE,IAAI8qE,UACfC,WAAa9gE,QAAQghE,MAAMD,UACtBD,YAGLrlE,QAAQjS,KAAK1G,KAAKw9E,OAAOO,UAAYC,WAAWh+E,KAAKw9E,OAAOO,WAE9D,OAAOplE,UAGT0kE,MAAMnuE,UAAUivE,cAAgB,WAC9B,MAAO,MAGTd,MAAMnuE,UAAUkvE,QAAU,WACxB,MAAOp+E,MAAKy9E,OAGdJ,MAAMnuE,UAAUkM,SAAW,SAASnW,OAOlC,MANa,OAATA,QACFA,OAAQ,GAEiB,MAAvBjF,KAAKw9E,OAAOr2E,UACdnH,KAAK49E,eAAez2E,QAAUnH,KAAKw9E,OAAOr2E,SAExClC,MACK5E,EAAEwC,UAAW7C,KAAK49E,gBAEpBv9E,EAAEwC,UAAW7C,KAAKw9E,OAAQx9E,KAAK49E,iBAGxCP,MAAMnuE,UAAUyuE,SAAW,SAASliD,OAIlC,MAHAz7B,MAAKw9E,OAAS/hD,MACdz7B,KAAK49E,kBACL59E,KAAK89E,aACE99E,KAAK69E,aAAc,GAG5BR,MAAMnuE,UAAUyyC,QAAU,SAAS3uC,KAAM1E,OAEvC,MADAtO,MAAK49E,eAAe5qE,MAAQ1E,MACrBtO,KAAK69E,aAAc,GAG5BR,MAAMnuE,UAAUxB,WAAa,WAC3B,GAAI2wE,QAAQC,KAAMC,MA2BlB,OA1BAD,MAAOt+E,KACPq+E,OAAS,SAASrrE,MAChB,MAAO,YACL,MAAoB,gBAATA,OAA2C,OAAtBA,KAAKwrE,OAAO,EAAG,GACtCF,KAAKtrE,MAEV7M,QAAQ9C,KAAKhD,EAAE6R,KAAKosE,KAAKV,gBAAiB5qE,MAAQ,EAC7CsrE,KAAKd,OAAOxqE,MAEdsrE,KAAKV,eAAe5qE,QAG/BurE,OAAS,SAASvrE,MAChB,MAAO,UAAS1E,OACd,MAAoB,gBAAT0E,OAA2C,OAAtBA,KAAKwrE,OAAO,EAAG,QAC7CF,KAAKtrE,MAAQ1E,YAGXgwE,KAAKd,OAAOxqE,QAAU1E,OACxBgwE,KAAKV,eAAe5qE,MAAQ1E,MAC5BgwE,KAAKT,aAAc,SAEZS,MAAKV,eAAe5qE,SAI1B3S,EAAE4I,KAAKjJ,KAAKw9E,OAAQ,SAASlvE,MAAO0E,MACzC,GAAI+5C,QAOJ,OANAA,UACE3nD,IAAKi5E,OAAOrrE,MACZ6I,IAAK0iE,OAAOvrE,MACZyrE,YAAY,EACZC,cAAc,GAET1oE,OAAOC,eAAeqoE,KAAMtrE,KAAM+5C,YAI7CswB,MAAMnuE,UAAU+b,UAAY,WAC1B,GAAI/jB,KAKJ,OAJAA,OACEA,KAAQ7G,EAAEic,MAAMtc,KAAKw9E,QACrBxqE,KAAQhT,KAAKy9E,OAERj9E,KAAKC,UAAUyG,OAGxBm2E,MAAMnuE,UAAUq3C,WAAa,WAC3B,MAAOvmD,MAAK69E,aAGdR,MAAMnuE,UAAUyvE,oBAAsB,SAAS74C,WAC7C,MAAyC,OAAlC9lC,KAAK49E,eAAe93C,YAG7Bu3C,MAAMnuE,UAAU0vE,UAAY,WAG1B,MAFA5+E,MAAK69E,aAAc,EACnB79E,KAAKw9E,OAASx9E,KAAKob,WACZpb,KAAK49E,mBAGdP,MAAMnuE,UAAUwwB,OAAS,WAEvB,MADA1/B,MAAK49E,kBACE59E,KAAK69E,aAAc,GAG5BR,MAAMwB,aAAe,SAASC,OAC5B,GAAIC,OAAOxkE,KAGX,OAFAwkE,OAAQv+E,KAAK8H,MAAMw2E,OACnBvkE,MAAQ,GAAI8iE,OAAM0B,MAAM74E,IAAK64E,MAAM73E,OAI9Bm2E,SAITt9E,MAAQC,KAAKD,MAEbu9E,aAAe,SAAU5tE,YAKvB,QAAS4tE,cAAavtE,EAAG0K,KAAMH,QAASE,MACtCxa,KAAK+P,EAAIA,EACT/P,KAAKya,KAAOA,KACZza,KAAKsa,QAAUA,QACfta,KAAKwa,KAAOA,KACZ8iE,aAAanuE,UAAUJ,YAAY1L,KAAKrD,MAG1C,MAZA6C,QAAOy6E,aAAc5tE,YAErB4tE,aAAaljE,SAAW,KAAM,UAAW,aAAc,WAUhDkjE,cAENv9E,MAAMkQ,SAET9G,SAAW,SAASpG,GAAIi8E,MAAOC,QAASC,YACtC,GAAIhiE,QAoBJ,OAnBAA,YACAA,QAAQvB,WAAa,SAAS3I,KAAM9L,KAAMi4E,IAAK5B,WAO7C,MANW,OAAP4B,MACFA,IAAM9B,OAES,MAAbE,YACFA,cAEK,GAAI4B,KAAInsE,KAAM9L,KAAMq2E,YAE7BrgE,QAAQiiE,IAAM9B,MACdngE,QAAQghE,OACNkB,MAAK,SAAS9wE,OACZ,MAAO6W,UAAS7W,MAAO,KAEzB+wE,QAAO,SAAS/wE,OACd,MAAOgH,YAAWhH,MAAO,MAGtB4O,SAGTtd,OAASgD,QAAQhD,OAAO,aAExBA,OAAO4G,QAAQ,YAAa,KAAM,QAAS,UAAW,aAAc2C,YAEnE9F,KAAKrD,MA2BR,WACE,GAAIs/E,yBAAyBC,sBAAuBnvE,SAAUxQ,OAAQG,MAAOuR,KAC3EzO,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbuR,KAAOtR,KAAKD,MAAMuR,KAElBlB,SAAWpQ,KAAKD,MAAMqQ,SAEtBxQ,OAASgD,QAAQhD,OAAO,aAExB2/E,sBAAwB,SAAU7vE,YAGhC,QAAS6vE,yBACPv/E,KAAKya,QA+BP,MAlCA5X,QAAO08E,sBAAuB7vE,YAM9B6vE,sBAAsBrwE,UAAU8U,OAAS,SAASvJ,MAChD,MAAOza,MAAKya,KAAOpa,EAAEu9B,SAAU59B,KAAKya,KAAMA,WAG5C8kE,sBAAsBrwE,UAAUswE,UAAY,SAASt5E,IAAK+G,KACxD,GAAIwyE,SAQJ,OAPW,OAAPxyE,MACFA,QAEFwyE,SAAW,SAAS3oE,OAElB,MADAA,OAAQxF,KAAKwF,MAAO,KACb7J,IAAI6J,QAAU,aAEhB5Q,IAAID,QAAQ,UAAWw5E,WAGhCF,sBAAsBrwE,UAAUvM,QAAU,SAASqQ,KAAM/F,KACvD,GAAI/G,IAEJ,OADAA,KAAMlG,KAAKya,KAAKzH,MACX9M,IAGD+G,IACKjN,KAAKw/E,UAAUt5E,IAAK+G,KAEtB/G,IALE,IAQJq5E,uBAENx/E,MAAMkQ,SAETrQ,OAAOsd,QAAQ,aAAcqiE,uBAE7BD,wBAA0B,SAASv7D,SAAU3Y,MAAOrI,GAAIwC,UAAWk+B,iBACjE,GAAIi8C,WAAWhiE,KAAMiiE,QAuGrB,OAtGAD,WAAY,SAAS/hE,OAAQrL,MAC3B,GAAI4kB,QAKJ,OAJAA,SAAUn0B,GAAGG,QACbkN,SAASuN,OAAQrL,KAAM,SAAS41B,GAC9B,MAAOhR,SAAQv0B,QAAQulC,KAElBhR,QAAQ9zB,SAEjBu8E,SAAW,SAASz4E,KAAMyW,QACxB,GAAIugC,OAAOlrC,KAAM+C,IAAK7R,OAAQ89B,SAAU/uB,IAAKU,OAAQs0B,MAErD,IADAh1B,IAAM5S,EAAEC,IAAI4G,KAAKmF,MAAM,KAAMiF,MAAO0B,KAAOC,IAAI,GAAI/O,OAAS+O,IAAI,GAC5D/O,OAUF,IATAyP,OAASzP,OAAOmI,MAAM,UACtBsH,OAAStT,EAAEyM,OAAO6G,OAAQ,SAAS9B,KACjC,MAAOA,KAAIrF,SAEbmH,OAAStT,EAAEC,IAAIqT,OAAQ,SAAS9B,KAC9B,MAAOP,MAAKO,IAAI5L,QAAQ,MAAO,OAEjC/B,UACAg6C,MAAQ,EACDA,MAAQvqC,OAAOnH,QACpBuJ,OACAA,IAAIpC,OAAOuqC,QAAUvqC,OAAOuqC,MAAQ,GACpCh6C,OAAOwC,KAAKqP,KACZmoC,OAAgB,MAGlBh6C,UAQF,OANA+jC,QAAS5nC,EAAEC,IAAI4D,OAAQ,SAAS07E,OAC9B,MAAOv/E,GAAE4nC,OAAO23C,OAAO,KAEzB59C,SAAW3hC,EAAEC,IAAI2nC,OAAQ,SAAS1nC,GAChC,MAAOm/E,WAAU/hE,OAAQpd,KAEpBwC,GAAGsV,IAAI2pB,UAAU7+B,KAAK,WAC3B,GAAIuO,GAAG1C,IAAK0E,IAAKq5C,QAAS6yB,MAAOtxE,KAEjC,KADAy+C,WACKr7C,EAAI,EAAGgC,IAAMxP,OAAOsI,OAAYkH,IAAJhC,EAASA,IACxCkuE,MAAQ17E,OAAOwN,GACf1C,IAAMgH,OAAO9D,KAAK0tE,OAAO,GACzBtxE,MAAQsxE,MAAM5wE,KACd+9C,QAAQ/9C,KAAO2O,OAAOlL,MAAMnE,MAE9B,QAAQ0E,KAAM+5C,YAGlBrvC,KAAO,SAASC,OAAQC,IAAKC,QAkD3B,MAjDID,KAAIqjB,GAAG,MACTrjB,IAAItL,KAAK,OAAQ,KAEnBsL,IAAIc,GAAG,aAAc,SAAS/Q,OAC5B,GAAIwe,OAEJ,OADAA,QAASlE,EAAEta,MAAMwa,eACZgE,OAAOjlB,KAAK,YAAc2W,OAAOgiE,iBAAmB1zD,OAAOjlB,KAAK,UAArE,OACSy4E,SAAS9hE,OAAOiiE,MAAOniE,QAAQxa,KAAK,SAASwQ,QAClD,GAAIosE,SAASC,aAAcC,gBAAiBjtE,KAAM+5C,QAAS7mD,IAAKyF,IAkBhE,OAjBAqH,MAAOW,OAAO,GAAIo5C,QAAUp5C,OAAO,GACnChI,KAAOP,MAAMqC,UACT9B,OACFohD,QAAQphD,KAAOA,KAAK6S,UAEtBtY,IAAM6d,SAASphB,QAAQqQ,MACvB+sE,QAAUh8D,SAASy7D,UAAUt5E,IAAK6mD,SAC9BlvC,OAAOgiE,iBACTG,aAAex/E,KAAK8H,MAAMuV,OAAOgiE,gBACjCI,gBAAkBh4D,EAAE23D,MAAMI,cAC1BD,QAAUA,QAAU,IAAME,gBAC1B9zD,OAAOjlB,KAAK,SAAU2W,OAAOgiE,iBAE/B1zD,OAAOjlB,KAAK,UAAW64E,SACnB5zD,OAAO8U,GAAG,MACZ9U,OAAO7Z,KAAK,OAAQytE,SAEfniE,IAAIc,GAAG,QAAS,SAAS/Q,OAC9B,IAAIA,MAAMuyE,UAAWvyE,MAAMwyE,UAG3BxyE,MAAM2Q,iBACN6N,OAASlE,EAAEta,MAAMwa,gBACbgE,OAAOkS,SAAS,YAApB,CAIA,OADA0hD,QAAU5zD,OAAOjlB,KAAK,WACdyG,MAAMglC,OACZ,IAAK,GACHptC,UAAUW,IAAI65E,SACdpiE,OAAO1J,QACP,MACF,KAAK,GACH/T,OAAO4nB,KAAKi4D,SAEhB,MAAOt8C,iBAAgBz9B,kBAKxB2X,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,SAAU,aAAc,UAAW,KAAM,cAAe,kBAAmB6hE,2BAE3Fj8E,KAAKrD,MA2BR,WACE,GAAIogF,mBAAmBxgF,OAAQG,MAC7B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbqgF,kBAAoB,SAAU1wE,YAK5B,QAAS0wE,mBAAkBrwE,EAAGswE,OAAQ/lE,QAASE,KAAMC,MACnDza,KAAK+P,EAAIA,EACT/P,KAAKua,MAAQ8lE,OACbrgF,KAAKsa,QAAUA,QACfta,KAAKwa,KAAOA,KACZxa,KAAKya,KAAOA,KACZ2lE,kBAAkBjxE,UAAUJ,YAAY1L,KAAKrD,MAmU/C,MA7UA6C,QAAOu9E,kBAAmB1wE,YAE1B0wE,kBAAkBhmE,SAAW,KAAM,WAAY,aAAc,UAAW,WAWxEgmE,kBAAkBlxE,UAAUoxE,mBAAqB,SAAS/lE,OACxD,GAAIgmE,WAEJ,OADAA,YAAahmE,MAAM4jE,gBACXn+E,KAAKya,KAAK9X,QAAQ4X,MAAM6jE,WAAc,IAAM7jE,MAAMgmE,aAG5DH,kBAAkBlxE,UAAUsxE,4BAA8B,SAASjmE,OACjE,MAAOva,MAAKya,KAAK9X,QAAQ4X,MAAM6jE,UAAW7jE,MAAM1L,SAGlDuxE,kBAAkBlxE,UAAUkd,OAAS,SAASpZ,KAAM9L,KAAMq2E,UAAWkD,aACnE,GAAIvpD,SAAS9zB,QAAS8C,GAoBtB,OAnBiB,OAAbq3E,YACFA,cAEiB,MAAfkD,cACFA,gBAEFvpD,QAAUl3B,KAAK+P,EAAE7M,QACjBgD,IAAMlG,KAAKya,KAAK9X,QAAQqQ,MACxB5P,QAAUpD,KAAKwa,KAAKtV,KAAKgB,IAAK1F,KAAKC,UAAUyG,OAC7C9D,QAAQic,QAAQ,SAAU9X,OACxB,MAAO,UAASm5E,MAAOC,SACrB,MAAOzpD,SAAQv0B,QAAQ4E,MAAMgT,MAAMoB,WAAW3I,KAAM0tE,MAAO,KAAMnD,cAElEv9E,OACHoD,QAAQ8b,MAAM,SAAU3X,OACtB,MAAO,UAASL,KAAMrB,QACpB,MAAOqxB,SAAQ5wB,OAAOY,QAEvBlH,OACIk3B,QAAQ9zB,SAGjBg9E,kBAAkBlxE,UAAU6M,OAAS,SAASxB,MAAOrW,QACnD,GAAIgzB,SAAS9zB,QAAS8C,GAatB,OAZc,OAAVhC,SACFA,WAEFgzB,QAAUl3B,KAAK+P,EAAE7M,QACjBgD,IAAMlG,KAAKsgF,mBAAmB/lE,OAC9BnX,QAAUpD,KAAKwa,KAAK,UAAUtU,OAAShC,QACvCd,QAAQic,QAAQ,SAASnY,KAAMrB,QAC7B,MAAOqxB,SAAQv0B,QAAQ4X,SAEzBnX,QAAQ8b,MAAM,SAAShY,KAAMrB,QAC3B,MAAOqxB,SAAQ5wB,OAAOiU,SAEjB2c,QAAQ9zB,SAGjBg9E,kBAAkBlxE,UAAUu7C,QAAU,SAASwV,OAAQh7D,OACrD,GAAI+8B,SASJ,OARa,OAAT/8B,QACFA,OAAQ,GAEV+8B,SAAW3hC,EAAEC,IAAI2/D,OAAQ,SAAU14D,OACjC,MAAO,UAAShH,GACd,MAAOgH,OAAM+lB,KAAK/sB,GAAG,KAEtBP,OACIA,KAAK+P,EAAEsI,IAAI2pB,WAGpBo+C,kBAAkBlxE,UAAUoe,KAAO,SAAS/S,MAAOtV,OACjD,GAAIiC,MAAMgwB,QAAS9zB,QAAS8C,GAK5B,OAJa,OAATjB,QACFA,OAAQ,GAEViyB,QAAUl3B,KAAK+P,EAAE7M,SACZqX,MAAMgsC,cAAgBthD,OACzBiyB,QAAQv0B,QAAQ4X,OACT2c,QAAQ9zB,UAEjB8C,IAAMlG,KAAKsgF,mBAAmB/lE,OAC9BrT,KAAO1G,KAAKC,UAAU8Z,MAAMa,SAASnW,QAEnC7B,QADE6B,MACQjF,KAAKwa,KAAKvV,MAAMiB,IAAKgB,MAErBlH,KAAKwa,KAAKrV,IAAIe,IAAKgB,MAE/B9D,QAAQic,QAAQ,SAAU9X,OACxB,MAAO,UAASL,KAAMrB,QAKpB,MAJA0U,OAAMsjE,aAAc,EACpBtjE,MAAMijE,OAASn9E,EAAEwC,OAAO0X,MAAMa,WAAYlU,MAC1CqT,MAAMqjE,kBACNrjE,MAAMujE,aACC5mD,QAAQv0B,QAAQ4X,SAExBva,OACHoD,QAAQ8b,MAAM,SAAShY,KAAMrB,QAC3B,MAAOqxB,SAAQ5wB,OAAOY,QAEjBgwB,QAAQ9zB,UAGjBg9E,kBAAkBlxE,UAAU0rE,cAAgB,SAASrgE,MAAOurB,UAAW7gC,OACrE,GAAIiC,MAAMgwB,QAAS9zB,QAAS8C,GAK5B,OAJa,OAATjB,QACFA,OAAQ,GAEViyB,QAAUl3B,KAAK+P,EAAE7M,SACZqX,MAAMgsC,cAAgBthD,OACzBiyB,QAAQv0B,QAAQ4X,OACT2c,QAAQ9zB,UAEjB8C,IAAMlG,KAAKwgF,4BAA4BjmE,OACvCrT,QACAA,KAAK4+B,WAAavrB,MAAMa,WAEtBhY,QADE6B,MACQjF,KAAKwa,KAAKvV,MAAMiB,IAAKgB,MAErBlH,KAAKwa,KAAKrV,IAAIe,IAAKgB,MAE/B9D,QAAQic,QAAQ,SAAU9X,OACxB,MAAO,UAASL,KAAMrB,QAKpB,MAJA0U,OAAMsjE,aAAc,EACpBtjE,MAAMijE,OAASn9E,EAAEwC,OAAO0X,MAAMa,WAAYlU,MAC1CqT,MAAMqjE,kBACNrjE,MAAMujE,aACC5mD,QAAQv0B,QAAQ4X,SAExBva,OACHoD,QAAQ8b,MAAM,SAAShY,KAAMrB,QAC3B,MAAOqxB,SAAQ5wB,OAAOY,QAEjBgwB,QAAQ9zB,UAGjBg9E,kBAAkBlxE,UAAUnD,QAAU,SAASwO;AAC7C,GAAI2c,SAAS9zB,QAAS8C,GActB,OAbAgxB,SAAUl3B,KAAK+P,EAAE7M,QACjBgD,IAAMlG,KAAKsgF,mBAAmB/lE,OAC9BnX,QAAUpD,KAAKwa,KAAKpV,IAAIc,KACxB9C,QAAQic,QAAQ,SAASnY,KAAMrB,QAK7B,MAJA0U,OAAMqjE,kBACNrjE,MAAMijE,OAASt2E,KACfqT,MAAMsjE,aAAc,EACpBtjE,MAAMujE,aACC5mD,QAAQv0B,QAAQ4X,SAEzBnX,QAAQ8b,MAAM,SAAShY,KAAMrB,QAC3B,MAAOqxB,SAAQ5wB,OAAOY,QAEjBgwB,QAAQ9zB,SAGjBg9E,kBAAkBlxE,UAAU0xE,UAAY,SAAS5tE,KAAM9O,OAAQ6oD,QAAS/nD,SACtE,GAAI67E,aAAa36E,GAcjB,OAbe,OAAX6mD,UACFA,YAEa,MAAX/nD,UACFA,SAAU,GAEZkB,IAAMlG,KAAKya,KAAK9X,QAAQqQ,MACxB6tE,aACE77E,YAEG+nD,QAAQ+zB,mBACXD,YAAY77E,QAAQ,wBAA0B,KAEzChF,KAAKwa,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAAUoE,OAC5D,MAAO,UAASL,MACd,GAAIyM,OAIJ,OAHAA,QAAStT,EAAEC,IAAI4G,KAAKA,KAAM,SAAS3G,GACjC,MAAOgH,OAAMgT,MAAMoB,WAAW3I,KAAMzS,KAElCyE,SACM2O,OAAQzM,KAAKlC,SAEhB2O,SAER3T,QAGLogF,kBAAkBlxE,UAAU6xE,kBAAoB,SAAS/tE,KAAM+E,GAAI+tB,UAAW5hC,OAAQ6oD,SACpF,GAAI8zB,aAAa36E,GAWjB,OAVe,OAAX6mD,UACFA,YAEF7mD,IAAMlG,KAAKya,KAAK9X,QAAQqQ,KAAM+E,IAC9B8oE,aACE77E,YAEG+nD,QAAQ+zB,mBACXD,YAAY77E,QAAQ,wBAA0B,KAEzChF,KAAKwa,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAAUoE,OAC5D,MAAO,UAASL,MACd,GAAIqT,MAGJ,OAFAA,OAAQhT,MAAMgT,MAAMoB,WAAW3I,KAAM9L,KAAKA,KAAK4+B,YAC/CvrB,MAAM1L,OAASkJ,GACRwC,QAERva,QAGLogF,kBAAkBlxE,UAAUuR,SAAW,SAASzN,KAAM+E,GAAI7T,OAAQ6oD,SAChE,GAAI8zB,aAAa36E,GAcjB,OAbe,OAAX6mD,UACFA,YAEF7mD,IAAMlG,KAAKya,KAAK9X,QAAQqQ,MACpB+E,KACF7R,IAAMA,IAAM,IAAM6R,IAEpB8oE,aACE77E,YAEG+nD,QAAQ+zB,mBACXD,YAAY77E,QAAQ,wBAA0B,KAEzChF,KAAKwa,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAAUoE,OAC5D,MAAO,UAASL,MACd,MAAOK,OAAMgT,MAAMoB,WAAW3I,KAAM9L,KAAKA,QAE1ClH,QAGLogF,kBAAkBlxE,UAAU8xE,YAAc,SAAShuE,KAAM+E,GAAI7T,OAAQ6oD,SACnE,GAAI8zB,aAAa36E,GAcjB,OAbe,OAAX6mD,UACFA,YAEF7mD,IAAMlG,KAAKya,KAAK9X,QAAQqQ,MACpB+E,KACF7R,IAAMA,IAAM,IAAM6R,IAEpB8oE,YAAcxgF,EAAEu9B,OACd54B,YACC+nD,SACEA,QAAQ+zB,mBACXD,YAAY77E,QAAQ,wBAA0B,KAEzChF,KAAKwa,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAAUoE,OAC5D,MAAO,UAASL,MACd,MAAOA,MAAKA,OAEblH,QAGLogF,kBAAkBlxE,UAAU+xE,eAAiB,SAASjuE,KAAM9O,OAAQ6oD,SAClE,GAAI8zB,aAAa36E,GAQjB,OAPe,OAAX6mD,UACFA,YAEF7mD,IAAMlG,KAAKya,KAAK9X,QAAQqQ,MACxB6tE,YAAcxgF,EAAEu9B,OACd54B,YACC+nD,SACI/sD,KAAKwa,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAAUoE,OAC5D,MAAO,UAASL,MACd,GAAIlC,SAAS2O,MASb,OARA3O,SAAUkC,KAAKlC,UACf2O,UACAA,OAAOssD,OAAS5/D,EAAEC,IAAI4G,KAAKA,KAAM,SAAS3G,GACxC,MAAOgH,OAAMgT,MAAMoB,WAAW3I,KAAMzS,KAEtCoT,OAAOqsC,MAAQ76B,SAASngB,QAAQ,sBAAuB,IACvD2O,OAAOk3C,QAAU1lC,SAASngB,QAAQ,yBAA2B,EAAG,IAChE2O,OAAOusD,YAAc/6C,SAASngB,QAAQ,kBAAmB,IAClD2O,SAER3T,QAGLogF,kBAAkBlxE,UAAUgyE,qBAAuB,SAASluE,KAAM+E,GAAI7T,OAAQ6oD,SAC5E,GAAI8zB,aAAa36E,GAWjB,OAVe,OAAX6mD,UACFA,YAEF7mD,IAAMlG,KAAKya,KAAK9X,QAAQqQ,MACpB+E,KACF7R,IAAMA,IAAM,IAAM6R,IAEpB8oE,YAAcxgF,EAAEu9B,OACd54B,YACC+nD,SACI/sD,KAAKwa,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAAUoE,OAC5D,MAAO,UAASL,MACd,GAAIlC,SAAS2O,MAOb,OANA3O,SAAUkC,KAAKlC,UACf2O,UACAA,OAAOzM,KAAOA,KAAKA,KACnByM,OAAOqsC,MAAQ76B,SAASngB,QAAQ,sBAAuB,IACvD2O,OAAOk3C,QAAU1lC,SAASngB,QAAQ,yBAA2B,EAAG,IAChE2O,OAAOusD,YAAc/6C,SAASngB,QAAQ,kBAAmB,IAClD2O,SAER3T,QAGLogF,kBAAkBlxE,UAAUvM,QAAU,SAASoqD,SAC7C,GAAIpN,OAAOz7C,MAqBX,OApBAA,WACqB,MAAjB6oD,QAAQ5oD,QACVD,OAAO+D,QAAU8kD,QAAQ5oD,OAEN,MAAjB4oD,QAAQgW,QACV7+D,OAAOuqB,GAAKs+B,QAAQgW,OAEC,MAAnBhW,QAAQuX,UACVpgE,OAAOkpB,KAAO2/B,QAAQuX,SAEA,MAApBvX,QAAQ4O,WACVz3D,OAAOu+B,MAAQsqB,QAAQ4O,UAEJ,MAAjB5O,QAAQ8H,QACV3wD,OAAOipC,UAAY4f,QAAQ8H,OAEL,MAApB9H,QAAQo0B,WACVj9E,OAAOi9E,SAAWp0B,QAAQo0B,UAE5BxhC,QAAUoN,QAAQo0B,UAAYp0B,QAAQ8H,OAC/B70D,KAAKghF,YAAY,WAAY,KAAM98E,QACxCy7C,MAAOA,SAIJygC,mBAENrgF,MAAMkQ,SAETrQ,OAASgD,QAAQhD,OAAO,aAExBA,OAAOsd,QAAQ,UAAWkjE,oBAEzB/8E,KAAKrD,MA2BR,WACE,GAAIohF,gBAAgBxhF,OAAQG,MAC1B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbqhF,eAAiB,SAAU1xE,YAKzB,QAAS0xE,gBAAex1D,YACtBw1D,eAAejyE,UAAUJ,YAAY1L,KAAKrD,MAsC5C,MA3CA6C,QAAOu+E,eAAgB1xE,YAEvB0xE,eAAehnE,SAAW,cAM1BgnE,eAAelyE,UAAU9J,IAAM,SAAS4J,IAAKqyE,UAC3C,GAAIC,gBAEJ,OADAA,iBAAkBj5E,aAAak5E,QAAQvyE,KACf,OAApBsyE,gBACKD,UAAY,KAEd7gF,KAAK8H,MAAMg5E,kBAGpBF,eAAelyE,UAAU2M,IAAM,SAAS7M,IAAKhD,KAC3C,MAAI3L,GAAE+V,SAASpH,KACN3O,EAAE4I,KAAK+F,IAAK,SAAUzH,OAC3B,MAAO,UAASyE,IAAKgD,KACnB,MAAOzH,OAAMsU,IAAI7M,IAAKhD,OAEvBhM,OAEIqI,aAAam5E,QAAQxyE,IAAKxO,KAAKC,UAAUuL,OAIpDo1E,eAAelyE,UAAUuyE,SAAW,SAASzyE,KAC3C,GAAIV,MAEJ,OADAA,OAAQtO,KAAKoF,IAAI4J,KACA,OAAVV,OAGT8yE,eAAelyE,UAAU6M,OAAS,SAAS/M,KACzC,MAAO3G,cAAaq5E,WAAW1yE,MAGjCoyE,eAAelyE,UAAU4M,MAAQ,WAC/B,MAAOzT,cAAayT,SAGfslE,gBAENrhF,MAAMkQ,SAETrQ,OAASgD,QAAQhD,OAAO,aAExBA,OAAOsd,QAAQ,aAAckkE,iBAE5B/9E,KAAKrD,MA2BR,WACE,GAAI2hF,aAAav8D,OAAQxlB,OAAQG,MAC/B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfgW,QAAS,SAASw8D,IAAK7rE,KAErB,MADAA,KAAM1V,EAAEic,MAAMvG,KACP6rE,IAAI37E,QAAQ,MAAO,SAAS6Q,OACjC,MAAOhC,QAAOiB,IAAIiR,YAItBjnB,MAAQC,KAAKD,MAEb4hF,YAAc,SAAUjyE,YAKtB,QAASiyE,aAAY77E,QACnB9F,KAAK8F,OAASA,OACd9F,KAAKya,QACLza,KAAK6hF,QAAU7hF,KAAK8F,OAAOV,IAAI,OA8BjC,MArCAvC,QAAO8+E,YAAajyE,YAEpBiyE,YAAYvnE,SAAW,aAQvBunE,YAAYzyE,UAAU8U,OAAS,SAASvJ,MACtC,MAAOza,MAAKya,KAAOpa,EAAEu9B,MAAM59B,KAAKya,KAAMA,OAGxCknE,YAAYzyE,UAAUvM,QAAU,WAC9B,GAAI8kB,MAAMzU,KAAM9M,GAEhB,IADAuhB,KAAOpnB,EAAE61B,QAAQzmB,WACG,IAAhBgY,KAAKjb,OACP,KAAMoe,OAAM,6BAId,OAFA5X,MAAOyU,KAAK7V,MAAM,EAAG,GAAG,GACxB1L,IAAMkf,OAAOplB,KAAKya,KAAKzH,MAAOyU,KAAK7V,MAAM,IAClCwT,OAAO,SAAU/kB,EAAEyhF,QAAQ9hF,KAAK6hF,QAAS,KAAMxhF,EAAEmpB,UAAUtjB,IAAK,QAGzEy7E,YAAYzyE,UAAU8hE,gBAAkB,WACtC,GAAI9qE,IAEJ,OADAA,KAAMlG,KAAK2C,QAAQ6M,MAAMxP,KAAMyP,WAC3B,gBAAgB2qE,KAAKl0E,KAChBA,IAEL,MAAMk0E,KAAKl0E,KACNhG,OAAO2P,SAAS0Z,SAAW,KAAOrpB,OAAO2P,SAAS4Z,KAAOvjB,IAE3DhG,OAAO2P,SAAS0Z,SAAW,KAAOrpB,OAAO2P,SAAS4Z,KAAO,IAAMvjB,KAGjEy7E,aAEN5hF,MAAMkQ,SAETrQ,OAASgD,QAAQhD,OAAO,aAExBA,OAAOsd,QAAQ,UAAWykE,cAEzBt+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,OAC1B,GAAI0hE,MAAM9kE,OAqBV,OApBA8kE,MAAO,SAASv8C,SAAUgtC,UACxB,MAAOnyD,OAAMG,SAASgyD,SAAUhtC,WAElCvoB,SACE+kE,WACE78E,IAAK,SAASqgC,UACZ,MAAOu8C,MAAKv8C,SAAU,wCAG1BrY,MACEhoB,IAAK,SAASqgC,UACZ,MAAOu8C,MAAKv8C,SAAU,mCAG1BhD,OACEr9B,IAAK,SAASqgC,UACZ,MAAOu8C,MAAKv8C,SAAU,qCAIrB,SAASlF,UACd,MAAOA,UAASoF,uBAAyBzoB,UAI7Ctd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,8CAA+C,UAAWu7E,oBAExE1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhxE,WAAYhR,KAE1CA,OAAQC,KAAKD,MAEbgR,WAAa/Q,KAAKD,MAAMgR,WAExBgxE,iBAAmB,SAASzhE,OAC1B,GAAI4hE,OAAOhlE,OAuBX,OAtBAglE,OAAQ,SAASzpE,UAAWg6D,UAC1B,MAAOnyD,OAAMsgE,UAAUnO,UACrBxqE,QAASwQ,aAGbyE,SACE+kE,WACElzD,KAAM,SAAStW,WACb,MAAOypE,OAAMzpE,UAAW,iCAG5B2U,MACE2B,KAAM,SAAStW,WACb,MAAOypE,OAAMzpE,UAAW,4BAG5BgqB,OACE1T,KAAM,SAAStW,WACb,MAAOypE,OAAMzpE,UAAW,8BAIvB,SAAS8nB,UACd,MAAOA,UAASmF,iBAAmBxoB,UAIvCtd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,wCAAyC,UAAWu7E,oBAElE1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,OACxC,GAAI9Y,QA+BJ,OA9BAA,YACAA,QAAQ9X,IAAM,SAASoE,KAAMi8B,UAC3B,MAAOnlB,OAAM0gE,YAAY,WAAax3E,KAAMi8B,WAE9CvoB,QAAQ8tB,cAAgB,SAASxhC,KAAMi8B,SAAUwF,YAC/C,GAAI/mC,QAAQgC,GAMZ,OALAA,KAAM8vB,MAAMrzB,QAAQ,WAAa6G,MACjCtD,IAAMA,IAAM,IAAMu/B,SAAW,kBAC7BvhC,QACE6T,GAAIkzB,YAEC+zC,MAAM95E,KAAKgB,IAAK,KAAMhC,QAAQf,KAAK,SAAUoE,OAClD,MAAO,UAASL,MACd,MAAOA,MAAKA,OAEblH,QAELkd,QAAQguB,gBAAkB,SAAS1hC,KAAMi8B,SAAUwF,YACjD,GAAI/mC,QAAQgC,GAMZ,OALAA,KAAM8vB,MAAMrzB,QAAQ,WAAa6G,MACjCtD,IAAMA,IAAM,IAAMu/B,SAAW,oBAC7BvhC,QACE6T,GAAIkzB,YAEC+zC,MAAM95E,KAAKgB,IAAK,KAAMhC,QAAQf,KAAK,SAAUoE,OAClD,MAAO,UAASL,MACd,MAAOA,MAAKA,OAEblH,QAEE,SAASugC,UACd,MAAOA,UAAS2J,QAAUhtB,UAI9Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,+BAAgC,UAAW,UAAW,UAAWu7E,oBAE/E1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,OAC1B,GAAIpD,QAKJ,OAJAA,YACAA,QAAQ9X,IAAM,SAAS6W,OACrB,MAAOqE,OAAMG,SAAS,cAAexE,QAEhC,SAASskB,UACd,MAAOA,UAAS5jB,YAAcO,UAIlCtd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,mCAAoC,UAAWu7E,oBAE7D1+E,KAAKrD,MA2BR,WACE,GAAIG,cAAcP,OAAQmiF,iBAAkBhiF,KAE5CA,OAAQC,KAAKD,MAEbI,aAAeJ,MAAMI,aAErB4hF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,MAAOoQ,SAAUrjC,IACzD,GAAIo/E,mBAAmBC,WAAYC,oBAAqBnlE,OAyJxD,OAxJAA,YACAklE,WAAa,qBACbD,kBAAoB,iBACpBE,oBAAsB,oBACtBnlE,QAAQ9X,IAAM,SAASqT,UAAWkkD,SAChC,GAAIz4D,OAGJ,OAFAA,QAASgZ,QAAQolE,eAAe7pE,WAChCvU,OAAO+D,QAAUwQ,UACV6H,MAAMG,SAAS,SAAUk8C,QAASz4D,SAE3CgZ,QAAQkrC,SAAW,SAAS3vC,UAAWxF,KACrC,GAAI/O,OAIJ,OAHAA,QAASgZ,QAAQolE,eAAe7pE,WAChCvU,OAAO+D,QAAUwQ,UACjBvU,OAAO+O,IAAMA,IACNqN,MAAMG,SAAS,SAAU,SAAUvc,SAE5CgZ,QAAQqlE,kBAAoB,SAASnpE,SACnC,MAAOkH,OAAMsgE,UAAU,SAAUxnE,UAEnC8D,QAAQ6R,KAAO,SAAStW,UAAWW,QAAS2zC,SAC1C,GAAI7oD,OAMJ,OALAA,SACE+D,QAASwQ,WAEXvU,OAAS7D,EAAEwC,UAAWqB,OAAQkV,aAC9B8D,QAAQ0oC,iBAAiBntC,UAAWvU,QAC7Boc,MAAM2gE,eAAe,SAAU/8E,OAAQ6oD,UAEhD7vC,QAAQu3B,WAAa,SAASh8B,UAAWvR,MACvC,GAAIhD,QAAQgC,GAMZ,OALAA,KAAM8vB,MAAMrzB,QAAQ,sBACpBuB,QACEs+E,WAAY/pE,UACZgqE,YAAav7E,MAER83E,MAAM95E,KAAKgB,IAAKhC,SAEzBgZ,QAAQ+/C,OAAS,SAASN,SACxB,GAAIz2D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,eAAgBg6D,SAC7BqiB,MAAM95E,KAAKgB,MAEpBgX,QAAQigD,SAAW,SAASR,SAC1B,GAAIz2D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,iBAAkBg6D,SAC/BqiB,MAAM95E,KAAKgB,MAEpBgX,QAAQm2B,MAAQ,SAASspB,SACvB,GAAIz2D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,cAAeg6D,SAC5BqiB,MAAM95E,KAAKgB,MAEpBgX,QAAQ2I,QAAU,SAAS82C,SACzB,GAAIz2D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,gBAAiBg6D,SAC9BqiB,MAAM95E,KAAKgB,MAEpBgX,QAAQinC,MAAQ,SAAS1rC,WACvB,MAAO6H,OAAM0gE,YAAY,WAAYvoE,UAAY,kBAEnDyE,QAAQwqC,YAAc,SAASxjD,QAC7B,MAAOoc,OAAM0gE,YAAY,iBAAkB,KAAM98E,SAEnDgZ,QAAQw1D,WAAa,SAASj6D,UAAWjP,MACvC,GAAItF,OAKJ,OAJAA,SACE+D,QAAWwQ,WAEbyE,QAAQ0oC,iBAAiBntC,UAAWvU,QAC7Boc,MAAMsgE,UAAUp3E,KAAMtF,SAE/BgZ,QAAQ0oC,iBAAmB,SAASntC,UAAWvU,QAC7C,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAM2pE,WACvB57C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQolE,eAAiB,SAAS7pE,WAChC,GAAI+tB,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAM2pE,WACvB57C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAAShhC,IAAIohC,WAEtBtpB,QAAQqhD,aAAe,SAASwI,YAAa7iE,QAC3C,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAK3b,YAAc,IAAMob,kBACzB37C,KAAOrmC,cAAc4mE,YAAa2b,KAC3Bt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQohD,WAAa,SAASyI,aAC5B,GAAIvgC,MAAMk8C,EAGV,OAFAA,IAAK3b,YAAc,IAAMob,kBACzB37C,KAAOrmC,cAAc4mE,YAAa2b,KAC3Bt8C,SAAShhC,IAAIohC,WAEtBtpB,QAAQmjD,eAAiB,SAAS5nD,UAAW2mD,WAC3C,GAAIn8D,UAAUujC,KAAMk8C,GAAIt/E,QAAS8C,GAsCjC,OArCAjD,UAAWF,GAAGG,QACdgD,IAAM8vB,MAAMrzB,QAAQ,gBACpB+/E,GAAKjqE,UAAY,IAAM4pE,oBACvB77C,KAAOrmC,cAAcsY,UAAWiqE,KAC5BriF,EAAEmZ,QAAQ4lD,YACZh8D,QAAU47E,MAAM,UAAU94E,IAAM,IAAMsgC,MACpCx3B,IAAKw3B,KACLl4B,MAAO8wD,YAETh8D,QAAQD,KAAK,WACX,MAAOF,UAASN,YAElBS,QAAQD,KAAK,KAAM,WACjB,MAAOF,UAASqD,aAGlBlD,QAAU47E,MAAM75E,IAAIe,IAAM,IAAMsgC,MAC9Bx3B,IAAKw3B,KACLl4B,MAAO8wD,YAETh8D,QAAQD,KAAK,SAAS+D,MACpB,MAAOjE,UAASN,YAElBS,QAAQD,KAAK,KAAM,SAAS+D,MAC1B,GAAIy7E,aAQJ,OAPAA,cAAe3D,MAAM95E,KAAK,GAAKgB,KAC7B8I,IAAKw3B,KACLl4B,MAAO8wD,YAETujB,aAAax/E,KAAK,WAChB,MAAOF,UAASN,YAEXggF,aAAax/E,KAAK,KAAM,WAC7B,MAAOF,UAASqD,cAIfrD,SAASG,SAElB8Z,QAAQ0hD,aAAe,SAASnmD,WAC9B,GAAIxV,UAAUujC,KAAMk8C,GAAIt/E,QAAS8C,GAYjC,OAXAjD,UAAWF,GAAGG,QACdgD,IAAM8vB,MAAMrzB,QAAQ,gBACpB+/E,GAAKjqE,UAAY,IAAM4pE,oBACvB77C,KAAOrmC,cAAcsY,UAAWiqE,KAChCt/E,QAAU47E,MAAM55E,IAAIc,IAAM,IAAMsgC,MAChCpjC,QAAQD,KAAK,SAAS+D,MACpB,MAAOjE,UAASN,QAAQuE,KAAKA,KAAKoH,SAEpClL,QAAQD,KAAK,KAAM,SAAS+D,MAC1B,MAAOjE,UAASN,cAEXM,SAASG,SAEX,SAASm9B,UACd,MAAOA,UAAS/M,OAAStW,UAI7Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,8BAA+B,UAAW,UAAW,UAAW,aAAc,KAAMu7E,oBAElG1+E,KAAKrD,MA2BR,WACE,GAAIG,cAAcP,OAAQmiF,iBAAkBhiF,KAE5CA,OAAQC,KAAKD,MAEbI,aAAeJ,MAAMI,aAErB4hF,iBAAmB,SAAS37C,UAC1B,GAAIw8C,6BAA6BC,0BAA2B3lE,OA4B5D,OA3BAA,YACA2lE,0BAA4B,0BAC5BD,4BAA8B,4BAC9B1lE,QAAQs8C,qBAAuB,SAAS/gD,UAAWvU,QACjD,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMoqE,0BACvBr8C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQq8C,mBAAqB,SAAS9gD,WACpC,GAAI+tB,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMoqE,0BACvBr8C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAAShhC,IAAIohC,WAEtBtpB,QAAQm5C,uBAAyB,SAAS59C,UAAWvU,QACnD,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMmqE,4BACvBp8C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQ+4C,qBAAuB,SAASx9C,WACtC,GAAI+tB,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMmqE,4BACvBp8C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAAShhC,IAAIohC,WAEf,SAASjG,UACd,MAAOA,UAASsZ,OAAS38B,UAI7Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,8BAA+B,aAAcu7E,oBAE3D1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhxE,WAAYhR,KAE1CA,OAAQC,KAAKD,MAEbgR,WAAa/Q,KAAKD,MAAMgR,WAExBgxE,iBAAmB,SAASzhE,OAC1B,GAAIpD,QAMJ,OALAA,UACE6R,KAAM,WACJ,MAAOzO,OAAMsgE,UAAU,aAGpB,SAASrgD,UACd,MAAOA,UAAS3K,QAAU1Y,UAI9Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,+BAAgC,UAAWu7E,oBAEzD1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,MAAO0V,MAAOgpD,OACxC,GAAI9hE,QAkBJ,OAjBAA,YACAA,QAAQuI,OAAS,SAAShN,UAAWu0B,SACnC,GAAI9oC,QAAQgC,GASZ,QARgB,MAAX8mC,SAAgC,KAAZA,WACvBA,QAAU,KAEZ9oC,QACEs+E,WAAY/pE,UACZu0B,QAASA,SAEX9mC,IAAM8vB,MAAMrzB,QAAQ,QACbq8E,MAAM95E,KAAKgB,IAAM,UAAWhC,QAAQf,KAAK,SAAUoE,OACxD,MAAO,UAASL,MACd,MAAOA,MAAKA,OAEblH,QAEE,SAASugC,UACd,MAAOA,UAAS4c,SAAWjgC,UAI/Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,gCAAiC,UAAW,UAAW,UAAWu7E,oBAEhF1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,OACxC,GAAI9Y,QA4CJ,OA3CAA,YACAA,QAAQ9X,IAAM,SAAS2S,IACrB,MAAOuI,OAAMG,SAAS,cAAe1I,KAEvCmF,QAAQ6R,KAAO,SAAStW,UAAWW,QAAS0nE,kBAC1C,GAAI/zB,SAAS7oD,MAQb,OAPwB,OAApB48E,mBACFA,kBAAmB,GAErB58E,QACE+D,QAASwQ,WAEXvU,OAAS7D,EAAEwC,UAAWqB,OAAQkV,aAC1B0nE,iBACKxgE,MAAM2gE,eAAe,cAAe/8E,QAEtCoc,MAAMsgE,UAAU,cAAe18E,OAAQ6oD,SAC5C+zB,iBAAkBA,oBAGtB5jE,QAAQ4lE,WAAa,SAASlzD,OAAQxW,SACpC,GAAIlV,OAKJ,OAJAA,SACEyH,KAAMikB,QAER1rB,OAAS7D,EAAEwC,UAAWqB,OAAQkV,aACvBkH,MAAM2gE,eAAe,cAAe/8E,SAE7CgZ,QAAQ+vD,iBAAmB,SAASl1D,IAClC,GAAI7R,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,eACbq8E,MAAM95E,KAAKgB,IAAM,IAAM6R,GAAK,0BAErCmF,QAAQmtD,sBAAwB,SAAS5xD,UAAWvR,KAAM67E,uBACxD,GAAI7+E,QAAQgC,GAOZ,OANAA,KAAM8vB,MAAMrzB,QAAQ,2BACpBuB,QACEs+E,WAAY/pE,UACZuqE,iBAAkB97E,KAClB67E,sBAAuBA,uBAElB/D,MAAM95E,KAAKgB,IAAKhC,SAElB,SAASq8B,UACd,MAAOA,UAAStP,YAAc/T,UAIlCtd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,mCAAoC,UAAW,UAAW,UAAWu7E,oBAEnF1+E,KAAKrD,MAsBR,WACE,GAAIJ,QAAQmiF,gBAEZA,kBAAmB,SAASzhE,OAC1B,GAAIpD,QAKJ,OAJAA,YACAA,QAAQ6R,KAAO,SAAStW,UAAW7Y,QACjC,MAAO0gB,OAAMygE,kBAAkB,kBAAmBtoE,UAAW7Y,SAExD,SAAS2gC,UACd,MAAOA,UAAS1gC,QAAUqd,UAI9Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,+BAAgC,UAAWu7E,oBAEzD1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,OACxC,GAAI9Y,QAUJ,OATAA,YACAA,QAAQ9X,IAAM,SAAS2S,IACrB,MAAOuI,OAAMG,SAAS,kBAAmB1I,KAE3CmF,QAAQ6R,KAAO,SAAS3V,SACtB,GAAIlV,OAEJ,OADAA,QAAS7D,EAAEwC,UAAWqB,OAAQkV,aACvBkH,MAAMsgE,UAAU,kBAAmB18E,SAErC,SAASq8B,UACd,MAAOA,UAAS0iD,eAAiB/lE,UAIrCtd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,sCAAuC,UAAW,UAAW,UAAWu7E,oBAEtF1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhxE,WAAYhR,KAE1CA,OAAQC,KAAKD,MAEbgR,WAAa/Q,KAAKD,MAAMgR,WAExBgxE,iBAAmB,SAAS5kE,QAASmD,MAAO0+D,MAAOhpD,MAAO5qB,MAAOrI,GAAIC,YACnE,GAAIka,QA2LJ,OA1LAA,YACAA,QAAQ9X,IAAM,SAASqT,WACrB,MAAO6H,OAAMG,SAAS,WAAYhI,YAEpCyE,QAAQka,UAAY,SAAS2vC,aAC3B,MAAOzmD,OAAMG,SAAS,WAAY,gBAAkBsmD,cAEtD7pD,QAAQ6R,KAAO,WACb,MAAOzO,OAAMsgE,UAAU,aAEzB1jE,QAAQgmE,aAAe,SAASC,UAC9B,GAAIj/E,OAKJ,OAJAA,SACEorB,OAAU6zD,SACVrf,SAAY,2BAEPxjD,MAAMsgE,UAAU,WAAY18E,SAErCgZ,QAAQE,UAAY,WAClB,MAAOkD,OAAMsgE,UAAU,sBAEzB1jE,QAAQ1E,UAAY,SAASC,WAC3B,GAAIvU,OAIJ,OAHAA,SACE+D,QAAWwQ,WAEN6H,MAAMsgE,UAAU,QAAS18E,SAElCgZ,QAAQxE,UAAY,SAASD,WAC3B,GAAIvU,OAIJ,OAHAA,SACE+D,QAAWwQ,WAEN6H,MAAMsgE,UAAU,QAAS18E,SAElCgZ,QAAQinC,MAAQ,SAAS1rC,WACvB,MAAO6H,OAAM0gE,YAAY,WAAYvoE,UAAY,WAEnDyE,QAAQkmE,gBAAkB,SAASC,UACjC,GAAIn9E,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,8BACbq8E,MAAM95E,KAAKgB,IAAKm9E,WAEzBnmE,QAAQomE,gCAAkC,SAAS7qE,WACjD,GAAIvS,IAEJ,OADAA,KAAO8vB,MAAMrzB,QAAQ,YAAe,IAAM8V,UAAY,mCAC/CumE,MAAM95E,KAAKgB,MAEpBgX,QAAQqmE,2BAA6B,SAAS9qE,WAC5C,GAAIvS,IAEJ,OADAA,KAAO8vB,MAAMrzB,QAAQ,YAAe,IAAM8V,UAAY,8BAC/CumE,MAAM95E,KAAKgB,MAEpBgX,QAAQsmE,0BAA4B,SAAS/qE,WAC3C,GAAIvS,IAEJ,OADAA,KAAO8vB,MAAMrzB,QAAQ,YAAe,IAAM8V,UAAY,6BAC/CumE,MAAM95E,KAAKgB,MAEpBgX,QAAQwpD,MAAQ,SAASjuD,WACvB,GAAIvS,IAEJ,OADAA,KAAO8vB,MAAMrzB,QAAQ,YAAe,IAAM8V,UAAY,SAC/CumE,MAAM95E,KAAKgB,MAEpBgX,QAAQ2oD,YAAc,SAASptD,WAC7B,MAAO6H,OAAM0gE,YAAY,WAAYvoE,UAAY,kBAEnDyE,QAAQ69B,WAAa,SAAStiC,WAC5B,MAAO6H,OAAMG,SAAS,WAAYhI,UAAY,iBAEhDyE,QAAQ,UAAY,SAASzE,WAC3B,GAAIvS,IAEJ,OADAA,KAAO8vB,MAAMrzB,QAAQ,YAAe,IAAM8V,UACnCumE,MAAM55E,IAAIc,MAEnBgX,QAAQ,UAAY,SAASykB,KAAM8hD,eACjC,GAAIC,UAAUx8E,KAAMgwB,QAASsa,SAAUmyC,OAAQC,YAAaj+E,SAAUk+E,eAAgBC,aAAcC,eAAgBn0E,GAGpH,OAFAsnB,SAAUn0B,GAAGG,QACb0gF,YAAczmE,QAAQ/X,IAAI,oBAAqB,MAC3Cw+E,aAAejiD,KAAKxsB,KAAOyuE,aAC7BpyC,SAAWxuC,WAAW0E,QAAQ,0CAC5Bs8E,SAAUriD,KAAK3uB,KACfixE,SAAUlzE,WAAW4wB,KAAKxsB,MAC1ByuE,YAAa7yE,WAAW6yE,eAE1Bj+E,UACEE,OAAQ,IACRqB,MACE+X,eAAgBuyB,WAGpBta,QAAQ5wB,OAAOX,UACRuxB,QAAQ9zB,UAEjB2gF,eAAiB,SAAUx8E,OACzB,MAAO,UAAS28E,KACd,GAAI9kE,SAASulB,OAMb,OALAA,SAAU1jC,KAAK49B,MAAOqlD,IAAIC,OAASD,IAAIntB,MAAS,KAChD33C,QAAUpc,WAAW0E,QAAQ,6CAC3B08E,aAAcrzE,WAAWmzE,IAAIC,QAC7BE,UAAWtzE,WAAWmzE,IAAIntB,SAErB0sB,cAAc,cAAe,KAAMrkE,QAASulB,WAEpD3kC,MACH6jF,eAAiB,SAAUt8E,OACzB,MAAO,UAAS28E,KACd,MAAOT,eAAc,OAAQzgF,WAAW0E,QAAQ,wBAAyB1E,WAAW0E,QAAQ,iCAE7F1H,MACH8jF,aAAe,SAAUv8E,OACvB,MAAO,UAAS28E,KACd,MAAOT,eAAc,WAEtBzjF,MACH0jF,SAAW,SAAUn8E,OACnB,MAAO,UAAS28E,KACd,GAAWjxE,IACXtN,YACA,KACEA,SAASuB,KAAO1G,KAAK8H,MAAM47E,IAAI/3D,OAAOm4D,cACtC,MAAOplE,OACPvZ,SAASuB,QAYX,MAVAvB,UAASE,OAASq+E,IAAI/3D,OAAOtmB,OACzBq+E,IAAI/3D,OAAOo4D,kBAAkB,mCAC/B5+E,SAASX,SACPksC,UAA6E,SAAlEgzC,IAAI/3D,OAAOo4D,kBAAkB,iCACxCtzD,YAAa9L,SAAS++D,IAAI/3D,OAAOo4D,kBAAkB,sCAGvB,OAA3BtxE,IAAMtN,SAASE,SAA2B,MAARoN,MACrCikB,QAAQv0B,QAAQgD,UAEXuxB,QAAQ5wB,OAAOX,YAEvB3F,MACH2jF,OAAS,SAAUp8E,OACjB,MAAO,UAAS28E,KACd,MAAOhtD,SAAQ5wB,OAAO,UAEvBtG,MACHkH,KAAO,GAAIs9E,UACXt9E,KAAKkhB,OAAO,OAAQuZ,MACpB/xB,IAAM,GAAI60E,gBACV70E,IAAIwkC,OAAOzqB,iBAAiB,WAAYo6D,gBAAgB,GACxDn0E,IAAIwkC,OAAOzqB,iBAAiB,OAAQk6D,gBAAgB,GACpDj0E,IAAIwkC,OAAOzqB,iBAAiB,QAASm6D,cAAc,GACnDl0E,IAAIwkC,OAAOzqB,iBAAiB,QAASm6D,cAAc,GACnDl0E,IAAI+Z,iBAAiB,OAAQ+5D,UAAU,GACvC9zE,IAAI+Z,iBAAiB,QAASg6D,QAAQ,GACtC/zE,IAAIkY,KAAK,OAAQkO,MAAMrzB,QAAQ,aAC/BiN,IAAI80E,iBAAiB,gBAAiB,UAAat5E,MAAM8Q,YACzDtM,IAAI80E,iBAAiB,SAAU,oBAC/B90E,IAAIub,KAAKjkB,MACFgwB,QAAQ9zB,UAEjB8Z,QAAQq0D,WAAa,SAAS94D,UAAWkpB,MACvC,GAAIz6B,MAAMgwB,QAAS0sD,YAAa72B,QAASpnD,SAAUO,GAEnD,OADA09E,aAAczmE,QAAQ/X,IAAI,oBAAqB,MAC3Cw+E,aAAejiD,KAAKxsB,KAAOyuE,aAC7Bj+E,UACEE,OAAQ,IACRqB,MACE+X,eAAgB,IAAM0iB,KAAK3uB,KAAO,MAASjC,WAAW4wB,KAAKxsB,MAAS,qEAAwEpE,WAAW6yE,aAAgB,MAG3K1sD,QAAUn0B,GAAGG,QACbg0B,QAAQ5wB,OAAOX,UACRuxB,QAAQ9zB,UAEjB8D,KAAO,GAAIs9E,UACXt9E,KAAKkhB,OAAO,OAAQuZ,MACpBorB,SACE43B,iBAAkB/hF,QAAQgiF,SAC1B5/E,SACEN,eAAgB,SAGpBwB,IAAO8vB,MAAMrzB,QAAQ,YAAe,IAAM8V,UAAY,eAC/CumE,MAAM95E,KAAKgB,IAAKgB,QAAU6lD,WAEnC7vC,QAAQs0D,WAAa,SAAS/4D,WAC5B,GAAIvS,IAEJ,OADAA,KAAO8vB,MAAMrzB,QAAQ,YAAe,IAAM8V,UAAY,eAC/CumE,MAAM95E,KAAKgB,MAEb,SAASq6B,UACd,MAAOA,UAAShoB,SAAW2E,UAI/Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,gCAAiC,YAAa,UAAW,UAAW,UAAW,UAAW,KAAM,aAAcu7E,oBAE5H1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,OACxC,GAAI9Y,QAUJ,OATAA,YACAA,QAAQ9X,IAAM,SAAS2S,IACrB,MAAOuI,OAAMG,SAAS,QAAS1I,KAEjCmF,QAAQ6R,KAAO,SAAStW,WACtB,MAAO6H,OAAMsgE,UAAU,SACrB34E,QAASwQ,aAGN,SAAS8nB,UACd,MAAOA,UAAS9oB,MAAQyF,UAI5Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,6BAA8B,UAAW,UAAW,UAAWu7E,oBAE7E1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,MAAO0V,MAAOgpD,MAAOj8E,IAC/C,GAAIma,QA6BJ,OA5BAA,YACAA,QAAQ,MAAQ,SAASzE,UAAWue,MAClC,GAAI6tD,eAAe3gF,OAAQ0C,QAASV,GAwBpC,OAvBA2+E,eAAgB9hF,GAAGG,QACnBgD,IAAM8vB,MAAMrzB,QAAQ,UACpBuB,QACEgC,IAAKA,IACL2M,OAAQ,MACR1B,QAAS0zE,cAAczhF,QACvB2C,YAAY,EACZ7B,QACE+D,QAASwQ,UACTlF,KAAMyjB,KACN8tD,SAAS,IAGbl+E,QAAUo4E,MAAMp4E,QAAQ1C,QAAQf,KAAK,SAAS+D,MAC5C,MAAOA,MAAKA,OAEdN,QAAQoxB,MAAQ,WACd,MAAO6sD,eAAcliF,WAEvBiE,QAAQ,WAAa,WAEnB,MADAA,SAAQoxB,MAAQp1B,QAAQmiF,KACjBF,cAAgBj+E,QAAU,MAE5BA,SAEF,SAAS25B,UACd,MAAOA,UAASl6B,OAAS6W,UAI7Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,8BAA+B,UAAW,UAAW,UAAW,KAAMu7E,oBAEpF1+E,KAAKrD,MA2BR,WACE,GAAIG,cAAcP,OAAQmiF,iBAAkBhiF,KAE5CA,OAAQC,KAAKD,MAEbI,aAAeJ,MAAMI,aAErB4hF,iBAAmB,SAASzhE,MAAOC,OAAQ6lB,UACzC,GAAIlpB,QA2CJ,OA1CAA,YACAA,QAAQ9X,IAAM,SAASqT,UAAWu6C,UAChC,MAAO1yC,OAAMG,SAAS,aAAcuyC,UAAU7vD,KAAK,SAASq7B,QAC1D,GAAI2nB,KAMJ,OALAA,MAAO3nB,OAAOimB,aACd0B,KAAO9lD,EAAEC,IAAI6lD,KAAM,SAAS0Z,GAC1B,MAAOt/C,QAAO5E,WAAW,cAAekkD,KAE1CrhC,OAAOg/C,OAAO/4B,aAAe0B,KACtB3nB,UAGXthB,QAAQinC,MAAQ,SAAS1rC,UAAWu6C,UAClC,MAAO1yC,OAAM0gE,YAAY,aAAchuB,SAAW,WAEpD91C,QAAQ6R,KAAO,SAAStW,UAAWW,SACjC,GAAIlV,OAKJ,OAJAA,SACE+D,QAAWwQ,WAEbvU,OAAS7D,EAAEwC,UAAWqB,OAAQkV,aACvBkH,MAAMsgE,UAAU,aAAc18E,WAAY,GAAMf,KAAK,SAAUoE,OACpE,MAAO,UAASoM,QACd,GAAI3O,SAAS0M,EAAGgC,IAAKgnB,EAAGnI,WAAY4zB,IAGpC,KAFA5zB,WAAa5e,OAAO,GACpB3O,QAAU2O,OAAO,GACZjC,EAAI,EAAGgC,IAAM6e,WAAW/lB,OAAYkH,IAAJhC,EAASA,IAC5CgpB,EAAInI,WAAW7gB,GACfy0C,KAAOzrB,EAAE+pB,aACT0B,KAAO9lD,EAAEC,IAAI6lD,KAAM,SAAS0Z,GAC1B,MAAOt/C,QAAO5E,WAAW,cAAekkD,KAE1CnlC,EAAE8iD,OAAO/4B,aAAe0B,IAE1B,QACE5zB,WAAYA,WACZ2vB,OAAQ/8B,SAASngB,QAAQ,sCAAuC,IAChE8iB,KAAM3C,SAASngB,QAAQ,sCAAuC,OAGjEhF,QAEE,SAASugC,UACd,MAAOA,UAAS0hB,QAAU/kC,UAI9Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,+BAAgC,UAAW,WAAY,aAAcu7E,oBAEnF1+E,KAAKrD,MA2BR,WACE,GAAIG,cAAcP,OAAQmiF,iBAAkBhiF,KAE5CA,OAAQC,KAAKD,MAEbI,aAAeJ,MAAMI,aAErB4hF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,MAAOoQ,UAC/C,GAAIg8C,YAAYQ,4BAA6BoC,qBAAsB9nE,OA8HnE,OA7HAA,YACAklE,WAAa,oBACbQ,4BAA8B,2BAC9BoC,qBAAuB,oBACvB9nE,QAAQ9X,IAAM,SAASqT,UAAWksD,QAChC,GAAIzgE,OAGJ,OAFAA,QAASgZ,QAAQolE,eAAe7pE,WAChCvU,OAAO+D,QAAUwQ,UACV6H,MAAMG,SAAS,QAASkkD,OAAQzgE,SAEzCgZ,QAAQkrC,SAAW,SAAS3vC,UAAWxF,KACrC,GAAI/O,OAIJ,OAHAA,QAASgZ,QAAQolE,eAAe7pE,WAChCvU,OAAO+D,QAAUwQ,UACjBvU,OAAO+O,IAAMA,IACNqN,MAAMG,SAAS,QAAS,SAAUvc,SAE3CgZ,QAAQqlE,kBAAoB,SAASnpE,SACnC,MAAOkH,OAAMsgE,UAAU,QAASxnE,UAElC8D,QAAQ6R,KAAO,SAAStW,UAAWu6C,SAAUiyB,aAC3C,GAAI/gF,OAiBJ,OAhBgB,OAAZ8uD,WACFA,SAAW,MAEM,MAAfiyB,cACFA,YAAc,MAEhB/gF,QACE+D,QAASwQ,WAEPu6C,WACF9uD,OAAOipC,UAAY6lB,UAEjBiyB,cACF/gF,OAAOkpC,WAAa63C,aAEtB/nE,QAAQ0oC,iBAAiBntC,UAAWvU,QAC7Boc,MAAMsgE,UAAU,QAAS18E,SAElCgZ,QAAQu3B,WAAa,SAASh8B,UAAWu6C,SAAUhkC,KAAM9nB,MACvD,GAAIhD,QAAQgC,GAQZ,OAPAA,KAAM8vB,MAAMrzB,QAAQ,qBACpBuB,QACEs+E,WAAY/pE,UACZysE,UAAWlyB,SACX5M,MAAOp3B,KACPm2D,WAAYj+E,MAEP83E,MAAM95E,KAAKgB,IAAKhC,QAAQf,KAAK,SAASwQ,QAC3C,MAAOA,QAAOzM,QAGlBgW,QAAQ+/C,OAAS,SAAS0H,QACxB,GAAIz+D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,cAAegiE,QAC5Bqa,MAAM95E,KAAKgB,MAEpBgX,QAAQigD,SAAW,SAASwH,QAC1B,GAAIz+D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,gBAAiBgiE,QAC9Bqa,MAAM95E,KAAKgB,MAEpBgX,QAAQm2B,MAAQ,SAASsxB,QACvB,GAAIz+D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,aAAcgiE,QAC3Bqa,MAAM95E,KAAKgB,MAEpBgX,QAAQ2I,QAAU,SAAS8+C,QACzB,GAAIz+D,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,eAAgBgiE,QAC7Bqa,MAAM95E,KAAKgB,MAEpBgX,QAAQ83C,6BAA+B,SAASv8C,UAAWvR,MACzD,GAAIhD,QAAQgC,GAMZ,OALAA,KAAM8vB,MAAMrzB,QAAQ,oCACpBuB,QACEs+E,WAAY/pE,UACZ0sE,WAAYj+E,MAEP83E,MAAM95E,KAAKgB,IAAKhC,SAEzBgZ,QAAQw1D,WAAa,SAASj6D,UAAWjP,MACvC,GAAItF,OAIJ,OAHAA,SACE+D,QAAWwQ,WAEN6H,MAAMsgE,UAAUp3E,KAAMtF,SAE/BgZ,QAAQ0oC,iBAAmB,SAASntC,UAAWvU,QAC7C,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAM2pE,WACvB57C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQolE,eAAiB,SAAS7pE,WAChC,GAAI+tB,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAM2pE,WACvB57C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAAShhC,IAAIohC,WAEtBtpB,QAAQm5C,uBAAyB,SAAS59C,UAAWvU,QACnD,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMmqE,4BACvBp8C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQ+4C,qBAAuB,SAASx9C,WACtC,GAAI+tB,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMmqE,4BACvBp8C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAAShhC,IAAIohC,WAEtBtpB,QAAQq5C,gBAAkB,SAAS99C,UAAWu6C,SAAU9uD,QACtD,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMusE,qBACvBx+C,KAAOrmC,cAAcsY,UAAWu6C,SAAU0vB,KACnCt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQi5C,cAAgB,SAAS19C,UAAWu6C,UAC1C,GAAIxsB,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAMusE,qBACvBx+C,KAAOrmC,cAAcsY,UAAWu6C,SAAU0vB,KACnCt8C,SAAShhC,IAAIohC,WAEf,SAASjG,UACd,MAAOA,UAASzR,MAAQ5R,UAI5Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,6BAA8B,UAAW,UAAW,UAAW,aAAcu7E,oBAE3F1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhxE,WAAYhR,KAE1CA,OAAQC,KAAKD,MAEbgR,WAAa/Q,KAAKD,MAAMgR,WAExBgxE,iBAAmB,SAAS5kE,QAASmD,MAAO0+D,MAAOhpD,MAAOjzB,IACxD,GAAIma,QAyCJ,OAxCAA,YACAA,QAAQkoE,aAAe,SAASzjD,MAC9B,GAAIz6B,MAAMgwB,QAAS0sD,YAAa72B,QAASpnD,SAAUO,GAEnD,OADA09E,aAAczmE,QAAQ/X,IAAI,oBAAqB,MAC3Cw+E,aAAejiD,KAAKxsB,KAAOyuE,aAC7Bj+E,UACEE,OAAQ,IACRqB,MACE+X,eAAgB,IAAM0iB,KAAK3uB,KAAO,MAASjC,WAAW4wB,KAAKxsB,MAAS,qEAAwEpE,WAAW6yE,aAAgB,MAG3K1sD,QAAUn0B,GAAGG,QACbg0B,QAAQ5wB,OAAOX,UACRuxB,QAAQ9zB,UAEjB8D,KAAO,GAAIs9E,UACXt9E,KAAKkhB,OAAO,SAAUuZ,MACtBorB,SACE43B,iBAAkB/hF,QAAQgiF,SAC1B5/E,SACEN,eAAgB,SAGpBwB,IAAO8vB,MAAMrzB,QAAQ,SAAY,iBAC1Bq8E,MAAM95E,KAAKgB,IAAKgB,QAAU6lD,WAEnC7vC,QAAQmoE,aAAe,WACrB,GAAIn/E,IAEJ,OADAA,KAAO8vB,MAAMrzB,QAAQ,SAAY,iBAC1Bq8E,MAAM95E,KAAKgB,MAEpBgX,QAAQooE,eAAiB,SAASC,gBAAiBC,aACjD,GAAIt+E,MAAMhB,GAMV,OALAA,KAAO8vB,MAAMrzB,QAAQ,SAAY,mBACjCuE,MACEu+E,iBAAkBF,gBAClB9mE,SAAU+mE,aAELxG,MAAM95E,KAAKgB,IAAKgB,OAElB,SAASq5B,UACd,MAAOA,UAASmlD,aAAexoE,UAInCtd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,oCAAqC,YAAa,UAAW,UAAW,UAAW,KAAMu7E,oBAEvG1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhxE,WAAYhR,KAE1CA,OAAQC,KAAKD,MAEbgR,WAAa/Q,KAAKD,MAAMgR,WAExBgxE,iBAAmB,SAAS/C,MAAOhpD,OACjC,GAAI9Y,QAkBJ,OAjBAA,YACAA,QAAQyoE,SAAW,SAAS/1D,OAAQm9B,SAClC,GAAI8zB,aAAa36E,GAWjB,OAVe,OAAX6mD,UACFA,YAEF7mD,IAAM8vB,MAAMrzB,QAAQ,gBAAiBitB,QACrCixD,aACE77E,YAEG+nD,QAAQ+zB,mBACXD,YAAY77E,QAAQ,wBAA0B,KAEzCg6E,MAAM55E,IAAIc,OAAS26E,aAAa19E,KAAK,SAASwQ,QACnD,MAAOA,QAAOzM,QAGX,SAASq5B,UACd,MAAOA,UAAS/oB,MAAQ0F,UAI5Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,6BAA8B,UAAW,UAAW,KAAMu7E,oBAExE1+E,KAAKrD,MA2BR,WACE,GAAIG,cAAcP,OAAQmiF,iBAAkBhiF,KAE5CA,OAAQC,KAAKD,MAEbI,aAAeJ,MAAMI,aAErB4hF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,MAAOoQ,UAC/C,GAAIg8C,YAAYllE,OAgIhB,OA/HAA,YACAklE,WAAa,0BACbllE,QAAQ9X,IAAM,SAASqT,UAAWuW,MAChC,GAAI9qB,OAGJ,OAFAA,QAASgZ,QAAQolE,eAAe7pE,WAChCvU,OAAO+D,QAAUwQ,UACV6H,MAAMG,SAAS,cAAeuO,KAAM9qB,SAE7CgZ,QAAQkrC,SAAW,SAAS3vC,UAAWxF,KACrC,GAAI/O,OAIJ,OAHAA,QAASgZ,QAAQolE,eAAe7pE,WAChCvU,OAAO+D,QAAUwQ,UACjBvU,OAAO+O,IAAMA,IACNqN,MAAMG,SAAS,cAAe,SAAUvc,SAEjDgZ,QAAQqlE,kBAAoB,SAASnpE;AACnC,MAAOkH,OAAMsgE,UAAU,cAAexnE,UAExC8D,QAAQwqC,YAAc,SAASxjD,QAC7B,MAAOoc,OAAM0gE,YAAY,sBAAuB,KAAM98E,SAExDgZ,QAAQ2oC,eAAiB,SAASptC,UAAWW,SAC3C,GAAIlV,OAOJ,OANAA,SACE+D,QAAWwQ,UACX00B,UAAa,QAEfjpC,OAAS7D,EAAEwC,UAAWqB,OAAQkV,aAC9B8D,QAAQ0oC,iBAAiBntC,UAAWvU,QAC7Boc,MAAMsgE,UAAU,cAAe18E,SAExCgZ,QAAQ+7C,QAAU,SAASxgD,UAAWW,SACpC,GAAIlV,OAMJ,OALAA,SACE+D,QAAWwQ,WAEbvU,OAAS7D,EAAEwC,UAAWqB,OAAQkV,aAC9B8D,QAAQ0oC,iBAAiBntC,UAAWvU,QAC7Boc,MAAMsgE,UAAU,cAAe18E,SAExCgZ,QAAQu3B,WAAa,SAASh8B,UAAW5S,OAAQ2uC,MAC/C,GAAIttC,MAAMhB,GAOV,OANAgB,OACEs7E,WAAY/pE,UACZmtE,UAAW//E,OACXggF,aAAcrxC,MAEhBtuC,IAAM8vB,MAAMrzB,QAAQ,kBACbq8E,MAAM95E,KAAKgB,IAAKgB,OAEzBgW,QAAQ+/C,OAAS,SAASgoB,aACxB,GAAI/+E,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,mBAAoBsiF,aACjCjG,MAAM95E,KAAKgB,MAEpBgX,QAAQigD,SAAW,SAAS8nB,aAC1B,GAAI/+E,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,qBAAsBsiF,aACnCjG,MAAM95E,KAAKgB,MAEpBgX,QAAQm2B,MAAQ,SAAS4xC,aACvB,GAAI/+E,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,kBAAmBsiF,aAChCjG,MAAM95E,KAAKgB,MAEpBgX,QAAQ2I,QAAU,SAASo/D,aACzB,GAAI/+E,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,oBAAqBsiF,aAClCjG,MAAM95E,KAAKgB,MAEpBgX,QAAQ+pC,uBAAyB,SAASxuC,UAAWvR,MACnD,GAAIhD,QAAQgC,GAMZ,OALAA,KAAM8vB,MAAMrzB,QAAQ,gCACpBuB,QACEs+E,WAAY/pE,UACZotE,aAAc3+E,MAET83E,MAAM95E,KAAKgB,IAAKhC,SAEzBgZ,QAAQgqC,sBAAwB,SAASzuC,UAAWvR,MAClD,GAAIhD,QAAQgC,GAMZ,OALAA,KAAM8vB,MAAMrzB,QAAQ,+BACpBuB,QACEs+E,WAAY/pE,UACZotE,aAAc3+E,MAET83E,MAAM95E,KAAKgB,IAAKhC,SAEzBgZ,QAAQ48C,sBAAwB,SAASrhD,UAAWvR,MAClD,GAAIhD,QAAQgC,GAMZ,OALAA,KAAM8vB,MAAMrzB,QAAQ,+BACpBuB,QACEs+E,WAAY/pE,UACZotE,aAAc3+E,MAET83E,MAAM95E,KAAKgB,IAAKhC,SAEzBgZ,QAAQw1D,WAAa,SAASj6D,UAAWjP,MACvC,GAAItF,OAKJ,OAJAA,SACE+D,QAAWwQ,WAEbyE,QAAQ0oC,iBAAiBntC,UAAWvU,QAC7Boc,MAAMsgE,UAAUp3E,KAAMtF,SAE/BgZ,QAAQ0oC,iBAAmB,SAASntC,UAAWvU,QAC7C,GAAIsiC,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAM2pE,WACvB57C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAASvqB,IAAI2qB,KAAMtiC,SAE5BgZ,QAAQolE,eAAiB,SAAS7pE,WAChC,GAAI+tB,MAAMk8C,EAGV,OAFAA,IAAKjqE,UAAY,IAAM2pE,WACvB57C,KAAOrmC,cAAcsY,UAAWiqE,KACzBt8C,SAAShhC,IAAIohC,WAEtBtpB,QAAQ+mC,cAAgB,SAASxrC,UAAW0qC,UAC1C,GAAI3c,KAEJ,OADAA,MAAOrmC,cAAcsY,UAAW,aACzB2tB,SAASvqB,IAAI2qB,KAAM2c,WAE5BjmC,QAAQqmC,YAAc,SAAS9qC,WAC7B,GAAI+tB,KAEJ,OADAA,MAAOrmC,cAAcsY,UAAW,aACzB2tB,SAAShhC,IAAIohC,OAAS,MAExB,SAASjG,UACd,MAAOA,UAAS/N,YAActV,UAIlCtd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,mCAAoC,UAAW,UAAW,UAAW,aAAcu7E,oBAEjG1+E,KAAKrD,MAsBR,WACE,GAAIJ,QAAQmiF,gBAEZA,kBAAmB,SAASzhE,MAAO0V,MAAOgpD,OACxC,GAAI9hE,QAcJ,OAbAA,YACAA,QAAQ6R,KAAO,SAAS+2D,WACtB,GAAI5hF,OAIJ,OAHAA,SACEm1E,QAASyM,WAEJxlE,MAAMsgE,UAAU,cAAe18E,SAExCgZ,QAAQm9D,OAAS,SAAS0L,cACxB,GAAI7/E,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,qBAAsBojF,cACnC/G,MAAM95E,KAAKgB,MAEb,SAASq6B,UACd,MAAOA,UAASrL,YAAchY,UAIlCtd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,mCAAoC,UAAW,UAAW,UAAWu7E,oBAEnF1+E,KAAKrD,MAsBR,WACE,GAAIJ,QAAQmiF,gBAEZA,kBAAmB,SAASzhE,MAAO0V,MAAOgpD,OACxC,GAAI9hE,QAcJ,OAbAA,YACAA,QAAQ6R,KAAO,SAAStW,WACtB,GAAIvU,OAIJ,OAHAA,SACE+D,QAASwQ,WAEJ6H,MAAMsgE,UAAU,WAAY18E,SAErCgZ,QAAQk9D,KAAO,SAAS0L,WACtB,GAAI5/E,IAEJ,OADAA,KAAM8vB,MAAMrzB,QAAQ,gBAAiBmjF,WAC9B9G,MAAM95E,KAAKgB,MAEb,SAASq6B,UACd,MAAOA,UAASvL,SAAW9X,UAI/Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,gCAAiC,UAAW,UAAW,UAAWu7E,oBAEhF1+E,KAAKrD,MA2BR,WACE,GAAIJ,QAAQmiF,iBAAkBhiF,KAE9BA,OAAQC,KAAKD,MAEbgiF,iBAAmB,SAASzhE,MAAO0+D,MAAOhpD,OACxC,GAAI9Y,QAaJ,OAZAA,YACAA,QAAQ9X,IAAM,SAASsiE,QACrB,MAAOpnD,OAAMG,SAAS,OAAQinD,SAEhCxqD,QAAQka,UAAY,SAAS3e,UAAWwO,MACtC,MAAO3G,OAAMG,SAAS,OAAQ,mBAAqBhI,UAAY,SAAWwO,OAE5E/J,QAAQ0qD,UAAY,SAASnvD,WAC3B,MAAO6H,OAAMsgE,UAAU,cACrB34E,QAASwQ,aAGN,SAAS8nB,UACd,MAAOA,UAASxM,KAAO7W,UAI3Btd,OAASgD,QAAQhD,OAAO,kBAExBA,OAAO4G,QAAQ,4BAA6B,UAAW,UAAW,UAAWu7E,oBAE5E1+E,KAAKrD,MA2BR,WACE,GAAIgmF,8BAA8BC,4BAA6B31E,SAAUM,MAAOhR,OAAQG,MACtF8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBN,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,qBAExBomF,6BAA+B,SAAUt2E,YAKvC,QAASs2E,8BAA6B3zE,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAAS8L,KAAMlB,WAC7G1a,KAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAK4b,KAAOA,KACZ5b,KAAK0a,UAAYA,UACjB1a,KAAKqS,MAAMokB,YAAcz2B,KAAK0a,UAAUhT,QAAQ,gCAChD1H,KAAKqS,MAAM1G,KAAO3L,KAAK4b,KAAKnO,UAG9B,MApBA5K,QAAOmjF,6BAA8Bt2E,YAErCs2E,6BAA6B5rE,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,aAAc,UAAW,cAkBhK4rE,8BAENp1E,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,+BAAgCyiF,8BAElDC,4BAA8B,SAASv3D,IAAKlnB,SAAUskB,SAAU9oB,YAC9D,GAAI0a,KAiCJ,OAhCAA,MAAO,SAASC,OAAQC,IAAKC,OAAQ4sD,MACnC,GAAI3sD,MAAMG,OAAQgO,YA2BlB,OA1BAnO,MAAO,GAAI9S,WAAUkT,KAAKN,IAAIO,KAAK,SACnCF,OAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIue,gBAAgB9oB,OAEpB,OADAuK,OAAM2Q,iBACDR,KAAKS,WAGNZ,OAAOuoE,eAAiBvoE,OAAOwoE,iBACjC3+E,UAASG,OAAO,QAAS3E,WAAW0E,QAAQ,0CAG9CwkB,eAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUsrB,IAAIg3D,aAAaJ,eAAe3nE,OAAO4nE,gBAAiB5nE,OAAOuoE,cACzE9iF,QAAQD,KAAK,WAEX,MADA+oB,gBAAeI,SACR9kB,SAASG,OAAO,aAElBvE,QAAQD,KAAK,KAAM,SAASwC,UAEjC,MADAumB,gBAAeI,SACR9kB,SAASG,OAAO,QAAShC,SAASuB,KAAK+X,mBAfhD,SAkBDjf,OACHisB,aAAerO,IAAIO,KAAK,kBACxBP,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,wBAAyB,eAAgB,aAAc,aAAc,aAAcwoE,+BAEnG5iF,KAAKrD,MA2BR,WACE,GAAIomF,qBAAqBh2E,SAAUE,SAAU1Q,OAAQG,KAErDA,OAAQC,KAAKD,MAEbqQ,SAAWpQ,KAAKD,MAAMqQ,SAEtBE,SAAWtQ,KAAKD,MAAMuQ,SAEtB1Q,OAASgD,QAAQhD,OAAO,qBAExBwmF,oBAAsB,SAAS9lE,MAAOnV,WAAYC,MAAO7F,UAAWC,SAAUi+B,gBAAiB3X,UAC7F,GAAIpO,KAkCJ,OAjCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAII,QAAQgO,YA8BZ,OA7BAtO,QAAO7R,IAAI,qBAAsB,SAASmB,IAAKtB,MAC7C,MAAO83B,iBAAgB3b,KAAKlK,OAE9BD,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAEbX,OAAS,WACP,GAAIiO,gBAAgB9oB,OASpB,OARA8oB,gBAAiBJ,WAAWK,OAAOF,cAAcpe,QACjDzK,QAAUkd,MAAMvE,OAAO4B,OAAOhS,MAC9BvI,QAAQD,KAAK,SAAS+D,MAIpB,MAHAglB,gBAAeI,SACfmX,gBAAgBxZ,MAAMrM,KACtBxS,MAAMmR,SACChX,UAAU9C,KAAK+C,SAAS7C,QAAQ,YAElCS,QAAQD,KAAK,KAAM,WAExB,MADA+oB,gBAAeI,SACR66B,QAAQ3xC,IAAI,WAGvBoI,IAAIc,GAAG,QAAS,gBAAiB,SAAS/Q,OAExC,MADAA,OAAM2Q,iBACCmlB,gBAAgBxZ,MAAMrM,OAE/BA,IAAIc,GAAG,QAAS,cAAepO,SAAS,IAAM,SAAS3C,OAErD,MADAA,OAAM2Q,iBACCL,YAEFgO,aAAerO,IAAIO,KAAK,iBAG/BT,KAAMA,KACNpa,YAAa,+CAIjB1D,OAAO6d,UAAU,kBAAmB,UAAW,aAAc,UAAW,cAAe,aAAc,kBAAmB,aAAc2oE,uBAErI/iF,KAAKrD,MA2BR,WACE,GAAIqmF,2BAA2BC,oBAAqBC,qBAAsBC,uBAAwBl2E,SAAUM,MAAOhR,OAAQmR,WAAYhR,MACrI8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBG,WAAa/Q,KAAKD,MAAMgR,WAExBnR,OAASgD,QAAQhD,OAAO,qBAExB0Q,SAAWtQ,KAAKD,MAAMuQ,SAEtBk2E,uBAAyB,SAAU92E,YAKjC,QAAS82E,wBAAuBn0E,MAAOgI,UAAWvU,OAAQywB,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAAS8L,KAAMlB,WAC/G,GAAIkpE,aAAaxgF,QAASmQ,IAC1BvT,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAK8F,OAASA,OACd9F,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAK4b,KAAOA,KACZ5b,KAAK0a,UAAYA,UACjB1a,KAAKqS,MAAMokB,YAAc,mCACzBz2B,KAAKqS,MAAMpK,WACXjI,KAAKqS,MAAM1G,KAAO3L,KAAK4b,KAAKnO,UACvBzN,KAAKqS,MAAM1G,OACd3L,KAAK6P,SAASpN,KAAKzC,KAAK8P,QAAQnN,QAAQ,sBACxC3C,KAAK6P,SAAS5J,WAEhBjG,KAAKqS,MAAM9J,KAAOvI,KAAKymF,SACvBzmF,KAAKqS,MAAMiJ,MAAQtb,KAAK0mF,WACxB9C,YAAc5jF,KAAK8F,OAAOV,IAAI,oBAAqB,MAC/Cw+E,cACFrwE,KAAOvT,KAAK0a,UAAUhT,QAAQ,iCAC5Bk8E,YAAe7yE,WAAW6yE,eAE5B5jF,KAAKqS,MAAMs0E,eAAiBpzE,MAE9BnQ,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAyBlD,MA5DA6C,QAAO2jF,uBAAwB92E,YAE/B82E,uBAAuBpsE,SAAW,SAAU,aAAc,YAAa,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,aAAc,UAAW,cAoC9KosE,uBAAuBt3E,UAAUwnB,gBAAkB,WAEjD,MADA12B,MAAKqS,MAAMu0E,gBAAkB5mF,KAAK8F,OAAOV,IAAI,aACtCpF,KAAKsY,GAAGsd,QAAQ7G,OAAO5rB,KAAK,SAAUoE,OAC3C,MAAO,UAASquB,SAEd,MADAruB,OAAM8K,MAAMujB,QAAUA,QACfA,UAER51B,QAGLwmF,uBAAuBt3E,UAAUw/D,mBAAqB,WACpD,MAAO1uE,MAAKqa,UAAUyG,WAAW,qBAAsB9gB,KAAKqS,MAAM1G,OAGpE66E,uBAAuBt3E,UAAUu3E,OAAS,WACxC,MAAOzmF,MAAKqS,MAAM1G,KAAKpD,MAAQvI,KAAK0a,UAAU5R,qBAGhD09E,uBAAuBt3E,UAAUw3E,SAAW,WAC1C,MAAO1mF,MAAKqS,MAAM1G,KAAK2P,OAAStb,KAAK8F,OAAOV,IAAI,iBAAmB,SAG9DohF,wBAEN51E,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,yBAA0BijF,wBAE5CD,qBAAuB,SAAS/+E,SAAU4D,MAAOkV,MAAOtd,YACtD,GAAI0a,KAoCJ,OAnCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAII,OA8BJ,OA7BAA,QAAS3N,SAAS,IAAM,SAAU/I,OAChC,MAAO,UAASoG,OACd,GAAIqP,aAAac,KAAMC,QAASC,SAGhC,OAFArQ,OAAM2Q,iBACNR,KAAOF,IAAIO,KAAK,QAAQnT,YACnB8S,KAAKS,YAGVvB,YAAcW,OAAOhS,KAAKgzE,oBAAoB,SAC9ChhE,OAAOhS,KAAKpD,KAAOoV,OAAOpV,KAC1BoV,OAAOhS,KAAK2P,MAAQqC,OAAOrC,MAC3B0C,UAAY,SAAS9W,MACnB,GAAIqM,KAEJ,OADAnI,OAAMiQ,QAAQnU,MACV8V,aACFzJ,KAAOvQ,WAAW0E,QAAQ,qCACnBF,SAAS6X,QAAQ9L,OAEjB/L,SAASG,OAAO,YAG3BoW,QAAU,SAAS7W,MAEjB,MADA4W,MAAKqB,UAAUjY,MACRM,SAASG,OAAO,QAAST,KAAK+X,iBAEhCqB,MAAMgN,KAAK3P,OAAOhS,MAAMxI,KAAK6a,UAAWD,UApB/C,SAsBD/d,OACH4d,IAAIc,GAAG,SAAU,OAAQT,QAClBN,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB,aAAc,UAAW,UAAW,aAAc8oE,uBAErFD,oBAAsB,SAASl7E,MAAOmV,OAAQmO,IAAKlnB,UACjD,GAAIkW,KAsCJ,OArCAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAIE,SAASC,UAAWqzD,YAgCxB,OA/BAA,cAAe,WACb,MAAOzzD,KAAIO,KAAK,cAAcwH,YAAY,WAE5C3H,UAAY,SAASrY,UACnB,GAAIgG,KAKJ,OAJAA,MAAO4U,OAAO5E,WAAW,QAAShW,SAASuB,MAC3CkE,MAAMiQ,QAAQ1P,MACdgS,OAAOhS,KAAOA,KACdiS,IAAIO,KAAK,oBAAoBwH,YAAY,UAClCne,SAASG,OAAO,YAEzBoW,QAAU,SAASpY,UAKjB,MAJwB,OAApBA,SAASE,QACXwrE,eAEFzzD,IAAIO,KAAK,oBAAoBwH,YAAY,UAClCne,SAASG,OAAO,QAAShC,SAASuB,KAAK+X,iBAEhDrB,IAAIc,GAAG,QAAS,oBAAqB,WACnC,MAAOd,KAAIO,KAAK,iBAAiB0iB,UAEnCjjB,IAAIc,GAAG,SAAU,gBAAiB,SAAS/Q,OACzC,MAAIgQ,QAAOkpE,kBACTjpE,IAAIO,KAAK,oBAAoB2H,SAAS,UAC/B4I,IAAIg3D,aAAaN,aAAaznE,OAAOkpE,kBAAkB1jF,KAAK6a,UAAWD,UAFhF,SAKFH,IAAIc,GAAG,QAAS,oBAAqB,SAAS/Q,OAE5C,MADAiQ,KAAIO,KAAK,oBAAoB2H,SAAS,UAC/B4I,IAAIg3D,aAAaL,eAAeliF,KAAK6a,UAAWD,WAElDJ,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,gBAAiB,UAAW,WAAY,eAAgB,aAAc6oE,sBAEvFD,0BAA4B,SAAS5U,QACnC,GAAI/zD,KAWJ,OAVAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAItD,OAAOm3D,WAGX,OAFAn3D,OAAQk3D,OAAO5zD,OAAOipE,eACtBpV,YAAcn3D,MAAMu3C,OACbl0C,IAAIvO,KAAK,SAAU,WACxB,MAAOsO,QAAO1J,OAAO,WACnB,MAAOy9D,aAAY/zD,OAAQC,IAAI,GAAGukB,MAAM,UAK5CzkB,KAAMA,OAIV9d,OAAO6d,UAAU,iBAAkB,SAAU4oE,6BAE5ChjF,KAAKrD,MA2BR,WACE,GAAI+mF,iCAAiCnnF,MAErCmnF,iCAAkC,WAChC,GAAIrpE,KAUJ,OATAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI7Z,QAIJ,OAHAA,SAAU6Z,OAAOmpE,yBACjBppE,IAAIO,KAAK,WAAWwH,YAAY,UAChC/H,IAAIO,KAAK,qBAAuBna,QAAU,MAAM8hB,SAAS,UAClDnI,OAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAASgD,QAAQhD,OAAO,qBAExBA,OAAO6d,UAAU,2BAA4BspE,kCAE5C1jF,KAAKrD,MA2BR,WACE,GAAIinF,6BAA6BC,2BAA4BC,+BAAgC/2E,SAAUQ,MAAOhR,OAAQG,MACpH8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBR,SAAWpQ,KAAKD,MAAMqQ,SAEtBxQ,OAASgD,QAAQhD,OAAO,qBAExBqnF,4BAA8B,SAAUv3E,YAKtC,QAASu3E,6BAA4B50E,MAAOgI,UAAWkc,KAAMiP,QAASltB,GAAIpU,OAAQ6L,EAAGF,SAAUC,QAAS8L,MACtG,GAAIxY,QACJpD,MAAKqS,MAAQA,MACbrS,KAAKqa,UAAYA,UACjBra,KAAKu2B,KAAOA,KACZv2B,KAAKwlC,QAAUA,QACfxlC,KAAKsY,GAAKA,GACVtY,KAAKkE,OAASA,OACdlE,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAK4b,KAAOA,KACZ5b,KAAKqS,MAAMokB,YAAc,2CACzBz2B,KAAKqS,MAAM1G,KAAO3L,KAAK4b,KAAKnO,UAC5BrK,QAAUpD,KAAK02B,kBACftzB,QAAQD,KAAK,KAAMnD,KAAK2P,mBAAmBN,KAAKrP,OAYlD,MA/BA6C,QAAOokF,4BAA6Bv3E,YAEpCu3E,4BAA4B7sE,SAAW,SAAU,aAAc,UAAW,aAAc,eAAgB,eAAgB,KAAM,cAAe,aAAc,WAoB3J6sE,4BAA4B/3E,UAAUwnB,gBAAkB,WACtD,MAAO12B,MAAKsY,GAAG2qE,eAAel0D,OAAO5rB,KAAK,SAAUoE,OAClD,MAAO,UAAS07E,gBAEd,MADA17E,OAAM8K,MAAM4wE,eAAiBA,eACtBA,iBAERjjF,QAGEinF,6BAENr2E,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,YAEjC1X,OAAO2D,WAAW,8BAA+B0jF,6BAEjDC,2BAA6B,WAC3B,GAAIxpE,KAMJ,OALAA,MAAO,SAASC,OAAQC,IAAKC,QAC3B,MAAOF,QAAO7R,IAAI,WAAY,WAC5B,MAAO8R,KAAIgB,UAIblB,KAAMA,OAIV9d,OAAO6d,UAAU,sBAAuBypE,4BAExCC,+BAAiC,SAAS7mE,MAAO9Y,SAAUqlB,UACzD,GAAInP,MAAML,QAkCV,OAjCAA,UAAWhd,EAAEgd,SAAS,g+CACtBK,KAAO,SAASC,OAAQC,IAAKC,QAC3B,GAAI4H,OA6BJ,OA5BAA,QAAS,WACP,GAAIxY,KAAKsgB,IAOT,OANA3P,KAAIgB,MACJ3R,KACEg2E,eAAgBtlE,OAAOslE,gBAEzB11D,KAAOlQ,SAASpQ,KAChB2Q,IAAI2P,KAAKV,SAASU,MAAM5P,SACjBC,IAAIc,GAAG,SAAU,oBAAqB,SAAS/Q,OACpD,GAAIoQ,SAASC,UAAWopE,OAAQC,YAAaC,WAAYn7D,MAazD,OAZAA,QAASvpB,QAAQwE,QAAQuG,MAAMwa,eAC/Bk/D,YAAcl7D,OAAOmkB,QAAQ,qBAAqBppC,KAAK,SACvDkgF,OAASzpE,OAAOslE,eAAeoE,aAC/BC,WAAaF,OAAOG,aACpBH,OAAOG,aAAepiE,SAASgH,OAAOngB,MAAO,IAC7CgS,UAAY,WACV,MAAOxW,UAASG,OAAO,YAEzBoW,QAAU,WAER,MADAvW,UAASG,OAAO,SACTwkB,OAAOmkB,QAAQ,qBAAqBnyB,KAAK,eAAiBmpE,WAAa,KAAKxnC,KAAK,WAAW,IAE9Fx/B,MAAMgN,KAAK85D,QAAQjkF,KAAK6a,UAAWD,YAG9CJ,OAAO7R,IAAI,WAAY,WACrB,MAAO8R,KAAIgB,QAENxO,SAASuN,OAAQE,OAAOoQ,QAASxI,UAGxC/H,KAAMA,OAIV9d,OAAO6d,UAAU,2BAA4B,UAAW,aAAc,WAAY0pE,kCAEjF9jF,KAAKrD,MAsBR,WACE4C,QAAQhD,OAAO,uBAEdyD,KAAKrD,MAsBR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,qBAEvByD,KAAKrD,MAsBR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,yBAEvByD,KAAKrD,MAsBR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,iBAEvByD,KAAKrD,MAsBR,WACE4C,QAAQhD,OAAO,0BAEdyD,KAAKrD,MAsBR,WACE,GAAIJ,OAEJA,QAASgD,QAAQhD,OAAO,oBAEvByD,KAAKrD,MAsBR,WACE4C,QAAQhD,OAAO,qBAEdyD,KAAKrD,MAsBR,WACE4C,QAAQhD,OAAO,uBAEdyD,KAAKrD,MAsBR,WACE4C,QAAQhD,OAAO,yBAEdyD,KAAKrD,MAsBR,WACE,GAAIwnF,wBAEJA,yBAA0B,SAAS/V,OAAQnL,iBACzC,GAAI5oD,KAoBJ,OAnBAA,MAAO,SAASrL,MAAO8wB,GAAI1H,OACzB,GAAIqY,WAcJ,OAbAA,YAAa29B,OAAOh2C,MAAMgsD,kBAAkBp1E,OAC5C8wB,GAAGzkB,GAAG,QAAS,SAAS/Q,OACtB,MAAI5N,OAAM2Q,QAAQojC,WAAWjS,OAAO,OAAQ,WAC1Cl0B,MAAM2Q,iBACCjM,MAAM4B,OAAO,WAClB,MAAOqyD,iBAAgBl6C,OAAO,4BAC5BslB,QAAS,4BAET/P,KAAMmS,WAAW1uC,IAAI,aAN3B,SAWKiN,MAAMvG,IAAI,WAAY,WAC3B,MAAOq3B,IAAGvkB,UAIZlB,KAAMA,OAIV8pE,wBAAwBptE,SAAW,SAAU,qBAE7CxX,QAAQhD,OAAO,mBAAmB6d,UAAU,mBAAoB+pE,0BAE/DnkF,KAAKrD,MAsBR,WACE,GAAI0nF,2BAEJA,4BAA6B,WAC3B,GAAIhqE,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,SAEhCp4D,SACAq4D,kBACE52B,WAAY,IACZ6zC,SAAU,IACVnwC,SAAU,IACVhuC,KAAM,KAERjG,WAAY,aACZC,aAAc,KACdF,YAAa,gDACboa,KAAMA,OAIVgqE,2BAA2BttE,WAE3BxX,QAAQhD,OAAO,mBAAmB6d,UAAU,sBAAuBiqE,6BAElErkF,KAAKrD,MAsBR,WACE,GAAI4nF,qBAEJA,sBAAuB,WAGrB,QAASA,sBAAqBrmD,mBAAoB7mB,WAChD1a,KAAKuhC,mBAAqBA,mBAC1BvhC,KAAK0a,UAAYA,UACjB1a,KAAK8d,QACL9d,KAAK8d,KAAKna,YAAc3D,KAAK8zC,WAAWjS,OAAO,OAAQ,gBACvD7hC,KAAK8d,KAAK0vB,cAAgBxtC,KAAK8zC,WAAW1uC,KAAK,OAAQ,kBACvDpF,KAAK0D,MAAQ1D,KAAK0a,UAAUhT,QAAQ,oBAClCs8E,SAAUhkF,KAAK8zC,WAAW1uC,IAAI,QAC9BvE,KAAMwI,OAAOrJ,KAAK8zC,WAAW1uC,IAAI,iBAAiBggB,OAAOplB,KAAK0a,UAAUhT,QAAQ,sBAqCpF,MA/CAkgF,sBAAqBxtE,SAAW,uBAAwB,cAcxDwtE,qBAAqB14E,UAAU24E,SAAW,SAASp4C,MACjD,GAAIqE,WAEJ,OADAA,YAAa9zC,KAAK8zC,WAAWj4B,IAAI,WAAY4zB,MACtCzvC,KAAKw3C,UACV1D,WAAYA,cAIhB8zC,qBAAqB14E,UAAU,UAAY,WACzC,MAAOlP,MAAK2nF,UACV7zC,WAAY9zC,KAAK8zC,cAIrB8zC,qBAAqB14E,UAAUoe,KAAO,WACpC,GAAIwmB,WAaJ,OAZAA,YAAa9zC,KAAK8zC,WAAWj4B,IAAI,WAAW,GAC5C7b,KAAKw3C,UACH1D,WAAYA,aAEdA,WAAa9zC,KAAK8zC,WAAWlW,OAC3BgJ,UAAU,EACV/O,SAAS,IAEXic,WAAaA,WAAWg0C,SAAS,SAC/BnkF,YAAa3D,KAAK8d,KAAKna,YACvB6pC,gBAAiBxtC,KAAK8d,KAAK0vB,gBAEtBxtC,KAAKw3C,UACV1D,WAAYA,cAIT8zC,wBAIThlF,QAAQhD,OAAO,mBAAmB2D,WAAW,aAAcqkF,uBAE1DvkF,KAAKrD,MAsBR,WACE,GAAI+nF,oBAEJA,qBAAsB,WACpB,GAAIrqE,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,SAEhCp4D,SACAq4D,kBACE52B,WAAY,IACZ6zC,SAAU,IACVnwC,SAAU,IACVhuC,KAAM,KAERjG,WAAY,aACZC,aAAc,KACdF,YAAa,wCACboa,KAAMA,OAIVqqE,oBAAoB3tE,WAEpBxX,QAAQhD,OAAO,mBAAmB6d,UAAU,eAAgBsqE,sBAE3D1kF,KAAKrD,MAsBR,WACE,GAAIgoF,yBAEJA,0BAA2B,SAASvW,QAClC,GAAI/zD,KAuBJ,OAtBAA,MAAO,SAASrL,MAAO8wB,GAAI1H,OACzB,GAAIwsD,UAiBJ,OAhBAA,WAAYxW,OAAOh2C,MAAMysD,mBACzB/kD,GAAGzkB,GAAG,WAAY,SAAS1R,GAEzB,MADAA,GAAEsR,kBACK,IAET6kB,GAAGzkB,GAAG,OAAQ,SAAS1R,GACrB,GAAI+0B,aAIJ,OAHA/0B,GAAEi1B,kBACFj1B,EAAEsR,iBACFyjB,aAAe/0B,EAAE+0B,cAAiB/0B,EAAEk1B,eAAiBl1B,EAAEk1B,cAAcH,aAC9D1vB,MAAM4B,OAAO,WAClB,MAAOg0E,WAAU51E,OACf8vB,MAAOJ,aAAaI,YAInB9vB,MAAMvG,IAAI,WAAY,WAC3B,MAAOq3B,IAAGvkB,UAIZlB,KAAMA,OAIVsqE,yBAAyB5tE,SAAW,UAEpCxX,QAAQhD,OAAO,mBAAmB6d,UAAU,oBAAqBuqE,2BAEhE3kF,KAAKrD,MAsBR,WACE,GAAImoF,2BAA2Bp3E,UAE/BA,YAAa/Q,KAAKD,MAAMgR,WAExBo3E,0BAA4B,WAG1B,QAASA,2BAA0BztE,UAAW8qB,QAAS1/B,OAAQwU,QAASknB,uBAAwBh2B,gBAC9FxL,KAAK0a,UAAYA,UACjB1a,KAAKwlC,QAAUA,QACfxlC,KAAK8F,OAASA,OACd9F,KAAKsa,QAAUA,QACfta,KAAKwhC,uBAAyBA,uBAC9BxhC,KAAKwL,eAAiBA,eACtBxL,KAAKyvC,KAAOzvC,KAAKsa,QAAQlV,IAAI,kBAAmB,QAChDpF,KAAK4jF,YAAc5jF,KAAK8F,OAAOV,IAAI,oBAAqB,MACpDpF,KAAK4jF,cACP5jF,KAAK4jF,YAAc7yE,WAAW/Q,KAAK4jF,cAErC5jF,KAAK2mF,eAAiB3mF,KAAK4jF,YAAc5jF,KAAK0a,UAAUhT,QAAQ,8BAC9Dk8E,YAAa5jF,KAAK4jF,cACf,GACL7jF,MAAMyQ,wBAAwBxQ,KAAM,cAAe,SAAUuH,OAC3D,MAAO,YACL,MAAOA,OAAMi6B,uBAAuB+L,cAErCvtC,OACHD,MAAMyQ,wBAAwBxQ,KAAM,mBAAoB,SAAUuH,OAChE,MAAO,YACL,MAAOA,OAAMi6B,uBAAuB4mD,mBAErCpoF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,qBAAsB,SAAUuH,OAClE,MAAO,YACL,MAAOA,OAAMi6B,uBAAuB6mD,qBAErCroF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,qBAAsB,SAAUuH,OAClE,MAAO,YACL,MAAOA,OAAMi6B,uBAAuB8mD,qBAErCtoF,OA6EL,MAjHAmoF,2BAA0B/tE,SAAW,aAAc,aAAc,YAAa,aAAc,2BAA4B,oBAuCxH+tE,0BAA0Bj5E,UAAUq5E,qBAAuB,WACzD,MAAOvoF,MAAKwhC,uBAAuB+mD,sBAGrCJ,0BAA0Bj5E,UAAU0yB,cAAgB,SAASD,MAC3D,GAAIiF,SAEJ,OADAA,UAAyB,SAAd5mC,KAAKyvC,KACTzvC,KAAKwhC,uBAAuBI,cAAc5hC,KAAKyY,UAAWzY,KAAKwoF,MAAOxoF,KAAKwJ,KAAMm4B,KAAMiF,WAGhGuhD,0BAA0Bj5E,UAAUu5E,QAAU,SAASh5C,MAErD,MADAzvC,MAAKyvC,KAAOA,KACLzvC,KAAKsa,QAAQuB,IAAI,kBAAmB4zB,OAG7C04C,0BAA0Bj5E,UAAUw5E,yBAA2B,WAC7D,MAAO1oF,MAAKwhC,uBAAuBknD,4BAGrCP,0BAA0Bj5E,UAAUy5E,eAAiB,SAASxmD,OAC5D,MAAO9hC,GAAE6W,QAAQirB,MAAO,SAAU56B,OAChC,MAAO,UAASo6B,MACd,MAAOp6B,OAAMq6B,cAAcD,QAE5B3hC,QAGLmoF,0BAA0Bj5E,UAAU05E,gBAAkB,WACpD,MAAO5oF,MAAKwhC,uBAAuBonD,gBAAgB5oF,KAAKwJ,KAAMxJ,KAAKwoF,MAAOxoF,KAAKyY,YAGjF0vE,0BAA0Bj5E,UAAU6kC,iBAAmB,SAAS80C,oBAC9D,GAAIzpE,SAAS1b,KAKb,OAJAA,OAAQ1D,KAAK0a,UAAUhT,QAAQ,+CAC/B0X,QAAUpf,KAAK0a,UAAUhT,QAAQ,6CAC/Bs8E,SAAU6E,mBAAmBhnD,OAAO,OAAQ,WAEvC7hC,KAAKwlC,QAAQ1X,YAAYpqB,MAAO0b,SAASjc,KAAK,SAAUoE,OAC7D,MAAO,UAASwmB,aACd,GAAIhQ,SAASC,SAWb,OAVAD,SAAU,WAKR,MAJAqB,SAAU7X,MAAMmT,UAAUhT,QAAQ,sCAChCohF,aAAc1pE,UAEhB7X,MAAMi+B,QAAQ79B,OAAO,QAAS,KAAMyX,SAC7B2O,YAAYzB,QAAO,IAE5BtO,UAAY,WACV,MAAO+P,aAAYzB,UAEd/kB,MAAMi6B,uBAAuBuS,iBAAiB80C,mBAAoBthF,MAAMiC,MAAMrG,KAAK6a,UAAWD,WAEtG/d,QAGLmoF,0BAA0Bj5E,UAAU65E,kBAAoB,SAASj1C,WAAY0gC,UAC3E,MAAOx0E,MAAKwhC,uBAAuBunD,kBAAkB/oF,KAAKwJ,KAAMsqC,WAAY0gC,WAG9E2T,0BAA0Bj5E,UAAU85E,iBAAmB,SAASC,oBAC9D,MAAOjpF,MAAKwhC,uBAAuBwnD,iBAAiBC,mBAAoBjpF,KAAKwJ,OAG/E2+E,0BAA0Bj5E,UAAUyf,YAAc,WAChD,MAAI3uB,MAAKwL,eAAevD,QACfjI,KAAKwL,eAAe09E,cAAclpF,KAAKmpF,iBAEzC,GAGThB,0BAA0Bj5E,UAAUk6E,gBAAkB,WACpD,MAAOppF,MAAK2uB,eAAiB3uB,KAAKwhC,uBAAuB+L,YAAYp4B,MAGhEgzE,6BAITvlF,QAAQhD,OAAO,mBAAmB2D,WAAW,kBAAmB4kF,4BAE/D9kF,KAAKrD,MAsBR,WACE,GAAIqpF,0BAA0Bj5E,QAE9BA,UAAWpQ,KAAKD,MAAMqQ,SAEtBi5E,yBAA2B,WACzB,GAAI3rE,KAMJ,OALAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,MAAOr6D,UAASiC,MAAO,WAAY,SAAS/D,OAC1C,MAAOm8D,MAAKme,sBAIdv2E,SACAq4D,kBACElhE,KAAM,IACNg/E,MAAO,IACP/vE,UAAW,IACX0wE,eAAgB,KAElB5lF,WAAY,kBACZC,aAAc,KACdF,YAAa,oDACboa,KAAMA,OAIV2rE,yBAAyBjvE,WAEzBxX,QAAQhD,OAAO,mBAAmB6d,UAAU,oBAAqB4rE,2BAEhEhmF,KAAKrD,MAsBR,WACE,GAAIspF,wBACFzmF,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfk6E,wBAAyB,SAAU55E,YAKjC,QAAS45E,wBAAuB/nD,mBAAoB7Y,WAClD1oB,KAAKuhC,mBAAqBA,mBAC1BvhC,KAAK0oB,UAAYA,UACjB1oB,KAAKupF,aAAeruE,UAAU24B,OAC9B7zC,KAAKwpF,kBAAoB,EACzBxpF,KAAKypF,oBAAsBvuE,UAAU24B,OACrC7zC,KAAK0pF,qBAAsB,EAC3B1pF,KAAKuoF,wBACLxoF,MAAMyQ,wBAAwBxQ,KAAM,cAAe,SAAUuH,OAC3D,MAAO,YACL,MAAOA,OAAMgiF,eAEdvpF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,mBAAoB,SAAUuH,OAChE,MAAO,YACL,MAAOA,OAAMiiF,oBAEdxpF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,qBAAsB,SAAUuH,OAClE,MAAO,YACL,MAAOA,OAAMkiF,sBAEdzpF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,qBAAsB,SAAUuH,OAClE,MAAO,YACL,MAAOA,OAAMmiF,sBAEd1pF,OAuIL,MAtKA6C,QAAOymF,uBAAwB55E,YAE/B45E,uBAAuBlvE,SAAW,uBAAwB,cAgC1DkvE,uBAAuBp6E,UAAUw5E,yBAA2B,WAE1D,MADA1oF,MAAK0pF,qBAAuB1pF,KAAK0pF,oBAC1B1pF,KAAK2pF,cAGdL,uBAAuBp6E,UAAUy6E,WAAa,WAI5C,MAHA3pF,MAAKwpF,kBAAoBxpF,KAAKupF,aAAavpC,MAAM,SAAS4pC,IACxD,MAAOA,IAAG/nD,OAAO,OAAQ,oBAEvB7hC,KAAK0pF,oBACA1pF,KAAKypF,oBAAsBzpF,KAAKupF,aAEhCvpF,KAAKypF,oBAAsBzpF,KAAKupF,aAAaz8E,OAAO,SAAS88E,IAClE,OAAQA,GAAG/nD,OAAO,OAAQ,qBAKhCynD,uBAAuBp6E,UAAU0yB,cAAgB,SAASnpB,UAAW+vE,MAAOh/E,KAAMm4B,KAAMiF,UAItF,MAHgB,OAAZA,WACFA,UAAW,GAEN,GAAIz5B,SAAQ,SAAU5F,OAC3B,MAAO,UAAS5E,QAAS2D,QACvB,GAAIlD,QACJ,OAAImE,OAAMg6B,mBAAmBhjB,SAASojB,OACpCp6B,MAAMghF,qBAAqB7hF,KAAKi7B,MAChCv+B,QAAUmE,MAAMg6B,mBAAmB6S,OAAOzS,KAAM6mD,MAAO/vE,UAAWjP,MAC3DpG,QAAQD,KAAK,SAASw+B,MAC3B,GAAImS,WAaJ,OAZAvsC,OAAMghF,qBAAuBhhF,MAAMghF,qBAAqBz7E,OAAO,SAAS+8E,WACtE,MAAOA,WAAU72E,OAAS2uB,KAAKv8B,IAAI,UAErC0uC,WAAa54B,UAAU4uE,MACvBh2C,WAAaA,WAAWlW,OACtB+D,KAAMA,KACNiF,SAAUA,SACV/O,SAAS,IAEXtwB,MAAMgiF,aAAehiF,MAAMgiF,aAAa7iF,KAAKotC,YAC7CvsC,MAAMoiF,aACNpiF,MAAMmhB,UAAU5H,WAAW,qBACpBne,QAAQmxC,eAGVxtC,OAAOq7B,QAGjB3hC,QAGLspF,uBAAuBp6E,UAAU05E,gBAAkB,SAASp/E,KAAMg/E,MAAO/vE,WACvE,MAAOzY,MAAKuhC,mBAAmBxS,KAAKvlB,KAAMg/E,MAAO/vE,WAAWtV,KAAK,SAAUoE,OACzE,MAAO,UAAS46B,OAUd,MATA56B,OAAMgiF,aAAepnD,MAAM7hC,IAAI,SAASqhC,MACtC,GAAImS,WAEJ,OADAA,YAAa54B,UAAU4uE,MAChBh2C,WAAWlW,OAChB/F,SAAS,EACT+O,UAAU,EACVjF,KAAMA,SAGHp6B,MAAMoiF,eAEd3pF,QAGLspF,uBAAuBp6E,UAAU6kC,iBAAmB,SAAS80C,mBAAoBr/E,MAC/E,GAAIwU,UASJ,OARAA,WAAY,SAAUzW,OACpB,MAAO,YAIL,MAHAA,OAAMgiF,aAAehiF,MAAMgiF,aAAaz8E,OAAO,SAASgnC,YACtD,MAAOA,cAAe+0C,qBAEjBthF,MAAMoiF,eAEd3pF,MACIA,KAAKuhC,mBAAmB,UAAU/3B,KAAMq/E,mBAAmBhnD,OAAO,OAAQ,QAAQ1+B,KAAK6a,YAGhGsrE,uBAAuBp6E,UAAU65E,kBAAoB,SAASv/E,KAAMsqC,WAAY0gC,UAC9E,GAAIjnC,aAAaw8C,SAAU/nD,QAI3B,OAHA+nD,UAAW/pF,KAAKutC,YAAYy8C,UAAU,SAASJ,IAC7C,MAAOA,MAAO91C,aAEZi2C,WAAavV,UAGjBjnC,YAAcvtC,KAAKutC,YAAYxxB,OAAOguE,UACtCx8C,YAAcA,YAAYwZ,OAAOytB,SAAU,EAAG1gC,YAC9CvG,YAAcA,YAAYjtC,IAAI,SAASC,EAAGmR,GACxC,MAAOnR,GAAE0pF,OAAO,OAAQ,SAAUv4E,EAAI,KAExCswB,YACAuL,YAAYr2B,QAAQ,SAAU3P,OAC5B,MAAO,UAASusC,YACd,GAAI7uC,MAIJ,OAHAA,QACEwoC,MAAOqG,WAAWjS,OAAO,OAAQ,WAE5BG,SAASt7B,KAAKa,MAAMg6B,mBAAmBt8B,MAAM6uC,WAAWjS,OAAO,OAAQ,OAAQr4B,KAAMvE,UAE7FjF,OACImN,QAAQkL,IAAI2pB,UAAU7+B,KAAK,SAAUoE,OAC1C,MAAO,YAEL,MADAA,OAAMgiF,aAAeh8C,YACdhmC,MAAMoiF,eAEd3pF,QAvBH,QA0BFspF,uBAAuBp6E,UAAU85E,iBAAmB,SAASC,mBAAoBz/E,MAC/E,GAAI00C,OAAOgsC,cAAejlF,KAM1B,OALAi5C,OAAQl+C,KAAKupF,aAAaS,UAAU,SAASl2C,YAC3C,MAAOA,YAAWjS,OAAO,OAAQ,SAAWonD,mBAAmBpnD,OAAO,OAAQ,SAEhFqoD,cAAgBlqF,KAAKupF,aAAankF,IAAI84C,OACtCj5C,MAAQlF,MAAMkF,MAAMilF,cAAc9kF,IAAI,QAAS6jF,mBAAmB7jF,IAAI,SAClE6jF,mBAAmB7jF,IAAI,YACzBpF,KAAKupF,aAAevpF,KAAKupF,aAAa1tE,IAAIqiC,MAAO+qC,oBAC1CjpF,KAAK2pF,cAEL3pF,KAAKuhC,mBAAmBt8B,MAAMgkF,mBAAmBpnD,OAAO,OAAQ,OAAQr4B,KAAMvE,OAAO9B,KAAK,SAAUoE,OACzG,MAAO,YAEL,MADAA,OAAMgiF,aAAehiF,MAAMgiF,aAAa1tE,IAAIqiC,MAAO+qC,oBAC5C1hF,MAAMoiF,eAEd3pF,QAIAspF,wBAENvpF,MAAMkQ;AAETrN,QAAQhD,OAAO,mBAAmBsd,QAAQ,2BAA4BosE,yBAErEjmF,KAAKrD,MAsBR,WACE,GAAImqF,4BAEJA,6BAA8B,WAG5B,QAASA,6BAA4B5oD,oBACnCvhC,KAAKuhC,mBAAqBA,mBAmC5B,MAtCA4oD,6BAA4B/vE,SAAW,wBAMvC+vE,4BAA4Bj7E,UAAU0yB,cAAgB,SAASD,MAC7D,GAAImS,WAMJ,OALAA,YAAa54B,UAAUC,QACrBwmB,KAAMA,KACN3uB,KAAM2uB,KAAK3uB,KACXmC,KAAMwsB,KAAKxsB,OAETnV,KAAKuhC,mBAAmBhjB,SAASojB,QACnC3hC,KAAKutC,YAAcvtC,KAAKutC,YAAY7mC,KAAKotC,YACrC9zC,KAAKoqF,OACApqF,KAAKoqF,OACVt2C,WAAYA,aAJlB,QAUFq2C,4BAA4Bj7E,UAAUy5E,eAAiB,SAASxmD,OAC9D,MAAO9hC,GAAE6W,QAAQirB,MAAOniC,KAAK4hC,cAAcvyB,KAAKrP,QAGlDmqF,4BAA4Bj7E,UAAU6kC,iBAAmB,SAAS80C,oBAIhE,MAHA7oF,MAAKutC,YAAcvtC,KAAKutC,YAAYzgC,OAAO,SAASgnC,YAClD,MAAOA,cAAe+0C,qBAEpB7oF,KAAK2nF,SACA3nF,KAAK2nF,UACV7zC,WAAY+0C,qBAFhB,QAOKsB,+BAITvnF,QAAQhD,OAAO,mBAAmB2D,WAAW,oBAAqB4mF,8BAEjE9mF,KAAKrD,MAsBR,WACE,GAAIqqF,2BAEJA,4BAA6B,WAC3B,GAAI3sE,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,SAEhCp4D,SACAq4D,kBACEn9B,YAAa,IACb68C,MAAO,IACPzC,SAAU,KAEZpkF,WAAY,oBACZC,aAAc,KACdF,YAAa,wDACboa,KAAMA,OAIV2sE,2BAA2BjwE,WAE3BxX,QAAQhD,OAAO,mBAAmB6d,UAAU,sBAAuB4sE,6BAElEhnF,KAAKrD,MAsBR,WACE,GAAIsqF,4BAEJA,6BAA8B,SAAS7Y,QACrC,GAAI/zD,KA6BJ,OA5BAA,MAAO,SAASrL,MAAO8wB,GAAI1H,OACzB,GAAIlQ,SAuBJ,OAtBAA,UAAWkmD,OAAOh2C,MAAM8uD,uBACxBpnD,GAAGgtB,UACD7J,MAAO,qBACPkR,OAAQ,kBACRgzB,YAAa,eACbl6B,aAAa,EACbm6B,OAAQ,QACRj6B,QAAQ,EACRE,UAAW,UACXH,YAAa,2CAEfptB,GAAGzkB,GAAG,WAAY,SAAS/Q,MAAO+tC,IAChC,GAAI5H,YAAY0gC,QAGhB,OAFA1gC,YAAa4H,GAAGjqC,KAAKY,QAAQyhC,WAC7B0gC,SAAW94B,GAAGjqC,KAAKysC,QACZ7rC,MAAM4B,OAAO,WAClB,MAAOsX,UAASlZ,OACdyhC,WAAYA,WACZoK,MAAOs2B,eAINniE,MAAMvG,IAAI,WAAY,WAC3B,MAAOq3B,IAAGvkB,UAIZlB,KAAMA,OAIV4sE,4BAA4BlwE,SAAW,UAEvCxX,QAAQhD,OAAO,mBAAmB6d,UAAU,wBAAyB6sE,8BAEpEjnF,KAAKrD,MAsBR,WACE,GAAI0qF,oBAEJA,qBAAsB,SAASC,UAC7B,OACEjtE,KAAM,SAASrL,MAAO64C,KACpB,MAAOy/B,UAAS,WACd,MAAOz/B,KAAI,GAAGr9B,cAMtB68D,oBAAoBtwE,SAAW,YAE/BxX,QAAQhD,OAAO,mBAAmB6d,UAAU,eAAgBitE,sBAE3DrnF,KAAKrD,MAsBR,WACE,GAAI4qF,oBAEJA,qBAAsB,SAASnZ,QAC7B,GAAI/zD,KAeJ,OAdAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,GAAIwd,UASJ,OARAA,WAAYxW,OAAOh2C,MAAMovD,cACzB1nD,GAAGzkB,GAAG,SAAU,SAAS/Q,OACvB,MAAO0E,OAAM4B,OAAO,WAClB,MAAOg0E,WAAU51E,OACf8vB,MAAOx0B,MAAMwa,cAAcga,YAI1B9vB,MAAMvG,IAAI,WAAY,WAC3B,MAAOq3B,IAAGvkB,UAIZsP,QAAS,UACT1Q,SAAU,IACVE,KAAMA,OAIVktE,oBAAoBxwE,SAAW,UAE/BxX,QAAQhD,OAAO,mBAAmB6d,UAAU,eAAgBmtE,sBAE3DvnF,KAAKrD,MAsBR,WACE,GAAI8qF,kBAAkB/qF,KAEtBA,OAAQC,KAAKD,MAEb+qF,iBAAmB,SAASl/D,WAAYzR,mBAAoB4wE,eAAgBxlF,UAAWvC,YACrF,GAAI0a,KAqDJ,OApDAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,GAAIugB,cAAcC,MAAOC,UA0BzB,OAzBAA,YAAa,KACbD,MAAQE,UACRF,MAAMG,WAAW,WACf,MAAOnjE,GAAE,aAAakZ,UAAU,KAElC8pD,MAAMI,OAAO,WACX,MAAOlxE,oBAAmBmxE,mBAE5BN,aAAe,SAASp9E,KAAM9H,QAC5B,MAAKA,QAAO8H,KAAKhK,UAGjBqnF,MAAMM,YACJC,WAAW,EACXC,oBAAoB,EACpBC,iBAAiB,EACjBC,UAAW3oF,WAAW0E,QAAQ,oBAAsB,UACpDkkF,UAAW,UAAY5oF,WAAW0E,QAAQ,oBAC1CmkF,UAAW7oF,WAAW0E,QAAQ,oBAC9BokF,UAAW9oF,WAAW0E,QAAQ,oBAC9BqkF,oBAAoB,IAEtBd,MAAMe,UAAU,QAASjB,eAAe3lF,IAAIwI,KAAKhK,UAC1CqnF,MAAMp9E,SAdb,QAgBK+d,WAAW9f,IAAI,sBAAuB,SAAS6B,MAAOC,MAC3D,MAAKA,MAAKhK,SAAYuW,mBAAmB3M,mBAOzCy9E,MAAMG,WAAW,WACf,MAAOjxE,oBAAmBmxE,eAAe19E,KAAKhK,WAE5CgK,KAAKnK,OACAynF,WAAat/D,WAAW9f,IAAI,aAAc,WAI/C,MAHAqO,oBAAmB8xE,oBAAoB9oF,KAAK,SAAS2C,QACnD,MAAOklF,cAAap9E,KAAM9H,UAErBolF,eAGF/wE,mBAAmB8xE,oBAAoB9oF,KAAK,SAAS2C,QAC1D,MAAOklF,cAAap9E,KAAM9H,YAlB5BmlF,MAAMiB,YACFhB,YACFA,mBAsBN74E,SACAqL,KAAMA,OAIVotE,iBAAiB1wE,SAAW,aAAc,uBAAwB,mBAAoB,YAAa,cAEnGxX,QAAQhD,OAAO,mBAAmB6d,UAAU,YAAaqtE,mBAExDznF,KAAKrD,MAsBR,WACE,GAAImsF,gBACFtpF,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEf+8E,gBAAiB,SAAUz8E,YAKzB,QAASy8E,gBAAezxE,UAAWywB,yBACjCnrC,KAAK0a,UAAYA,UACjB1a,KAAKmrC,wBAA0BA,wBA+IjC,MArJAtoC,QAAOspF,eAAgBz8E,YAEvBy8E,eAAe/xE,SAAW,aAAc,6BAOxC+xE,eAAej9E,UAAUk9E,UAAY,WACnC,OACEC,UAAW,SAAU9kF,OACnB,MAAO,YACL,GAAI+kF,MAmCJ,OAlCAA,SAEIllF,QAAS,wCACTg0C,SAAU,OACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,iCAC/B6L,KAAMhM,MAAMmT,UAAUhT,QAAQ,mCAGhCN,QAAS,wBACTg0C,SAAU,QACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,iCAC/B6L,KAAMhM,MAAMmT,UAAUhT,QAAQ,mCAGhCN,QAAS,sBACTg0C,SAAU,QACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,iCAC/B6L,MAAOhM,MAAMmT,UAAUhT,QAAQ,iCAAkCH,MAAMmT,UAAUhT,QAAQ,qCAI1FugB,EAAE,wCAAwCgZ,GAAG,YAChDqrD,MAAM5lF,MACJU,QAAS,uCACTg0C,SAAU,SACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,iCAC/B6L,MAAOhM,MAAMmT,UAAUhT,QAAQ,iCAAkCH,MAAMmT,UAAUhT,QAAQ,qCAIxF4kF,QAERtsF,MACH45C,QAAS,SAAUryC,OACjB,MAAO,YACL,GAAI+kF,MAmCJ,OAlCAA,SAEIllF,QAAS,WACTg0C,SAAU,SACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,+BAC/B6L,MAAOhM,MAAMmT,UAAUhT,QAAQ,+BAAgCH,MAAMmT,UAAUhT,QAAQ,mCAGzFN,QAAS,uBACTg0C,SAAU,SACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,+BAC/B6L,KAAMhM,MAAMmT,UAAUhT,QAAQ,iCAGhCN,QAAS,WACTg0C,SAAU,OACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,+BAC/B6L,KAAMhM,MAAMmT,UAAUhT,QAAQ,iCAIhCH,MAAM4jC,wBAAwB8E,MAAM,WACtCq8C,MAAM5lF,MACJU,QAAS,UACTg0C,SAAU,QACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,+BAC/B6L,KAAMhM,MAAMmT,UAAUhT,QAAQ,iCAI7B4kF,QAERtsF,MACH65C,OAAQ,SAAUtyC,OAChB,MAAO,YACL,GAAI+kF,MA4BJ,OA3BAA,SAEIllF,QAAS,sBACTg0C,SAAU,SACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,8BAC/B6L,KAAMhM,MAAMmT,UAAUhT,QAAQ,gCAGhCN,QAAS,oBACTg0C,SAAU,QACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,8BAC/B6L,KAAMhM,MAAMmT,UAAUhT,QAAQ,gCAIhCH,MAAM4jC,wBAAwB8E,MAAM,WACtCq8C,MAAM5lF,MACJU,QAAS,aACTg0C,SAAU,SACVx3C,SACEF,MAAO6D,MAAMmT,UAAUhT,QAAQ,8BAC/B6L,MAAOhM,MAAMmT,UAAUhT,QAAQ,8BAA+BH,MAAMmT,UAAUhT,QAAQ,kCAIrF4kF,QAERtsF,QAIPmsF,eAAej9E,UAAU9J,IAAM,SAAS4N,MACtC,GAAIu5E,SAASC,QAGb,OAFAA,UAAWxsF,KAAKosF,YAChBG,QAAUC,SAASx5E,MAAM3P,KAAKrD,MACvBK,EAAEC,IAAIisF,QAAS,SAAS96E,MAC7B,GAAI8b,KAaJ,OAZAA,MAAO,GACH9b,KAAK7N,QAAQF,QACf6pB,MAAQ,OAAS9b,KAAK7N,QAAQF,MAAQ,SAEpCrD,EAAE2tC,QAAQv8B,KAAK7N,QAAQ2P,MACzBlT,EAAE6W,QAAQzF,KAAK7N,QAAQ2P,KAAM,SAASA,MACpC,MAAOga,OAAQ,MAAQha,KAAO,SAGhCga,MAAQ,MAAQ9b,KAAK7N,QAAQ2P,KAAO,OAEtC9B,KAAKw5E,MAAQ19D,KACN9b,QAIJ06E,gBAENpsF,MAAMkQ,SAETrN,QAAQhD,OAAO,mBAAmBsd,QAAQ,mBAAoBivE,iBAE7D9oF,KAAKrD,MA2BR,WACE,GAAIysF,0BAEJA,2BAA4B,SAAS9jE,yBACnC,GAAIjL,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,UAEzBje,SAAU,KACVnL,SACA7O,aAAc,KACdD,WAAY,WAIV,MAHAvD,MAAKiqB,MAAQ,WACX,MAAOtB,yBAAwBb,MAAO,GAEjC9R,OAAO02E,iBAAiB1sF,MAC7B8nB,MACE1iB,IAAK,WACH,MAAOujB,yBAAwBb,OAGnCpkB,OACE0B,IAAK,WACH,MAAOujB,yBAAwBjlB,QAGnC2mB,MACEjlB,IAAK,WACH,MAAOujB,yBAAwB0B,UAKvC3M,KAAMA,KACNpa,YAAa,wDAIjBmpF,0BAA0BryE,SAAW,6BAErCxX,QAAQhD,OAAO,mBAAmB6d,UAAU,qBAAsBgvE,4BAEjEppF,KAAKrD,MAsBR,WACE,GAAI2sF,yBACF9pF,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfu9E,yBAA0B,SAAUj9E,YAGlC,QAASi9E,2BACP3sF,KAAK8nB,MAAO,EACZ9nB,KAAK0D,MAAQ,GACb1D,KAAKqqB,KAAO,GASd,MAdAxnB,QAAO8pF,wBAAyBj9E,YAQhCi9E,wBAAwBz9E,UAAUkb,KAAO,SAAS1mB,MAAO2mB,MAGvD,MAFArqB,MAAK8nB,MAAO,EACZ9nB,KAAK0D,MAAQA,MACN1D,KAAKqqB,KAAOA,MAGdsiE,yBAEN5sF,MAAMkQ,SAETrN,QAAQhD,OAAO,mBAAmBsd,QAAQ,4BAA6ByvE,0BAEtEtpF,KAAKrD,MAsBR,WACE,GAAI4sF,2BAEJA,4BAA6B,SAASC,oBACpC,GAAInvE,KAmBJ,OAlBAA,MAAO,SAASrL,MAAO8wB,GAAI1H,OACzB,MAAOppB,OAAMK,OAAO,UAAW,SAASzK,SACtC,GAAI6kF,MAAMC,WAEV,QADA9kF,QAAUiT,UAAUC,OAAOlT,WAI3B8kF,YAAc9kF,QAAQ7C,IAAI,gBACtB2nF,aACF5pD,GAAG7wB,KAAK,MAAOy6E,aACR5pD,GAAG7E,IAAI,aAAc,MAE5BwuD,KAAOD,mBAAmBG,sBAAsB/kF,QAAQ7C,IAAI,QAAS6C,QAAQ7C,IAAI,OACjF+9B,GAAG7wB,KAAK,MAAOw6E,KAAKhyD,KACbqI,GAAG7E,IAAI,aAAcwuD,KAAKjqD,SAVnC,WAeFnlB,KAAMA,KACNrL,OACEpK,QAAS,0BAKf2kF,2BAA2BxyE,SAAW,wBAEtCxX,QAAQhD,OAAO,mBAAmB6d,UAAU,sBAAuBmvE,6BAElEvpF,KAAKrD,MAsBR,WACE,GAAIitF,6BAEJA,8BAA+B,SAASJ,oBACtC,GAAInvE,KAmBJ,OAlBAA,MAAO,SAASrL,MAAO8wB,GAAI1H,OACzB,MAAOppB,OAAMK,OAAO,UAAW,SAASzK,SACtC,GAAI6kF,MAAMC,WAEV,QADA9kF,QAAUiT,UAAUC,OAAOlT,WAI3B8kF,YAAc9kF,QAAQ7C,IAAI,kBACtB2nF,aACF5pD,GAAG7wB,KAAK,MAAOy6E,aACR5pD,GAAG7E,IAAI,aAAc,MAE5BwuD,KAAOD,mBAAmBG,sBAAsB/kF,QAAQ7C,IAAI,QAAS6C,QAAQ7C,IAAI,OACjF+9B,GAAG7wB,KAAK,MAAOw6E,KAAKhyD,KACbqI,GAAG7E,IAAI,aAAcwuD,KAAKjqD,SAVnC,WAeFnlB,KAAMA,KACNrL,OACEpK,QAAS,4BAKfglF,6BAA6B7yE,SAAW,wBAExCxX,QAAQhD,OAAO,mBAAmB6d,UAAU,wBAAyBwvE,+BAEpE5pF,KAAKrD,MAsBR,WACE,GAAIktF,sBAEJA,uBAAwB,WAGtB,QAASA,uBAAsB1hF,eAAgB86D,iBAC7CtmE,KAAKwL,eAAiBA,eACtBxL,KAAKsmE,gBAAkBA,gBACvBtmE,KAAKiI,QAAU,KACfjI,KAAKs7C,KAAOpgC,UAAU4uE,MAmGxB,MAzGAoD,uBAAsB9yE,SAAW,mBAAoB,qBASrD8yE,sBAAsBh+E,UAAUkb,KAAO,WAIrC,MAHApqB,MAAKiI,QAAUjI,KAAKwL,eAAevD,QACnCjI,KAAK63E,OAAS73E,KAAKmtF,oBACnBntF,KAAKotF,sBACEptF,KAAKqtF,uBAGdH,sBAAsBh+E,UAAU0xB,KAAO,WAErC,MADA5gC,MAAKiI,QAAU,KACRjI,KAAKs7C,SAGd4xC,sBAAsBh+E,UAAU7I,OAAS,WACvC,MAAOrG,MAAKsmE,gBAAgBl6C,OAAO,iBACjCslB,QAAS,8BAIbw7C,sBAAsBh+E,UAAUk+E,oBAAsB,WACpD,GAAIE,mBAEJ,OADAA,oBAAqBttF,KAAKutF,sBACtBD,mBACKttF,KAAKiI,QAAUjI,KAAKiI,QAAQ4T,IAAI,qBAAsByxE,oBAD/D,QAKFJ,sBAAsBh+E,UAAUm+E,oBAAsB,WAgBpD,MAfArtF,MAAKs7C,KAAOpgC,UAAU4uE,KACpBlwC,SAAS,EACTC,QAAQ,EACRrmB,QAAQ,EACRO,MAAM,IAEJ/zB,KAAKiI,QAAQ7C,IAAI,yBAAqF,KAA1DpF,KAAKiI,QAAQ7C,IAAI,kBAAkBe,QAAQ,aACzFnG,KAAKs7C,KAAOt7C,KAAKs7C,KAAKz/B,IAAI,WAAW,IAEnC7b,KAAKiI,QAAQ7C,IAAI,wBAAoF,KAA1DpF,KAAKiI,QAAQ7C,IAAI,kBAAkBe,QAAQ,aACxFnG,KAAKs7C,KAAOt7C,KAAKs7C,KAAKz/B,IAAI,UAAU,IAElC7b,KAAKiI,QAAQ7C,IAAI,wBAAwF,KAA9DpF,KAAKiI,QAAQ7C,IAAI,kBAAkBe,QAAQ,iBACxFnG,KAAKs7C,KAAOt7C,KAAKs7C,KAAKz/B,IAAI,UAAU,IAElC7b,KAAKiI,QAAQ7C,IAAI,sBAA0F,KAAlEpF,KAAKiI,QAAQ7C,IAAI,kBAAkBe,QAAQ,mBAC/EnG,KAAKs7C,KAAOt7C,KAAKs7C,KAAKz/B,IAAI,QAAQ,GAD3C,QAKFqxE,sBAAsBh+E,UAAUi+E,kBAAoB,WAClD,GAAIK,cAAcC,YAAaC,eAAgBj3D,YAAak3D,kBAqB5D,OApBAl3D,aAAcz2B,KAAKwL,eAAexH,QAClC2pF,mBAAqB3tF,KAAKwL,eAAemiF,mBACzCH,aAAeG,mBAAmB34E,YAAY,WAC9Cy4E,YAAcE,mBAAmB34E,YAAY,WACxB,KAAjBw4E,cAAuC,KAAhBC,eAEvBC,eADkB,KAAhBD,aAAsBD,aAAeC,YACtB,UAEA,UAGD,mBAAhBh3D,cACqB,YAAnBi3D,gBAAmD,WAAnBA,eAClCj3D,YAAci3D,eACL1tF,KAAKiI,QAAQ7C,IAAI,0BAA4BpF,KAAKiI,QAAQ7C,IAAI,uBACvEqxB,YAAc,WACJz2B,KAAKiI,QAAQ7C,IAAI,yBAA2BpF,KAAKiI,QAAQ7C,IAAI,yBACvEqxB,YAAc,WAGXA,aAGTy2D,sBAAsBh+E,UAAUq+E,oBAAsB,WACpD,GAAIK,SAAS1nF,GACb,IAA6C,cAAzClG,KAAKiI,QAAQ7C,IAAI,oBACnBwoF,QAAU,yBACL,IAA6C,UAAzC5tF,KAAKiI,QAAQ7C,IAAI,oBAC1BwoF,QAAU,wBACL,CAAA,GAA6C,UAAzC5tF,KAAKiI,QAAQ7C,IAAI,oBAErB,MAA6C,WAAzCpF,KAAKiI,QAAQ7C,IAAI,oBACnBpF,KAAKiI,QAAQ7C,IAAI,+BAEjB,EAJPwoF,SAAU,uBAcZ,MAPE1nF,KADElG,KAAKiI,QAAQ7C,IAAI,+BACbpF,KAAKiI,QAAQ7C,IAAI,QAAU,IAAMrF,MAAMiR,QAAQhR,KAAKiI,QAAQ7C,IAAI,gCAEhEpF,KAAKiI,QAAQ7C,IAAI,QAEoB,UAAzCpF,KAAKiI,QAAQ7C,IAAI,sBACnBc,IAAMA,IAAID,QAAQ,KAAM,KAEnB2nF,QAAU1nF,KAGZgnF,yBAITtqF,QAAQhD,OAAO,mBAAmB2D,WAAW,cAAe2pF,wBAE3D7pF,KAAKrD,MAsBR,WACE,GAAI6tF,sBAAsB9tF,KAE1BA,OAAQC,KAAKD,MAEb8tF,qBAAuB,SAASriF,eAAgB86D,iBAC9C,GAAI5oD,KA0BJ,OAzBAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,GAAIqjB,cAYJ,OAXAA,eAAgB,WACd,MAAItiF,gBAAevD,QACVwiE,KAAKrgD,OAELqgD,KAAK7pC,QAGhBvuB,MAAMK,OAAO,WACX,MAAOlH,gBAAevD,SACpB6lF,eACJz7E,MAAM07E,GAAGC,OAAQ,EACV/lE,EAAE/nB,QAAQwe,GAAG,SAAU,WAC5B,GAAI08B,SAEJ,OADAA,UAAWnzB,EAAE/nB,QAAQihC,YACjBia,SAAW,KAAO/oC,MAAM07E,GAAGC,SAAU,GACvC37E,MAAM07E,GAAGC,OAAQ,EACV37E,MAAMiY,WACO,IAAX8wB,UAAkB/oC,MAAM07E,GAAGC,SAAU,GAC9C37E,MAAM07E,GAAGC,OAAQ,EACV37E,MAAMiY,WAFR,WAOTjY,SACA9O,WAAY,cACZC,aAAc,KACdF,YAAa,4CACboa,KAAMA,OAIVmwE,qBAAqBzzE,SAAW,mBAAoB,qBAEpDxX,QAAQhD,OAAO,mBAAmB6d,UAAU,gBAAiBowE,uBAE5DxqF,KAAKrD,MA2BR,WACE,GAAIiuF,8CAEJA,+CAAgD,SAAS9wE,SACvD,GAAIO,KAKJ,OAJAA,MAAO,SAASrL,MAAO8wB,GAAI1H,OAEzB,MADAppB,OAAM67E,iBAAmB/wE,QAAQ/X,IAAI,oBAC9BiN,MAAM87E,kBAAoBhxE,QAAQ/X,IAAI,uBAG7CoY,SAAU,KACVnL,SACAqL,KAAMA,KACNpa,YAAa,0GAIjBV,QAAQhD,OAAO,mBAAmB6d,UAAU,0CAA2C,YAAawwE,iDAEnG5qF,KAAKrD,MAsBR,WACE,GAAIouF,qBAEJA,sBAAuB,WAGrB,QAASA,sBAAqBj0E,oBAC5Bna,KAAKma,mBAAqBA,mBAC1Bna,KAAK2L,KAAO3L,KAAKma,mBAAmB1M,UACpCzN,KAAKquF,aAAc,EACnBruF,KAAK63B,SAAU,EAuCjB,MA7CAu2D,sBAAqBh0E,SAAW,wBAShCg0E,qBAAqBl/E,UAAUo/E,wBAA0B,WACvD,MAAOtuF,MAAKquF,aAAc,GAG5BD,qBAAqBl/E,UAAUq/E,yBAA2B,WACxD,MAAOvuF,MAAKquF,aAAc,GAG5BD,qBAAqBl/E,UAAUs/E,WAAa,WAC1C,GAAIprF,QAYJ,OAXApD,MAAK63B,SAAU,EAIbz0B,QAHGpD,KAAKyR,KAAKg9E,SAGHzuF,KAAK0uF,YAFL1uF,KAAK2uF,UAIjBvrF,QAAQ,WAAW,SAAUmE,OAC3B,MAAO,YACL,MAAOA,OAAMswB,SAAU,IAExB73B,OACIoD,SAGTgrF,qBAAqBl/E,UAAUy/E,QAAU,WACvC,MAAO3uF,MAAKg9D,WAAW75D,KAAK,SAAUoE,OACpC,MAAO,YACL,MAAOA,OAAMgnF,6BAEdvuF,QAGLouF,qBAAqBl/E,UAAUw/E,UAAY,WACzC,MAAO1uF,MAAKk9D,cAGPkxB,wBAITxrF,QAAQhD,OAAO,mBAAmB2D,WAAW,aAAc6qF,uBAE1D/qF,KAAKrD,MAsBR,WACE,GAAI4uF,oBAEJA,qBAAsB,WACpB,OACEv8E,SACA9O,WAAY,aACZmnE,kBACEj5D,KAAM,IACNurD,SAAU,IACVE,WAAY,KAEd15D,aAAc,KACdF,YAAa,4CAIjBV,QAAQhD,OAAO,mBAAmB6d,UAAU,eAAgBmxE,sBAE3DvrF,KAAKrD,MAsBR,WACE,GAAI6uF,sBAEJA,uBAAwB,WAGtB,QAASA,uBAAsB10E,mBAAoBuO,WACjD1oB,KAAKma,mBAAqBA,mBAC1Bna,KAAK0oB,UAAYA,UACjB1oB,KAAK2L,KAAO3L,KAAKma,mBAAmB1M,UACpCzN,KAAKquF,aAAc,EACnBruF,KAAK63B,SAAU,EAyDjB,MAhEAg3D,uBAAsBz0E,SAAW,uBAAwB,cAUzDy0E,sBAAsB3/E,UAAUo/E,wBAA0B,WACxD,MAAOtuF,MAAKquF,aAAc,GAG5BQ,sBAAsB3/E,UAAUq/E,yBAA2B,WACzD,MAAOvuF,MAAKquF,aAAc,GAG5BQ,sBAAsB3/E,UAAU4/E,aAAe,WAC7C,MAAO9uF,MAAK0oB,UAAU5H,WAAW,cAAe9gB,KAAKyR,OAGvDo9E,sBAAsB3/E,UAAU6/E,SAAW,WACzC,GAAI/7E,MAAM0a,KACV,OAAK1tB,MAAKyR,MAGVuB,KAAOhT,KAAKyR,KAAKgsE,MACjB/vD,OACE8E,YAAa,YACbgB,OAAQ,eACR1E,MAAO,eAEFpB,MAAM1a,OARJ,IAWX67E,sBAAsB3/E,UAAU8/E,YAAc,WAC5C,GAAI5rF,QAYJ,OAXApD,MAAK63B,SAAU,EAIbz0B,QAHGpD,KAAKyR,KAAKw9E,WAGHjvF,KAAKkvF,WAFLlvF,KAAKmvF,SAIjB/rF,QAAQ,WAAW,SAAUmE,OAC3B,MAAO,YACL,MAAOA,OAAMswB,SAAU,IAExB73B,OACIoD,SAGTyrF,sBAAsB3/E,UAAUigF,OAAS,WACvC,MAAOnvF,MAAKo9D,UAAUj6D,KAAK,SAAUoE,OACnC,MAAO,YACL,MAAOA,OAAMgnF,6BAEdvuF,QAGL6uF,sBAAsB3/E,UAAUggF,SAAW,WACzC,MAAOlvF,MAAKq9D,aAGPwxB,yBAITjsF,QAAQhD,OAAO,mBAAmB2D,WAAW,cAAesrF,wBAE3DxrF,KAAKrD,MAsBR,WACE,GAAIovF,qBAEJA,sBAAuB,WACrB,OACE/8E,SACA9O,WAAY,cACZmnE,kBACEj5D,KAAM,IACN2rD,QAAS,IACTC,UAAW,KAEb75D,aAAc,KACdF,YAAa,SAASmO,KAAM49E,YAC1B,MAAO,wCAA0CA,WAAWC,YAAc,WAKhF1sF,QAAQhD,OAAO,mBAAmB6d,UAAU,gBAAiB2xE,uBAE5D/rF,KAAKrD,MAsBR,WACE,GAAIuvF,8BAEJA,+BAAgC,WAG9B,QAASA,+BAA8B70E,WACrC1a,KAAK0a,UAAYA,UACjB1a,KAAKwvF,SAAU,EACfxvF,KAAKqT,OACHo8E,KAAMzvF,KAAK0a,UAAUhT,QAAQ,yBAC7BgoF,MAAO1vF,KAAK0a,UAAUhT,QAAQ,0BAC9BioF,KAAM3vF,KAAK0a,UAAUhT,QAAQ,yBAC7B2Q,IAAKrY,KAAK0a,UAAUhT,QAAQ,8BAwBhC,MAjCA6nF,+BAA8Bn1E,SAAW,cAazCm1E,8BAA8BrgF,UAAU0gF,YAAc,WACpD,MAAO5vF,MAAKqT,MAAMrT,KAAK6vF,iBAGzBN,8BAA8BrgF,UAAU4Y,KAAO,WAC7C,MAAO9nB,MAAKwvF,SAAU,GAGxBD,8BAA8BrgF,UAAU+a,MAAQ,WAC9C,MAAOjqB,MAAKwvF,SAAU,GAGxBD,8BAA8BrgF,UAAU4gF,QAAU,SAAStmF,MAGzD,MAFAxJ,MAAK6vF,eAAiBrmF,KACtBxJ,KAAKwvF,SAAU,EACRxvF,KAAK+vF,UACVD,QAAS9vF,KAAK6vF,kBAIXN,iCAIT3sF,QAAQhD,OAAO,iBAAiB2D,WAAW,sBAAuBgsF,gCAEjElsF,KAAKrD,MAsBR,WACE,GAAIgwF,6BAEJA,8BAA+B,WAC7B,GAAItyE,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,UAEzBl4B,WAAY,sBACZC,aAAc,KACdknE,kBAAkB,EAClBpnE,YAAa,yEACb+O,OACEw9E,eAAgB,WAChBE,SAAU,KAEZryE,KAAMA,OAIVsyE,6BAA6B51E,WAE7BxX,QAAQhD,OAAO,iBAAiB6d,UAAU,wBAAyBuyE,+BAElE3sF,KAAKrD,MAsBR,WACE,GAAIiwF,4BAEJA,6BAA8B,WAG5B,QAASA,6BAA4BC,yBACnClwF,KAAKkwF,wBAA0BA,wBAC/BnwF,MAAMyQ,wBAAwBxQ,KAAM,WAAY,SAAUuH,OACxD,MAAO,YACL,MAAOA,OAAM2oF,wBAAwBC,gBAEtCnwF,OACHA,KAAKkwF,wBAAwBE,aAiB/B,MA1BAH,6BAA4B71E,SAAW,6BAYvC61E,4BAA4B/gF,UAAU0J,aAAe,SAAS9L,QAC5D,MAAO9M,MAAK+vF,UACVjjF,OAAQA,OACRiD,EAAG/P,KAAK+P,KAIZkgF,4BAA4B/gF,UAAUmhF,aAAe,WACnD,MAAOrwF,MAAK+vF,UACVjjF,OAAQ9M,KAAK8M,OACbiD,EAAG/P,KAAK+P,KAILkgF,+BAITrtF,QAAQhD,OAAO,iBAAiB2D,WAAW,oBAAqB0sF,8BAE/D5sF,KAAKrD,MAsBR,WACE,GAAIswF,2BAEJA,4BAA6B,WAC3B,GAAI5yE,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,SAEhClnE,WAAY,oBACZC,aAAc,KACdF,YAAa,mEACbonE,kBAAkB,EAClBr4D,OACEtC,EAAG,IACHjD,OAAQ,IACRijF,SAAU,KAEZryE,KAAMA,OAIV4yE,2BAA2Bl2E,WAE3BxX,QAAQhD,OAAO,iBAAiB6d,UAAU,sBAAuB6yE,6BAEhEjtF,KAAKrD,MAsBR,WACE,GAAIuwF,mCAEJA,oCAAqC,WAGnC,QAASA,sCACPvwF,KAAKwwF,aAAuD,IAAxCxwF,KAAK8vF,QAAQ3pF,QAAQ,eACzCnG,KAAKywF,iBAA+D,IAA5CzwF,KAAK8vF,QAAQ3pF,QAAQ,mBA4B/C,MAhCAoqF,oCAAmCn2E,WAOnCm2E,mCAAmCrhF,UAAUwhF,SAAW,WAGtD,MAFA1wF,MAAKwwF,cAAe,EACpBxwF,KAAKywF,kBAAmB,EACjBzwF,KAAK2wF,WAAW,0BAGzBJ,mCAAmCrhF,UAAU0hF,aAAe,WAG1D,MAFA5wF,MAAKywF,kBAAmB,EACxBzwF,KAAKwwF,cAAe,EACbxwF,KAAK2wF,WAAW,8BAGzBJ,mCAAmCrhF,UAAUyhF,WAAa,SAASnnF,MAQjE,MAPY,OAARA,OACFA,KAAO,IAEJA,OACHxJ,KAAKwwF,cAAe,EACpBxwF,KAAKywF,kBAAmB,GAEnBzwF,KAAK+vF,UACVD,QAAStmF,QAIN+mF,sCAIT3tF,QAAQhD,OAAO,iBAAiB2D,WAAW,2BAA4BgtF,qCAEtEltF,KAAKrD,MAsBR,WACE,GAAI6wF,kCAEJA,mCAAoC,WAClC,GAAInzE,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,UAEzBl4B,WAAY,2BACZC,aAAc,KACdknE,kBAAkB,EAClBpnE,YAAa,mFACb+O,OACE09E,SAAU,IACVD,QAAS,KAEXpyE,KAAMA,OAIVmzE,kCAAkCz2E,WAElCxX,QAAQhD,OAAO,iBAAiB6d,UAAU,6BAA8BozE,oCAEvExtF,KAAKrD,MAsBR,WACE,GAAI8wF,2BAEJA,4BAA6B,WAG3B,QAASA,4BAA2BZ,yBAClClwF,KAAKkwF,wBAA0BA,wBAC/BnwF,MAAMyQ,wBAAwBxQ,KAAM,WAAY,SAAUuH,OACxD,MAAO,YACL,MAAOA,OAAM2oF,wBAAwBa,WAEtC/wF,OACHA,KAAKkwF,wBAAwBc,gBAG/B,MAZAF,4BAA2B12E,SAAW,6BAY/B02E,8BAITluF,QAAQhD,OAAO,iBAAiB2D,WAAW,mBAAoButF,6BAE9DztF,KAAKrD,MAsBR,WACE,GAAIixF,0BAEJA,2BAA4B,WAC1B,GAAIvzE,KAEJ,OADAA,MAAO,SAASrL,MAAO8wB,GAAI1H,UAEzBl4B,WAAY,mBACZC,aAAc,KACdF,YAAa,+DACb+O,SACAqL,KAAMA,OAIVuzE,0BAA0B72E,WAE1BxX,QAAQhD,OAAO,iBAAiB6d,UAAU,qBAAsBwzE,4BAE/D5tF,KAAKrD,MAsBR,WACE,GAAIkxF,qBAEJA,sBAAuB,WACrB,OACE5tF,YAAa,mDACb+O,OACEwlB,QAAS,IACTs5D,YAAa,IACbrB,QAAS,OAKfoB,qBAAqB92E,WAErBxX,QAAQhD,OAAO,iBAAiB6d,UAAU,gBAAiByzE,uBAE1D7tF,KAAKrD,MAsBR,WACE,GAAIoxF,qBAEJA,sBAAuB,WAGrB,QAASA,sBAAqBlB,yBAC5BlwF,KAAKkwF,wBAA0BA,wBAC/BnwF,MAAMyQ,wBAAwBxQ,KAAM,cAAe,SAAUuH,OAC3D,MAAO,YACL,MAAOA,OAAM2oF,wBAAwBmB,aAEtCrxF,OACHA,KAAK6vF,eAAiB,OACtB7vF,KAAK8jE,SAAW9jE,KAAKsxF,aA4BvB,MAtCAF,sBAAqBh3E,SAAW,6BAahCg3E,qBAAqBliF,UAAUqiF,MAAQ,WAGrC,MAFAvxF,MAAK63B,SAAU,EACf73B,KAAK8jE,SAAW9jE,KAAKsxF,aACdtxF,KAAKkwF,wBAAwBsB,iBAClC1tB,SAAU9jE,KAAK8jE,WACd3gE,KAAK,SAAUoE,OAChB,MAAO,YACL,MAAOA,OAAMswB,SAAU,IAExB73B,QAGLoxF,qBAAqBliF,UAAU4gF,QAAU,SAAStmF,MAEhD,MADAxJ,MAAK6vF,eAAiBrmF,KACfxJ,KAAKuxF,SAGdH,qBAAqBliF,UAAUoiF,WAAa,SAAS9nF,MACnD,MAA4B,QAAxBxJ,KAAK6vF,eACA,kBAEA,wBAA0B7vF,KAAK6vF,gBAInCuB,wBAITxuF,QAAQhD,OAAO,iBAAiB2D,WAAW,aAAc6tF,uBAExD/tF,KAAKrD,MAsBR,WACE,GAAIyxF,oBAEJA,qBAAsB,WACpB,GAAI/zE,KAIJ,OAHAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,MAAOA,MAAK8mB,UAGZhuF,WAAY,aACZC,aAAc,KACdF,YAAa,mDACb+O,SACAqL,KAAMA,OAIV+zE,oBAAoBr3E,WAEpBxX,QAAQhD,OAAO,iBAAiB6d,UAAU,eAAgBg0E,sBAEzDpuF,KAAKrD,MAsBR,WACE,GAAI0xF,oBAEJA,qBAAsB,WAGpB,QAASA,qBAAoBxB,yBAC3BlwF,KAAKkwF,wBAA0BA,wBAC/BnwF,MAAMyQ,wBAAwBxQ,KAAM,cAAe,SAAUuH,OAC3D,MAAO,YACL,MAAOA,OAAM2oF,wBAAwByB,YAEtC3xF,OACHA,KAAK6vF,eAAiB,OACtB7vF,KAAK8jE,SAAW9jE,KAAKsxF,aA4BvB,MAtCAI,qBAAoBt3E,SAAW,6BAa/Bs3E,oBAAoBxiF,UAAUqiF,MAAQ,WAGpC,MAFAvxF,MAAK63B,SAAU,EACf73B,KAAK8jE,SAAW9jE,KAAKsxF,aACdtxF,KAAKkwF,wBAAwB0B,gBAClC9tB,SAAU9jE,KAAK8jE,WACd3gE,KAAK,SAAUoE,OAChB,MAAO,YACL,MAAOA,OAAMswB,SAAU,IAExB73B,QAGL0xF,oBAAoBxiF,UAAU4gF,QAAU,SAAStmF,MAE/C,MADAxJ,MAAK6vF,eAAiBrmF,KACfxJ,KAAKuxF,SAGdG,oBAAoBxiF,UAAUoiF,WAAa,WACzC,MAA4B,QAAxBtxF,KAAK6vF,eACA,cAEA,oBAAsB7vF,KAAK6vF,gBAI/B6B,uBAIT9uF,QAAQhD,OAAO,iBAAiB2D,WAAW,YAAamuF,sBAEvDruF,KAAKrD,MAsBR,WACE,GAAI6xF,mBAEJA,oBAAqB,WACnB,GAAIn0E,KAIJ,OAHAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,MAAOA,MAAK8mB,UAGZhuF,WAAY,YACZC,aAAc,KACdF,YAAa,iDACb+O,SACAqL,KAAMA,OAIVm0E,mBAAmBz3E,WAEnBxX,QAAQhD,OAAO,iBAAiB6d,UAAU,cAAeo0E,qBAExDxuF,KAAKrD,MAsBR,WACE,GAAI8xF,uBAEJA,wBAAyB,WAGvB,QAASA,wBAAuBjiF,SAAUC,QAASvE,eAAgBmP,WACjE,GAAI/W,aAAaD,KACjB1D,MAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjBhX,MAAQ1D,KAAK0a,UAAUhT,QAAQ,uBAC/B/D,YAAc3D,KAAK0a,UAAUhT,QAAQ,6BACrC1H,KAAKuL,eAAe0C,OAAOvK,MAAOC,aASpC,MAnBAmuF,wBAAuB13E,SAAW,cAAe,aAAc,mBAAoB,cAanF03E,uBAAuB5iF,UAAU6iF,SAAW,SAAShiF,GACnD,GAAI7J,IAEJ,OADAA,KAAMlG,KAAK8P,QAAQnN,QAAQ,mBACpB3C,KAAK6P,SAASxJ,OAAO,OAAQ0J,GAAGtN,KAAKyD,MAGvC4rF,0BAITlvF,QAAQhD,OAAO,iBAAiB2D,WAAW,eAAgBuuF,yBAE1DzuF,KAAKrD,MAsBR,WACE,GAAIgyF,yBAEJA,0BAA2B,WAGzB,QAASA,0BAAyBC,YAAa/B,wBAAyBxtF,MAAO6I,eAAgBmP,WAC7F,GAAI/W,aAAaD,KACjB1D,MAAKiyF,YAAcA,YACnBjyF,KAAKkwF,wBAA0BA,wBAC/BlwF,KAAK0C,MAAQA,MACb1C,KAAKuL,eAAiBA,eACtBvL,KAAK0a,UAAYA,UACjB1a,KAAKk7B,KAAO,EACZn7B,MAAMyQ,wBAAwBxQ,KAAM,eAAgB,SAAUuH,OAC5D,MAAO,YACL,MAAOA,OAAM2oF,wBAAwBgC,eAEtClyF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,iBAAkB,SAAUuH,OAC9D,MAAO,YACL,MAAOA,OAAM2oF,wBAAwBiC,iBAEtCnyF,OACHA,KAAK+P,EAAI/P,KAAKiyF,YAAY1+E,KAC1BvT,KAAK8M,OAAS9M,KAAKiyF,YAAYnlF,QAAU,MACzC9M,KAAK8vF,QAAU9vF,KAAKiyF,YAAsB,UAAK,GAC/CjyF,KAAKoyF,eAAgB,EACrBpyF,KAAKqyF,aAAc,EACnBryF,KAAKsyF,mBAAoB,EACzB5uF,MAAQ1D,KAAK0a,UAAUhT,QAAQ,8BAC/B/D,YAAc3D,KAAK0a,UAAUhT,QAAQ,oCACrC1H,KAAKuL,eAAe0C,OAAOvK,MAAOC,aA6FpC,MAzHAquF,0BAAyB53E,SAAW,eAAgB,4BAA6B,SAAU,mBAAoB,cA+B/G43E,yBAAyB9iF,UAAUqiF,MAAQ,WAGzC,MAFAvxF,MAAKk7B,KAAO,EACZl7B,KAAKkwF,wBAAwBqC,kBACtBvyF,KAAKqG,UAGd2rF,yBAAyB9iF,UAAUsjF,oBAAsB,WACvD,MAAIxyF,MAAKoyF,cAAT,QAGApyF,KAAKoyF,eAAgB,EACdpyF,KAAKuxF,QAAQpuF,KAAK,SAAUoE,OACjC,MAAO,YACL,MAAOA,OAAM6qF,eAAgB,IAE9BpyF,SAGLgyF,yBAAyB9iF,UAAUujF,eAAiB,WAClD,MAAIzyF,MAAKqyF,YAAT,QAGAryF,KAAKqyF,aAAc,EACZryF,KAAKuxF,QAAQpuF,KAAK,SAAUoE,OACjC,MAAO,YACL,MAAOA,OAAM8qF,aAAc,IAE5BryF,SAGLgyF,yBAAyB9iF,UAAU4gC,SAAW,WAC5C,MAAI9vC,MAAKsyF,kBAAT,QAGAtyF,KAAKsyF,mBAAoB,EACzBtyF,KAAKk7B,OACEl7B,KAAKqG,SAASlD,KAAK,SAAUoE,OAClC,MAAO,YACL,MAAOA,OAAM+qF,mBAAoB,IAElCtyF,SAGLgyF,yBAAyB9iF,UAAU7I,OAAS,WAC1C,GAAIyG,QAAQ5I,MAQZ,OAPA4I,QAAS9M,KAAK0yF,YACdxuF,QACEg3B,KAAMl7B,KAAKk7B,KACXnrB,EAAG/P,KAAK+P,EACR+zD,SAAU9jE,KAAK8vF,SAEjBzvF,EAAEyxD,OAAO5tD,OAAQ4I,QACV9M,KAAKkwF,wBAAwByC,YAAYzuF,SAGlD8tF,yBAAyB9iF,UAAUwjF,UAAY,WAC7C,MAAoB,WAAhB1yF,KAAK8M,QAEL8lF,uBAAuB,GAEA,UAAhB5yF,KAAK8M,QAEZoa,sBAAsB,GAEC,WAAhBlnB,KAAK8M,QAEZqa,qBAAqB,OAM3B6qE,yBAAyB9iF,UAAU2jF,eAAiB,SAAS/lF,OAAQiD,GAOnE,MANA/P,MAAK8M,OAASA,OACd9M,KAAK+P,EAAIA,EACT/P,KAAK0C,MAAMowF,cACThmF,OAAQ9M,KAAK8M,OACbyG,KAAMvT,KAAK+P,IAEN/P,KAAKwyF,uBAGdR,yBAAyB9iF,UAAU6jF,cAAgB,SAASjD,SAK1D,MAJA9vF,MAAK8vF,QAAUA,QACf9vF,KAAK0C,MAAMowF,cACThvB,SAAUgsB,UAEL9vF,KAAKyyF,kBAGPT,4BAITpvF,QAAQhD,OAAO,iBAAiB2D,WAAW,iBAAkByuF,2BAE5D3uF,KAAKrD,MAsBR,WACE,GAAIgzF,wBAEJA,yBAA0B,WACxB,GAAIt1E,KAIJ,OAHAA,MAAO,SAASrL,MAAOjL,QAASq0B,MAAOgvC;AACrC,MAAOA,MAAK8mB,UAGZhuF,WAAY,iBACZC,aAAc,KACdka,KAAMA,OAIVs1E,wBAAwB54E,WAExBxX,QAAQhD,OAAO,iBAAiB6d,UAAU,mBAAoBu1E,0BAE7D3vF,KAAKrD,MAsBR,WACE,GAAIizF,yBAAyBlzF,MAC3B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbkzF,wBAA0B,SAAUvjF,YAWlC,QAASujF,yBAAwB36E,GAAI46E,iBACnClzF,KAAKsY,GAAKA,GACVtY,KAAKkzF,gBAAkBA,gBACvBlzF,KAAKmzF,WAAaj4E,UAAU24B,OAC5B7zC,KAAKozF,YAAcl4E,UAAU24B,OAC7B7zC,KAAKqzF,UAAYn4E,UAAU24B,OAC3B7zC,KAAKszF,cAAgBp4E,UAAU24B,OAC/B7zC,KAAKuzF,eAAiB,EACtBvzF,KAAKwzF,SAAWxzF,KAAKkzF,gBAAgBO,UAAUpkF,KAAKrP,KAAKkzF,iBACzDnzF,MAAMyQ,wBAAwBxQ,KAAM,YAAa,SAAUuH,OACzD,MAAO,YACL,MAAOA,OAAM4rF,aAEdnzF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,aAAc,SAAUuH,OAC1D,MAAO,YACL,MAAOA,OAAM6rF,cAEdpzF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,WAAY,SAAUuH,OACxD,MAAO,YACL,MAAOA,OAAM8rF,YAEdrzF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,eAAgB,SAAUuH,OAC5D,MAAO,YACL,MAAOA,OAAM+rF,gBAEdtzF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,iBAAkB,SAAUuH,OAC9D,MAAO,YACL,MAAOA,OAAMmsF,kBAEd1zF,OACHD,MAAMyQ,wBAAwBxQ,KAAM,gBAAiB,SAAUuH,OAC7D,MAAO,YACL,MAAOA,OAAMgsF,iBAEdvzF,OAhDL,GAAI2zF,gBAwHJ,OAtHA9wF,QAAOowF,wBAAyBvjF,YAEhCujF,wBAAwB74E,SAAW,cAAe,qBAElDu5E,iBACEC,eAAe,GA4CjBX,wBAAwB/jF,UAAU0iF,eAAiB,SAAS1tF,QAC1D,GAAI2vF,QAEJ,OADAA,SAAUxzF,EAAEwC,UAAW8wF,gBAAiBzvF,QACjClE,KAAKsY,GAAGC,SAASu7E,YAAYD,SAAS,GAAO1wF,KAAK,SAAUoE,OACjE,MAAO,UAASoM,QACd,GAAIzM,MAAMqR,QAIV,OAHArR,MAAOyM,OAAOzM,KAAK0K,MAAM,EAAG,GAC5B2G,SAAW2C,UAAUC,OAAOjU,MAC5BqR,SAAWA,SAASjY,IAAIiH,MAAMisF,UACvBjsF,MAAM4rF,WAAa56E,WAE3BvY,QAGLizF,wBAAwB/jF,UAAUsiF,gBAAkB,SAASttF,QAC3D,GAAI2vF,QAEJ,OADAA,SAAUxzF,EAAEwC,UAAW8wF,gBAAiBzvF,QACjClE,KAAKsY,GAAGC,SAASu7E,YAAYD,SAAS,GAAO1wF,KAAK,SAAUoE,OACjE,MAAO,UAASoM,QACd,GAAIzM,MAAMqR,QAIV,OAHArR,MAAOyM,OAAOzM,KAAK0K,MAAM,EAAG,GAC5B2G,SAAW2C,UAAUC,OAAOjU,MAC5BqR,SAAWA,SAASjY,IAAIiH,MAAMisF,UACvBjsF,MAAM6rF,YAAc76E,WAE5BvY,QAGLizF,wBAAwB/jF,UAAU8hF,cAAgB,WAChD,GAAI6C,QAGJ,OAFAA,SAAUxzF,EAAEwC,UAAW8wF,iBACvBE,QAAQE,aAAc,EACf/zF,KAAKsY,GAAGC,SAASu7E,YAAYD,SAAS,GAAO1wF,KAAK,SAAUoE,OACjE,MAAO,UAASoM,QACd,GAAIzM,MAAMqR,QAIV,OAHArR,MAAOyM,OAAOzM,KAAK0K,MAAM,EAAG,GAC5B2G,SAAW2C,UAAUC,OAAOjU,MAC5BqR,SAAWA,SAASjY,IAAIiH,MAAMisF,UACvBjsF,MAAM8rF,UAAY96E,WAE1BvY,QAGLizF,wBAAwB/jF,UAAUqjF,gBAAkB,WAClD,MAAOvyF,MAAKszF,cAAgBp4E,UAAU24B,QAGxCo/C,wBAAwB/jF,UAAUkhF,WAAa,WAC7C,MAAOpwF,MAAKsY,GAAG6rC,MAAMjjC,WAAW/d,KAAK,SAAUoE,OAC7C,MAAO,UAAS2Z,UACd,MAAO3Z,OAAMgsF,eAAiBryE,SAAS2gB,OAAO,WAAY,YAE3D7hC,QAGLizF,wBAAwB/jF,UAAUyjF,YAAc,SAASzuF,QACvD,GAAI2vF,QAEJ,OADAA,SAAUxzF,EAAEwC,UAAW8wF,gBAAiBzvF,QACjClE,KAAKsY,GAAGC,SAASu7E,YAAYD,SAAS1wF,KAAK,SAAUoE,OAC1D,MAAO,UAASoM,QACd,GAAI4E,SAIJ,OAHAhR,OAAMmsF,kBAAoB//E,OAAO3O,QAAQ,qBACzCuT,SAAW2C,UAAUC,OAAOxH,OAAOzM,MACnCqR,SAAWA,SAASjY,IAAIiH,MAAMisF,UACvBjsF,MAAM+rF,cAAgB/rF,MAAM+rF,cAAc/kF,OAAOgK,YAEzDvY,QAGEizF,yBAENlzF,MAAMkQ,SAETrN,QAAQhD,OAAO,iBAAiBsd,QAAQ,4BAA6B+1E,0BAEpE5vF,KAAKrD,MAsBR,WACE,GAAIg0F,uBAAuBj0F,MACzBsP,KAAO,SAASC,GAAIC,IAAK,MAAO,YAAY,MAAOD,IAAGE,MAAMD,GAAIE,aAChE5M,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbi0F,sBAAwB,SAAUtkF,YAKhC,QAASskF,uBAAsB/B,YAAagC,oBAAqB/zF,OAAQia,mBAAoBtK,SAAUC,QAASokF,SAAUzwF,QACxH,GAAI0wF,UAAUvuF,OACd5F,MAAKiyF,YAAcA,YACnBjyF,KAAKi0F,oBAAsBA,oBAC3Bj0F,KAAKE,OAASA,OACdF,KAAKma,mBAAqBA,mBAC1Bna,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACf9P,KAAKk0F,SAAWA,SAChBl0F,KAAKyD,OAASA,OACdzD,KAAKo0F,uBAAyB/kF,KAAKrP,KAAKo0F,uBAAwBp0F,MAChEA,KAAKq0F,qBAAuBhlF,KAAKrP,KAAKq0F,qBAAsBr0F,MAC5DA,KAAKs0F,UAAYjlF,KAAKrP,KAAKs0F,UAAWt0F,MACtCA,KAAKyD,OAAOoK,OAAM,GAClB7N,KAAKu0F,eAAiBv0F,KAAKiyF,YAAYuC,YACvCx0F,KAAKy0F,OAASz0F,KAAKiyF,YAAYyC,MAC/B10F,KAAKq0F,uBACLr0F,KAAK20F,MAAQ30F,KAAKma,mBAAmB1M,UACrCzN,KAAK40F,aAAe,KACpBhvF,QAAUQ,mBAAmBpG,KAAK6P,SAAS3J,OAC3CiuF,SAAWn0F,KAAK8P,QAAQnN,QAAQ,SAChC3C,KAAK60F,wBAA0BV,SAAW,SAAWvuF,QACrD7F,MAAMyQ,wBAAwBxQ,KAAM,OAAQ,SAAUuH,OACpD,MAAO,YACL,MAAOA,OAAMotF,QAEd30F,OACHD,MAAMyQ,wBAAwBxQ,KAAM,cAAe,SAAUuH,OAC3D,MAAO,YACL,MAAOA,OAAMqtF,eAEd50F,OA2CL,MA9EA6C,QAAOmxF,sBAAuBtkF,YAE9BskF,sBAAsB55E,SAAW,eAAgB,wBAAyB,UAAW,uBAAwB,YAAa,aAAc,oBAAqB,YAoC7J45E,sBAAsB9kF,UAAUolF,UAAY,SAASQ,kBACnD,GAAIlvF,QAEJ,OADAA,SAAUkvF,iBAAiB1vF,IAAI,YACxBpF,KAAKE,OAAO4nB,KAAKliB,QAAS,UAGnCouF,sBAAsB9kF,UAAUmlF,qBAAuB,WACrD,MAAOr0F,MAAKi0F,oBAAoBc,oBAAoB/0F,KAAKu0F,eAAgBv0F,KAAKy0F,QAAQtxF,KAAK,SAAUoE,OACnG,MAAO,UAASL,MAEd,MADAK,OAAMqtF,aAAe1tF,KAAK9B,IAAI,eAC1B8B,KAAK9B,IAAI,aACJmC,MAAM+sF,UAAUptF,MAEhBK,MAAM9D,OAAOwyC,eAGvBj2C,OAAO,SAAS,SAAUuH,OAC3B,MAAO,UAASqI,KAEd,MADArI,OAAM9D,OAAOwyC,aACN1uC,MAAM2sF,SAASvuF,SAASiK,OAEhC5P,QAGLg0F,sBAAsB9kF,UAAUkhD,OAAS,WACvC,MAAOpwD,MAAKE,OAAOgqC,QAAQ8qD,QAG7BhB,sBAAsB9kF,UAAUklF,uBAAyB,WACvD,MAAOp0F,MAAKi0F,oBAAoBgB,0BAA0Bj1F,KAAKu0F,eAAgBv0F,KAAKy0F,QAAQtxF,KAAK,SAAUoE,OACzG,MAAO,UAASL,MACd,MAAOK,OAAM+sF,UAAUptF,QAExBlH,OAAO,SAAS,SAAUuH,OAC3B,MAAO,UAASqI,KACd,MAAOrI,OAAM2sF,SAASvuF,SAASiK,OAEhC5P,QAGEg0F,uBAENj0F,MAAMmQ,YAETtN,QAAQhD,OAAO,qBAAqB2D,WAAW,cAAeywF,wBAE7D3wF,KAAKrD,MAsBR,WACE,GAAIk1F,qBACFryF,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEf8lF,qBAAsB,SAAUxlF,YAK9B,QAASwlF,qBAAoB58E,IAC3BtY,KAAKsY,GAAKA,GAWZ,MAhBAzV,QAAOqyF,oBAAqBxlF,YAE5BwlF,oBAAoB96E,SAAW,eAM/B86E,oBAAoBhmF,UAAU6lF,oBAAsB,SAASI,cAAeT,OAC1E,MAAO10F,MAAKsY,GAAG88E,aAAaL,oBAAoBI,cAAeT,QAGjEQ,oBAAoBhmF,UAAU+lF,0BAA4B,SAASE,cAAeT,OAChF,MAAO10F,MAAKsY,GAAG88E,aAAaH,0BAA0BE,cAAeT,QAGhEQ,qBAENn1F,MAAMkQ,SAETrN,QAAQhD,OAAO,qBAAqBsd,QAAQ,wBAAyBg4E,sBAEpE7xF,KAAKrD,MAsBR,WACE,GAAIq1F,iBACFxyF,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfimF,iBAAkB,SAAU3lF,YAK1B,QAAS2lF,iBAAgB/uB,iBACvBtmE,KAAKsmE,gBAAkBA,gBASzB,MAdAzjE,QAAOwyF,gBAAiB3lF,YAExB2lF,gBAAgBj7E,SAAW,qBAM3Bi7E,gBAAgBnmF,UAAUomF,aAAe,WACvC,MAAOt1F,MAAKsmE,gBAAgBl6C,OAAO,kBACjCslB,QAAS,sDAIN2jD,iBAENt1F,MAAMkQ,SAETrN,QAAQhD,OAAO,iBAAiBsd,QAAQ,oBAAqBm4E,kBAE5DhyF,KAAKrD,MAsBR,WACE,GAAIu1F,cAEJA,eAAgB,SAASC,QAASxyF,YAChC,GAAI0a,KAkBJ,OAjBAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAGhC,MAFAp4D,OAAM07E,MACN17E,MAAM07E,GAAG0H,KAAOpjF,MAAMojF,KACfpjF,MAAM07E,GAAG2H,YAAc,WAC5B,GAAIrjF,MAAM07E,GAAG0H,KAAM,CACjB,GAAmC,gBAA/BpjF,MAAM07E,GAAG0H,KAAKrwF,IAAI,SACpB,MAAOpC,YAAW0E,QAAQ,oBAE5B,IAAmC,UAA/B2K,MAAM07E,GAAG0H,KAAKrwF,IAAI,SACpB,MAAOpC,YAAW0E,QAAQ,cAE5B,IAAmC,WAA/B2K,MAAM07E,GAAG0H,KAAKrwF,IAAI,SACpB,MAAOpC,YAAW0E,QAAQ,oBAMhCpE,YAAa,wBACb+O,OACEojF,KAAQ,WAEV/3E,KAAMA,OAIV63E,cAAcn7E,SAAW,aAAc,cAEvCxX,QAAQhD,OAAO,aAAa6d,UAAU,SAAU83E,gBAE/ClyF,KAAKrD,MAsBR,WACE,GAAI21F,eAEJA,gBAAiB,WAGf,QAASA,gBAAex7E,mBAAoBtK,SAAUC,SACpD9P,KAAKma,mBAAqBA,mBAC1Bna,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QACV9P,KAAKma,mBAAmB1M,WAC3BzN,KAAK6P,SAASpN,KAAKzC,KAAK8P,QAAQnN,QAAQ,aAI5C,MAXAgzF,gBAAev7E,SAAW,uBAAwB,YAAa,cAWxDu7E,kBAIT/yF,QAAQhD,OAAO,aAAa2D,WAAW,OAAQoyF,iBAE9CtyF,KAAKrD,MAsBR,WACE,GAAI41F,aAAanlF,QACf5N,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfqB,SAAUzQ,KAAKD,MAAM0Q,QAErBmlF,YAAc,SAAUlmF,YAKtB,QAASkmF,aAAYJ,QAASl9E,GAAI46E,iBAChClzF,KAAKw1F,QAAUA,QACfx1F,KAAKsY,GAAKA,GACVtY,KAAKkzF,gBAAkBA,gBA+HzB,MAtIArwF,QAAO+yF,YAAalmF,YAEpBkmF,YAAYx7E,SAAW,aAAc,cAAe,qBAQpDw7E,YAAY1mF,UAAU2mF,mCAAqC,SAASC,eAAgBC,cAClF,GAAIC,0BAA0BC,QAAS32B,WAAY42B,QAiEnD,OAhEAF,0BAA2B,SAAUzuF,OACnC,MAAO,UAASkuF,KAAMU,SACpB,GAAIlpF,KAAKhF,QAAS/B,GAWlB,OAVA+B,SAAU8tF,aAAa3wF,IAAI0P,OAAO2gF,KAAKrwF,IAAI,aAC3C6H,KACEhF,QAASA,QAAQ7C,IAAI,QACrB6N,IAAKwiF,KAAKrwF,IAAI,QAEhBc,IAAMqB,MAAMiuF,QAAQ7yF,QAAQ,WAAawzF,QAAU,UAAWlpF,KAC9DwoF,KAAOA,KAAK55E,IAAI,MAAO3V,KACvBuvF,KAAOA,KAAK55E,IAAI,cAAe5T,QAAQ7C,IAAI,SAC3CqwF,KAAOA,KAAK55E,IAAI,iBAAkB5T,QAAQ7C,IAAI,iBAC9CqwF,KAAOA,KAAK55E,IAAI,QAASs6E,WAG1Bn2F,MACHs/D,WAAaw2B,eAAe1wF,IAAI,cAC5Bk6D,WAAWl6D,IAAI,iBACjB6wF,QAAU32B,WAAWl6D,IAAI,eAAe9E,IAAI,SAASm1F,MACnD,MAAOO,0BAAyBP,KAAM,iBAExCn2B,WAAaA,WAAWzjD,IAAI,cAAeo6E,UAEzC32B,WAAWl6D,IAAI,WACjB6wF,QAAU32B,WAAWl6D,IAAI,SAAS9E,IAAI,SAASm1F,MAC7C,MAAOO,0BAAyBP,KAAM,WAExCn2B,WAAaA,WAAWzjD,IAAI,QAASo6E,UAEnC32B,WAAWl6D,IAAI,YACjB6wF,QAAU32B,WAAWl6D,IAAI,UAAU9E,IAAI,SAASm1F,MAC9C,MAAOO,0BAAyBP,KAAM,YAExCn2B,WAAaA,WAAWzjD,IAAI,SAAUo6E,UAExCC,SAAWJ,eAAe1wF,IAAI,YAC1B8wF,SAAS9wF,IAAI,iBACf6wF,QAAUC,SAAS9wF,IAAI,eAAe0H,OAAO,SAAS2oF,MACpD,QAASM,aAAa3wF,IAAI0P,OAAO2gF,KAAKrwF,IAAI,eAE5C6wF,QAAUA,QAAQ31F,IAAI,SAASm1F,MAC7B,MAAOO,0BAAyBP,KAAM,iBAExCS,SAAWA,SAASr6E,IAAI,cAAeo6E,UAErCC,SAAS9wF,IAAI,WACf6wF,QAAUC,SAAS9wF,IAAI,SAAS0H,OAAO,SAAS2oF,MAC9C,QAASM,aAAa3wF,IAAI0P,OAAO2gF,KAAKrwF,IAAI,eAE5C6wF,QAAUA,QAAQ31F,IAAI,SAASm1F,MAC7B,MAAOO,0BAAyBP,KAAM,WAExCS,SAAWA,SAASr6E,IAAI,QAASo6E,UAE/BC,SAAS9wF,IAAI,YACf6wF,QAAUC,SAAS9wF,IAAI,UAAU0H,OAAO,SAAS2oF,MAC/C,QAASM,aAAa3wF,IAAI0P,OAAO2gF,KAAKrwF,IAAI,eAE5C6wF,QAAUA,QAAQ31F,IAAI,SAASm1F,MAC7B,MAAOO,0BAAyBP,KAAM,YAExCS,SAAWA,SAASr6E,IAAI,SAAUo6E,UAEpCH,eAAiBA,eAAej6E,IAAI,aAAcyjD,YAC3Cw2B,eAAiBA,eAAej6E,IAAI,WAAYq6E,WAGzDN,YAAY1mF,UAAUknF,kBAAoB,SAASxmE,QACjD,GAAIymE,uBAAuBC,qBAAsBh3B,WAAYi3B,2BAA4BryF,OAAQsyF,UAAWT,aAAcU,gBAAiBP,SAAUQ,sBAAuBC,qBAAsBC,2BAA4Bd,cA4C9N,OA3CAC,cAAe76E,UAAU4uE,MACzB2M,gBAAkBz2F,KAAKkzF,gBAAgB2D,oBAAoBjnE,QAAQzsB,KAAK,SAASoV,UAC/E,MAAOw9E,cAAe76E,UAAUC,OAAO1K,QAAQ8H,SAASnB,OAAQ,SAAS0/E,GACvE,MAAOA,GAAE/+E,QAGbunD,WAAapkD,UAAU4uE,MACvB5lF,QACE6yF,mBAAmB,EACnB1oE,YAAauB,QAEf4mE,WACEvpD,WAAW,EACX5e,YAAauB,QAEf2mE,2BAA6Bv2F,KAAKsY,GAAGka,YAAY+vD,kBAAkBiU,WAAWrzF,KAAK,SAASqvB,aAC1F,MAAO8sC,YAAaA,WAAWzjD,IAAI,cAAe2W,eAEpD8jE,qBAAuBt2F,KAAKsY,GAAGwW,MAAMyzD,kBAAkBr+E,QAAQf,KAAK,SAAS2rB,OAC3E,MAAOwwC,YAAaA,WAAWzjD,IAAI,QAASiT,SAE9CunE,sBAAwBr2F,KAAKsY,GAAGkb,OAAO+uD,kBAAkBr+E,QAAQf,KAAK,SAASqwB,QAC7E,MAAO8rC,YAAaA,WAAWzjD,IAAI,SAAU2X,UAE/CtvB,QACE6yF,mBAAmB,EACnBx3D,SAAU3P,QAEZ4mE,WACEvpD,WAAW,EACX1N,SAAU3P,QAEZsmE,SAAWh7E,UAAU4uE,MACrB8M,2BAA6B52F,KAAKsY,GAAGka,YAAY+vD,kBAAkBiU,WAAWrzF,KAAK,SAASqvB,aAC1F,MAAO0jE,UAAWA,SAASr6E,IAAI,cAAe2W,eAEhDmkE,qBAAuB32F,KAAKsY,GAAGwW,MAAMyzD,kBAAkBr+E,QAAQf,KAAK,SAAS2rB,OAC3E,MAAOonE,UAAWA,SAASr6E,IAAI,QAASiT,SAE1C4nE,sBAAwB12F,KAAKsY,GAAGkb,OAAO+uD,kBAAkBr+E,QAAQf,KAAK,SAASqwB,QAC7E,MAAO0iE,UAAWA,SAASr6E,IAAI,SAAU2X,UAE3CsiE,eAAiB56E,UAAU4uE,MACpB38E,QAAQkL,KAAKo+E,gBAAiBF,2BAA4BD,qBAAsBD,sBAAuBO,2BAA4BD,qBAAsBD,wBAAwBvzF,KAAK,SAAUoE,OACrM,MAAO,YAIL,MAHAuuF,gBAAiBA,eAAej6E,IAAI,aAAcyjD,YAClDw2B,eAAiBA,eAAej6E,IAAI,WAAYq6E,UAChDJ,eAAiBvuF,MAAMsuF,mCAAmCC,eAAgBC,gBAG3E/1F,QAGE41F,aAEN71F,MAAMkQ,SAETrN,QAAQhD,OAAO,aAAasd,QAAQ,gBAAiB04E,cAEpDvyF,KAAKrD,MAsBR,WACE,GAAIg3F,yBAEJA,0BAA2B,SAAS78E,mBAAoB+4E,iBACtD,GAAIz1E,WAAWC,IAef,OAdAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAKhC,MAJAp4D,OAAM07E,MACNhuF,MAAMyQ,wBAAwB6B,MAAM07E,GAAI,WAAY,WAClD,MAAO5zE,oBAAmB5B,SAASnT,IAAI,aAElCiN,MAAM07E,GAAGkJ,WAAa,WAC3B,MAAO/D,iBAAgB+D,eAG3Bx5E,WACEna,YAAa,uCACb+O,SACAqL,KAAMA,OAKVs5E,yBAAyB58E,SAAW,uBAAwB,qBAE5DxX,QAAQhD,OAAO,aAAa6d,UAAU,oBAAqBu5E,2BAE1D3zF,KAAKrD,MAsBR,WACE,GAAIk3F,oBAEJA,qBAAsB,WAGpB,QAASA,qBAAoBC,aAC3Bn3F,KAAKm3F,YAAcA,YACnBn3F,KAAKs/D,WAAapkD,UAAU4uE,MAC5B9pF,KAAKk2F,SAAWh7E,UAAU4uE,MAsC5B,MA3CAoN,qBAAoB98E,SAAW,iBAQ/B88E,oBAAoBhoF,UAAUkoF,eAAiB,SAAStB,gBACtD,GAAItiE,QAAQ1E,MAAOqrC,WAKnB,OAJAA,aAAc27B,eAAe1wF,IAAI,cAAcA,IAAI,eACnD0pB,MAAQgnE,eAAe1wF,IAAI,cAAcA,IAAI,SAC7CouB,OAASsiE,eAAe1wF,IAAI,cAAcA,IAAI,UAC9CpF,KAAKs/D,WAAanF,YAAY5rD,OAAOugB,OAAOvgB,OAAOilB,QAC/CxzB,KAAKs/D,WAAWnqD,KAAO,EAClBnV,KAAKs/D,WAAat/D,KAAKs/D,WAAWznD,OAAO,SAASw/E,MACvD,MAAOA,MAAKjyF,IAAI,mBACfy/C,UAHL,QAOFqyC,oBAAoBhoF,UAAUooF,aAAe,SAASxB,gBACpD,GAAItiE,QAAQ1E,MAAOqrC,WAKnB,OAJAA,aAAc27B,eAAe1wF,IAAI,YAAYA,IAAI,eACjD0pB,MAAQgnE,eAAe1wF,IAAI,YAAYA,IAAI,SAC3CouB,OAASsiE,eAAe1wF,IAAI,YAAYA,IAAI,UAC5CpF,KAAKk2F,SAAW/7B,YAAY5rD,OAAOugB,OAAOvgB,OAAOilB,QAC7CxzB,KAAKk2F,SAAS/gF,KAAO,EAChBnV,KAAKk2F,SAAWl2F,KAAKk2F,SAASr+E,OAAO,SAASw/E,MACnD,MAAOA,MAAKjyF,IAAI,mBACfy/C,UAHL,QAOFqyC,oBAAoBhoF,UAAUknF,kBAAoB,SAASxmE,QACzD,MAAO5vB,MAAKm3F,YAAYf,kBAAkBxmE,QAAQzsB,KAAK,SAAUoE,OAC/D,MAAO,UAASuuF,gBAEd,MADAvuF,OAAM6vF,eAAetB,gBACdvuF,MAAM+vF,aAAaxB,kBAE3B91F,QAGEk3F,uBAITt0F,QAAQhD,OAAO,aAAa2D,WAAW,YAAa2zF,sBAEnD7zF,KAAKrD,MAsBR,WACE,GAAIu3F,mBAEJA,oBAAqB,SAASJ,YAAah9E,oBACzC,GAAIuD,KASJ,OARAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,GAAI9+D,MAAMikB,MAEV,OADAjkB,MAAOwO,mBAAmB1M,UACtB9B,MACFikB,OAASjkB,KAAKvG,IAAI,MACXqlE,KAAK2rB,kBAAkBxmE,SAFhC,SAMArsB,WAAY,YACZC,aAAc,KACdF,YAAa,kCACb+O,SACAqL,KAAMA,OAIV65E,mBAAmBn9E,SAAW,gBAAiB,wBAE/CxX,QAAQhD,OAAO,aAAa6d,UAAU,cAAe85E,qBAEpDl0F,KAAKrD,MAsBR,WACE,GAAIw3F,6BAEJA,8BAA+B,SAASr9E,mBAAoB+4E,iBAC1D,GAAIz1E,WAAWC,IAef,OAdAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAKhC,MAJAp4D,OAAM07E,MACNhuF,MAAMyQ,wBAAwB6B,MAAM07E,GAAI,WAAY,WAClD,MAAO5zE,oBAAmB5B,SAASnT,IAAI,aAElCiN,MAAM07E,GAAGkJ,WAAa,WAC3B,MAAO/D,iBAAgB+D,eAG3Bx5E,WACEna,YAAa,kEACb+O,SACAqL,KAAMA,OAKV85E,6BAA6Bp9E,SAAW,uBAAwB,qBAEhExX,QAAQhD,OAAO,sBAAsB6d,UAAU,wBAAyB+5E,+BAEvEn0F,KAAKrD,MAsBR,WACE,GAAIy3F,sBAEJA,uBAAwB,SAASC,YAAaC,cAAeC,gBAAiBC,eAAgB9rE,gBAAiBH,YAC7G,GAAInO,WAAWC,IAwBf,OAvBAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAchC,MAbAp4D,OAAM07E,MACN17E,MAAM07E,GAAG+J,kBAAoBH,cAAcvyF,IAAI,mBAC/CrF,MAAMyQ,wBAAwB6B,MAAM07E,GAAI,OAAQ,WAC9C,MAAO2J,aAAYz8E,WAErB5I,MAAM07E,GAAGxxE,OAAS,WAGhB,MAFAm7E,aAAYn7E,SACZq7E,gBAAgB1xF,IAAI2xF,eAAel1F,QAAQ,aACpCi1F,gBAAgBvxF,YAEzBgM,MAAM07E,GAAGuH,aAAe,WACtB,MAAOvpE,iBAAgBupE,gBAElBjjF,MAAM07E,GAAGhhF,oBAAsB1M,EAAEyM,OAAO8e,WAAW7e,qBACxDgrF,UAAU,KAGdt6E,WACEna,YAAa,kDACb+O,SACAqL,KAAMA,OAKV+5E,sBAAsBr9E,SAAW,UAAW,YAAa,cAAe,aAAc,oBAAqB,cAE3GxX,QAAQhD,OAAO,sBAAsB6d,UAAU,iBAAkBg6E,wBAEhEp0F,KAAKrD,MAsBR,WACE,GAAIg4F,uBAEJA,wBAAyB,SAAS79E,mBAAoB1O,qBAAsBmsF,gBAAiBC,eAAgB/xF,QAC3G,GAAI2X,WAAWC,IA0Cf,OAzCAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MA4BhC,MA3BAp4D,OAAM07E,MACNhuF,MAAMyQ,wBAAwB6B,MAAM07E,GAAI,WAAY,WAClD,MAAO5zE,oBAAmB5B,SAASnT,IAAI,aAEzCrF,MAAMyQ,wBAAwB6B,MAAM07E,GAAI,kBAAmB,WACzD,MAAO5zE,oBAAmB3M,oBAE5BzN,MAAMyQ,wBAAwB6B,MAAM07E,GAAI,kBAAmB,WACzD,MAAOtiF,sBAAqBwsF,oBAE9B5lF,MAAM07E,GAAGxwE,sBAAwBzX,OAAOV,IAAI,yBAC5CiN,MAAM07E,GAAG1xE,MAAQ,WACf,GAAIzW,QAGJ,OAFAA,SAAUQ,mBAAmBwxF,gBAAgB1xF,OAC7C0xF,gBAAgB1xF,IAAI2xF,eAAel1F,QAAQ,UACpCi1F,gBAAgBvxF,QACrBuH,KAAMhI,WAGVyM,MAAM07E,GAAGtxE,SAAW,WAClB,GAAI7W,QAGJ,OAFAA,SAAUQ,mBAAmBwxF,gBAAgB1xF,OAC7C0xF,gBAAgB1xF,IAAI2xF,eAAel1F,QAAQ,aACpCi1F,gBAAgBvxF,QACrBuH,KAAMhI,WAGHyM,MAAMvG,IAAI,sBAAuB,WACtC,MAA+B,MAA3B8rF,gBAAgBn1F,OACX4P,MAAM07E,GAAGlW,QAAS,EAElBxlE,MAAM07E,GAAGlW,QAAS,KAI/Bp6D,WACEna,YAAa,qCACb+O,SACAqL,KAAMA,OAKVs6E,uBAAuB59E,SAAW,uBAAwB,yBAA0B,cAAe,aAAc,aAEjHxX,QAAQhD,OAAO,sBAAsB6d,UAAU,kBAAmBu6E,yBAEjE30F,KAAKrD,MAsBR,WACE,GAAIk4F,sBACFr1F,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEf8oF,sBAAuB,SAAUxoF,YAG/B,QAASwoF,wBACPl4F,KAAKoE,gBAeP,MAlBAvB,QAAOq1F,qBAAsBxoF,YAM7BwoF,qBAAqBhpF,UAAUd,aAAe,WAC5C,MAAOpO,MAAKm4F,eAAgB,GAG9BD,qBAAqBhpF,UAAU9K,cAAgB,WAC7C,MAAOpE,MAAKm4F,eAAgB,GAG9BD,qBAAqBhpF,UAAU+oF,gBAAkB,WAC/C,MAAOj4F,MAAKm4F,eAGPD,sBAENn4F,MAAMkQ,SAETrN,QAAQhD,OAAO,sBAAsBsd,QAAQ,yBAA0Bg7E,uBAEtE70F,KAAKrD,MAsBR,WACE,GAAIo4F,qBAEJA,sBAAuB,WAGrB,QAASA,sBAAqBC,aAC5Br4F,KAAKq4F,YAAcA,YACnBr4F,KAAKs4F,YAWP,MAfAF,sBAAqBh+E,SAAW,iBAOhCg+E,qBAAqBlpF,UAAUopF,UAAY,WACzC,MAAOt4F,MAAKq4F,YAAYE,SAASv4F,KAAK2L,KAAKvG,IAAI,OAAOjC,KAAK,SAAUoE,OACnE,MAAO,UAAS48C,OACd,MAAO58C,OAAM48C,MAAQA,QAEtBnkD,QAGEo4F,wBAITx1F,QAAQhD,OAAO,gBAAgB2D,WAAW,aAAc60F,uBAEvD/0F,KAAKrD,MAsBR,WACE,GAAIw4F,oBAEJA,qBAAsB,WACpB,OACEl1F,YAAa,uCACbC,WAAY,aACZC,aAAc,KACd6O,OACE1G,KAAM,QACNg7D,cAAe,kBAEjB+D,kBAAkB,IAItB9nE,QAAQhD,OAAO,gBAAgB6d,UAAU,eAAgB+6E,sBAExDn1F,KAAKrD,MAsBR,WACE,GAAIy4F,0BAEJA,2BAA4B,WAG1B,QAASA,2BAA0BJ,YAAal+E,oBAC9Cna,KAAKq4F,YAAcA,YACnBr4F,KAAKma,mBAAqBA,mBAC1Bna,KAAKwlE,YAAcxlE,KAAKma,mBAAmB1M,UAC3CzN,KAAK2mE,eAAgB,EACjB3mE,KAAKwlE,aAAexlE,KAAKwlE,YAAYpgE,IAAI,QAAUpF,KAAK2L,KAAKvG,IAAI,QACnEpF,KAAK2mE,eAAgB,GAYzB,MApBA8xB,2BAA0Br+E,SAAW,gBAAiB,wBAYtDq+E,0BAA0BvpF,UAAUwpF,aAAe,WACjD,MAAO14F,MAAKq4F,YAAYM,YAAY34F,KAAK2L,KAAKvG,IAAI,OAAOjC,KAAK,SAAUoE,OACtE,MAAO,UAASo+E,UACd,MAAOp+E,OAAMo+E,SAAWA,WAEzB3lF,QAGEy4F,6BAIT71F,QAAQhD,OAAO,gBAAgB2D,WAAW,kBAAmBk1F,4BAE5Dp1F,KAAKrD,MAsBR,WACE,GAAI44F,yBAEJA,0BAA2B,WACzB,GAAIl7E,KAIJ,OAHAA,MAAO,SAASrL,MAAO64C,IAAKzvB,MAAOgvC,MACjC,MAAOA,MAAKiuB,iBAGZp1F,YAAa,iDACb+O,OACE1G,KAAM,KAERnI,aAAc,KACdD,WAAY,kBACZma,KAAMA,KACNgtD,kBAAkB,IAItB9nE,QAAQhD,OAAO,gBAAgB6d,UAAU,oBAAqBm7E,2BAE7Dv1F,KAAKrD,MAsBR,WACE,GAAI64F,iBAEJA,kBAAmB,WACjB,GAAIn7E,MAAMpa,WAaV,OAZAoa,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,MAAOp4D,OAAM07E,IACXt8E,KAAMY,MAAMZ,OAGhBnO,YAAc,SAAS6/B,GAAI1H,OACzB,MAAuB,YAAnBA,MAAMq9D,SACD,0CAEA,2CAITzmF,OACEZ,KAAQ,cAEViM,KAAMA,KACNpa,YAAaA,cAIjBV,QAAQhD,OAAO,gBAAgB6d,UAAU,YAAao7E,mBAErDx1F,KAAKrD,MAsBR,WACE,GAAI+4F,oBAAoBC,uBAAwBC,uBAAwBC,yBAA0B3oF,gBAChG1N,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfmB,iBAAkBvQ,KAAKD,MAAMwQ,gBAE7BwoF,mBAAqB,WACnB,QAASA,sBACP/4F,KAAKm5F,QAkHP,MA/GAJ,oBAAmB7pF,UAAUiqF,MAAQ,WASnC,MARAn5F,MAAKo5F,mBAAoB,EACzBp5F,KAAKq5F,wBAAyB,EAC9Br5F,KAAKs5F,2BAA4B,EACjCt5F,KAAKu5F,qBAAsB,EAC3Bv5F,KAAKw5F,sBAAuB,EAC5Bx5F,KAAKy5F,yBAA0B,EAC/Bz5F,KAAK05F,aACL15F,KAAK+P,EAAI,KACF/P,KAAKwJ,KAAO,MAGrBuvF,mBAAmB7pF,UAAUwqF,WAAa,WAGxC,MAFA15F,MAAKsmD,MAAQprC,UAAU24B,OACvB7zC,KAAK25F,gBAAiB,EACf35F,KAAK45F,MAAQ,GAGtBb,mBAAmB7pF,UAAU2qF,sBAAwB,WACnD,MAAO75F,MAAK85F,WAAY,GAG1Bf,mBAAmB7pF,UAAU6qF,uBAAyB,WACpD,MAAO/5F,MAAK85F,WAAY,GAG1Bf,mBAAmB7pF,UAAU8qF,cAAgB,WAC3C,MAAOh6F,MAAK25F,gBAAiB,GAG/BZ,mBAAmB7pF,UAAU+qF,eAAiB,WAC5C,MAAOj6F,MAAK25F,gBAAiB,GAG/BZ,mBAAmB7pF,UAAUgrF,qBAAuB,SAASC,SAC3D,MAAIA,UACFn6F,KAAK45F,OAAS,EACP55F,KAAKg6F,iBAELh6F,KAAKi6F,kBAIhBlB,mBAAmB7pF,UAAUkrF,qBAAuB,WAClD,MAAOp6F,MAAKq6F,aAAmC,IAApBr6F,KAAKsmD,MAAMnxC,MAGxC4jF,mBAAmB7pF,UAAUorF,UAAY,WAGvC,MAFAt6F,MAAK65F,wBACL75F,KAAKi6F,iBACEj6F,KAAKu6F,UAAUv6F,KAAK2L,KAAKvG,IAAI,MAAOpF,KAAK45F,MAAO55F,KAAKwJ,KAAMxJ,KAAK+P,GAAG5M,KAAK,SAAUoE,OACvF,MAAO,UAAS5B,UAKd,MAJA4B,OAAM++C,MAAQ/+C,MAAM++C,MAAM/3C,OAAO5I,SAASP,IAAI,SAC9CmC,MAAM2yF,qBAAqBv0F,SAASP,IAAI,SACxCmC,MAAM6yF,uBACN7yF,MAAMwyF,yBACCxyF,MAAM++C,QAEdtmD,OAAO,SAAS,SAAUuH,OAC3B,MAAO,YAEL,MADAA,OAAMwyF,yBACCxyF,MAAM++C,QAEdtmD,QAGL+4F,mBAAmB7pF,UAAUsrF,kBAAoBjqF,gBAAgB,IAAK,WAEpE,MADAvQ,MAAK05F,aACE15F,KAAKs6F,cAGdvB,mBAAmB7pF,UAAUurF,QAAU,WACrC,MAAkB,QAAdz6F,KAAKwJ,MACPxJ,KAAKwJ,KAAO,KACZxJ,KAAK05F,aACE15F,KAAKs6F,aAHd,QAOFvB,mBAAmB7pF,UAAUwrF,iBAAmB,WAC9C,MAAkB,YAAd16F,KAAKwJ,MACPxJ,KAAKwJ,KAAO,UACZxJ,KAAK05F,aACE15F,KAAKs6F,aAHd,QAOFvB,mBAAmB7pF,UAAUyrF,oBAAsB,WACjD,MAAkB,cAAd36F,KAAKwJ,MACPxJ,KAAKwJ,KAAO,YACZxJ,KAAK05F,aACE15F,KAAKs6F,aAHd,QAOFvB,mBAAmB7pF,UAAU0rF,cAAgB,WAC3C,MAAkB,SAAd56F,KAAKwJ,MACPxJ,KAAKwJ,KAAO,OACZxJ,KAAK05F,aACE15F,KAAKs6F,aAHd,QAOFvB,mBAAmB7pF,UAAU2rF,eAAiB,WAC5C,MAAkB,UAAd76F,KAAKwJ,MACPxJ,KAAKwJ,KAAO,QACZxJ,KAAK05F,aACE15F,KAAKs6F,aAHd,QAOKvB,sBAITC,uBAAyB,SAAUtpF,YAKjC,QAASspF,wBAAuBX,aAC9Br4F,KAAKq4F,YAAcA,YACnBW,uBAAuB7pF,UAAUJ,YAAY1L,KAAKrD,MAClDA,KAAKo5F,mBAAoB,EACzBp5F,KAAKq5F,wBAAyB,EAC9Br5F,KAAKs5F,2BAA4B,EACjCt5F,KAAKu5F,qBAAsB,EAC3Bv5F,KAAKw5F,sBAAuB,EAC5Bx5F,KAAKy5F,yBAA0B,EAC/Bz5F,KAAKu6F,UAAYv6F,KAAKq4F,YAAYyC,SAGpC,MAhBAj4F,QAAOm2F,uBAAwBtpF,YAE/BspF,uBAAuB5+E,SAAW,iBAc3B4+E,wBAEND,oBAEHn2F,QAAQhD,OAAO,gBAAgB2D,WAAW,eAAgBy1F,wBAE1DC,uBAAyB,SAAUvpF,YAKjC,QAASupF,wBAAuBZ,aAC9Br4F,KAAKq4F,YAAcA,YACnBY,uBAAuB9pF,UAAUJ,YAAY1L,KAAKrD,MAClDA,KAAKo5F,mBAAoB,EACzBp5F,KAAKq5F,wBAAyB,EAC9Br5F,KAAKs5F,2BAA4B,EACjCt5F,KAAKu5F,qBAAsB,EAC3Bv5F,KAAKw5F,sBAAuB,EAC5Bx5F,KAAKy5F,yBAA0B,EAC/Bz5F,KAAKu6F,UAAYv6F,KAAKq4F,YAAY0C,SAGpC,MAhBAl4F,QAAOo2F,uBAAwBvpF,YAE/BupF,uBAAuB7+E,SAAW,iBAc3B6+E,wBAENF,oBAEHn2F,QAAQhD,OAAO,gBAAgB2D,WAAW,eAAgB01F,wBAE1DC,yBAA2B,SAAUxpF,YAKnC,QAASwpF,0BAAyBb,aAChCr4F,KAAKq4F,YAAcA,YACnBa,yBAAyB/pF,UAAUJ,YAAY1L,KAAKrD,MACpDA,KAAKu6F,UAAYv6F,KAAKq4F,YAAY2C,WAGpC,MAVAn4F,QAAOq2F,yBAA0BxpF,YAEjCwpF,yBAAyB9+E,SAAW,iBAQ7B8+E,0BAENH,oBAEHn2F,QAAQhD,OAAO,gBAAgB2D,WAAW,iBAAkB21F,2BAE3D71F,KAAKrD,MAsBR,WACE,GAAIi7F,uBAAuBC,sBAAuBC,wBAAyBvoF,IAE3EA,OACEP,SACAq4D,kBACE/+D,KAAM,IACNnC,KAAM,IACNuG,EAAG,IACH4pF,eAAgB,IAChBG,UAAW,IACXO,aAAc,KAEhB92F,WAAY,KACZC,aAAc,KACdF,YAAa,0CAGf23F,sBAAwB,WACtB,MAAO56F,GAAEwC,UAAW+P,MAClBrP,WAAY,kBAIhBX,QAAQhD,OAAO,gBAAgB6d,UAAU,iBAAkBw9E,uBAE3DC,sBAAwB,WACtB,MAAO76F,GAAEwC,UAAW+P,MAClBrP,WAAY,kBAIhBX,QAAQhD,OAAO,gBAAgB6d,UAAU,iBAAkBy9E,uBAE3DC,wBAA0B,WACxB,MAAO96F,GAAEwC,UAAW+P,MAClBrP,WAAY,oBAIhBX,QAAQhD,OAAO,gBAAgB6d,UAAU,mBAAoB09E,0BAE5D93F,KAAKrD,MAsBR,WACE,GAAIo7F,aAEJA,cAAe,WASb,QAASA,cAAa1gF,WACpB,GAAI2gF,QACJr7F,MAAK0a,UAAYA,UACjB2gF,QAAUp6F,KAAKC,MAAMD,KAAKE,SAAWnB,KAAKs7F,MAAM9uF,QAAU,EAC1DxM,KAAKu7F,KAAOv7F,KAAKs7F,MAAMD,QAAU,GACjCr7F,KAAKu7F,KAAKC,SAAWx7F,KAAKu7F,KAAKC,UAAY,aAC3Cx7F,KAAKu7F,KAAK73F,MAAQ1D,KAAK0a,UAAUhT,QAAQ,aAAe2zF,QAAU,UAClEr7F,KAAKu7F,KAAKhoF,KAAOvT,KAAK0a,UAAUhT,QAAQ,aAAe2zF,QAAU,SAGnE,MAlBAD,cAAalsF,UAAUosF,QAEnBp1F,IAAK,qDAELA,IAAK,kDAcFk1F,gBAITA,aAAahhF,SAAW,cAExBxX,QAAQhD,OAAO,gBAAgB2D,WAAW,eAAgB63F,eAEzD/3F,KAAKrD,MAsBR,WACE,GAAIo7F,aAEJA,cAAe,SAASp4F,YACtB,OACEqP,SACA9O,WAAY,eACZC,aAAc,KACdF,YAAa,6CAIjB83F,aAAahhF,SAAW,cAExBxX,QAAQhD,OAAO,gBAAgB6d,UAAU,iBAAkB29E,eAE1D/3F,KAAKrD,MAsBR,WACE,GAAIy7F,0BAEJA,2BAA4B,WAG1B,QAASA,2BAA0BvI,gBAAiBmF,aAClDr4F,KAAKkzF,gBAAkBA,gBACvBlzF,KAAKq4F,YAAcA,YAerB,MAnBAoD,2BAA0BrhF,SAAW,oBAAqB,iBAO1DqhF,0BAA0BvsF,UAAUqiC,aAAe,WACjD,MAAOvxC,MAAKkzF,gBAAgB2D,oBAAoB72F,KAAK2L,KAAKvG,IAAI,OAAOjC,KAAK,SAAUoE,OAClF,MAAO,UAASgR,UACd,MAAOhR,OAAM8wF,YAAYqD,6BAA6Bn0F,MAAMoE,KAAKvG,IAAI,MAAOmT,YAE7EvY,OAAOmD,KAAK,SAAUoE,OACvB,MAAO,UAASgR,UACd,MAAOhR,OAAMgR,SAAWA,WAEzBvY,QAGEy7F,6BAIT74F,QAAQhD,OAAO,gBAAgB2D,WAAW,kBAAmBk4F,4BAE5Dp4F,KAAKrD,MAsBR,WACE,GAAI27F,yBAEJA,0BAA2B,WACzB,GAAIj+E,KAIJ,OAHAA,MAAO,SAASrL,MAAO64C,IAAK54C,KAAMm4D,MAChC,MAAOA,MAAKl5B,iBAGZjuC,YAAa,iDACb+O,OACE1G,KAAM,KAER+R,KAAMA,KACNgtD,kBAAkB,EAClBlnE,aAAc,KACdD,WAAY,oBAIhBX,QAAQhD,OAAO,gBAAgB6d,UAAU,oBAAqBk+E,2BAE7Dt4F,KAAKrD,MAsBR,WACE,GAAI47F,oBAEJA,qBAAsB,WACpB,GAAIl+E,KAgBJ,OAfAA,MAAO,SAASrL,MAAOjL,QAASq0B,MAAOgvC,KAAMoxB,YAW3C,MAVAxpF,OAAMypF,OACNrgE,MAAMzV,SAAS,eAAgB,SAAShT,MACtC,MAAOX,OAAMypF,IAAI9oF,KAAOA,OAE1ByoB,MAAMzV,SAAS,WAAY,SAAStiB,OAClC,MAAO2O,OAAMypF,IAAIp4F,MAAQA,QAE3B2O,MAAMypF,IAAI53D,KAAOzI,MAAMsgE,QACvB1pF,MAAMypF,IAAIE,SAAW,IAAMvgE,MAAMsgE,QACjC1pF,MAAMypF,IAAIjkB,SAAWp8C,MAAMwgE,UACvB5pF,MAAMI,MAAMgpB,MAAMygE,gBAAiB,EAC9BzxB,KAAK0xB,OAAO9pF,MAAMypF,KAD3B,SAKAx4F,YAAa,uCACb+O,SACA6b,QAAS,iBACTxQ,KAAMA,KACNm+E,YAAY,IAIhBj5F,QAAQhD,OAAO,gBAAgB6d,UAAU,eAAgBm+E,sBAExDv4F,KAAKrD,MAsBR,WACE,GAAIo8F,sBAEJA,uBAAwB,WACtB,QAASA,yBACPp8F,KAAKq8F,QAcP,MAXAD,uBAAsBltF,UAAUitF,OAAS,SAASL;AAChD,MAAO97F,MAAKq8F,KAAK31F,KAAKo1F,MAGxBM,sBAAsBltF,UAAUotF,UAAY,SAASR,KAInD,MAHAz7F,GAAEC,IAAIN,KAAKq8F,KAAM,SAASP,KACxB,MAAOA,KAAIjkB,QAAS,IAEfikB,IAAIjkB,QAAS,GAGfukB,yBAITx5F,QAAQhD,OAAO,gBAAgB2D,WAAW,cAAe64F,wBAExD/4F,KAAKrD,MAsBR,WACE,GAAIu8F,qBAEJA,sBAAuB,WACrB,OACElqF,SACA9O,WAAY,cACZC,aAAc,KACdF,YAAa,yCACbu4F,YAAY,IAIhBj5F,QAAQhD,OAAO,gBAAgB6d,UAAU,gBAAiB8+E,uBAEzDl5F,KAAKrD,MAsBR,WACE,GAAIw8F,kBAEJA,mBAAoB,WAGlB,QAASA,mBAAkBjxF,eAAgB4O,mBAAoB83E,YAAaoG,YAAanE,SAAUx5E,WACjG1a,KAAKuL,eAAiBA,eACtBvL,KAAKma,mBAAqBA,mBAC1Bna,KAAKiyF,YAAcA,YACnBjyF,KAAKq4F,YAAcA,YACnBr4F,KAAKk0F,SAAWA,SAChBl0F,KAAK0a,UAAYA,UACjB1a,KAAK2mE,eAAgB,EACjB3mE,KAAKiyF,YAAYhrE,KACnBjnB,KAAKq4F,YAAYoE,kBAAkBz8F,KAAKiyF,YAAYhrE,MAAM9jB,KAAK,SAAUoE,OACvE,MAAO,UAASoE,MACd,MAAKA,MAAKvG,IAAI,cAGZmC,MAAMoE,KAAOA,KACbpE,MAAMo/D,eAAgB,EACtBp/D,MAAMgsD,SAAShsD,MAAMoE,MACdA,MALApE,MAAM2sF,SAASwI,aAQzB18F,OAAO,SAAS,SAAUuH,OAC3B,MAAO,UAASqI,KACd,MAAOrI,OAAM2sF,SAASvuF,SAASiK,OAEhC5P,QAEHA,KAAK2L,KAAO3L,KAAKma,mBAAmB1M,UACpCzN,KAAK2mE,eAAgB,EACrB3mE,KAAKuzD,SAASvzD,KAAK2L,OAevB,MA7CA6wF,mBAAkBpiF,SAAW,mBAAoB,uBAAwB,eAAgB,gBAAiB,oBAAqB,cAkC/HoiF,kBAAkBttF,UAAUqkD,SAAW,SAAS5nD,MAC9C,GAAIsB,KAAKtJ,YAAaD,KAOtB,OANAuJ,MACEmiC,aAAczjC,KAAKvG,IAAI,qBACvBu3F,aAAchxF,KAAKvG,IAAI,aAEzB1B,MAAQ1D,KAAK0a,UAAUhT,QAAQ,0BAA2BuF,KAC1DtJ,YAAcgI,KAAKvG,IAAI,OAChBpF,KAAKuL,eAAe0C,OAAOvK,MAAOC,cAGpC64F,qBAIT55F,QAAQhD,OAAO,gBAAgB2D,WAAW,UAAWi5F,oBAEpDn5F,KAAKrD,MAsBR,WACE,GAAI48F,mCAEJA,oCAAqC,WACnC,OACEt5F,YAAa,sDAIjBV,QAAQhD,OAAO,iBAAiB6d,UAAU,8BAA+Bm/E,qCAExEv5F,KAAKrD,MAsBR,WACE,GAAI68F,4BAEJA,6BAA8B,WAG5B,QAASA,6BAA4Br3D,QAASs3D,mBAC5C98F,KAAKwlC,QAAUA,QACfxlC,KAAK88F,kBAAoBA,kBACzB98F,KAAKquF,aAAc,EACnBruF,KAAK63B,SAAU,EA+CjB,MArDAglE,6BAA4BziF,SAAW,aAAc,8BASrDyiF,4BAA4B3tF,UAAUo/E,wBAA0B,WAC9D,MAAOtuF,MAAKquF,aAAc,GAG5BwO,4BAA4B3tF,UAAUq/E,yBAA2B,WAC/D,MAAOvuF,MAAKquF,aAAc,GAG5BwO,4BAA4B3tF,UAAU6tF,WAAa,WACjD,GAAI35F,QAYJ,OAXApD,MAAK63B,SAAU,EAIbz0B,QAHGpD,KAAKiI,QAAQ7C,IAAI,UAGVpF,KAAKg9F,UAFLh9F,KAAKi9F,QAIjB75F,QAAQ,WAAW,SAAUmE,OAC3B,MAAO,YACL,MAAOA,OAAMswB,SAAU,IAExB73B,OACIoD,SAGTy5F,4BAA4B3tF,UAAU+tF,MAAQ,WAC5C,MAAOj9F,MAAK88F,kBAAkBI,KAAKl9F,KAAKiI,QAAQ7C,IAAI,OAAOjC,KAAK,SAAUoE,OACxE,MAAO,YACL,MAAOA,OAAMgnF,6BAEdvuF,OAAO,SAAS,SAAUuH,OAC3B,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,QAGL68F,4BAA4B3tF,UAAU8tF,QAAU,WAC9C,MAAOh9F,MAAK88F,kBAAkBK,OAAOn9F,KAAKiI,QAAQ7C,IAAI,OAAO,SAAS,SAAUmC,OAC9E,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,QAGE68F,+BAITj6F,QAAQhD,OAAO,iBAAiB2D,WAAW,oBAAqBs5F,8BAE/Dx5F,KAAKrD,MAsBR,WACE,GAAIo9F,2BAEJA,4BAA6B,WAC3B,OACE/qF,SACA9O,WAAY,oBACZmnE,kBACEziE,QAAS,KAEXzE,aAAc,KACdF,YAAa,qEAIjBV,QAAQhD,OAAO,iBAAiB6d,UAAU,sBAAuB2/E,6BAEhE/5F,KAAKrD,MAsBR,WACE,GAAIq9F,0BAA0Bt9F,MAC5B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbs9F,yBAA2B,SAAU3tF,YAKnC,QAAS2tF,0BAAyB/kF,GAAI6B,mBAAoB3O,gBACxDxL,KAAKsY,GAAKA,GACVtY,KAAKma,mBAAqBA,mBAC1Bna,KAAKwL,eAAiBA,eAgExB,MAvEA3I,QAAOw6F,yBAA0B3tF,YAEjC2tF,yBAAyBjjF,SAAW,cAAe,uBAAwB,oBAQ3EijF,yBAAyBnuF,UAAUouF,iBAAmB,SAAS7kF,WAC7D,MAAOzY,MAAKma,mBAAmB5B,SAASnT,IAAI,OAAO4kF,UAAU,SAAS/hF,SACpE,MAAOA,SAAQ7C,IAAI,QAAUqT,aAIjC4kF,yBAAyBnuF,UAAUquF,gBAAkB,SAAS9kF,UAAW+kF,OACvE,GAAIC,cAAcllF,QAElB,OADAklF,cAAez9F,KAAKs9F,iBAAiB7kF,WAChB,KAAjBglF,cAGJllF,SAAWvY,KAAKma,mBAAmB5B,SAASnT,IAAI,OAAO4e,OAAOy5E,aAAc,SAASx1F,SACnF,GAAIy1F,UAOJ,OANAA,WAAYz1F,QAAQ7C,IAAI,cACpBo4F,MACFE,YAEAA,YAEKz1F,QAAQ21B,OACb+/D,OAAQH,MACRI,WAAYF,cAGT19F,KAAKma,mBAAmB0jF,YAAYtlF,WAhB3C,QAmBF8kF,yBAAyBnuF,UAAU4uF,sBAAwB,SAASN,OAClE,GAAIv1F,SAASy1F,SAWb,OAVAA,WAAY19F,KAAKwL,eAAevD,QAAQ7C,IAAI,cACxCo4F,MACFE,YAEAA,YAEFz1F,QAAUjI,KAAKwL,eAAevD,QAAQ21B,OACpC+/D,OAAQH,MACRI,WAAYF,YAEP19F,KAAKwL,eAAeuyF,WAAW91F,UAGxCo1F,yBAAyBnuF,UAAUguF,KAAO,SAASzkF,WACjD,MAAOzY,MAAKsY,GAAGC,SAASylF,YAAYvlF,WAAWtV,KAAK,SAAUoE,OAC5D,MAAO,YAEL,MADAA,OAAMg2F,gBAAgB9kF,WAAW,GAC1BlR,MAAMu2F,uBAAsB,KAEpC99F,QAGLq9F,yBAAyBnuF,UAAUiuF,OAAS,SAAS1kF,WACnD,MAAOzY,MAAKsY,GAAGC,SAAS0lF,cAAcxlF,WAAWtV,KAAK,SAAUoE,OAC9D,MAAO,YAEL,MADAA,OAAMg2F,gBAAgB9kF,WAAW,GAC1BlR,MAAMu2F,uBAAsB,KAEpC99F,QAGEq9F,0BAENt9F,MAAMkQ,SAETrN,QAAQhD,OAAO,iBAAiBsd,QAAQ,6BAA8BmgF,2BAErEh6F,KAAKrD,MAsBR,WACE,GAAIk+F,sBAEJA,uBAAwB,SAAS/jF,oBAC/B,GAAIsD,WAAWC,IAuCf,OAtCAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,GAAIrT,OAUJ,OATAA,QAAS,KACTj0B,GAAGgtB,UACDG,aAAa,EACb5wB,OAAQ,IACR2uB,KAAM,IACN8vC,QAAS,IACT5tC,YAAa,cACbH,OAAQ,kBAEHjtB,GAAGzkB,GAAG,WAAY,SAAS/Q,MAAO+tC,IACvC,GAAIhqC,GAAGwsC,MAAOxqC,IAAKzL,QAASm2F,SAAUC,mBAAoB/vF,KAU1D,KATA8oD,OAAS1b,GAAGjqC,KACZxJ,QAAUmvD,OAAO/kD,QAAQpK,QACzBi2C,MAAQkZ,OAAOlZ,QACfmgD,mBAAqBh+F,EAAEC,IAAI+R,MAAMkG,SAASnB,OAAQ,SAAS0/E,GACzD,MAAOA,GAAE/+E,KAEXsmF,mBAAqBh+F,EAAEioD,QAAQ+1C,mBAAoBp2F,QAAQ7C,IAAI,OAC/Di5F,mBAAmBt3C,OAAO7I,MAAO,EAAGj2C,QAAQ7C,IAAI,OAChDg5F,YACKlgD,MAAQxsC,EAAI,EAAGgC,IAAM2qF,mBAAmB7xF,OAAYkH,IAAJhC,EAASwsC,QAAUxsC,EACtEpD,MAAQ+vF,mBAAmBngD,OAC3BkgD,SAAS13F,MACP87E,WAAcl0E,MACdm/B,MAASyQ,OAGb,OAAO/jC,oBAAmBmkF,wBAAwBF,aAGtD3gF,WACEpL,OACEkG,SAAU,mBAEZmF,KAAMA,OAKV9a,QAAQhD,OAAO,iBAAiB6d,UAAU,kBAAmB,uBAAwBygF,yBAEpF76F,KAAKrD,MAsBR,WACE,GAAIu+F,6BAEJA,8BAA+B,WAG7B,QAASA,8BAA6B/4D,QAASg5D,oBAC7Cx+F,KAAKwlC,QAAUA,QACfxlC,KAAKw+F,mBAAqBA,mBAC1Bx+F,KAAKy+F,kBAAmB,EACxBz+F,KAAK63B,SAAU,EA0CjB,MAhDA0mE,8BAA6BnkF,SAAW,aAAc,+BAStDmkF,6BAA6BrvF,UAAUwvF,qBAAuB,WAC5D,MAAO1+F,MAAKy+F,kBAAoBz+F,KAAKy+F,kBAGvCF,6BAA6BrvF,UAAUyvF,oBAAsB,WAC3D,MAAO3+F,MAAKy+F,kBAAmB,GAGjCF,6BAA6BrvF,UAAUmkC,MAAQ,SAASurD,aACtD,MAAIA,eAAgB5+F,KAAKiI,QAAQ7C,IAAI,iBAGrCpF,KAAK63B,SAAU,EACf73B,KAAK2+F,sBACE3+F,KAAKw+F,mBAAmBnrD,MAAMrzC,KAAKiI,QAAQ7C,IAAI,MAAOw5F,aAAa,SAAS,SAAUr3F,OAC3F,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,OAAO,WAAW,SAAUuH,OAC7B,MAAO,YACL,MAAOA,OAAMswB,SAAU,IAExB73B,QAbH,QAgBFu+F,6BAA6BrvF,UAAU2W,QAAU,WAG/C,MAFA7lB,MAAK63B,SAAU,EACf73B,KAAK2+F,sBACE3+F,KAAKw+F,mBAAmB34E,QAAQ7lB,KAAKiI,QAAQ7C,IAAI,OAAO,SAAS,SAAUmC,OAChF,MAAO,YACL,MAAOA,OAAMi+B,QAAQ79B,OAAO,WAE7B3H,OAAO,WAAW,SAAUuH,OAC7B,MAAO,YACL,MAAOA,OAAMswB,SAAU,IAExB73B,QAGEu+F,gCAIT37F,QAAQhD,OAAO,iBAAiB2D,WAAW,qBAAsBg7F,+BAEhEl7F,KAAKrD,MAsBR,WACE,GAAI6+F,4BAEJA,6BAA8B,WAC5B,OACExsF,SACA9O,WAAY,qBACZmnE,kBACEziE,QAAS,KAEXzE,aAAc,KACdF,YAAa,uEAIjBV,QAAQhD,OAAO,iBAAiB6d,UAAU,uBAAwBohF,8BAEjEx7F,KAAKrD,MAsBR,WACE,GAAI8+F,2BAA2B/+F,MAC7B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb++F,0BAA4B,SAAUpvF,YAKpC,QAASovF,2BAA0BxmF,GAAI6B,mBAAoB3O,gBACzDxL,KAAKsY,GAAKA,GACVtY,KAAKma,mBAAqBA,mBAC1Bna,KAAKwL,eAAiBA,eAoExB,MA3EA3I,QAAOi8F,0BAA2BpvF,YAElCovF,0BAA0B1kF,SAAW,cAAe,uBAAwB,oBAQ5E0kF,0BAA0B5vF,UAAUouF,iBAAmB,SAAS7kF,WAC9D,MAAOzY,MAAKma,mBAAmB5B,SAASnT,IAAI,OAAO4kF,UAAU,SAAS/hF,SACpE,MAAOA,SAAQ7C,IAAI,QAAUqT,aAIjCqmF,0BAA0B5vF,UAAUquF,gBAAkB,SAAS9kF,UAAWmmF,YAAaG,WACrF,GAAItB,cAAcllF,QAElB,OADAklF,cAAez9F,KAAKs9F,iBAAiB7kF,WAChB,KAAjBglF,cAGJllF,SAAWvY,KAAKma,mBAAmB5B,SAASnT,IAAI,OAAO4e,OAAOy5E,aAAc,SAAUl2F,OACpF,MAAO,UAASU,SACd,GAAI+2F,cAOJ,OANAA,eAAgB/2F,QAAQ7C,IAAI,mBACvBmC,MAAMiE,eAAevD,QAAQ7C,IAAI,eAAiB25F,UACrDC,gBACSz3F,MAAMiE,eAAevD,QAAQ7C,IAAI,gBAAkB25F,WAC5DC,gBAEK/2F,QAAQ21B,OACbqxD,WAAY8P,UACZE,eAAgBD,cAChBzX,aAAcqX,gBAGjB5+F,OACIA,KAAKma,mBAAmB0jF,YAAYtlF,WAnB3C,QAsBFumF,0BAA0B5vF,UAAU4uF,sBAAwB,SAASc,YAAaG,WAChF,GAAI92F,SAAS+2F,aAYb,OAXAA,eAAgBh/F,KAAKwL,eAAevD,QAAQ7C,IAAI,mBAC3CpF,KAAKwL,eAAevD,QAAQ7C,IAAI,eAAiB25F,UACpDC,gBACSh/F,KAAKwL,eAAevD,QAAQ7C,IAAI,gBAAkB25F,WAC3DC,gBAEF/2F,QAAUjI,KAAKwL,eAAevD,QAAQ21B,OACpCqxD,WAAY8P,UACZxX,aAAcqX,YACdK,eAAgBD,gBAEXh/F,KAAKwL,eAAeuyF,WAAW91F,UAGxC62F,0BAA0B5vF,UAAUmkC,MAAQ,SAAS56B,UAAWmmF,aAC9D,MAAO5+F,MAAKsY,GAAGC,SAAS2mF,aAAazmF,UAAWmmF,aAAaz7F,KAAK,SAAUoE,OAC1E,MAAO,YAEL,MADAA,OAAMg2F,gBAAgB9kF,UAAWmmF,aAAa,GACvCr3F,MAAMu2F,sBAAsBc,aAAa,KAEjD5+F,QAGL8+F,0BAA0B5vF,UAAU2W,QAAU,SAASpN,WACrD,MAAOzY,MAAKsY,GAAGC,SAAS4mF,eAAe1mF,WAAWtV,KAAK,SAAUoE,OAC/D,MAAO,YAEL,MADAA,OAAMg2F,gBAAgB9kF,UAAW,MAAM,GAChClR,MAAMu2F,sBAAsB,MAAM,KAE1C99F,QAGE8+F,2BAEN/+F,MAAMkQ,SAETrN,QAAQhD,OAAO,iBAAiBsd,QAAQ,8BAA+B4hF,4BAEtEz7F,KAAKrD,MAsBR,WACE,GAAIo/F,0BAEJA,2BAA4B,WAG1B,QAASA,2BAA0BjlF,mBAAoB+4E,iBACrDlzF,KAAKma,mBAAqBA,mBAC1Bna,KAAKkzF,gBAAkBA,gBACvBnzF,MAAMyQ,wBAAwBxQ,KAAM,WAAY,SAAUuH,OACxD,MAAO,YACL,MAAOA,OAAM4S,mBAAmB5B,SAASnT,IAAI,SAE9CpF,OAOL,MAhBAo/F,2BAA0BhlF,SAAW,uBAAwB,qBAY7DglF,0BAA0BlwF,UAAU+nF,WAAa,WAC/C,MAAOj3F,MAAKkzF,gBAAgB+D,cAGvBmI,6BAITx8F,QAAQhD,OAAO,iBAAiB2D,WAAW,kBAAmB67F,4BAE7D/7F,KAAKrD,MAsBR,WACE,GAAIq/F,kBAEJA,mBAAoB,WAGlB,QAASA,mBAAkBpN,YAAa1mF,eAAgBqQ,KAAMlB,UAAWlP,gBACvE,GAAIu7D,YACJ/mE,MAAKiyF,YAAcA,YACnBjyF,KAAKuL,eAAiBA,eACtBvL,KAAK4b,KAAOA,KACZ5b,KAAK0a,UAAYA,UACjB1a,KAAKwL,eAAiBA,eACtBu7D,YAAc/mE,KAAKiyF,YAAY9tF,MAC/BnE,KAAK2L,KAAO3L,KAAK4b,KAAKX,SACtBlb,MAAMyQ,wBAAwBxQ,KAAM,UAAW,SAAUuH,OACvD,MAAO,YACL,MAAOA,OAAMiE,eAAevD,UAE7BjI,OACHD,MAAMyQ,wBAAwBxQ,KAAM,UAAW,SAAUuH,OACvD,MAAO,YACL,MAAOA,OAAMiE,eAAe8zF,gBAE7Bt/F,OACHA,KAAKuL,eAAeg0F,MAAMv/F,KAAKuzD,SAASlkD,KAAKrP,OAiB/C,MAtCAq/F,mBAAkBjlF,SAAW,eAAgB,mBAAoB,UAAW,aAAc,oBAwB1FilF,kBAAkBnwF,UAAUqkD,SAAW,SAAStrD,SAC9C,GAAIgF,KAAKuyF,KACT,OAAKx/F,MAAKiI,SAGVu3F,SACAvyF,KACE0pB,YAAa32B,KAAKiI,QAAQ7C,IAAI,SAEhCo6F,MAAM97F,MAAQ1D,KAAK0a,UAAUhT,QAAQ,qBAAsBuF,KAC3DuyF,MAAM77F,YAAc3D,KAAKiI,QAAQ7C,IAAI,eAC9Bo6F,OARE,MAWJH,qBAITz8F,QAAQhD,OAAO,iBAAiB2D,WAAW,UAAW87F,oBAErDh8F,KAAKrD,MAsBR,WACE,GAAIy/F,iBAAiBhvF,QAAS1Q,MAC5B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb0Q,QAAUzQ,KAAKD,MAAM0Q,QAErBgvF,gBAAkB,SAAU/vF,YAK1B,QAAS+vF,iBAAgBnnF,GAAIonF,WAAYp5B,iBACvCtmE,KAAKsY,GAAKA,GACVtY,KAAK0/F,WAAaA,WAClB1/F,KAAKsmE,gBAAkBA,gBAiEzB,MAxEAzjE,QAAO48F,gBAAiB/vF,YAExB+vF,gBAAgBrlF,SAAW,cAAe,cAAe,qBAQzDqlF,gBAAgBvwF,UAAUywF,iBAAmB,SAAS54B,aACpD,MAAO/mE,MAAKsY,GAAGC,SAASonF,iBAAiB54B,aAAa5jE,KAAK,SAAUoE,OACnE,MAAO,UAASU,SACd,MAAOV,OAAMksF,UAAUxrF,WAExBjI,QAGLy/F,gBAAgBvwF,UAAU0wF,gBAAkB,SAASnnF,WACnD,MAAOzY,MAAKsY,GAAGC,SAASqnF,gBAAgBnnF,YAG1CgnF,gBAAgBvwF,UAAU2nF,oBAAsB,SAASjnE,OAAQiwE,UAC/D,MAAO7/F,MAAKsY,GAAGC,SAASs+E,oBAAoBjnE,OAAQiwE,UAAU18F,KAAK,SAAUoE,OAC3E,MAAO,UAASgR,UACd,MAAOA,UAASjY,IAAIiH,MAAMksF,UAAUpkF,KAAK9H,UAE1CvH,QAGLy/F,gBAAgBvwF,UAAUukF,UAAY,SAASxrF,SAC7C,GAAI63F,gBAAgBhqF,KAAM5P,GAgB1B,OAfAA,KAAMlG,KAAK0/F,WAAWt6F,IAAI6C,QAAQmP,QAClCnP,QAAUA,QAAQ4T,IAAI,MAAO3V,KAC7B45F,kBACI73F,QAAQ7C,IAAI,UACd0Q,KAAO7N,QAAQ7C,IAAI,QAAQ60C,OAC3B6lD,eAAiBhqF,KAAKxV,IAAI,SAAS45C,KACjC,GAAIrX,MAEJ,OADAA,OAAQ56B,QAAQ7C,IAAI,eAAeA,IAAI80C,KAChCh/B,UAAUC,QACfnI,KAAMknC,IACNrX,MAAOA,UAGX56B,QAAUA,QAAQ4T,IAAI,iBAAkBikF,iBAEnC73F,SAGTw3F,gBAAgBvwF,UAAU+nF,WAAa,WACrC,MAAOj3F,MAAKsmE,gBAAgBl6C,OAAO,wBACjCslB,QAAS,oCAIb+tD,gBAAgBvwF,UAAUovF,wBAA0B,SAASF,UAC3D,MAAOp+F,MAAKsY,GAAGC,SAAS6qE,gBAAgBgb,WAG1CqB,gBAAgBvwF,UAAU6wF,sBAAwB,SAAStnF,UAAWwD,OACpE,MAAOjc,MAAKsY,GAAGC,SAASwnF,sBAAsBtnF,UAAWwD,QAG3DwjF,gBAAgBvwF,UAAU8wF,eAAiB,SAASvnF,UAAWwD,MAAOgkF,QACpE,MAAOjgG,MAAKsY,GAAGC,SAASynF,eAAevnF,UAAWwD,MAAOgkF,SAG3DR,gBAAgBvwF,UAAUgxF,eAAiB,SAASznF,UAAWwD,MAAOgkF,QACpE,MAAOjgG,MAAKsY,GAAGC,SAAS2nF,eAAeznF,UAAWwD,MAAOgkF,SAGpDR,iBAEN1/F,MAAMkQ,SAETrN,QAAQhD,OAAO,iBAAiBsd,QAAQ,oBAAqBuiF,kBAE5Dp8F,KAAKrD,MAsBR,WACE,GAAImgG,mCAEJA,oCAAqC,WACnC,OACE78F,YAAa,wDAIjBV,QAAQhD,OAAO,iBAAiB6d,UAAU,8BAA+B0iF,qCAExE98F,KAAKrD,MAsBR,WACE,GAAIogG,iBAAiBxgG,MAErBA,QAASgD,QAAQhD,OAAO,iBAExBwgG,gBAAkB,WAGhB,QAASA,iBAAgBnO,YAAazmF,eAAgBqE,SAAU6nF,YAAav9E,mBAAoBrK,QAAS4K,UAAWiwD,gBACnH3qE,KAAKiyF,YAAcA,YACnBjyF,KAAKwL,eAAiBA,eACtBxL,KAAK6P,SAAWA,SAChB7P,KAAK03F,YAAcA,YACnB13F,KAAKma,mBAAqBA,mBAC1Bna,KAAK8P,QAAUA,QACf9P,KAAK0a,UAAYA,UACjB1a,KAAK2qE,eAAiBA,eA0FxB,MApGAy1B,iBAAgBhmF,SAAW,eAAgB,oBAAqB,YAAa,UAAW,uBAAwB,aAAc,aAAc,cAa5IgmF,gBAAgBlxF,UAAUxB,WAAa,WAIrC,MAHA1N,MAAKyY,UAAYzY,KAAKiI,QAAQ7C,IAAI,MAClCpF,KAAKic,MAAQjc,KAAKiyF,YAAYh2E,MAC9Bjc,KAAKqgG,gBAAiB,EACfrgG,KAAKsgG,oBAGdF,gBAAgBlxF,UAAUqxF,eAAiB,WACzC,MAAOvgG,MAAKwL,eAAeu0F,sBAAsB//F,KAAKyY,UAAWzY,KAAKic,OAAO9Y,KAAK,KAAM,SAAUoE,OAChG,MAAO,UAASL,KAAMrB,QACpB,MAAO0B,OAAMsI,SAASpN,KAAK8E,MAAMuI,QAAQnN,QAAQ,gBAElD3C,QAGLogG,gBAAgBlxF,UAAUoxF,iBAAmB,WAC3C,MAAOtgG,MAAK03F,YAAY3rF,UAAU5I,KAAK,SAAUoE,OAC/C,MAAO,YAGL,MAFAA,OAAMg5F,iBACNh5F,MAAMi5F,kBACCj5F,MAAMk5F,oBAEdzgG,QAGLogG,gBAAgBlxF,UAAUsxF,gBAAkB,WAC1C,MAAOxgG,MAAK0gG,iBAAmB1gG,KAAKma,mBAAmBwmF,cAAc3gG,KAAKiI,UAG5Em4F,gBAAgBlxF,UAAUuxF,gBAAkB,WAC1C,GAAIj7B,aAAa10B,cAmBjB,OAlBA00B,aAAcxlE,KAAKma,mBAAmB1M,UAClCzN,KAAKiI,QAAQ7C,IAAI,eACnBpF,KAAK4gG,aAAe,+CACpB5gG,KAAK6gG,YAAcr7B,YAAYpgE,IAAI,wBACV,OAArBpF,KAAK6gG,cACP7gG,KAAK6gG,YAAc7gG,KAAK0a,UAAUhT,QAAQ,8CAE5C1H,KAAK8gG,gBAAkBt7B,YAAYpgE,IAAI,0BACvC0rC,eAAiB00B,YAAYpgE,IAAI,sCAEjCpF,KAAK4gG,aAAe,8CACpB5gG,KAAK6gG,YAAcr7B,YAAYpgE,IAAI,uBACV,OAArBpF,KAAK6gG,cACP7gG,KAAK6gG,YAAc7gG,KAAK0a,UAAUhT,QAAQ,8CAE5C1H,KAAK8gG,gBAAkBt7B,YAAYpgE,IAAI,yBACvC0rC,eAAiB00B,YAAYpgE,IAAI,oCAE5BpF,KAAK+gG,yBAA8C,OAAnBjwD,gBAA2B9wC,KAAKiI,QAAQ7C,IAAI,sBAAwB0rC,gBAG7GsvD,gBAAgBlxF,UAAU8wF,eAAiB,SAAS/jF,MAAOgkF,QACzD,MAAOjgG,MAAKwL,eAAew0F,eAAehgG,KAAKiI,QAAQ7C,IAAI,MAAO6W,MAAOgkF,QAAQ98F,KAAK,SAAUoE,OAC9F,MAAO,YACL,GAAIonE,OACJA,QAASpnE,MAAMuI,QAAQnN,QAAQ,yCAC7BsF,QAASV,MAAMU,QAAQ7C,IAAI,UAE7BmC,MAAMsI,SAASpN,KAAKksE,QACpBpnE,MAAMojE,eAAehjE,OAAO,UAAWJ,MAAMmT,UAAUhT,QAAQ,sDAAuD,GAAI,OAE3H1H,QAGLogG,gBAAgBlxF,UAAUgxF,eAAiB,SAASjkF,MAAOgkF,QACzD,MAAOjgG,MAAKwL,eAAe00F,eAAelgG,KAAKiI,QAAQ7C,IAAI,MAAO6W,MAAOgkF,QAAQ98F,KAAK,SAAUoE,OAC9F,MAAO,YACL,GAAIonE,OACJA,QAASpnE,MAAMuI,QAAQnN,QAAQ,yCAC7BsF,QAASV,MAAMU,QAAQ7C,IAAI,UAE7BmC,MAAMsI,SAASpN,KAAKksE,QACpBpnE,MAAMojE,eAAehjE,OAAO,UAAWJ,MAAMmT,UAAUhT,QAAQ,sDAAuD,GAAI,OAE3H1H,QAGLogG,gBAAgBlxF,UAAU8xF,WAAa,WACrC,MAAOhhG,MAAKqgG,gBAAiB,GAG/BD,gBAAgBlxF,UAAU+xF,YAAc,WAEtC,MADAjhG,MAAKqgG,gBAAiB,EACfrgG,KAAKigG,OAAS,IAGhBG,mBAITxgG,OAAO2D,WAAW,4BAA6B68F,kBAE9C/8F,KAAKrD,MAsBR,WACE,GAAIkhG,0BAA0BthG,MAE9BA,QAASgD,QAAQhD,OAAO,iBAExBshG,yBAA2B,WACzB,GAAIxjF,KAIJ,OAHAA,MAAO,SAASrL,MAAO8wB,GAAI1H,MAAOgvC,MAChC,MAAOA,MAAK/8D,eAGZgQ,KAAMA,KACNrL,SACAq4D,kBACEziE,QAAS,KAEX3E,YAAa,0CACbC,WAAY,4BACZC,aAAc,OAIlB5D,OAAO6d,UAAU,oBAAqByjF,2BAErC79F,KAAKrD,MA4BR,WACE,GAAImhG,UAAUvhG,OAAQmR,WAAYhR,KAElCA,OAAQC,KAAKD,MAEbgR,WAAa/Q,KAAKD,MAAMgR,WAExBowF,SAAW,SAASC,YAAa5mF,KAAM1U,OAAQ8lB,WAAY7oB,GAAIuX,SAC7D,GAAI4C,QA8GJ,OA7GAA,YACAA,QAAQ6R,KAAO,SAASvlB,KAAMi8B,SAAUhtB,WACtC,GAAIooE,aAAa38E,OAAQgC,IAAKm7F,OAY9B,OAXAA,SAAU,eAAiB73F,KAC3BtF,QACEo9F,UAAW77D,SACXx9B,QAASwQ,WAEXooE,aACE77E,SACEu8F,uBAAwB,MAG5Br7F,IAAMk7F,YAAYz+F,QAAQ0+F,SACnB7mF,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAASwQ,QACtD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQ,UAAY,SAAS1T,KAAMuO,IACjC,GAAI7R,KAAKm7F,OAGT,OAFAA,SAAU,eAAiB73F,KAC3BtD,IAAMk7F,YAAYz+F,QAAQ0+F,UAAY,IAAMtpF,IACrCyC,KAAK,UAAUtU,MAExBgX,QAAQjY,MAAQ,SAASuE,KAAMuO,GAAI9S,OACjC,GAAIiB,KAAKm7F,OAGT,OAFAA,SAAU,eAAiB73F,KAC3BtD,IAAMk7F,YAAYz+F,QAAQ0+F,UAAY,IAAMtpF,IACrCyC,KAAKvV,MAAMiB,IAAKjB,QAEzBiY,QAAQkP,OAAS,SAAS5iB,KAAMiP,UAAWgtB,SAAU9D,MACnD,GAAIz6B,MAAMgwB,QAAS0sD,YAAaj+E,SAAUsW,MAAO4nE,eAAgBC,aAAcC,eAAgB79E,IAAKm7F,QAASzxF,GAI7G,OAHAyxF,SAAU,eAAiB73F,KAC3BtD,IAAMk7F,YAAYz+F,QAAQ0+F,SAC1BnqE,QAAUn0B,GAAGG,QACA,SAATy+B,MACFzK,QAAQ5wB,OAAO,MACR4wB,QAAQ9zB,UAEjBwgF,YAAc99E,OAAOV,IAAI,oBAAqB,MAC1Cw+E,aAAejiD,KAAKxsB,KAAOyuE,aAC7Bj+E,UACEE,OAAQ,IACRqB,MACE+X,eAAgB,IAAM0iB,KAAK3uB,KAAO,MAASjC,WAAW4wB,KAAKxsB,MAAS,qEAAwEpE,WAAW6yE,aAAgB,MAG3K1sD,QAAQ5wB,OAAOX,UACRuxB,QAAQ9zB,UAEjB2gF,eAAiB,SAAUx8E,OACzB,MAAO,UAAS28E,KACd,MAAOt4D,YAAW3X,OAAO,WAIvB,MAHA0tB,MAAK97B,OAAS,cACd87B,KAAKxsB,KAAOpE,WAAWmzE,IAAIntB,OAC3Bp1B,KAAK6/D,gBAAkB,UAAazwF,WAAWmzE,IAAIC,QAAW,OAAUpzE,WAAWmzE,IAAIntB,OAChFp1B,KAAK8/D,gBAAmBxgG,KAAK49B,MAAOqlD,IAAIC,OAASD,IAAIntB,MAAS,KAAQ,QAGhF/2D,MACH6jF,eAAiB,SAAUt8E,OACzB,MAAO,UAAS28E,KACd,MAAOt4D,YAAW3X,OAAO,WACvB,GAAI6/B,YAAmB7gC,IAAKpN,MAC5B87B,MAAK97B,OAAS,OACdA,OAASq+E,IAAI/3D,OAAOtmB,MACpB,KACEiuC,WAAatzC,KAAK8H,MAAM47E,IAAI/3D,OAAOm4D,cACnC,MAAOplE,OACP40B,cAEF,MAAIjuC,SAAU,KAAgB,IAATA,QACnBiuC,WAAa54B,UAAUC,OAAO24B,YACvB5c,QAAQv0B,QAAQmxC,cAEvBnuC,UACEE,OAAQA,OACRqB,MACE+X,eAAiD,OAAhChM,IAAM/L,KAAoB,eAAa+L,IAAI,GAAK,SAG9DikB,QAAQ5wB,OAAOX,eAI3B3F,MACH8jF,aAAe,SAAUv8E,OACvB,MAAO,UAAS28E,KACd,MAAOt4D,YAAW3X,OAAO,WAEvB,MADA0tB,MAAK97B,OAAS,QACPqxB,QAAQ5wB,OAAO,YAGzBtG,MACHkH,KAAO,GAAIs9E,UACXt9E,KAAKkhB,OAAO,UAAW3P,WACvBvR,KAAKkhB,OAAO,YAAaqd,UACzBv+B,KAAKkhB,OAAO,gBAAiBuZ,MAC7B/xB,IAAM,GAAI60E,gBACV70E,IAAIwkC,OAAOzqB,iBAAiB,WAAYo6D,gBAAgB,GACxDn0E,IAAI+Z,iBAAiB,OAAQk6D,gBAAgB,GAC7Cj0E,IAAI+Z,iBAAiB,QAASm6D,cAAc,GAC5C7nE,MAAQ3B,QAAQlV,IAAI,SACpBwK,IAAIkY,KAAK,OAAQ5hB,KACjB0J,IAAI80E,iBAAiB,gBAAiB,UAAYzoE,OAClDrM,IAAI80E,iBAAiB,SAAU,oBAC/B90E,IAAIub,KAAKjkB,MACFgwB,QAAQ9zB,WAEV,WACL,OACEmqC,YAAerwB,WAKrBikF,SAAS/mF,SAAW,UAAW,UAAW,YAAa,aAAc,KAAM,cAE3Exa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,wBAAyB26F,WAEvC99F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,MAEduhG,UAAW,SAASC,YAAa5mF,MAC/B,GAAI0C,QAsBJ,OArBAA,YACAA,QAAQ63E,oBAAsB,SAASI,cAAeT,OACpD,GAAIxuF,IAGJ,OAFAA,KAAMk7F,YAAYz+F,QAAQ,gBAC1BuD,IAAMA,IAAM,IAAMivF,cAAgB,gBAAkBT,MAC7Cl6E,KAAKpV,IAAIc,KAAK/C,KAAK,SAASwQ,QACjC,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQ+3E,0BAA4B,SAASE,cAAeT,OAC1D,GAAIxtF,MAAMhB,GAOV,OANAA,KAAMk7F,YAAYz+F,QAAQ,sBAC1BuD,KAAY,aACZgB,MACEwtF,MAASA,MACTF,YAAeW,eAEV36E,KAAKtV,KAAKgB,IAAKgB,MAAM/D,KAAK,SAASwQ,QACxC,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAG5B,WACL,OACEkuF,aAAgBl4E,WAKtBikF,SAAS/mF,SAAW,UAAW,WAE/Bxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,yBAA0B26F,WAExC99F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,MAEduhG,UAAW,SAASC,YAAa5mF,MAC/B,GAAI0C,QAcJ,OAbAA,YACAA,QAAQqlE,kBAAoB,SAASr+E,QACnC,GAAI28E,aAAa36E,GAOjB,OANAA,KAAMk7F,YAAYz+F,QAAQ,UAC1Bk+E,aACE77E,SACEu8F,uBAAwB,MAGrB/mF,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAASwQ,QACtD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAG5B,WACL,OACEssB,OAAUtW,WAKhBikF,SAAS/mF,SAAW,UAAW,WAE/Bxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,mBAAoB26F,WAElC99F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,OAAQ8hG,UAEtBA,YAAa,aAEbP,SAAW,SAASC,YAAa5mF,KAAMmnF,yBACrC,GAAIzkF,QA8IJ,OA7IAA,YACAA,QAAQ42E,YAAc,SAAS5vF,OAAQw9F,YACrC,GAAI7gB,aAAa36E,GAgBjB,OAfc,OAAVhC,SACFA,WAEgB,MAAdw9F,aACFA,YAAa,GAEfx7F,IAAMk7F,YAAYz+F,QAAQ,YAC1Bk+E,eACK6gB,aACH7gB,aACE77E,SACE48F,qBAAqB,KAIpBpnF,KAAKpV,IAAIc,IAAKhC,OAAQ28E,cAE/B3jE,QAAQyiF,iBAAmB,SAAS54B,aAClC,GAAI7gE,IAGJ,OAFAA,KAAMk7F,YAAYz+F,QAAQ,YAC1BuD,IAAMA,IAAM,iBAAmB6gE,YACxBvsD,KAAKpV,IAAIc,KAAK/C,KAAK,SAASwQ,QACjC,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQ25E,oBAAsB,SAASjnE,OAAQiwE,UAC7C,GAAIhf,aAAa38E,OAAQgC,GAezB,OAdgB,OAAZ25F,WACFA,UAAW,GAEb35F,IAAMk7F,YAAYz+F,QAAQ,YAC1Bk+E,eACKgf,WACHhf,YAAY77E,SACVu8F,uBAAwB,MAG5Br9F,QACEorB,OAAUM,OACVk0C,SAAY,2BAEPtpD,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAASwQ,QACtD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQ0iF,gBAAkB,SAASnnF,WACjC,GAAIvS,IAGJ,OAFAA,KAAMk7F,YAAYz+F,QAAQ,YAC1BuD,IAAMA,IAAM,IAAMuS,UACX+B,KAAKpV,IAAIc,KAAK/C,KAAK,SAASwQ,QACjC,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQkmE,gBAAkB,SAASC,UACjC,GAAIn9E,IAEJ,OADAA,KAAMk7F,YAAYz+F,QAAQ,8BACnB6X,KAAKtV,KAAKgB,IAAKm9E,WAExBnmE,QAAQ2kF,YAAc,SAASppF,UAAWyiB,MACxC,GAAIh3B,QAAQgC,GAOZ,OANAhC,SACEg3B,KAAMA,KACN4mE,eAAe,GAEjB57F,IAAMk7F,YAAYz+F,QAAQ,oBAC1BuD,IAAMA,IAAM,IAAMuS,UACX+B,KAAKpV,IAAIc,IAAKhC,QACnBc,SACE48F,qBAAqB,KAEtBz+F,KAAK,SAASwQ,QAEf,MADAA,QAASuH,UAAUC,OAAOxH,QACnBguF,wBAAwBhuF,WAGnCuJ,QAAQ8gF,YAAc,SAASvlF,WAC7B,GAAIvS,IAEJ,OADAA,KAAMk7F,YAAYz+F,QAAQ,eAAgB8V,WACnC+B,KAAKtV,KAAKgB,MAEnBgX,QAAQ+gF,cAAgB,SAASxlF,WAC/B,GAAIvS,IAEJ,OADAA,KAAMk7F,YAAYz+F,QAAQ,iBAAkB8V,WACrC+B,KAAKtV,KAAKgB,MAEnBgX,QAAQgiF,aAAe,SAASzmF,UAAWmmF,aACzC,GAAI13F,MAAMhB,GAKV,OAJAgB,OACEqgF,aAAcqX,aAEhB14F,IAAMk7F,YAAYz+F,QAAQ,gBAAiB8V,WACpC+B,KAAKtV,KAAKgB,IAAKgB,OAExBgW,QAAQiiF,eAAiB,SAAS1mF,WAChC,GAAIvS,IAEJ,OADAA,KAAMk7F,YAAYz+F,QAAQ,kBAAmB8V,WACtC+B,KAAKtV,KAAKgB,MAEnBgX,QAAQ6iF,sBAAwB,SAAStnF,UAAWwD,OAClD,GAAI/U,MAAMhB,GAKV,OAJAgB,OACE+U,MAAOA,OAET/V,IAAMk7F,YAAYz+F,QAAQ,kCAAmC8V,WACtD+B,KAAKtV,KAAKgB,IAAKgB,OAExBgW,QAAQ8iF,eAAiB,SAASvnF,UAAWwD,MAAOgkF,QAClD,GAAI/4F,MAAMhB,GAMV,OALAgB,OACE+U,MAAOA,MACPgkF,OAAQA,QAEV/5F,IAAMk7F,YAAYz+F,QAAQ,0BAA2B8V,WAC9C+B,KAAKtV,KAAKgB,IAAKgB,OAExBgW,QAAQgjF,eAAiB,SAASznF,UAAWwD,MAAOgkF,QAClD,GAAI/4F,MAAMhB,GAMV,OALAgB,OACE+U,MAAOA,MACPgkF,OAAQA,QAEV/5F,IAAMk7F,YAAYz+F,QAAQ,0BAA2B8V,WAC9C+B,KAAKtV,KAAKgB,IAAKgB,OAExBgW,QAAQ0tD,gBAAkB,SAASnyD,WACjC,GAAIvS,IAEJ,OADAA,KAAMk7F,YAAYz+F,QAAQ,2BAA4B8V,WAC/C+B,KAAKtV,KAAKgB,MAEnBgX,QAAQiuD,cAAgB,SAAS1yD,UAAWmX,OAAQqwE,QAClD,GAAI/4F,MAAMhB,GAMV,OALAgB,OACEyE,KAAMikB,OACNqwE,OAAQA,QAEV/5F,IAAMk7F,YAAYz+F,QAAQ,yBAA0B8V,WAC7C+B,KAAKtV,KAAKgB,IAAKgB,OAEjB,WACL,OACEqR,SAAY2E,WAKlBikF,SAAS/mF,SAAW,UAAW,UAAW,6BAE1Cxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,sBAAuB26F,WAErC99F,KAAKrD,MAsBR,WACE,GAAI+hG,WAAWC,QAEfA,WAAY,sBAAuB,kBAAmB,mBAAoB,wBAAyB,kBAAmB,mBAAoB,yBAA0B,wBAAyB,mBAE7LD,UAAY,SAAS96F,WACnB,GAAIyK,GAAG44B,EAAG52B,IAAK62B,KAAMt3B,IAAKiK,QAAS+kF,UAAWC,YAAaC,eAC3D,KAAKzwF,EAAI,EAAGgC,IAAMsuF,SAASx1F,OAAYkH,IAAJhC,EAASA,IAK1C,IAJAwwF,YAAcF,SAAStwF,GACvBuwF,UAAYh7F,UAAU7B,IAAI88F,aAC1BhlF,QAAUjW,UAAUK,OAAO26F,WAC3BhvF,IAAM+C,OAAO9D,KAAKgL,SACbotB,EAAI,EAAGC,KAAOt3B,IAAIzG,OAAY+9B,KAAJD,EAAUA,IACvC63D,gBAAkBlvF,IAAIq3B,GAClBtqC,KAAKmiG,kBACPh7C,QAAQi7C,KAAK,qBAAuBD,iBAEtCniG,KAAKmiG,iBAAmBjlF,QAAQilF,gBAGpC,OAAOniG,OAGT+hG,UAAU3nF,SAAW,aAErBxX,QAAQhD,OAAO,mBAAmBsd,QAAQ,cAAe6kF,YAExD1+F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,MAEduhG,UAAW,SAASC,YAAa5mF,MAC/B,GAAI0C,QASJ,OARAA,YACAA,QAAQgE,SAAW,SAASi0E,cAAeT,OACzC,GAAIxuF,IAEJ,OADAA,KAAMk7F,YAAYz+F,QAAQ,kBACnB6X,KAAKpV,IAAIc,KAAK/C,KAAK,SAASwQ,QACjC,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAG5B,WACL,OACEi9C,MAASjnC,WAKfikF,SAAS/mF,SAAW,UAAW,WAE/Bxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,kBAAmB26F,WAEjC99F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,MAEduhG,UAAW,SAASC,YAAa5mF,MAC/B,GAAI0C,QAcJ,OAbAA,YACAA,QAAQqlE,kBAAoB,SAASr+E,QACnC,GAAI28E,aAAa36E,GAOjB,OANAA,KAAMk7F,YAAYz+F,QAAQ,SAC1Bk+E,aACE77E,SACEu8F,uBAAwB,MAGrB/mF,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAASwQ,QACtD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAG5B,WACL,OACE4nB,MAAS5R,WAKfikF,SAAS/mF,SAAW,UAAW,WAE/Bxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,kBAAmB26F,WAEjC99F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,MAEduhG,UAAW,SAASC,YAAa5mF,KAAMmnF,yBACrC,GAAIzkF,QA+BJ,OA9BAA,YACAA,QAAQmlF,eAAiB,SAASrzF,KAChC,GAAI6xE,aAAa36E,GAMjB,OALAA,KAAMk7F,YAAYz+F,QAAQ,gBACtBqM,MACF9I,KAAO,IAAM8I,KAEf6xE,eACOrmE,KAAKpV,IAAIc,QAAS/C,KAAK,SAASwC,UACrC,MAAOA,UAASuB,KAAKoH,SAGzB4O,QAAQolF,eAAiB,SAAStzF,IAAKV,OACrC,GAAIpK,QAAQgC,GAMZ,OALAA,KAAMk7F,YAAYz+F,QAAQ,gBAAkB,IAAMqM,IAClD9K,QACE8K,IAAKA,IACLV,MAAOA,OAEFkM,KAAKrV,IAAIe,IAAKhC,SAEvBgZ,QAAQqlF,kBAAoB,SAASvzF,IAAKV,OACxC,GAAIpK,QAAQgC,GAMZ,OALAA,KAAMk7F,YAAYz+F,QAAQ,gBAC1BuB,QACE8K,IAAKA,IACLV,MAAOA,OAEFkM,KAAKtV,KAAKgB,IAAKhC,SAEjB,WACL,OACEyH,KAAQuR,WAKdikF,SAAS/mF,SAAW,UAAW,WAE/Bxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,kBAAmB26F,WAEjC99F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,MAEduhG,UAAW,SAASC,YAAa5mF,KAAMmnF,yBACrC,GAAIzkF,QA6IJ,OA5IAA,YACAA,QAAQslF,kBAAoB,SAAShkF,UACnC,GAAIqiE,aAAa38E,OAAQgC,GAUzB,OATAA,KAAMk7F,YAAYz+F,QAAQ,eAC1Bk+E,aACE77E,SACEu8F,uBAAwB,MAG5Br9F,QACEsa,SAAUA,UAELhE,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAASwQ,QACtD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQq7E,SAAW,SAAS3oE,QAC1B,GAAIixD,aAAa36E,GAOjB,OANAA,KAAMk7F,YAAYz+F,QAAQ,aAAcitB,QACxCixD,aACE77E,SACEu8F,uBAAwB,MAGrB/mF,KAAKpV,IAAIc,OAAS26E,aAAa19E,KAAK,SAASwQ,QAClD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQy7E,YAAc,SAAS/oE,QAC7B,GAAIixD,aAAa36E,GAOjB,OANAA,KAAMk7F,YAAYz+F,QAAQ,gBAAiBitB,QAC3CixD,aACE77E,SACEu8F,uBAAwB,MAGrB/mF,KAAKpV,IAAIc,OAAS26E,aAAa19E,KAAK,SAASwQ,QAClD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAGnCgW,QAAQ49E,SAAW,SAASlrE,OAAQsL,KAAM1xB,KAAMuG,GAC9C,GAAI7L,QAAQgC,GAaZ,OAZAA,KAAMk7F,YAAYz+F,QAAQ,aAAcitB,QACxC1rB,UACY,MAARg3B,OACFh3B,OAAOg3B,KAAOA,MAEJ,MAAR1xB,OACFtF,OAAOsF,KAAOA,MAEP,MAALuG,IACF7L,OAAO6L,EAAIA,GAEb7L,OAAO49F,eAAgB,EAChBtnF,KAAKpV,IAAIc,IAAKhC,QACnBc,SACE48F,qBAAqB,KAEtBz+F,KAAK,SAASwQ,QAEf,MADAA,QAASuH,UAAUC,OAAOxH;AACnBguF,wBAAwBhuF,WAGnCuJ,QAAQ69E,SAAW,SAASnrE,OAAQsL,KAAM1xB,KAAMuG,GAC9C,GAAI7L,QAAQgC,GAYZ,OAXAA,KAAMk7F,YAAYz+F,QAAQ,aAAcitB,QACxC1rB,UACY,MAARg3B,OACFh3B,OAAOg3B,KAAOA,MAEJ,MAAR1xB,OACFtF,OAAOsF,KAAOA,MAEP,MAALuG,IACF7L,OAAO6L,EAAIA,GAENyK,KAAKpV,IAAIc,IAAKhC,QACnBc,SACE48F,qBAAqB,KAEtBz+F,KAAK,SAASwQ,QAEf,MADAA,QAASuH,UAAUC,OAAOxH,QACnBguF,wBAAwBhuF,WAGnCuJ,QAAQ89E,WAAa,SAASprE,OAAQsL,KAAM1xB,KAAMuG,GAChD,GAAI7L,QAAQgC,GAYZ,OAXAA,KAAMk7F,YAAYz+F,QAAQ,eAAgBitB,QAC1C1rB,UACY,MAARg3B,OACFh3B,OAAOg3B,KAAOA,MAEJ,MAAR1xB,OACFtF,OAAOsF,KAAOA,MAEP,MAALuG,IACF7L,OAAO6L,EAAIA,GAENyK,KAAKpV,IAAIc,IAAKhC,QACnBc,SACE48F,qBAAqB,KAEtBz+F,KAAK,SAASwQ,QAEf,MADAA,QAASuH,UAAUC,OAAOxH,QACnBguF,wBAAwBhuF,WAGnCuJ,QAAQulF,mBAAqB,SAAS7yE,OAAQsL,MAC5C,GAAIh3B,QAAQgC,GAMZ,OALAhC,SACEg3B,KAAMA,MAERh1B,IAAMk7F,YAAYz+F,QAAQ,oBAC1BuD,IAAMA,IAAM,IAAM0pB,OACXpV,KAAKpV,IAAIc,IAAKhC,QACnBc,SACE48F,qBAAqB,KAEtBz+F,KAAK,SAASwQ,QAEf,MADAA,QAASuH,UAAUC,OAAOxH,QACnBguF,wBAAwBhuF,WAGnCuJ,QAAQwlF,gBAAkB,SAAS9yE,OAAQsL,MACzC,GAAIh3B,QAAQgC,GAOZ,OANAhC,SACEg3B,KAAMA,KACN4mE,eAAe,GAEjB57F,IAAMk7F,YAAYz+F,QAAQ,iBAC1BuD,IAAMA,IAAM,IAAM0pB,OACXpV,KAAKpV,IAAIc,IAAKhC,QACnBc,SACE48F,qBAAqB,KAEtBz+F,KAAK,SAASwQ,QAEf,MADAA,QAASuH,UAAUC,OAAOxH,QACnBguF,wBAAwBhuF,WAG5B,WACL,OACE6D,MAAS0F,WAKfikF,SAAS/mF,SAAW,UAAW,UAAW,6BAE1Cxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,mBAAoB26F,WAElC99F,KAAKrD,MAsBR,WACE,GAAImhG,UAAUvhG,MAEduhG,UAAW,SAASC,YAAa5mF,MAC/B,GAAI0C,QAcJ,OAbAA,YACAA,QAAQqlE,kBAAoB,SAASr+E,QACnC,GAAI28E,aAAa36E,GAOjB,OANAA,KAAMk7F,YAAYz+F,QAAQ,eAC1Bk+E,aACE77E,SACEu8F,uBAAwB,MAGrB/mF,KAAKpV,IAAIc,IAAKhC,OAAQ28E,aAAa19E,KAAK,SAASwQ,QACtD,MAAOuH,WAAUC,OAAOxH,OAAOzM,SAG5B,WACL,OACEsrB,YAAetV,WAKrBikF,SAAS/mF,SAAW,UAAW,WAE/Bxa,OAASgD,QAAQhD,OAAO,mBAExBA,OAAO4G,QAAQ,wBAAyB26F,WAEvC99F,KAAKrD,MAsBR,WACE,GAAI2iG,gBAAgB5iG,MAAOwR,QAE3BxR,OAAQC,KAAKD,MAEbwR,SAAWxR,MAAMwR,SAEjBoxF,eAAiB,WAGf,QAASA,gBAAej6E,WACtB1oB,KAAK0oB,UAAYA,UAsFnB,MAzFAi6E,gBAAevoF,SAAW,cAM1BuoF,eAAezzF,UAAU0zF,KAAO,SAAS5zF,IAAKV,OAC5C,GAAIu0F,KACJ,IAAK7zF,IAGL,MAAY,UAARA,KACF6zF,KAAO56E,EAAE,cACW,IAAhB46E,KAAKr2F,SACPq2F,KAAO56E,EAAE,mBACTA,EAAE,QAAQG,OAAOy6E,OAEZA,KAAKtvF,KAAKjF,OAAS,KACM,IAAvBU,IAAI7I,QAAQ,QACrB08F,KAAO56E,EAAE,uBAAyBjZ,IAAM,MACpB,IAAhB6zF,KAAKr2F,SACPq2F,KAAO56E,EAAE,mBAAqBjZ,IAAM,OACpCiZ,EAAE,QAAQG,OAAOy6E,OAEZA,KAAKvwF,KAAK,UAAWhE,OAAS,MAErCu0F,KAAO56E,EAAE,mBAAqBjZ,IAAM,MAChB,IAAhB6zF,KAAKr2F,SACPq2F,KAAO56E,EAAE,eAAiBjZ,IAAM,OAChCiZ,EAAE,QAAQG,OAAOy6E,OAEZA,KAAKvwF,KAAK,UAAWhE,OAAS,MAIzCq0F,eAAezzF,UAAU4zF,SAAW,SAASp/F,OAC3C,MAAO1D,MAAK4iG,KAAK,QAASl/F,QAG5Bi/F,eAAezzF,UAAU6zF,eAAiB,SAASp/F,aACjD,MAAO3D,MAAK4iG,KAAK,cAAerxF,SAAS5N,YAAa,OAGxDg/F,eAAezzF,UAAU8zF,gBAAkB,SAASt/F,MAAOC,aAKzD,MAJA3D,MAAK4iG,KAAK,eAAgB,WAC1B5iG,KAAK4iG,KAAK,eAAgB,YAC1B5iG,KAAK4iG,KAAK,gBAAiBl/F,OAC3B1D,KAAK4iG,KAAK,sBAAuBrxF,SAAS5N,YAAa,MAChD3D,KAAK4iG,KAAK,gBAAiB1iG,OAAO2P,SAASozF,OAAS,IAAM/iG,OAAOyI,SAAW,2BAGrFg6F,eAAezzF,UAAUg0F,kBAAoB,SAASx/F,MAAOC,aAM3D,MALA3D,MAAK4iG,KAAK,UAAW,UACrB5iG,KAAK4iG,KAAK,eAAgB,8BAC1B5iG,KAAK4iG,KAAK,WAAYl/F,OACtB1D,KAAK4iG,KAAK,iBAAkBrxF,SAAS5N,YAAa,MAClD3D,KAAK4iG,KAAK,WAAY1iG,OAAO2P,SAASozF,OAAS,IAAM/iG,OAAOyI,SAAW,0BAChE3I,KAAK4iG,KAAK,SAAU1iG,OAAO2P,SAASqxB,OAG7CyhE,eAAezzF,UAAUjB,OAAS,SAASvK,MAAOC,aAIhD,MAHA3D,MAAK8iG,SAASp/F,OACd1D,KAAK+iG,eAAep/F,aACpB3D,KAAKgjG,gBAAgBt/F,MAAOC,aACrB3D,KAAKkjG,kBAAkBx/F,MAAOC,cAGvCg/F,eAAezzF,UAAUhB,kBAAoB,WAC3C,MAAO+Z,GAAE,QAAQG,OAAO,+GAG1Bu6E,eAAezzF,UAAUf,qBAAuB,WAC9C,MAAO8Z,GAAE,8BAAgClM,UAG3C4mF,eAAezzF,UAAUqwF,MAAQ,SAASjwF,IAIxC,MAHItP,MAAKmjG,UACPnjG,KAAKojG,YAEApjG,KAAKojG,UAAYpjG,KAAK0oB,UAAU26E,iBAAiB/zF,GAAI,SAAU/H,OACpE,MAAO,UAASi4F,OACd,MAAIA,QACFj4F,MAAM0G,OAAOuxF,MAAM97F,MAAO87F,MAAM77F,aACzB4D,MAAM67F,aAFf,SAKDpjG,QAGE2iG,kBAIT//F,QAAQhD,OAAO,eAAesd,QAAQ,mBAAoBylF,iBAEzDt/F,KAAKrD,MAsBR,WACE,GAAIsjG,oBAAoBvyF,UAExBA,YAAa/Q,KAAKD,MAAMgR,WAExBuyF,mBAAqB,WAGnB,QAASA,oBAAmB99D,QAAS1/B,OAAQ4U,UAAWpC,IACtDtY,KAAKwlC,QAAUA,QACfxlC,KAAK8F,OAASA,OACd9F,KAAK0a,UAAYA,UACjB1a,KAAKsY,GAAKA,GACVtY,KAAK4jF,YAAc5jF,KAAKujG,iBACpBvjG,KAAK4jF,cACP5jF,KAAKwjG,oBAAsBzyF,WAAW/Q,KAAK4jF,cAkE/C,MA3EA0f,oBAAmBlpF,SAAW,aAAc,YAAa,aAAc,eAavEkpF,mBAAmBp0F,UAAUu0F,UAAY,SAAS9hE,MAChD,GAAIviB,QAMJ,OALAA,SAAUpf,KAAK0a,UAAUhT,QAAQ,sCAC/Bs8E,SAAUriD,KAAK3uB,KACfixE,SAAUlzE,WAAW4wB,KAAKxsB,MAC1ByuE,YAAa5jF,KAAKwjG,sBAEbxjG,KAAKwlC,QAAQ79B,OAAO,QAASyX,UAGtCkkF,mBAAmBp0F,UAAUqP,SAAW,SAASojB,MAC/C,MAAI3hC,MAAK4jF,aAAejiD,KAAKxsB,KAAOnV,KAAK4jF,aACvC5jF,KAAKyjG,UAAU9hE,OACR,IAEF,GAGT2hE,mBAAmBp0F,UAAUq0F,eAAiB,WAC5C,MAAOvjG,MAAK8F,OAAOV,IAAI,oBAAqB,OAG9Ck+F,mBAAmBp0F,UAAU6f,KAAO,SAASvlB,KAAMg/E,MAAO/vE,WACxD,MAAOzY,MAAKsY,GAAGi1B,YAAYxe,KAAKvlB,KAAMg/E,MAAO/vE,WAAWtV,KAAK,SAAUoE,OACrE,MAAO,UAASgmC,aACd,MAAOA,aAAY11B,OAAO,SAASi8B,YACjC,MAAOA,YAAW1uC,IAAI,aAGzBpF,QAGLsjG,mBAAmBp0F,UAAU,UAAY,SAAS1F,KAAMuO,IACtD,MAAO/X,MAAKsY,GAAGi1B,YAAY,UAAU/jC,KAAMuO,KAG7CurF,mBAAmBp0F,UAAUw0F,UAAY,SAAS/hE,KAAMz6B,MACtD,GAAIkY,QAQJ,OAPAA,SAAU,GACNuiB,OACFviB,QAAUpf,KAAK0a,UAAUhT,QAAQ,sCAC/Bs8E,SAAUriD,KAAK3uB,KACf81E,aAAc5hF,KAAKA,KAAK+X,kBAGrBjf,KAAKwlC,QAAQ79B,OAAO,QAASyX,UAGtCkkF,mBAAmBp0F,UAAUklC,OAAS,SAASzS,KAAM6mD,MAAO/vE,UAAWjP,MACrE,GAAIpG,QAGJ,OAFAA,SAAUpD,KAAKsY,GAAGi1B,YAAYnhB,OAAO5iB,KAAMiP,UAAW+vE,MAAO7mD,MAC7Dv+B,QAAQD,KAAK,KAAMnD,KAAK0jG,UAAUr0F,KAAKrP,KAAM2hC,OACtCv+B,SAGTkgG,mBAAmBp0F,UAAUjK,MAAQ,SAAS8S,GAAIvO,KAAMvE,OACtD,GAAI7B,QAGJ,OAFAA,SAAUpD,KAAKsY,GAAGi1B,YAAYtoC,MAAMuE,KAAMuO,GAAI9S,OAC9C7B,QAAQD,KAAK,KAAMnD,KAAK0jG,UAAUr0F,KAAKrP,KAAM,OACtCoD,SAGFkgG,sBAIT1gG,QAAQhD,OAAO,eAAesd,QAAQ,uBAAwBomF,qBAE7DjgG,KAAKrD,MAsBR,WACE,GAAI2jG,yBAAyB5jG,KAE7BA,OAAQC,KAAKD,MAEb4jG,wBAA0B,WAGxB,QAASA,yBAAwBn4F,gBAC/BxL,KAAKwL,eAAiBA,eAUxB,MAbAm4F,yBAAwBvpF,SAAW,oBAMnCupF,wBAAwBz0F,UAAU+gC,MAAQ,SAASvqB,YACjD,MAAK1lB,MAAKwL,eAAevD,QAGwD,KAA1EjI,KAAKwL,eAAevD,QAAQ7C,IAAI,kBAAkBe,QAAQuf,aAFxD,GAKJi+E,2BAIT/gG,QAAQhD,OAAO,eAAesd,QAAQ,4BAA6BymF,0BAElEtgG,KAAKrD,MAsBR,WACE,GAAI4jG,oBAAoBnzF,QAAS1Q,KAEjCA,OAAQC,KAAKD,MAEb0Q,QAAUzQ,KAAKD,MAAM0Q,QAErBmzF,mBAAqB,WAGnB,QAASA,oBAAmB1Q,gBAAiB2Q,eAAgBvrF,IAC3DtY,KAAKkzF,gBAAkBA,gBACvBlzF,KAAK6jG,eAAiBA,eACtB7jG,KAAKsY,GAAKA,GACVtY,KAAK20F,MAAQ,KACb30F,KAAK8jG,UAAY5oF,UAAU4uE,MAC3B9pF,KAAK+jG,cAAgB7oF,UAAU4uE,MAC/B9pF,KAAKgkG,SAAW,KAChBjkG,MAAMyQ,wBAAwBxQ,KAAM,WAAY,SAAUuH,OACxD,MAAO,YACL,MAAOA,OAAMu8F,YAEd9jG,OACHD,MAAMyQ,wBAAwBxQ,KAAM,eAAgB,SAAUuH,OAC5D,MAAO,YACL,MAAOA,OAAMw8F,gBAEd/jG,OAkKL,MArLA4jG,oBAAmBxpF,SAAW,oBAAqB,aAAc,eAsBjEwpF,mBAAmB10F,UAAU1B,gBAAkB,WAC7C,MAAuB,QAAnBxN,KAAKyN,WACA,GAEF,GAGTm2F,mBAAmB10F,UAAUzB,QAAU,WACrC,GAAIwN,SAQJ,OAPKjb,MAAK20F,QACR15E,SAAWjb,KAAK6jG,eAAez+F,IAAI,YAC/B6V,WACFA,SAAWC,UAAUC,OAAOF,UAC5Bjb,KAAKqb,QAAQJ,YAGVjb,KAAK20F,OAGdiP,mBAAmB10F,UAAUsN,WAAa,WAIxC,MAHAxc,MAAK20F,MAAQ,KACb30F,KAAK8jG,UAAY5oF,UAAU4uE,MAC3B9pF,KAAK+jG,cAAgB7oF,UAAU4uE,MACxB9pF,KAAKgkG,SAAW,MAGzBJ,mBAAmB10F,UAAUmM,QAAU,SAAS1P,MAE9C,MADA3L,MAAK20F,MAAQhpF,KACN3L,KAAKikG,iBAGdL,mBAAmB10F,UAAUovF,wBAA0B,SAASF,UAC9D,MAAOp+F,MAAKkzF,gBAAgBoL,wBAAwBF,UAAUj7F,KAAK,SAAUoE,OAC3E,MAAO,YACL,MAAOA,OAAMgqC,iBAEdvxC,QAGL4jG,mBAAmB10F,UAAUqiC,aAAe,WAC1C,MAAOvxC,MAAKkzF,gBAAgB2D,oBAAoB72F,KAAK20F,MAAMvvF,IAAI,OAAOjC,KAAK,SAAUoE,OACnF,MAAO,UAASgR,UACd,MAAOhR,OAAMs2F,YAAYtlF,YAE1BvY,QAGL4jG,mBAAmB10F,UAAUo8E,eAAiB,SAAStnF,SAUrD,MATIA,SACFhE,KAAKgkG,SAAShgG,UAAW,EAEzBhE,KAAKgkG,UACHpqD,SAAS,EACTC,QAAQ,EACRwyC,WAAW,GAGRrsF,KAAKsY,GAAG3M,KAAK22F,eAAe,UAAWtiG,KAAKgkG,WAGrDJ,mBAAmB10F,UAAU+8E,kBAAoB,WAC/C,MAAO,IAAI9+E,SAAQ,SAAU5F,OAC3B,MAAO,UAAS5E,SACd,MAAuB,QAAnB4E,MAAMy8F,aACRrhG,SAAQ4E,MAAMy8F,UAGTz8F,MAAM+Q,GAAG3M,KAAK02F,eAAe,WAAWl/F,KAAK,SAAS2C,QAE3D,MADAyB,OAAMy8F,SAAWl+F,OACVnD,QAAQ4E,MAAMy8F,YACpB,SAAS,WAOV,MANAz8F,OAAMy8F,UACJpqD,SAAS,EACTC,QAAQ,EACRwyC,WAAW,GAEb9kF,MAAM+Q,GAAG3M,KAAK42F,kBAAkB,UAAWh7F,MAAMy8F,UAC1CrhG,QAAQ4E,MAAMy8F,cAGxBhkG,QAGL4jG,mBAAmB10F,UAAU+0F,cAAgB,WAC3C,MAAO92F,SAAQkL,KAAKrY,KAAKuxC,kBAG3BqyD,mBAAmB10F,UAAU2uF,YAAc,SAAStlF,UAMlD,MALAvY,MAAK8jG,UAAY9jG,KAAK8jG,UAAUjoF,IAAI,MAAOtD,UAC3CvY,KAAK8jG,UAAY9jG,KAAK8jG,UAAUjoF,IAAI,UAAWtD,SAAS3G,MAAM,EAAG,KACjE5R,KAAK+jG,cAAgB7oF,UAAUC,OAAO1K,QAAQ8H,SAASnB,OAAQ,SAAS0/E,GACtE,MAAOA,GAAE/+E,MAEJ/X,KAAKuY,UAGdqrF,mBAAmB10F,UAAUiiC,yBAA2B,WACtD,GAAIxlC,KAEJ,OADAA,MAAO3L,KAAKyN,UAC6B,OAArC9B,KAAKvG,IAAI,yBAAoCuG,KAAKvG,IAAI,2BAA6BuG,KAAKvG,IAAI,yBAE5F+G,OAAO,EACP8zF,OAAQ,uBACRz2F,KAAM,oBAIR2C,OAAO,IAIXy3F,mBAAmB10F,UAAUkiC,wBAA0B,WACrD,GAAIzlC,KAEJ,OADAA,MAAO3L,KAAKyN,UAC4B,OAApC9B,KAAKvG,IAAI,wBAAmCuG,KAAKvG,IAAI,0BAA4BuG,KAAKvG,IAAI,wBAE1F+G,OAAO,EACP8zF,OAAQ,sBACRz2F,KAAM,mBAIR2C,OAAO,IAIXy3F,mBAAmB10F,UAAUyxF,cAAgB,SAAS14F,SACpD,GAAI0L,QAAQhI,IAEZ,IADAA,KAAO3L,KAAKyN,UACRxF,QAAQ7C,IAAI,cAAe,CAE7B,GADAuO,OAAS3T,KAAKmxC,4BACTx9B,OAAOxH,MACV,MAAOwH,OAET,IAAqD,OAAjDhI,KAAKvG,IAAI,qCAAgD6C,QAAQ7C,IAAI,qBAAuBuG,KAAKvG,IAAI,oCACvG,OACE+G,OAAO,EACP8zF,OAAQ,+BACRz2F,KAAM,uBAGL,CAEL,GADAmK,OAAS3T,KAAKoxC,2BACTz9B,OAAOxH,MACV,MAAOwH,OAET,IAAoD,OAAhDhI,KAAKvG,IAAI,oCAA+C6C,QAAQ7C,IAAI,qBAAuBuG,KAAKvG,IAAI,mCACtG,OACE+G,OAAO,EACP8zF,OAAQ,8BACRz2F,KAAM,kBAIZ,OACE2C,OAAO,IAIJy3F,sBAIThhG,QAAQhD,OAAO,eAAesd,QAAQ,uBAAwB0mF,qBAE7DvgG,KAAKrD,MAsBR,WACE,GAAIkkG,gBAEJA,iBAAkB,WAGhB,QAASA,iBAAgBx7E,UAAWy7E,SAClCnkG,KAAK0oB,UAAYA,UACjB1oB,KAAKmkG,QAAUA,QAgBjB,MApBAD,iBAAgB9pF,SAAW,aAAc,YAOzC8pF,gBAAgBh1F,UAAUkd,OAAS,SAASpZ,KAAMyoB,MAAO2oE,YACvD,GAAIl5C,KAAK39B,KAAMlb,KACfA,OAAQrS,KAAK0oB,UAAU2Q,OACvBhnB,MAAQhS,EAAEu9B,MAAMvrB,MAAO+xF,YACvBl5C,IAAMjjC,EAAE,SAAS3V,KAAKU,MAAM,GAAMV,KAAK,iBAAiB,GACpDmpB,OACFyvB,IAAI54C,KAAKmpB,OAEXyvB,IAAIplC,SAAS,mBACbyH,KAAOvtB,KAAKmkG,QAAQj5C,KAAK74C,OACzB4V,EAAEgT,SAAS2J,MAAMxc,OAAOmF,OAGnB22E,mBAITthG,QAAQhD,OAAO,eAAesd,QAAQ,oBAAqBgnF,kBAE1D7gG,KAAKrD,MAsBR,WACE,GAAIqkG,iBAEJA,kBAAmB,WACjB,MAAO,UAAS1wF,QACd,GAAI2wF,iBAQJ,OAPAA,kBAAmBppF,UAAU4uE,KAC3B5iF,KAAQyM,OAAOvO,IAAI,QACnBwI,OAAU+F,OAAOvO,IAAI,WAAW,qBAChC4tC,OAAUr/B,OAAOvO,IAAI,WAAW,qBAChCylD,QAAWl3C,OAAOvO,IAAI,WAAW,wBACjC46C,MAASrsC,OAAOvO,IAAI,WAAW,0BAMrCxC,QAAQhD,OAAO,eAAe4G,QAAQ,4BAA6B69F,mBAElEhhG,KAAKrD,MAsBR,WACE,GAAIukG,oBACFC,OAAS,SAAS7tF,EAAGC,GAAK,QAASD,GAAKC,GAAKA,GAAKA,GAAKA,EAEzD2tF,oBAAqB,WACnB,QAASA,sBACP,GAAIE,QAAQC,MACZA,SAAU,IAAMxkG,OAAOyI,SAAW,4CAA6C,IAAMzI,OAAOyI,SAAW,4CAA6C,IAAMzI,OAAOyI,SAAW,4CAA6C,IAAMzI,OAAOyI,SAAW,4CAA6C,IAAMzI,OAAOyI,SAAW,6CACtT87F,QAAU,4BAA6B,6BAA8B,4BAA6B,2BAA4B,6BAC9HzkG,KAAK2kG,MAAQtkG,EAAEoW,iBAAiBiuF,OAAQD,QAc1C,MAXAF,oBAAmBr1F,UAAU89E,sBAAwB,SAAS/lE,KAAMlP,IAClE,GAAI08D,KAAKzlE,IAAK89E,IAId,OAHA99E,KAAMiY,KAAO,IAAMlP,GACnB08D,IAAM+vB,OAAOI,kBAAkB51F,IAAK,IAAKhP,KAAK2kG,MAAMn4F,QACpDsgF,KAAO9sF,KAAK2kG,MAAMlwB,MAEhB35C,IAAKgyD,KAAK,GACVjqD,MAAOiqD,KAAK,KAITyX,sBAIT3hG,QAAQhD,OAAO,eAAesd,QAAQ,uBAAwBqnF,qBAE7DlhG,KAAKrD,MAsBR,WACE,GAAI6kG,gBAAgB9kG,KAEpBA,OAAQC,KAAKD,MAEb8kG,eAAiB,WAGf,QAASA,gBAAe3R,gBAAiBgB,UACvCl0F,KAAKkzF,gBAAkBA,gBACvBlzF,KAAKk0F,SAAWA,SAChBl0F,KAAK8kG,SAAW,KAChB9kG,KAAK+kG,SAAW,KAChB/kG,KAAKglG,oBAAsB9pF,UAAU24B,OACrC7zC,KAAKilG,eAAiB/pF,UAAU24B,OAChC9zC,MAAMyQ,wBAAwBxQ,KAAM,UAAW,SAAUuH,OACvD,MAAO,YACL,MAAOA,OAAMu9F,WAEd9kG,OACHD,MAAMyQ,wBAAwBxQ,KAAM,UAAW,SAAUuH,OACvD,MAAO,YACL,MAAOA,OAAMw9F,WAEd/kG,OACHD,MAAMyQ,wBAAwBxQ,KAAM,qBAAsB,SAAUuH,OAClE,MAAO,YACL,MAAOA,OAAMy9F,sBAEdhlG,OACHD,MAAMyQ,wBAAwBxQ,KAAM,gBAAiB,SAAUuH,OAC7D,MAAO,YACL,MAAOA,OAAM09F,iBAEdjlG,OAyDL,MArFA6kG,gBAAezqF,SAAW,oBAAqB,qBA+B/CyqF,eAAe31F,UAAUpB,WAAa,SAAS9J,SAE7C,MADAhE,MAAK+kG,SAAW/gG,QACZA,QACKhE,KAAKglG,oBAAsBhlG,KAAKglG,oBAAoBt+F,KAAK1G,KAAK+kG,UAE9D/kG,KAAKglG,oBAAsB9pF,UAAU24B,QAIhDgxD,eAAe31F,UAAUnB,iBAAmB,SAAS5J,OACnD,MAAO,IAAIgJ,SAAQ,SAAU5F,OAC3B,MAAO,UAAS5E,QAAS2D,QACvB,MAAKiB,OAAMU,SAAWV,MAAMU,QAAQ7C,IAAI,UAAYjB,MAQ3CxB,UAPA4E,MAAM2rF,gBAAgByM,iBAAiBx7F,OAAOhB,KAAK,SAAS8E,SAEjE,MADAV,OAAMw2F,WAAW91F,SACVtF,YACN,SAAS,SAASiN,KACnB,MAAOrI,OAAM2sF,SAASvuF,SAASiK,SAMpC5P,QAGL6kG,eAAe31F,UAAU6uF,WAAa,SAAS91F,SAE7C,MADAjI,MAAK8kG,SAAW78F,QACTjI,KAAKilG,eAAiBjlG,KAAK8kG,SAAS1/F,IAAI,WAAW0H,OAAO,SAASwiB,QACxE,MAAOA,QAAOlqB,IAAI,gBAItBy/F,eAAe31F,UAAUlB,aAAe,WAItC,MAHAhO,MAAK8kG,SAAW,KAChB9kG,KAAKilG,eAAiB/pF,UAAU24B,OAChC7zC,KAAK+kG,SAAW,KACT/kG,KAAKglG,oBAAsB9pF,UAAU24B,QAG9CgxD,eAAe31F,UAAUg6E,cAAgB,SAASxjE,YAChD,MAAmE,KAA5D1lB,KAAK8kG,SAAS1/F,IAAI,kBAAkBe,QAAQuf,aAGrDm/E,eAAe31F,UAAU0/D,aAAe,WACtC,GAAIzqE,MAEJ,OADAA,OAAQnE,KAAKiI,QAAQ7C,IAAI,QAClBpF,KAAKkzF,gBAAgByM,iBAAiBx7F,OAAOhB,KAAK,SAAUoE,OACjE,MAAO,UAASU,SACd,MAAOV,OAAMw2F,WAAW91F,WAEzBjI,QAGE6kG,kBAITjiG,QAAQhD,OAAO,eAAesd,QAAQ,mBAAoB2nF,iBAEzDxhG,KAAKrD,MAsBR,WACE,GAAIklG,WAEJA,YAAa,WACX,QAASA,eA2CT,MAzCAA,YAAWh2F,UAAUi2F,UAErBD,WAAWh2F,UAAUk2F,wBAA0B,SAASrtF,IACtD,MAAO1X,GAAE8d,KAAKnI,OAAO9D,KAAKlS,KAAKmlG,QAAS,SAAU59F,OAChD,MAAO,UAASyH,KACd,MAAOzH,OAAM49F,OAAOn2F,KAAKq2F,MAAQttF,KAElC/X,QAGLklG,WAAWh2F,UAAUo2F,QAAU,SAAStyF,KAAMX,OAC5C,GAAIkzF,oBAEJ,IADAA,oBAAsBvlG,KAAKolG,wBAAwB/yF,MAAMgzF,KAEvD,KAAM,IAAIz6E,OAAM,6DAAgE26E,oBAAsB,IAExG,IAAIvlG,KAAKmlG,OAAOnyF,MACd,KAAM,IAAI4X,OAAM,gBAAmB5X,KAAO,mBAS1C,OAPAX,OAAMmzF,WAAa,GAAIC,eACvBpzF,MAAMvG,IAAI,WAAY,SAAUvE,OAC9B,MAAO,YAEL,MADA8K,OAAMmzF,WAAWE,2BACHn+F,OAAM49F,OAAOnyF,QAE5BhT,OACIA,KAAKmlG,OAAOnyF,MAAQX,OAI/B6yF,WAAWh2F,UAAUy2F,QAAU,SAAS3yF,KAAMX,OAC5C,GAAIA,MACFA,MAAQrS,KAAKslG,QAAQtyF,KAAMX,WACtB,CAAA,IAAIrS,KAAKmlG,OAAOnyF,MAGrB,KAAM,IAAI4X,OAAM,gBAAmB5X,KAAO,0BAF1CX,OAAQrS,KAAKmlG,OAAOnyF,MAItB,MAAOX,OAAMmzF,YAGRN,cAITtiG,QAAQhD,OAAO,eAAesd,QAAQ,eAAgBgoF,aAErD7hG,KAAKrD,MAsBR,WACE,GAAI4lG,cAAc7lG,MAChB8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6lG,aAAe,SAAUl2F,YAGvB,QAASk2F,gBACP,MAAOA,cAAaz2F,UAAUJ,YAAYS,MAAMxP,KAAMyP,WAGxD,MANA5M,QAAO+iG,aAAcl2F,YAMdk2F,cAEN7lG,MAAMkQ,QAAU,WACjB,OACEwL,IAAK,SAASoqF,WACZ,GAAIC,aAMJ,OALAA,cAAe79E,EAAE,gCACW,IAAxB69E,aAAat5F,SACfs5F,aAAe79E,EAAE,mDACjBA,EAAE,QAAQG,OAAO09E,eAEZA,aAAaxzF,KAAK,OAAQ,IAAMpS,OAAOyI,SAAW,iBAAmBk9F,UAAY,YAK9FjjG,QAAQhD,OAAO,eAAesd,QAAQ,iBAAkB0oF,eAEvDviG,KAAKrD,MAsBR,WACE,GAAI+lG,aAAa51F,YAAapQ,MAC5B8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEboQ,YAAcpQ,MAAMoQ,YAEpB41F,YAAc,SAAUr2F,YAKtB,QAASq2F,aAAYztF,IACnBtY,KAAKsY,GAAKA,GACVnI,YAAYnQ,MA2Cd,MAjDA6C,QAAOkjG,YAAar2F,YAEpBq2F,YAAY3rF,SAAW,eAOvB2rF,YAAY72F,UAAUutF,kBAAoB,SAASj+E,UACjD,MAAOxe,MAAKsY,GAAGd,MAAMgrF,kBAAkBhkF,WAGzCunF,YAAY72F,UAAUypF,YAAc,SAAS/oE,QAC3C,MAAO5vB,MAAKsY,GAAGd,MAAMmhF,YAAY/oE,SAGnCm2E,YAAY72F,UAAU4rF,SAAW,SAASlrE,OAAQo2E,WAAYC,WAAYC,WACxE,MAAOlmG,MAAKsY,GAAGd,MAAMsjF,SAASlrE,OAAQo2E,WAAYC,WAAYC,YAGhEH,YAAY72F,UAAU6rF,SAAW,SAASnrE,OAAQo2E,WAAYC,WAAYC,WACxE,MAAOlmG,MAAKsY,GAAGd,MAAMujF,SAASnrE,OAAQo2E,WAAYC,WAAYC,YAGhEH,YAAY72F,UAAU8rF,WAAa,SAASprE,OAAQo2E,WAAYC,WAAYC,WAC1E,MAAOlmG,MAAKsY,GAAGd,MAAMwjF,WAAWprE,OAAQo2E,WAAYC,WAAYC,YAGlEH,YAAY72F,UAAUqpF,SAAW,SAAS3oE,QACxC,MAAO5vB,MAAKsY,GAAGd,MAAM+gF,SAAS3oE,SAGhCm2E,YAAY72F,UAAUwsF,6BAA+B,SAAS9rE,OAAQrX,UACpE,MAAOvY,MAAK24F,YAAY/oE,QAAQzsB,KAAK,SAASwiF,UAW5C,MAVAptE,UAAWA,SAASjY,IAAI,SAAS2H,SAC/B,GAAIk+F,iBAOJ,OANAA,kBAAmBxgB,SAAS74E,OAAO,SAASs5F,SAC1C,GAAIC,UAEJ,OADAA,WAAYD,QAAQhhG,IAAI,MAC6B,KAA9C6C,QAAQ7C,IAAI,WAAWe,QAAQkgG,aAExCp+F,QAAUA,QAAQ4T,IAAI,WAAYsqF,uBAOjCJ,aAENhmG,MAAMkQ,SAETrN,QAAQhD,OAAO,eAAesd,QAAQ,gBAAiB6oF,cAEtD1iG,KAAKrD,MAsBR,WACE,GAAIk0F,UACFrxF,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEf8kF,UAAW,SAAUxkF,YAKnB,QAASwkF,UAASnkF,EAAGF,SAAUC,SAC7B9P,KAAK+P,EAAIA,EACT/P,KAAK6P,SAAWA,SAChB7P,KAAK8P,QAAUA,QAwBjB,MA/BAjN,QAAOqxF,SAAUxkF,YAEjBwkF,SAAS95E,SAAW,KAAM,YAAa,cAQvC85E,SAAShlF,UAAUwtF,SAAW,WAE5B,MADA18F,MAAK6P,SAASpN,KAAKzC,KAAK8P,QAAQnN,QAAQ,cACjC3C,KAAK6P,SAAS5J,WAGvBiuF,SAAShlF,UAAUo3F,iBAAmB,WAEpC,MADAtmG,MAAK6P,SAASpN,KAAKzC,KAAK8P,QAAQnN,QAAQ,sBACjC3C,KAAK6P,SAAS5J,WAGvBiuF,SAAShlF,UAAUvJ,SAAW,SAASiK,KAQrC,MAPIA,OACiB,MAAfA,IAAI/J,OACN7F,KAAK08F,WACmB,MAAf9sF,IAAI/J,QACb7F,KAAKsmG,oBAGFtmG,KAAK+P,EAAEzJ,OAAOsJ,MAGhBskF,UAENn0F,MAAMkQ,SAETrN,QAAQhD,OAAO,eAAesd,QAAQ,oBAAqBg3E,WAE1D7wF,KAAKrD,MAsBR,WACE,GAAIumG,gCAEJA,iCAAkC,SAASlpF,SAAUwP,UACnD,GAAInc,SAASgN,KAAM8oF,mBAsBnB,OArBAA,sBAAuB,OAAQ,QAAS,OAAQ,OAAQ,QACxD91F,QAAU,SAASxK,KAEjB,MADAA,KAAMA,IAAIiN,cACH9S,EAAE0oC,KAAKy9D,oBAAqB,SAASC,WAC1C,MAA0D,KAAnDvgG,IAAIC,QAAQsgG,UAAWvgG,IAAMugG,UAAUj6F,WAGlDkR,KAAO,SAASrL,MAAO8wB,IACrB,GAAIujE,UAAUC,YASd,OARAD,UAAWh2F,QAAQ2B,MAAMyhC,WAAW1uC,IAAI,QAEtCuhG,aADED,SACarpF,SAASjY,IAAI,8EAEbiY,SAASjY,IAAI,wEAE9B+9B,GAAG5V,KAAKo5E,cACR95E,SAASsW,GAAGvH,YAAYvpB,OACjB8wB,GAAGhlB,KAAK,OAAOe,MAAM,WAC1B,MAAOlf,MAAK+b,aAId2B,KAAMA,KACNrL,OACEyhC,WAAY,+BAKlByyD,gCAAgCnsF,SAAW,cAAe,YAE1DxX,QAAQhD,OAAO,qBAAqB6d,UAAU,2BAA4B8oF,kCAEzEljG,KAAKrD,MAsBR,WACE,GAAI4mG,uBAAuBp1F,SAE3BA,WAAYxR,KAAKD,MAAMyR,UAEvBo1F,sBAAwB,WAsFtB,QAASA,uBAAsBlsF,UAAWmsF,KACxC7mG,KAAK0a,UAAYA,UACjB1a,KAAK6mG,IAAMA,IA8Db,MArJAD,uBAAsBxsF,SAAW,aAAc,QAE/CwsF,sBAAsB13F,UAAU43F,sBAC9BjhG,OAAU,uBACVwnB,QAAW,wBACXod,iBAAoB,4BACpBxY,OAAU,uBACV5D,YAAe,4BACf4U,SAAY,yBACZF,SAAY,yBACZv5B,KAAQ,qBACR42B,WAAc,yBACdI,WAAc,4BAGhBomE,sBAAsB13F,UAAU2kF,SAC9Br1E,SAAU,SAASuoF,SAAUp5F,OAC3B,GAAIq5F,YAAY9gG,IAAKyF,IAErB,OADAA,MAAOo7F,SAASllE,OAAO,OAAQ,SAC3Bl2B,KAAKvG,IAAI,uBACX4hG,WAAahnG,KAAK0a,UAAUhT,QAAQ,2BAClC8W,SAAU7S,KAAKvG,IAAI,cAErBc,IAAM,qEACClG,KAAKinG,SAAS/gG,IAAKyF,KAAKvG,IAAI,QAAS4hG,aAErChnG,KAAKknG,iBAAiBv7F,KAAKvG,IAAI,UAG1C+hG,WAAY,SAASJ,SAAUp5F,OAC7B,GAAIw5F,WAEJ,OADAA,YAAaJ,SAASllE,OAAO,OAAQ,aAAc,QAC5C7hC,KAAK0a,UAAUhT,QAAQ1H,KAAK8mG,qBAAqBK,cAE1DhnF,aAAc,SAAS4mF,SAAUp5F,OAC/B,GAAIzH,IAEJ,OADAA,KAAM,8DACClG,KAAKinG,SAAS/gG,IAAK6gG,SAASllE,OAAO,OAAQ,UAAW,WAE/DulE,UAAW,SAASL,SAAUp5F,OAC5B,GAAIy5F,WAAW94F,KAUf,OATIjO,GAAE2tC,QAAQ+4D,SAASllE,OAAO,OAAQ,aAAc,UAAUzqB,SAC5D9I,MAAQy4F,SAASllE,OAAO,OAAQ,aAAc,UAAUz8B,IAAI,GAC9C,OAAVkJ,OAAoE,gBAAlDy4F,SAASllE,OAAO,OAAQ,aAAc,UAC1DvzB,MAAQtO,KAAK0a,UAAUhT,QAAQ,+BAEjC0/F,UAAY94F,OAEZ84F,UAAYL,SAASllE,OAAO,OAAQ,aAAc,UAAU3E,QAAQ93B,IAAI,GAEnE/E,EAAEggB,OAAO+mF,YAElBC,YAAa,SAASN,SAAUp5F,OAC9B,GAAIzH,IAEJ,OADAA,KAAM,6HACClG,KAAKinG,SAAS/gG,IAAK6gG,SAASllE,OAAO,OAAQ,YAAa,WAEjEylE,QAAS,SAASP,SAAUp5F,OAC1B,GAAI45F,UAAUxxF,IAAKxC,KAAMrN,GAOzB,OANA6P,KAAM/V,KAAKwnG,gBAAgBT,SAAUp5F,OAAOvI,IAAI,aAChDmiG,UACExxF,IAAK,oBAEP7P,IAAMlG,KAAKynG,iBAAiBF,UAC5Bh0F,KAAO,IAAMwC,IAAI3Q,IAAI,OAAS,IAAM2Q,IAAI3Q,IAAI,WACrCpF,KAAKinG,SAAS/gG,IAAKqN,OAE5Bm0F,SAAU,SAASX,SAAUp5F,OAC3B,GAAIoI,KAAKxC,KAAMrN,GAUf,OATA6P,KAAM/V,KAAKwnG,gBAAgBT,SAAUp5F,OACrCzH,IAAMlG,KAAKynG,iBAAiB95F,OAE1B4F,KADgB,aAAd5F,MAAMoI,IACDvE,UAAUuE,IAAI3Q,IAAI,SACF,cAAduI,MAAMoI,IACRA,IAAI3Q,IAAI,QAER,IAAM2Q,IAAI3Q,IAAI,OAAS,IAAM2Q,IAAI3Q,IAAI,WAEvCpF,KAAKinG,SAAS/gG,IAAKqN,OAE5Bo0F,UAAW,SAASZ,SAAUp5F,OAC5B,MAAOtN,GAAEggB,OAAO0mF,SAASllE,OAAO,OAAQ,aAAc,UAAU+lE,SAAS1qE,WAS7E0pE,sBAAsB13F,UAAU24F,sBAAwB,SAASjoB,MAAOmnB,SAAUp5F,OAChF,MAAO3N,MAAK6zF,QAAQjU,OAAOv8E,KAAKrD,KAAM+mG,SAAUp5F,QAGlDi5F,sBAAsB13F,UAAUs4F,gBAAkB,SAAST,SAAUp5F,OACnE,MAAOo5F,UAASllE,OAAO,OAAQl0B,MAAMoI,OAGvC6wF,sBAAsB13F,UAAUu4F,iBAAmB,SAAS95F,OAC1D,GAAIzH,IASJ,OARAA,MACEu8B,OAAU,wBAAyB,2FACnC0+C,UAAa,oBAAqB,6FAClC/zD,MAAS,uBAAwB,2FACjC60D,WAAc,6BAA8B,2FAC5C6lB,kBAAqB,6BAA8B,wGACnD36D,WAAc,oBAAqB,gGAE9BjnC,IAAIyH,MAAMoI,KAAK,GAAK7P,IAAIyH,MAAMoI,KAAK,IAG5C6wF,sBAAsB13F,UAAU+3F,SAAW,SAAS/gG,IAAKqN,KAAM7P,OAE7D,MADAA,OAAQA,OAAS6P,KACV0U,EAAE,OAAO3V,KAAK,SAAUpM,KAAKqN,KAAKA,MAAMjB,KAAK,QAAS5O,OAAOo8C,KAAK,cAG3E8mD,sBAAsB13F,UAAUg4F,iBAAmB,SAAS3zF,MAC1D,GAAI7P,MAEJ,OADAA,OAAQA,OAAS6P,KACV0U,EAAE,UAAUnC,SAAS,YAAYvS,KAAKA,MAAMusC,KAAK,cAG1D8mD,sBAAsB13F,UAAU64F,WAAa,SAAShB,SAAUp5F,MAAOq6F,eACrE,GAAI9jG,OAOJ,OANAA,WACA8jG,cAAcC,iBAAiB/wF,QAAQ,SAAU3P,OAC/C,MAAO,UAASq4E,OACd,MAAO17E,QAAO07E,OAASr4E,MAAMsgG,sBAAsBjoB,MAAOmnB,SAAUp5F,SAErE3N,OACIkE,QAGT0iG,sBAAsB13F,UAAUg5F,SAAW,SAASnB,SAAUp5F,MAAOnE,MACnE,GAAItF,QAAQikG,WAAYC,WAYxB,OAXAlkG,QAASlE,KAAK+nG,WAAWhB,SAAUp5F,MAAOnE,MAC1C2+F,cACAnyF,OAAO9D,KAAKhO,QAAQgT,QAAQ,SAASlI,KACnC,MAAOm5F,YAAWn5F,KAAO,KAAOA,IAAM,OAExCo5F,YAAcpoG,KAAK0a,UAAUhT,QAAQ8B,KAAKwF,IAAKm5F,YAC/CnyF,OAAO9D,KAAKhO,QAAQgT,QAAQ,SAASlI,KACnC,GAAImP,KAEJ,OADAA,MAAO,KAAOnP,IAAM,KACbo5F,YAAcA,YAAYniG,QAAQ,GAAI4P,QAAOsI,KAAM,KAAMja,OAAO8K,QAElEo5F,aAGFxB,yBAIThkG,QAAQhD,OAAO,qBAAqBsd,QAAQ,0BAA2B0pF,wBAEtEvjG,KAAKrD,MAsBR,WACE,GAAIqoG,kBAAkBC,YAEtBA,cAAe,SAASvB,SAAUp5F,OAChC,GAAI0xD,MA4NJ,OA3NAA,SAEIpvB,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,eAAdA,MAAMoI,KAEf/G,IAAK,sBACLi5F,kBAAmB,gBACnB34E,OAAQ,SAASy3E,UACf,MAAO7rF,WAAU4uE,KACfn+E,KAAMo7F,SAASllE,OAAO,OAAQ,SAC9ByG,KAAMy+D,SAASllE,OAAO,OAAQ,cAIlCoO,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,YAAdA,MAAMoI,KAAoC,WAAfpI,MAAMnE,MAE1CwF,IAAK,uBACLi5F,kBAAmB,WAAY,gBAC/BtkG,YAAa,SAASojG,UACpB,MAAOA,UAASllE,OAAO,OAAQ,UAAW,mBAG5CoO,MAAO,SAAS82D,SAAUp5F,OACxB,MAAsB,WAAfA,MAAMnE,MAAqBu9F,SAASwB,OAAO,OAAQ,gBAAoE,gBAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAEpH7yB,IAAK,6BACLi5F,kBAAmB,WAAY,cAE/Bh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,cAAdA,MAAMoI,KAAsC,WAAfpI,MAAMnE,MAE5CwF,IAAK,sBACLi5F,kBAAmB,WAAY,eAAgB,cAE/Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,UAAdA,MAAMoI,KAAkC,WAAfpI,MAAMnE,MAExCwF,IAAK,yBACLi5F,kBAAmB,WAAY,eAAgB,cAE/Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,aAAdA,MAAMoI,KAAqC,WAAfpI,MAAMnE,MAE3CwF,IAAK,wBACLi5F,kBAAmB,WAAY,eAAgB,cAE/Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,SAAdA,MAAMoI,KAAiC,WAAfpI,MAAMnE,OAAsBu9F,SAASllE,OAAO,OAAQ,OAAQ,eAE7F7yB,IAAK,wBACLi5F,kBAAmB,WAAY,eAAgB,cAE/Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,SAAdA,MAAMoI,KAAiC,WAAfpI,MAAMnE,MAAqBu9F,SAASllE,OAAO,OAAQ,OAAQ,eAE5F7yB,IAAK,gCACLi5F,kBAAmB,WAAY,eAAgB,WAAY,aAE3Dh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,cAAdA,MAAMoI,KAAsC,WAAfpI,MAAMnE,MAE5CwF,IAAK,6BACLi5F,kBAAmB,WAAY,eAAgB,cAE/Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAOo5F,UAASllE,OAAO,OAAQ,aAA6B,cAAdl0B,MAAMoI,KAEtD/G,IAAK,0BACLi5F,kBAAmB,WAAY,YAC/BtkG,YAAa,SAASojG,UACpB,GAAIxzF,KAEJ,OADAA,MAAOwzF,SAASllE,OAAO,OAAQ,iBACxB5Z,EAAEA,EAAEqR,UAAU/lB,OAAOA,UAG9B08B,MAAO,SAAS82D,SAAUp5F,OACxB,MAAOo5F,UAASllE,OAAO,OAAQ,aAA6B,UAAdl0B,MAAMoI,KAEtD/G,IAAK,6BACLi5F,kBAAmB,WAAY,YAC/BtkG,YAAa,SAASojG,UACpB,GAAIxzF,KAEJ,OADAA,MAAOwzF,SAASllE,OAAO,OAAQ,iBACxB5Z,EAAEA,EAAEqR,UAAU/lB,OAAOA,UAG9B08B,MAAO,SAAS82D,SAAUp5F,OACxB,MAAOo5F,UAASllE,OAAO,OAAQ,aAA6B,SAAdl0B,MAAMoI,KAEtD/G,IAAK,4BACLi5F,kBAAmB,WAAY,YAC/BtkG,YAAa,SAASojG,UACpB,GAAIxzF,KAEJ,OADAA,MAAOwzF,SAASllE,OAAO,OAAQ,iBACxB5Z,EAAEA,EAAEqR,UAAU/lB,OAAOA,UAG9B08B,MAAO,SAAS82D,SAAUp5F,OACxB,MAAOo5F,UAASwB,OAAO,OAAQ,gBAAoE,kBAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAA+BklE,SAASwB,OAAO,OAAQ,aAAc,QAAS,mBAAoC,WAAf56F,MAAMnE,MAElMwF,IAAK,oBACLi5F,kBAAmB,WAAY,cAE/Bh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAIo5F,UAASwB,OAAO,OAAQ,gBAAoE,kBAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAA8C,WAAfl0B,MAAMnE,MAAmC,cAAdmE,MAAMoI,IACnE,OAAxEgxF,SAASllE,OAAO,OAAQ,aAAc,QAAS,cAAcz8B,IAAI,IAEnE,GAET4J,IAAK,qCACLi5F,kBAAmB,WAAY,cAE/Bh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAOo5F,UAASwB,OAAO,OAAQ,gBAAoE,kBAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAA8C,WAAfl0B,MAAMnE,MAAmC,cAAdmE,MAAMoI,KAEzJ/G,IAAK,8BACLi5F,kBAAmB,WAAY,WAAY,iBAE3Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAIo5F,UAASwB,OAAO,OAAQ,gBAAoE,YAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAAwC,WAAfl0B,MAAMnE,KAC1Gu9F,SAASllE,OAAO,OAAQ,aAAc,QAAS,eAAez8B,IAAI,MAAO,GAE3E,GAET4J,IAAK,mBACLi5F,kBAAmB,WAAY,YAC/BtkG,YAAa,SAASojG,UACpB,GAAIxzF,KACJ,OAAIwzF,UAASwB,OAAO,OAAQ,aAAc,QAAS,uBACjDh1F,KAAOwzF,SAASllE,OAAO,OAAQ,aAAc,QAAS,sBAAsBz8B,IAAI,GACzE6iB,EAAEA,EAAEqR,UAAU/lB,OAAOA,SAErB,KAIX08B,MAAO,SAAS82D,SAAUp5F,OACxB,MAAIo5F,UAASwB,OAAO,OAAQ,gBAAoE,YAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAAwC,WAAfl0B,MAAMnE,KAC1Gu9F,SAASllE,OAAO,OAAQ,aAAc,QAAS,eAAez8B,IAAI,MAAO,GAE3E,GAET4J,IAAK,qBACLi5F,kBAAmB,WAAY,cAE/Bh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,cAAdA,MAAMoI,KAAsC,WAAfpI,MAAMnE,MAE5CwF,IAAK,6BACLi5F,kBAAmB,WAAY,cAE/Bh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,aAAdA,MAAMoI,KAAqC,WAAfpI,MAAMnE,MAE3CwF,IAAK,wBACLi5F,kBAAmB,WAAY,cAE/Bh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,cAAdA,MAAMoI,KAAsC,WAAfpI,MAAMnE,MAAqBu9F,SAASwB,OAAO,OAAQ,gBAAoE,WAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAEjJ7yB,IAAK,6BACLi5F,kBAAmB,WAAY,aAAc,WAAY,YAAa,eAEtEh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,cAAdA,MAAMoI,KAAsC,WAAfpI,MAAMnE,MAAqBu9F,SAASwB,OAAO,OAAQ,gBAAoE,qBAAlDxB,SAASllE,OAAO,OAAQ,aAAc;EAEjJ7yB,IAAK,sBACLi5F,kBAAmB,WAAY,aAAc,cAE7Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,cAAdA,MAAMoI,KAAsC,WAAfpI,MAAMnE,MAE5CwF,IAAK,qCACLi5F,kBAAmB,WAAY,aAAc,WAAY,eAEzDh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,UAAdA,MAAMoI,KAAkC,WAAfpI,MAAMnE,MAAqBu9F,SAASwB,OAAO,OAAQ,gBAAoE,qBAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAE7I7yB,IAAK,yBACLi5F,kBAAmB,WAAY,aAAc,cAE7Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,UAAdA,MAAMoI,KAAkC,WAAfpI,MAAMnE,MAExCwF,IAAK,wCACLi5F,kBAAmB,WAAY,aAAc,WAAY,eAEzDh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,SAAdA,MAAMoI,KAAiC,WAAfpI,MAAMnE,OAAsBu9F,SAASllE,OAAO,OAAQ,OAAQ,eAAiBklE,SAASwB,OAAO,OAAQ,gBAAoE,qBAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAE9L7yB,IAAK,wBACLi5F,kBAAmB,WAAY,aAAc,cAE7Ch4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,SAAdA,MAAMoI,KAAiC,WAAfpI,MAAMnE,MAAqBu9F,SAASllE,OAAO,OAAQ,OAAQ,eAAiBklE,SAASwB,OAAO,OAAQ,gBAAoE,qBAAlDxB,SAASllE,OAAO,OAAQ,aAAc,SAE7L7yB,IAAK,gCACLi5F,kBAAmB,WAAY,aAAc,WAAY,aAEzDh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,SAAdA,MAAMoI,KAAiC,WAAfpI,MAAMnE,OAAsBu9F,SAASllE,OAAO,OAAQ,OAAQ,eAE7F7yB,IAAK,uCACLi5F,kBAAmB,WAAY,aAAc,WAAY,eAEzDh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,SAAdA,MAAMoI,KAAiC,WAAfpI,MAAMnE,MAAqBu9F,SAASllE,OAAO,OAAQ,OAAQ,eAE5F7yB,IAAK,0CACLi5F,kBAAmB,WAAY,aAAc,WAAY,UAAW,eAEpEh4D,MAAO,SAAS82D,SAAUp5F,OACxB,MAAqB,SAAdA,MAAMoI,KAAiC,WAAfpI,MAAMnE,MAEvCwF,IAAK,oBACLi5F,kBAAmB,cAGhB5nG,EAAE8d,KAAKkhD,MAAO,SAAStpD,KAC5B,MAAOA,KAAIk6B,MAAM82D,SAAUp5F,UAI/B06F,iBAAmB,WACjB,QAASA,qBAMT,MAJAA,kBAAiBn5F,UAAUs5F,QAAU,SAASzB,SAAUp5F,OACtD,MAAO26F,cAAavB,SAAUp5F,QAGzB06F,oBAITzlG,QAAQhD,OAAO,qBAAqBsd,QAAQ,yBAA0BmrF,mBAErEhlG,KAAKrD,MAsBR,WACE,GAAIyoG,0BAEJA,2BAA4B,WAC1B,OACEnlG,YAAa,2DACb+O,OACE00F,SAAU,yBAKhBnkG,QAAQhD,OAAO,qBAAqB6d,UAAU,qBAAsBgrF,4BAEnEplG,KAAKrD,MAsBR,WACE,GAAI0oG,+BAEJA,gCAAiC,WAC/B,GAAI3yF,IAsCJ,OArCAA,QACAA,IAAI4yF,SAAW,SAAS7iG,QACtB,GAAI8iG,YAAYtiD,MAAO14C,KAAMstB,IA6B7B,OA5BAA,MAAO,EACPorB,MAAQprC,UAAU24B,OAClB/tC,OAAO+iG,SAAW/iG,OAAO+iG,UAAY,GACrCj7F,KAAO,WAEL,MADA04C,OAAQprC,UAAU24B,OACX+0D,cAETA,WAAa,WACX,MAAO9iG,QAAOyrF,MAAMr2D,MAAM/3B,KAAK,SAASwC,UACtC,GAAIuB,KAUJ,OATAg0B,QACAh0B,KAAOvB,SAASP,IAAI,QAChBU,OAAOgH,SACT5F,KAAOpB,OAAOgH,OAAO5F,OAEnBpB,OAAOxF,MACT4G,KAAOA,KAAK5G,IAAIwF,OAAOxF,MAEzBgmD,MAAQA,MAAM/3C,OAAOrH,MACjBo/C,MAAMnxC,KAAOrP,OAAO+iG,UAAYljG,SAASP,IAAI,QACxCwjG,aAEF1tF,UAAU4uE,KACfxjC,MAAOA,MACP14C,KAAMjI,SAASP,IAAI,cAKvBwI,KAAM,WACJ,MAAOA,WAINmI,KAGTnT,QAAQhD,OAAO,qBAAqB4G,QAAQ,0CAA2CkiG,iCAEtFrlG,KAAKrD,MA2BR,WACE,GAAI8oG,wBAAwBl4F,MAAO7Q,MACjC8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEb6Q,MAAQ5Q,KAAKD,MAAM6Q,MAEnBk4F,uBAAyB,SAAUp5F,YAKjC,QAASo5F,wBAAuBC,qBAC9B/oG,KAAK+oG,oBAAsBA,oBAC3B/oG,KAAKgpG,aAAe9tF,UAAU24B,OAC9B7zC,KAAK25F,gBAAiB,EACtB35F,KAAK+mG,SAAW,KACZ/mG,KAAKyY,UACPzY,KAAK+mG,SAAW/mG,KAAK+oG,oBAAoBE,mBAAmBjpG,KAAKyY,WACxDzY,KAAKwlE,YACdxlE,KAAK+mG,SAAW/mG,KAAK+oG,oBAAoBtG,mBAAmBziG,KAAK2L,KAAKvG,IAAI,OAE1EpF,KAAK+mG,SAAW/mG,KAAK+oG,oBAAoBrG,gBAAgB1iG,KAAK2L,KAAKvG,IAAI,OAiB3E,MA/BAvC,QAAOimG,uBAAwBp5F,YAE/Bo5F,uBAAuB1uF,SAAW,yBAgBlC0uF,uBAAuB55F,UAAUg6F,aAAe,WAE9C,MADAlpG,MAAK25F,gBAAiB,EACf35F,KAAK+mG,SAASn5F,OAAOzK,KAAK,SAAUoE,OACzC,MAAO,UAAS5B,UAKd,MAJA4B,OAAMyhG,aAAezhG,MAAMyhG,aAAaz6F,OAAO5I,SAASP,IAAI,UACxDO,SAASP,IAAI,UACfmC,MAAMoyF,gBAAiB,GAElBpyF,MAAMyhG,eAEdhpG,QAGE8oG,wBAENl4F,MAAM7Q,MAAMmQ,WAAYnQ,MAAMuX,UAAWvX,MAAMsX,eAElDzU,QAAQhD,OAAO,qBAAqB2D,WAAW,eAAgBulG,yBAE9DzlG,KAAKrD,MAsBR,WACE,GAAImpG,sBAEJA,uBAAwB,WACtB,OACE7lG,YAAa,iDACbC,WAAY,eACZC,aAAc,KACd6O,OACEoG,UAAW,aACX9M,KAAM,IACN65D,YAAa,KAEfkF,kBAAkB,IAItB9nE,QAAQhD,OAAO,gBAAgB6d,UAAU,iBAAkB0rF,wBAE1D9lG,KAAKrD,MAsBR,WACE,GAAIopG,qBAAqBrpG,MACvB8C,OAAS,SAAS+L,MAAOC,QAA+F,QAASC,QAAS9O,KAAK+O,YAAcH,MAA1H,IAAK,GAAII,OAAOH,QAAcI,QAAQ5L,KAAKwL,OAAQG,OAAMJ,MAAMI,KAAOH,OAAOG,KAA2J,OAArGF,MAAKI,UAAYL,OAAOK,UAAWN,MAAMM,UAAY,GAAIJ,MAAQF,MAAMO,UAAYN,OAAOK,UAAkBN,OAClRK,WAAaG,cAEfrP,OAAQC,KAAKD,MAEbqpG,oBAAsB,SAAU15F,YAK9B,QAAS05F,qBAAoB9wF,GAAI+wF,sCAAuCC,qBAAsBC,uBAC5FvpG,KAAKsY,GAAKA,GACVtY,KAAKqpG,sCAAwCA,sCAC7CrpG,KAAKspG,qBAAuBA,qBAC5BtpG,KAAKupG,sBAAwBA,sBAiO/B,MAzOA1mG,QAAOumG,oBAAqB15F,YAE5B05F,oBAAoBhvF,SAAW,cAAe,0CAA2C,yBAA0B,2BASnHgvF,oBAAoBl6F,UAAUs6F,eAAiB,SAAU,UAAW,mBAAoB,cAAe,SAAU,WAAY,WAAY,OAAQ,cAAe,aAAc,eAAgB,OAAQ,mBAAoB,kBAAmB,UAAW,gBAAiB,aAEzQJ,oBAAoBl6F,UAAUu6F,WAE1Bx5D,MAAO,SAAS82D,UACd,GAAI2C,UAAUC,UAEd,IADAA,WAAa5C,SAAS3hG,IAAI,QAAQA,IAAI,cACtB,CAEd,GADAskG,SAAWC,WAAWvkG,IAAI,OACmB,KAAzCpF,KAAKwpG,cAAcrjG,QAAQujG,UAC7B,OAAO,CACF,IAAiB,gBAAbA,UAA0E,IAA5CC,WAAWvkG,IAAI,SAASA,IAAI,OAAO+P,KAC1E,OAAO,EAGX,OAAO,KAGT86B,MAAO,SAAS82D,UACd,GAAIp5F,OAAOg8F,UAGX,OAFAh8F,OAAQo5F,SAAS3hG,IAAI,cAAciH,MAAM,KACzCs9F,WAAa5C,SAAS3hG,IAAI,QAAQA,IAAI,cAClB,WAAbuI,MAAM,IAAkC,SAAfg8F,cAGlC15D,MAAO,SAAS82D,UACd,GAAIp5F,MAEJ,OADAA,OAAQo5F,SAAS3hG,IAAI,cAAciH,MAAM,KACrB,WAAbsB,MAAM,MAGfsiC,MAAO,SAAS82D,UACd,GAAIp5F,MAEJ,OADAA,OAAQo5F,SAAS3hG,IAAI,cAAciH,MAAM,KACrB,YAAbsB,MAAM,IAAiC,WAAbA,MAAM,MAGzCsiC,MAAO,SAAS82D,UACd,QAASA,SAAS3hG,IAAI,QAAQA,IAAI,sBAGpC6qC,MAAO,SAAS82D,UACd,GAAIp5F,OAAOg8F,UAGX,OAFAh8F,OAAQo5F,SAAS3hG,IAAI,cAAciH,MAAM,KACzCs9F,WAAa5C,SAAS3hG,IAAI,QAAQA,IAAI,cAClCukG,YAA2B,SAAbh8F,MAAM,IAA8B,WAAbA,MAAM,IAA6C,cAA1Bg8F,WAAWvkG,IAAI,OACxE2hG,SAAS3hG,IAAI,QAAQA,IAAI,cAAcA,IAAI,UAE7C,KAKbgkG,oBAAoBl6F,UAAU06F,mBAAqB,SAAS7C,UAC1D,MAAO1mG,GAAE0oC,KAAK/oC,KAAKypG,SAAU,SAAUliG,OACrC,MAAO,UAASsiG,SACd,MAAOA,SAAQ55D,MAAM5sC,KAAKkE,MAAOw/F,YAElC/mG,QAGLopG,oBAAoBl6F,UAAU46F,gBAAkB,SAASC,YAEvD,MADAA,YAAaA,WAAW19F,MAAM,MAE5BrI,QAAS+lG,WAAW,GACpBh0F,IAAKg0F,WAAW,GAChBvgG,KAAMugG,WAAW,KAIrBX,oBAAoBl6F,UAAU86F,mBAAqB,SAASjD,SAAUp5F,OACpE,MAAIo5F,UAAS3hG,IAAI,QAAQA,IAAIuI,MAAMoI,KAC1BgxF,SAAS3hG,IAAI,QAAQA,IAAIuI,MAAMoI,KADxC,QAKFqzF,oBAAoBl6F,UAAU+6F,gCAAkC,SAASlD,SAAUp5F,MAAOnE,MACxF,GAAI9F,MAaJ,OAZAA,OAAQ1D,KAAKupG,sBAAsBrB,SAASnB,SAAUp5F,MAAOnE,MAC7Du9F,SAAWA,SAASlrF,IAAI,aAAcnY,OACtCqjG,SAAWA,SAASlrF,IAAI,MAAO7b,KAAKgqG,mBAAmBjD,SAAUp5F,QAC7DnE,KAAK7F,cACPojG,SAAWA,SAASlrF,IAAI,cAAerS,KAAK7F,YAAYojG,YAEtDv9F,KAAK8lB,SACPy3E,SAAWA,SAASlrF,IAAI,SAAUrS,KAAK8lB,OAAOy3E,YAEM,gBAAlDA,SAASllE,OAAO,OAAQ,aAAc,SAA6BklE,SAASwB,OAAO,OAAQ,aAAc,QAAS,UACpHxB,SAAWA,SAASlrF,IAAI,cAAekrF,SAASllE,OAAO,OAAQ,aAAc,QAAS,UAEjFklE,UAGTqC,oBAAoBl6F,UAAUg7F,eAAiB,SAASvkG,UACtD,GAAIwkG,QA2CJ,OA1CAA,SAAUjvF,UAAU24B,OACpBluC,SAASP,IAAI,QAAQ8R,QAAQ,SAAU3P,OACrC,MAAO,UAASkK,MACd,GAAIvK,MAAMyG,MAAOy8F,QAAS5/D,WAI1B,OAHA78B,OAAQpG,MAAMuiG,gBAAgBr4F,KAAKrM,IAAI,eACvC8B,KAAOuK,KAAKrM,IAAI,QAChBolC,YAActjC,KAAK9B,IAAI,eACnBolC,aAAeA,YAAYwV,SACzBxV,YAAYoyC,IAAI,gBAClBpyC,YAActvB,UAAU4uE,KACtBugB,QAAW7/D,eAGXA,YAAYoyC,IAAI,aAEhBpyC,YADgB,cAAd78B,MAAMoI,IACMmF,UAAU4uE,KACtBwgB,cAAiB9/D,cAGLA,YAAY+/D,UAAU,cAAe,cAE9B,cAAd58F,MAAMoI,MACfy0B,YAActvB,UAAU4uE,KACtB38C,UAAa3C,eAGVA,YAAYtzB,QAAQ,SAAS5I,MAAOU,KACzC,GAAIo7F,SAASr0F,GAOb,OANAA,KAAMmF,UAAU4uE,KACd96E,IAAKA,IACLV,MAAOA,QAET87F,QAAU34F,KAAKw4E,OAAO,OAAQ,cAAel0E,KAC7Cq0F,QAAUA,QAAQG,UAAU,OAAQ,gBAC7BJ,QAAUA,QAAQzjG,KAAK0jG,aAGhCA,QAAU34F,KAAK84F,UAAU,OAAQ,gBAC1BJ,QAAUA,QAAQzjG,KAAK0jG,YAGjCpqG,OACI2F,SAASkW,IAAI,OAAQsuF,UAG9Bf,oBAAoBl6F,UAAUs7F,mBAAqB,SAAS/4F,MAC1D,GAAI9D,OAAOnE,IAGX,OAFAmE,OAAQ3N,KAAK8pG,gBAAgBr4F,KAAKrM,IAAI,eACtCoE,KAAOxJ,KAAKspG,qBAAqBd,QAAQ/2F,KAAM9D,OACxC3N,KAAKiqG,gCAAgCx4F,KAAM9D,MAAOnE,OAG3D4/F,oBAAoBl6F,UAAUuzF,mBAAqB,SAAS7yE,QAC1D,GAAI9pB,OAqBJ,OApBAA,WACAA,OAAOyrF,MAAQ,SAAUhqF,OACvB,MAAO,UAAS2zB,MACd,MAAO3zB,OAAM+Q,GAAGd,MAAMirF,mBAAmB7yE,OAAQsL,MAAM/3B,KAAK,SAASwC,UACnE,MAAO4B,OAAM2iG,eAAevkG,cAG/B3F,MACH8F,OAAOxF,IAAM,SAAUiH,OACrB,MAAO,UAASwO,KACd,MAAOxO,OAAMijG,mBAAmBz0F,OAEjC/V,MACH8F,OAAOgH,OAAS,SAAUvF,OACxB,MAAO,UAAS++C,OACd,MAAOA,OAAMmkD,UAAU,SAASh5F,MAC9B,MAAOlK,OAAMqiG,mBAAmBn4F,UAGnCzR,MACIA,KAAKqpG,sCAAsCV,SAAS7iG,SAG7DsjG,oBAAoBl6F,UAAUwzF,gBAAkB,SAAS9yE,QACvD,GAAI9pB,OAqBJ,OApBAA,WACAA,OAAOyrF,MAAQ,SAAUhqF,OACvB,MAAO,UAAS2zB,MACd,MAAO3zB,OAAM+Q,GAAGd,MAAMkrF,gBAAgB9yE,OAAQsL,MAAM/3B,KAAK,SAASwC,UAChE,MAAO4B,OAAM2iG,eAAevkG,cAG/B3F,MACH8F,OAAOxF,IAAM,SAAUiH,OACrB,MAAO,UAASwO,KACd,MAAOxO,OAAMijG,mBAAmBz0F,OAEjC/V,MACH8F,OAAOgH,OAAS,SAAUvF,OACxB,MAAO,UAAS++C,OACd,MAAOA,OAAMmkD,UAAU,SAASh5F,MAC9B,MAAOlK,OAAMqiG,mBAAmBn4F,UAGnCzR,MACIA,KAAKqpG,sCAAsCV,SAAS7iG,SAG7DsjG,oBAAoBl6F,UAAU+5F,mBAAqB,SAASxwF,WAC1D,GAAI3S,OAqBJ,OApBAA,WACAA,OAAOyrF,MAAQ,SAAUhqF,OACvB,MAAO,UAAS2zB,MACd,MAAO3zB,OAAM+Q,GAAGC,SAASspF,YAAYppF,UAAWyiB,MAAM/3B,KAAK,SAASwC,UAClE,MAAO4B,OAAM2iG,eAAevkG,cAG/B3F,MACH8F,OAAOxF,IAAM,SAAUiH,OACrB,MAAO,UAASwO,KACd,MAAOxO,OAAMijG,mBAAmBz0F,OAEjC/V,MACH8F,OAAOgH,OAAS,SAAUvF,OACxB,MAAO,UAAS++C,OACd,MAAOA,OAAMmkD,UAAU,SAASh5F,MAC9B,MAAOlK,OAAMqiG,mBAAmBn4F,UAGnCzR,MACIA,KAAKqpG,sCAAsCV,SAAS7iG,SAGtDsjG,qBAENrpG,MAAMkQ,SAETrN,QAAQhD,OAAO,qBAAqBsd,QAAQ,wBAAyBksF,sBAEpE/lG,KAAKrD","file":"app.js","sourceRoot":"/source/","sourcesContent":["\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: app.coffee\n */\n\n(function() {\n var configure, i18nInit, init, module, modules, pluginsWithModule, taiga;\n\n this.taiga = taiga = {};\n\n this.taigaContribPlugins = this.taigaContribPlugins || window.taigaContribPlugins || [];\n\n taiga.generateHash = function(components) {\n if (components == null) {\n components = [];\n }\n components = _.map(components, function(x) {\n return JSON.stringify(x);\n });\n return hex_sha1(components.join(\":\"));\n };\n\n taiga.generateUniqueSessionIdentifier = function() {\n var date, randomNumber;\n date = (new Date()).getTime();\n randomNumber = Math.floor(Math.random() * 0x9000000);\n return taiga.generateHash([date, randomNumber]);\n };\n\n taiga.sessionId = taiga.generateUniqueSessionIdentifier();\n\n configure = function($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, $compileProvider, $translateProvider, $translatePartialLoaderProvider, $animateProvider) {\n var authHttpIntercept, blockingIntercept, decorators, defaultHeaders, loaderIntercept, originalWhen, preferedLangCode, userInfo, versionCheckHttpIntercept;\n $animateProvider.classNameFilter(/^(?:(?!ng-animate-disabled).)*$/);\n originalWhen = $routeProvider.when;\n $routeProvider.when = function(path, route) {\n route.resolve || (route.resolve = {});\n angular.extend(route.resolve, {\n languageLoad: [\n \"$q\", \"$translate\", function($q, $translate) {\n var deferred;\n deferred = $q.defer();\n $translate().then(function() {\n return deferred.resolve();\n });\n return deferred.promise;\n }\n ]\n });\n return originalWhen.call($routeProvider, path, route);\n };\n $routeProvider.when(\"/\", {\n templateUrl: \"home/home.html\",\n controller: \"Home\",\n controllerAs: \"vm\",\n loader: true,\n title: \"HOME.PAGE_TITLE\",\n loader: true,\n description: \"HOME.PAGE_DESCRIPTION\",\n joyride: \"dashboard\"\n });\n $routeProvider.when(\"/discover\", {\n templateUrl: \"discover/discover-home/discover-home.html\",\n controller: \"DiscoverHome\",\n controllerAs: \"vm\",\n title: \"PROJECT.NAVIGATION.DISCOVER\",\n loader: true\n });\n $routeProvider.when(\"/discover/search\", {\n templateUrl: \"discover/discover-search/discover-search.html\",\n title: \"PROJECT.NAVIGATION.DISCOVER\",\n loader: true,\n controller: \"DiscoverSearch\",\n controllerAs: \"vm\",\n reloadOnSearch: false\n });\n $routeProvider.when(\"/projects/\", {\n templateUrl: \"projects/listing/projects-listing.html\",\n access: {\n requiresLogin: true\n },\n title: \"PROJECTS.PAGE_TITLE\",\n description: \"PROJECTS.PAGE_DESCRIPTION\",\n loader: true,\n controller: \"ProjectsListing\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/blocked-project/:pslug/\", {\n templateUrl: \"projects/project/blocked-project.html\",\n loader: true,\n controller: \"Project\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/project/:pslug/\", {\n templateUrl: \"projects/project/project.html\",\n loader: true,\n controller: \"Project\",\n controllerAs: \"vm\",\n section: \"project-timeline\"\n });\n $routeProvider.when(\"/project/:pslug/search\", {\n templateUrl: \"search/search.html\",\n reloadOnSearch: false,\n section: \"search\",\n loader: true\n });\n $routeProvider.when(\"/project/:pslug/backlog\", {\n templateUrl: \"backlog/backlog.html\",\n loader: true,\n section: \"backlog\",\n joyride: \"backlog\"\n });\n $routeProvider.when(\"/project/:pslug/kanban\", {\n templateUrl: \"kanban/kanban.html\",\n loader: true,\n section: \"kanban\",\n joyride: \"kanban\"\n });\n $routeProvider.when(\"/project/:pslug/taskboard/:sslug\", {\n templateUrl: \"taskboard/taskboard.html\",\n loader: true,\n section: \"backlog\"\n });\n $routeProvider.when(\"/project/:pslug/us/:usref\", {\n templateUrl: \"us/us-detail.html\",\n loader: true,\n section: \"backlog-kanban\"\n });\n $routeProvider.when(\"/project/:pslug/task/:taskref\", {\n templateUrl: \"task/task-detail.html\",\n loader: true,\n section: \"backlog-kanban\"\n });\n $routeProvider.when(\"/project/:pslug/wiki\", {\n redirectTo: function(params) {\n return \"/project/\" + params.pslug + \"/wiki/home\";\n }\n });\n $routeProvider.when(\"/project/:pslug/wiki/:slug\", {\n templateUrl: \"wiki/wiki.html\",\n loader: true,\n section: \"wiki\"\n });\n $routeProvider.when(\"/project/:pslug/team\", {\n templateUrl: \"team/team.html\",\n loader: true,\n section: \"team\"\n });\n $routeProvider.when(\"/project/:pslug/issues\", {\n templateUrl: \"issue/issues.html\",\n loader: true,\n section: \"issues\"\n });\n $routeProvider.when(\"/project/:pslug/issue/:issueref\", {\n templateUrl: \"issue/issues-detail.html\",\n loader: true,\n section: \"issues\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/details\", {\n templateUrl: \"admin/admin-project-profile.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/default-values\", {\n templateUrl: \"admin/admin-project-default-values.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/modules\", {\n templateUrl: \"admin/admin-project-modules.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/export\", {\n templateUrl: \"admin/admin-project-export.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-profile/reports\", {\n templateUrl: \"admin/admin-project-reports.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/status\", {\n templateUrl: \"admin/admin-project-values-status.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/points\", {\n templateUrl: \"admin/admin-project-values-points.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/priorities\", {\n templateUrl: \"admin/admin-project-values-priorities.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/severities\", {\n templateUrl: \"admin/admin-project-values-severities.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/types\", {\n templateUrl: \"admin/admin-project-values-types.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/project-values/custom-fields\", {\n templateUrl: \"admin/admin-project-values-custom-fields.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/memberships\", {\n templateUrl: \"admin/admin-memberships.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/roles\", {\n templateUrl: \"admin/admin-roles.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/webhooks\", {\n templateUrl: \"admin/admin-third-parties-webhooks.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/github\", {\n templateUrl: \"admin/admin-third-parties-github.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/gitlab\", {\n templateUrl: \"admin/admin-third-parties-gitlab.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/third-parties/bitbucket\", {\n templateUrl: \"admin/admin-third-parties-bitbucket.html\",\n section: \"admin\"\n });\n $routeProvider.when(\"/project/:pslug/admin/contrib/:plugin\", {\n templateUrl: \"contrib/main.html\"\n });\n $routeProvider.when(\"/project/:pslug/transfer/:token\", {\n templateUrl: \"projects/transfer/transfer-page.html\",\n loader: true,\n controller: \"Project\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/user-settings/user-profile\", {\n templateUrl: \"user/user-profile.html\"\n });\n $routeProvider.when(\"/user-settings/user-change-password\", {\n templateUrl: \"user/user-change-password.html\"\n });\n $routeProvider.when(\"/user-settings/mail-notifications\", {\n templateUrl: \"user/mail-notifications.html\"\n });\n $routeProvider.when(\"/change-email/:email_token\", {\n templateUrl: \"user/change-email.html\"\n });\n $routeProvider.when(\"/cancel-account/:cancel_token\", {\n templateUrl: \"user/cancel-account.html\"\n });\n $routeProvider.when(\"/user-settings/contrib/:plugin\", {\n templateUrl: \"contrib/user-settings.html\"\n });\n $routeProvider.when(\"/profile\", {\n templateUrl: \"profile/profile.html\",\n loader: true,\n access: {\n requiresLogin: true\n },\n controller: \"Profile\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/profile/:slug\", {\n templateUrl: \"profile/profile.html\",\n loader: true,\n controller: \"Profile\",\n controllerAs: \"vm\"\n });\n $routeProvider.when(\"/login\", {\n templateUrl: \"auth/login.html\",\n title: \"LOGIN.PAGE_TITLE\",\n description: \"LOGIN.PAGE_DESCRIPTION\",\n disableHeader: true,\n controller: \"LoginPage\"\n });\n $routeProvider.when(\"/register\", {\n templateUrl: \"auth/register.html\",\n title: \"REGISTER.PAGE_TITLE\",\n description: \"REGISTER.PAGE_DESCRIPTION\",\n disableHeader: true\n });\n $routeProvider.when(\"/forgot-password\", {\n templateUrl: \"auth/forgot-password.html\",\n title: \"FORGOT_PASSWORD.PAGE_TITLE\",\n description: \"FORGOT_PASSWORD.PAGE_DESCRIPTION\",\n disableHeader: true\n });\n $routeProvider.when(\"/change-password/:token\", {\n templateUrl: \"auth/change-password-from-recovery.html\",\n title: \"CHANGE_PASSWORD.PAGE_TITLE\",\n description: \"CHANGE_PASSWORD.PAGE_TITLE\",\n disableHeader: true\n });\n $routeProvider.when(\"/invitation/:token\", {\n templateUrl: \"auth/invitation.html\",\n title: \"INVITATION.PAGE_TITLE\",\n description: \"INVITATION.PAGE_DESCRIPTION\",\n disableHeader: true\n });\n $routeProvider.when(\"/external-apps\", {\n templateUrl: \"external-apps/external-app.html\",\n title: \"EXTERNAL_APP.PAGE_TITLE\",\n description: \"EXTERNAL_APP.PAGE_DESCRIPTION\",\n controller: \"ExternalApp\",\n controllerAs: \"vm\",\n disableHeader: true,\n mobileViewport: true\n });\n $routeProvider.when(\"/error\", {\n templateUrl: \"error/error.html\"\n });\n $routeProvider.when(\"/not-found\", {\n templateUrl: \"error/not-found.html\"\n });\n $routeProvider.when(\"/permission-denied\", {\n templateUrl: \"error/permission-denied.html\"\n });\n $routeProvider.otherwise({\n redirectTo: \"/not-found\"\n });\n $locationProvider.html5Mode({\n enabled: true,\n requireBase: false\n });\n defaultHeaders = {\n \"Content-Type\": \"application/json\",\n \"Accept-Language\": window.taigaConfig.defaultLanguage || \"en\",\n \"X-Session-Id\": taiga.sessionId\n };\n $httpProvider.defaults.headers[\"delete\"] = defaultHeaders;\n $httpProvider.defaults.headers.patch = defaultHeaders;\n $httpProvider.defaults.headers.post = defaultHeaders;\n $httpProvider.defaults.headers.put = defaultHeaders;\n $httpProvider.defaults.headers.get = {\n \"X-Session-Id\": taiga.sessionId\n };\n $httpProvider.useApplyAsync(true);\n $tgEventsProvider.setSessionId(taiga.sessionId);\n authHttpIntercept = function($q, $location, $navUrls, $lightboxService) {\n var httpResponseError;\n httpResponseError = function(response) {\n var nextUrl;\n if (response.status === 0 || (response.status === -1 && !response.config.cancelable)) {\n $lightboxService.closeAll();\n $location.path($navUrls.resolve(\"error\"));\n $location.replace();\n } else if (response.status === 401 && $location.url().indexOf('/login') === -1) {\n nextUrl = encodeURIComponent($location.url());\n $location.url($navUrls.resolve(\"login\")).search(\"next=\" + nextUrl);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"authHttpIntercept\", [\"$q\", \"$location\", \"$tgNavUrls\", \"lightboxService\", authHttpIntercept]);\n $httpProvider.interceptors.push(\"authHttpIntercept\");\n loaderIntercept = function($q, loaderService) {\n return {\n request: function(config) {\n loaderService.logRequest();\n return config;\n },\n requestError: function(rejection) {\n loaderService.logResponse();\n return $q.reject(rejection);\n },\n responseError: function(rejection) {\n loaderService.logResponse();\n return $q.reject(rejection);\n },\n response: function(response) {\n loaderService.logResponse();\n return response;\n }\n };\n };\n $provide.factory(\"loaderIntercept\", [\"$q\", \"tgLoader\", loaderIntercept]);\n $httpProvider.interceptors.push(\"loaderIntercept\");\n versionCheckHttpIntercept = function($q) {\n var httpResponseError;\n httpResponseError = function(response) {\n var $injector;\n if (response.status === 400 && response.data.version) {\n $injector = angular.element(\"body\").injector();\n $injector.invoke([\n \"$tgConfirm\", \"$translate\", (function(_this) {\n return function($confirm, $translate) {\n var versionErrorMsg;\n versionErrorMsg = $translate.instant(\"ERROR.VERSION_ERROR\");\n return $confirm.notify(\"error\", versionErrorMsg, null, 10000);\n };\n })(this)\n ]);\n }\n return $q.reject(response);\n };\n return {\n responseError: httpResponseError\n };\n };\n $provide.factory(\"versionCheckHttpIntercept\", [\"$q\", versionCheckHttpIntercept]);\n $httpProvider.interceptors.push(\"versionCheckHttpIntercept\");\n blockingIntercept = function($q, $routeParams, $location, $navUrls) {\n var redirectToBlockedPage, responseError, responseOk;\n redirectToBlockedPage = function() {\n var blockedUrl, currentUrl, pslug;\n pslug = $routeParams.pslug;\n blockedUrl = $navUrls.resolve(\"blocked-project\", {\n project: pslug\n });\n currentUrl = $location.url();\n if (currentUrl.indexOf(blockedUrl) === -1) {\n return $location.replace().path(blockedUrl);\n }\n };\n responseOk = function(response) {\n if (response.data.blocked_code) {\n redirectToBlockedPage();\n }\n return response;\n };\n responseError = function(response) {\n if (response.status === 451) {\n redirectToBlockedPage();\n }\n return $q.reject(response);\n };\n return {\n response: responseOk,\n responseError: responseError\n };\n };\n $provide.factory(\"blockingIntercept\", [\"$q\", \"$routeParams\", \"$location\", \"$tgNavUrls\", blockingIntercept]);\n $httpProvider.interceptors.push(\"blockingIntercept\");\n $compileProvider.debugInfoEnabled(window.taigaConfig.debugInfo || false);\n if (localStorage.userInfo) {\n userInfo = JSON.parse(localStorage.userInfo);\n }\n preferedLangCode = (userInfo != null ? userInfo.lang : void 0) || window.taigaConfig.defaultLanguage || \"en\";\n $translatePartialLoaderProvider.addPart('taiga');\n $translateProvider.useLoader('$translatePartialLoader', {\n urlTemplate: '/' + window._version + '/locales/{part}/locale-{lang}.json'\n }).useSanitizeValueStrategy('escapeParameters').addInterpolation('$translateMessageFormatInterpolation').preferredLanguage(preferedLangCode);\n $translateProvider.fallbackLanguage(preferedLangCode);\n decorators = window.getDecorators();\n return _.each(decorators, function(decorator) {\n return $provide.decorator(decorator.provider, decorator.decorator);\n });\n };\n\n i18nInit = function(lang, $translate) {\n var messages;\n moment.locale(lang);\n messages = {\n defaultMessage: $translate.instant(\"COMMON.FORM_ERRORS.DEFAULT_MESSAGE\"),\n type: {\n email: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_EMAIL\"),\n url: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_URL\"),\n urlstrict: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_URLSTRICT\"),\n number: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_NUMBER\"),\n digits: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_DIGITS\"),\n dateIso: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_DATEISO\"),\n alphanum: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_ALPHANUM\"),\n phone: $translate.instant(\"COMMON.FORM_ERRORS.TYPE_PHONE\")\n },\n notnull: $translate.instant(\"COMMON.FORM_ERRORS.NOTNULL\"),\n notblank: $translate.instant(\"COMMON.FORM_ERRORS.NOT_BLANK\"),\n required: $translate.instant(\"COMMON.FORM_ERRORS.REQUIRED\"),\n regexp: $translate.instant(\"COMMON.FORM_ERRORS.REGEXP\"),\n min: $translate.instant(\"COMMON.FORM_ERRORS.MIN\"),\n max: $translate.instant(\"COMMON.FORM_ERRORS.MAX\"),\n range: $translate.instant(\"COMMON.FORM_ERRORS.RANGE\"),\n minlength: $translate.instant(\"COMMON.FORM_ERRORS.MIN_LENGTH\"),\n maxlength: $translate.instant(\"COMMON.FORM_ERRORS.MAX_LENGTH\"),\n rangelength: $translate.instant(\"COMMON.FORM_ERRORS.RANGE_LENGTH\"),\n mincheck: $translate.instant(\"COMMON.FORM_ERRORS.MIN_CHECK\"),\n maxcheck: $translate.instant(\"COMMON.FORM_ERRORS.MAX_CHECK\"),\n rangecheck: $translate.instant(\"COMMON.FORM_ERRORS.RANGE_CHECK\"),\n equalto: $translate.instant(\"COMMON.FORM_ERRORS.EQUAL_TO\"),\n linewidth: $translate.instant(\"COMMON.FORM_ERRORS.LINEWIDTH\"),\n pikaday: $translate.instant(\"COMMON.FORM_ERRORS.PIKADAY\")\n };\n return checksley.updateMessages('default', messages);\n };\n\n init = function($log, $rootscope, $auth, $events, $analytics, $translate, $location, $navUrls, appMetaService, projectService, loaderService, navigationBarService) {\n var un, user, validators;\n $log.debug(\"Initialize application\");\n $rootscope.$on('$translatePartialLoaderStructureChanged', function() {\n return $translate.refresh();\n });\n validators = {\n linewidth: function(val, width) {\n var lines, valid;\n lines = taiga.nl2br(val).split(\"\");\n valid = _.every(lines, function(line) {\n return line.length < width;\n });\n return valid;\n },\n pikaday: function(val) {\n var prettyDate;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n return moment(val, prettyDate).isValid();\n }\n };\n checksley.updateValidators(validators);\n $rootscope.contribPlugins = this.taigaContribPlugins;\n $rootscope.adminPlugins = _.filter(this.taigaContribPlugins, {\n \"type\": \"admin\"\n });\n $rootscope.userSettingsPlugins = _.filter(this.taigaContribPlugins, {\n \"type\": \"userSettings\"\n });\n $rootscope.$on(\"$translateChangeEnd\", function(e, ctx) {\n var lang;\n lang = ctx.language;\n return i18nInit(lang, $translate);\n });\n Promise.setScheduler(function(cb) {\n return $rootscope.$evalAsync(cb);\n });\n $events.setupConnection();\n if ($auth.isAuthenticated()) {\n user = $auth.getUser();\n }\n $analytics.initialize();\n un = $rootscope.$on('$routeChangeStart', function(event, next) {\n if (next.loader) {\n loaderService.start(true);\n }\n return un();\n });\n return $rootscope.$on('$routeChangeSuccess', function(event, next) {\n var description, title;\n if (next.loader) {\n loaderService.start(true);\n }\n if (next.access && next.access.requiresLogin) {\n if (!$auth.isAuthenticated()) {\n $location.path($navUrls.resolve(\"login\"));\n }\n }\n projectService.setSection(next.section);\n if (next.params.pslug) {\n projectService.setProjectBySlug(next.params.pslug);\n } else {\n projectService.cleanProject();\n }\n if (next.title || next.description) {\n title = $translate.instant(next.title || \"\");\n description = $translate.instant(next.description || \"\");\n appMetaService.setAll(title, description);\n }\n if (next.mobileViewport) {\n appMetaService.addMobileViewport();\n } else {\n appMetaService.removeMobileViewport();\n }\n if (next.disableHeader) {\n return navigationBarService.disableHeader();\n } else {\n return navigationBarService.enableHeader();\n }\n });\n };\n\n pluginsWithModule = _.filter(this.taigaContribPlugins, function(plugin) {\n return plugin.module;\n });\n\n angular.module('infinite-scroll').value('THROTTLE_MILLISECONDS', 500);\n\n modules = [\"taigaBase\", \"taigaCommon\", \"taigaResources\", \"taigaResources2\", \"taigaAuth\", \"taigaEvents\", \"taigaHome\", \"taigaNavigationBar\", \"taigaProjects\", \"taigaRelatedTasks\", \"taigaBacklog\", \"taigaTaskboard\", \"taigaKanban\", \"taigaIssues\", \"taigaUserStories\", \"taigaTasks\", \"taigaTeam\", \"taigaWiki\", \"taigaSearch\", \"taigaAdmin\", \"taigaProject\", \"taigaUserSettings\", \"taigaFeedback\", \"taigaPlugins\", \"taigaIntegrations\", \"taigaComponents\", \"taigaProfile\", \"taigaHome\", \"taigaUserTimeline\", \"taigaExternalApps\", \"taigaDiscover\", \"templates\", \"ngSanitize\", \"ngRoute\", \"ngAnimate\", \"ngAria\", \"pascalprecht.translate\", \"infinite-scroll\", \"tgRepeat\"].concat(_.map(pluginsWithModule, function(plugin) {\n return plugin.module;\n }));\n\n module = angular.module(\"taiga\", modules);\n\n module.config([\"$routeProvider\", \"$locationProvider\", \"$httpProvider\", \"$provide\", \"$tgEventsProvider\", \"$compileProvider\", \"$translateProvider\", \"$translatePartialLoaderProvider\", \"$animateProvider\", configure]);\n\n module.run([\"$log\", \"$rootScope\", \"$tgAuth\", \"$tgEvents\", \"$tgAnalytics\", \"$translate\", \"$tgLocation\", \"$tgNavUrls\", \"tgAppMetaService\", \"tgProjectService\", \"tgLoader\", \"tgNavigationBarService\", \"$route\", init]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: classes.coffee\n */\n\n(function() {\n var TaigaBase, TaigaController, TaigaService,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n TaigaBase = (function() {\n function TaigaBase() {}\n\n return TaigaBase;\n\n })();\n\n TaigaService = (function(superClass) {\n extend(TaigaService, superClass);\n\n function TaigaService() {\n return TaigaService.__super__.constructor.apply(this, arguments);\n }\n\n return TaigaService;\n\n })(TaigaBase);\n\n TaigaController = (function(superClass) {\n extend(TaigaController, superClass);\n\n function TaigaController() {\n this.onInitialDataError = bind(this.onInitialDataError, this);\n return TaigaController.__super__.constructor.apply(this, arguments);\n }\n\n TaigaController.prototype.onInitialDataError = function(xhr) {\n if (xhr) {\n if (xhr.status === 404) {\n this.location.path(this.navUrls.resolve(\"not-found\"));\n this.location.replace();\n } else if (xhr.status === 403) {\n this.location.path(this.navUrls.resolve(\"permission-denied\"));\n this.location.replace();\n }\n }\n return this.q.reject(xhr);\n };\n\n return TaigaController;\n\n })(TaigaBase);\n\n this.taiga.Base = TaigaBase;\n\n this.taiga.Service = TaigaService;\n\n this.taiga.Controller = TaigaController;\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: utils.coffee\n */\n\n(function() {\n var bindMethods, bindOnce, cancelTimeout, debounce, debounceLeading, defineImmutableProperty, groupBy, isImage, joinStr, mixOf, nl2br, patch, replaceTags, scopeDefer, sizeFormat, slugify, startswith, stripTags, taiga, timeout, toString, toggleText, trim, truncate, unslugify,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },\n slice = [].slice,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n nl2br = (function(_this) {\n return function(str) {\n var breakTag;\n breakTag = '';\n return (str + '').replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + breakTag + '$2');\n };\n })(this);\n\n bindMethods = (function(_this) {\n return function(object) {\n var dependencies, methods;\n dependencies = _.keys(object);\n methods = [];\n _.forIn(object, function(value, key) {\n if (indexOf.call(dependencies, key) < 0) {\n return methods.push(key);\n }\n });\n return _.bindAll(object, methods);\n };\n })(this);\n\n bindOnce = (function(_this) {\n return function(scope, attr, continuation) {\n var delBind, val;\n val = scope.$eval(attr);\n if (val !== void 0) {\n return continuation(val);\n }\n delBind = null;\n return delBind = scope.$watch(attr, function(val) {\n if (val === void 0) {\n return;\n }\n continuation(val);\n if (delBind) {\n return delBind();\n }\n });\n };\n })(this);\n\n mixOf = function() {\n var Mixed, base, i, method, mixin, mixins, name, ref;\n base = arguments[0], mixins = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n Mixed = (function(superClass) {\n extend(Mixed, superClass);\n\n function Mixed() {\n return Mixed.__super__.constructor.apply(this, arguments);\n }\n\n return Mixed;\n\n })(base);\n for (i = mixins.length - 1; i >= 0; i += -1) {\n mixin = mixins[i];\n ref = mixin.prototype;\n for (name in ref) {\n method = ref[name];\n Mixed.prototype[name] = method;\n }\n }\n return Mixed;\n };\n\n trim = function(data, char) {\n return _.trim(data, char);\n };\n\n slugify = function(data) {\n return data.toString().toLowerCase().trim().replace(/\\s+/g, '-').replace(/&/g, '-and-').replace(/[^\\w\\-]+/g, '').replace(/\\-\\-+/g, '-');\n };\n\n unslugify = function(data) {\n if (data) {\n return _.capitalize(data.replace(/-/g, ' '));\n }\n return data;\n };\n\n toggleText = function(element, texts) {\n var nextTextPosition, text;\n nextTextPosition = element.data('nextTextPosition');\n if ((nextTextPosition == null) || nextTextPosition >= texts.length) {\n nextTextPosition = 0;\n }\n text = texts[nextTextPosition];\n element.data('nextTextPosition', nextTextPosition + 1);\n return element.text(text);\n };\n\n groupBy = function(coll, pred) {\n var i, item, len, result;\n result = {};\n for (i = 0, len = coll.length; i < len; i++) {\n item = coll[i];\n result[pred(item)] = item;\n }\n return result;\n };\n\n timeout = function(wait, continuation) {\n return window.setTimeout(continuation, wait);\n };\n\n cancelTimeout = function(timeoutVar) {\n return window.clearTimeout(timeoutVar);\n };\n\n scopeDefer = function(scope, func) {\n return _.defer((function(_this) {\n return function() {\n return scope.$apply(func);\n };\n })(this));\n };\n\n toString = function(value) {\n if (_.isNumber(value)) {\n return value + \"\";\n } else if (_.isString(value)) {\n return value;\n } else if (_.isPlainObject(value)) {\n return JSON.stringify(value);\n } else if (_.isUndefined(value)) {\n return \"\";\n }\n return value.toString();\n };\n\n joinStr = function(str, coll) {\n return coll.join(str);\n };\n\n debounce = function(wait, func) {\n return _.debounce(func, wait, {\n leading: true,\n trailing: false\n });\n };\n\n debounceLeading = function(wait, func) {\n return _.debounce(func, wait, {\n leading: false,\n trailing: true\n });\n };\n\n startswith = function(str1, str2) {\n return _.startsWith(str1, str2);\n };\n\n truncate = function(str, maxLength, suffix) {\n var out;\n if (suffix == null) {\n suffix = \"...\";\n }\n if ((typeof str !== \"string\") && !(str instanceof String)) {\n return str;\n }\n out = str.slice(0);\n if (out.length > maxLength) {\n out = out.substring(0, maxLength + 1);\n out = out.substring(0, Math.min(out.length, out.lastIndexOf(\" \")));\n out = out + suffix;\n }\n return out;\n };\n\n sizeFormat = function(input, precision) {\n var number, size, units;\n if (precision == null) {\n precision = 1;\n }\n if (isNaN(parseFloat(input)) || !isFinite(input)) {\n return \"-\";\n }\n if (input === 0) {\n return \"0 bytes\";\n }\n units = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n number = Math.floor(Math.log(input) / Math.log(1024));\n if (number > 5) {\n number = 5;\n }\n size = (input / Math.pow(1024, number)).toFixed(precision);\n return size + \" \" + units[number];\n };\n\n stripTags = function(str, exception) {\n var pattern;\n if (exception) {\n pattern = new RegExp('<(?!' + exception + '\\s*\\/?)[^>]+>', 'gi');\n return String(str).replace(pattern, '');\n } else {\n return String(str).replace(/<\\/?[^>]+>/g, '');\n }\n };\n\n replaceTags = function(str, tags, replace) {\n var pattern;\n pattern = new RegExp('<(' + tags + ')>', 'gi');\n str = str.replace(pattern, '<' + replace + '>');\n pattern = new RegExp('<\\/(' + tags + ')>', 'gi');\n str = str.replace(pattern, '' + replace + '>');\n return str;\n };\n\n defineImmutableProperty = (function(_this) {\n return function(obj, name, fn) {\n return Object.defineProperty(obj, name, {\n get: function() {\n var fn_result;\n if (!_.isFunction(fn)) {\n throw \"defineImmutableProperty third param must be a function\";\n }\n fn_result = fn();\n if (fn_result && _.isObject(fn_result)) {\n if (fn_result.size === void 0) {\n throw \"defineImmutableProperty must return immutable data\";\n }\n }\n return fn_result;\n }\n });\n };\n })(this);\n\n _.mixin({\n removeKeys: function(obj, keys) {\n return _.chain([keys]).flatten().reduce(function(obj, key) {\n delete obj[key];\n return obj;\n }, obj).value();\n },\n cartesianProduct: function() {\n return _.reduceRight(arguments, function(a, b) {\n return _.flatten(_.map(a, function(x) {\n return _.map(b, function(y) {\n return [y].concat(x);\n });\n }), true);\n }, [[]]);\n }\n });\n\n isImage = function(name) {\n return name.match(/\\.(jpe?g|png|gif|gifv|webm)/i) !== null;\n };\n\n patch = function(oldImmutable, newImmutable) {\n var pathObj;\n pathObj = {};\n newImmutable.forEach(function(newValue, key) {\n if (newValue !== oldImmutable.get(key)) {\n if (newValue.toJS) {\n return pathObj[key] = newValue.toJS();\n } else {\n return pathObj[key] = newValue;\n }\n }\n });\n return pathObj;\n };\n\n taiga = this.taiga;\n\n taiga.nl2br = nl2br;\n\n taiga.bindMethods = bindMethods;\n\n taiga.bindOnce = bindOnce;\n\n taiga.mixOf = mixOf;\n\n taiga.trim = trim;\n\n taiga.slugify = slugify;\n\n taiga.unslugify = unslugify;\n\n taiga.toggleText = toggleText;\n\n taiga.groupBy = groupBy;\n\n taiga.timeout = timeout;\n\n taiga.cancelTimeout = cancelTimeout;\n\n taiga.scopeDefer = scopeDefer;\n\n taiga.toString = toString;\n\n taiga.joinStr = joinStr;\n\n taiga.truncate = truncate;\n\n taiga.debounce = debounce;\n\n taiga.debounceLeading = debounceLeading;\n\n taiga.startswith = startswith;\n\n taiga.sizeFormat = sizeFormat;\n\n taiga.stripTags = stripTags;\n\n taiga.replaceTags = replaceTags;\n\n taiga.defineImmutableProperty = defineImmutableProperty;\n\n taiga.isImage = isImage;\n\n taiga.patch = patch;\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/controllerMixins.coffee\n */\n\n(function() {\n var FiltersMixin, PageMixin, groupBy, joinStr, taiga, toString, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n joinStr = this.taiga.joinStr;\n\n trim = this.taiga.trim;\n\n toString = this.taiga.toString;\n\n PageMixin = (function() {\n function PageMixin() {}\n\n PageMixin.prototype.fillUsersAndRoles = function(users, roles) {\n var activeUsers, computableRoles;\n activeUsers = _.filter(users, (function(_this) {\n return function(user) {\n return user.is_active;\n };\n })(this));\n this.scope.activeUsers = _.sortBy(activeUsers, \"full_name_display\");\n this.scope.activeUsersById = groupBy(this.scope.activeUsers, function(e) {\n return e.id;\n });\n this.scope.users = _.sortBy(users, \"full_name_display\");\n this.scope.usersById = groupBy(this.scope.users, function(e) {\n return e.id;\n });\n this.scope.roles = _.sortBy(roles, \"order\");\n computableRoles = _(this.scope.project.members).map(\"role\").uniq().value();\n return this.scope.computableRoles = _(roles).filter(\"computable\").filter(function(x) {\n return _.includes(computableRoles, x.id);\n }).value();\n };\n\n PageMixin.prototype.loadUsersAndRoles = function() {\n var promise;\n promise = this.q.all([this.rs.projects.usersList(this.scope.projectId), this.rs.projects.rolesList(this.scope.projectId)]);\n return promise.then((function(_this) {\n return function(results) {\n var roles, users;\n users = results[0], roles = results[1];\n _this.fillUsersAndRoles(users, roles);\n return results;\n };\n })(this));\n };\n\n return PageMixin;\n\n })();\n\n taiga.PageMixin = PageMixin;\n\n FiltersMixin = (function() {\n function FiltersMixin() {}\n\n FiltersMixin.prototype.selectFilter = function(name, value, load) {\n var existing, location, params;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\n if (params[name] !== void 0 && name !== \"page\") {\n existing = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n existing.push(taiga.toString(value));\n existing = _.compact(existing);\n value = joinStr(\",\", _.uniq(existing));\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceFilter = function(name, value, load) {\n var location;\n if (load == null) {\n load = false;\n }\n if (!this.location.isInCurrentRouteParams(name, value)) {\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n }\n };\n\n FiltersMixin.prototype.replaceAllFilters = function(filters, load) {\n var location;\n if (load == null) {\n load = false;\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(filters);\n };\n\n FiltersMixin.prototype.unselectFilter = function(name, value, load) {\n var location, newValues, params, parsedValues;\n if (load == null) {\n load = false;\n }\n params = this.location.search();\n if (params[name] === void 0) {\n return;\n }\n if (value === void 0 || value === null) {\n delete params[name];\n }\n parsedValues = _.map(taiga.toString(params[name]).split(\",\"), function(x) {\n return trim(x);\n });\n newValues = _.reject(parsedValues, function(x) {\n return x === taiga.toString(value);\n });\n newValues = _.compact(newValues);\n if (_.isEmpty(newValues)) {\n value = null;\n } else {\n value = joinStr(\",\", _.uniq(newValues));\n }\n location = load ? this.location : this.location.noreload(this.scope);\n return location.search(name, value);\n };\n\n return FiltersMixin;\n\n })();\n\n taiga.FiltersMixin = FiltersMixin;\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/admin.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaAdmin\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/auth.coffee\n */\n\n(function() {\n var AuthService, CancelAccountDirective, ChangeEmailDirective, ChangePasswordFromRecoveryDirective, ForgotPasswordDirective, InvitationDirective, LoginDirective, LoginPage, PublicRegisterMessageDirective, RegisterDirective, debounce, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaAuth\", [\"taigaResources\"]);\n\n LoginPage = (function() {\n LoginPage.$inject = ['tgCurrentUserService', '$location', '$tgNavUrls', '$routeParams'];\n\n function LoginPage(currentUserService, $location, $navUrls, $routeParams) {\n var url;\n if (currentUserService.isAuthenticated()) {\n url = $navUrls.resolve(\"home\");\n if ($routeParams['next']) {\n url = $routeParams['next'];\n $location.search('next', null);\n }\n $location.path(url);\n }\n }\n\n return LoginPage;\n\n })();\n\n module.controller('LoginPage', LoginPage);\n\n AuthService = (function(superClass) {\n extend(AuthService, superClass);\n\n AuthService.$inject = [\"$rootScope\", \"$tgStorage\", \"$tgModel\", \"$tgResources\", \"$tgHttp\", \"$tgUrls\", \"$tgConfig\", \"$translate\", \"tgCurrentUserService\", \"tgThemeService\"];\n\n function AuthService(rootscope, storage, model, rs, http, urls, config, translate, currentUserService1, themeService) {\n var userModel;\n this.rootscope = rootscope;\n this.storage = storage;\n this.model = model;\n this.rs = rs;\n this.http = http;\n this.urls = urls;\n this.config = config;\n this.translate = translate;\n this.currentUserService = currentUserService1;\n this.themeService = themeService;\n AuthService.__super__.constructor.call(this);\n userModel = this.getUser();\n this._currentTheme = this._getUserTheme();\n this.setUserdata(userModel);\n }\n\n AuthService.prototype.setUserdata = function(userModel) {\n if (userModel) {\n this.userData = Immutable.fromJS(userModel.getAttrs());\n return this.currentUserService.setUser(this.userData);\n } else {\n return this.userData = null;\n }\n };\n\n AuthService.prototype._getUserTheme = function() {\n var ref;\n return ((ref = this.rootscope.user) != null ? ref.theme : void 0) || this.config.get(\"defaultTheme\") || \"taiga\";\n };\n\n AuthService.prototype._setTheme = function() {\n var newTheme;\n newTheme = this._getUserTheme();\n if (this._currentTheme !== newTheme) {\n this._currentTheme = newTheme;\n return this.themeService.use(this._currentTheme);\n }\n };\n\n AuthService.prototype._setLocales = function() {\n var lang, ref;\n lang = ((ref = this.rootscope.user) != null ? ref.lang : void 0) || this.config.get(\"defaultLanguage\") || \"en\";\n this.translate.preferredLanguage(lang);\n return this.translate.use(lang);\n };\n\n AuthService.prototype.getUser = function() {\n var user, userData;\n if (this.rootscope.user) {\n return this.rootscope.user;\n }\n userData = this.storage.get(\"userInfo\");\n if (userData) {\n user = this.model.make_model(\"users\", userData);\n this.rootscope.user = user;\n this._setLocales();\n this._setTheme();\n return user;\n } else {\n this._setTheme();\n }\n return null;\n };\n\n AuthService.prototype.setUser = function(user) {\n this.rootscope.auth = user;\n this.storage.set(\"userInfo\", user.getAttrs());\n this.rootscope.user = user;\n this.setUserdata(user);\n this._setLocales();\n return this._setTheme();\n };\n\n AuthService.prototype.clear = function() {\n this.rootscope.auth = null;\n this.rootscope.user = null;\n return this.storage.remove(\"userInfo\");\n };\n\n AuthService.prototype.setToken = function(token) {\n return this.storage.set(\"token\", token);\n };\n\n AuthService.prototype.getToken = function() {\n return this.storage.get(\"token\");\n };\n\n AuthService.prototype.removeToken = function() {\n return this.storage.remove(\"token\");\n };\n\n AuthService.prototype.isAuthenticated = function() {\n if (this.getUser() !== null) {\n return true;\n }\n return false;\n };\n\n AuthService.prototype.refresh = function() {\n var url;\n url = this.urls.resolve(\"user-me\");\n return this.http.get(url).then((function(_this) {\n return function(data, status) {\n var user;\n user = data.data;\n user.token = _this.getUser().auth_token;\n user = _this.model.make_model(\"users\", user);\n _this.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.login = function(data, type) {\n var url;\n url = this.urls.resolve(\"auth\");\n data = _.clone(data, false);\n data.type = type ? type : \"normal\";\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(data, status) {\n var user;\n user = _this.model.make_model(\"users\", data.data);\n _this.setToken(user.auth_token);\n _this.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.logout = function() {\n this.removeToken();\n this.clear();\n this.currentUserService.removeUser();\n this._setTheme();\n return this._setLocales();\n };\n\n AuthService.prototype.register = function(data, type, existing) {\n var url;\n url = this.urls.resolve(\"auth-register\");\n data = _.clone(data, false);\n data.type = type ? type : \"public\";\n if (type === \"private\") {\n data.existing = existing ? existing : false;\n }\n this.removeToken();\n return this.http.post(url, data).then((function(_this) {\n return function(response) {\n var user;\n user = _this.model.make_model(\"users\", response.data);\n _this.setToken(user.auth_token);\n _this.setUser(user);\n return user;\n };\n })(this));\n };\n\n AuthService.prototype.getInvitation = function(token) {\n return this.rs.invitations.get(token);\n };\n\n AuthService.prototype.acceptInvitiationWithNewUser = function(data) {\n return this.register(data, \"private\", false);\n };\n\n AuthService.prototype.acceptInvitiationWithExistingUser = function(data) {\n return this.register(data, \"private\", true);\n };\n\n AuthService.prototype.forgotPassword = function(data) {\n var url;\n url = this.urls.resolve(\"users-password-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changePasswordFromRecovery = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-password-from-recovery\");\n data = _.clone(data, false);\n this.removeToken();\n return this.http.post(url, data);\n };\n\n AuthService.prototype.changeEmail = function(data) {\n var url;\n url = this.urls.resolve(\"users-change-email\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n AuthService.prototype.cancelAccount = function(data) {\n var url;\n url = this.urls.resolve(\"users-cancel-account\");\n data = _.clone(data, false);\n return this.http.post(url, data);\n };\n\n return AuthService;\n\n })(taiga.Service);\n\n module.service(\"$tgAuth\", AuthService);\n\n PublicRegisterMessageDirective = function($config, $navUrls, $routeParams, templates) {\n var template, templateFn;\n template = templates.get(\"auth/login-text.html\", true);\n templateFn = function() {\n var nextUrl, publicRegisterEnabled, url;\n publicRegisterEnabled = $config.get(\"publicRegisterEnabled\");\n if (!publicRegisterEnabled) {\n return \"\";\n }\n url = $navUrls.resolve(\"register\");\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"register\")) {\n nextUrl = encodeURIComponent($routeParams['next']);\n url += \"?next=\" + nextUrl;\n }\n return template({\n url: url\n });\n };\n return {\n restrict: \"AE\",\n scope: {},\n template: templateFn\n };\n };\n\n module.directive(\"tgPublicRegisterMessage\", [\"$tgConfig\", \"$tgNavUrls\", \"$routeParams\", \"$tgTemplate\", PublicRegisterMessageDirective]);\n\n LoginDirective = function($auth, $confirm, $location, $config, $routeParams, $navUrls, $events, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onError, onSuccess, submit;\n form = new checksley.Form($el.find(\"form.login-form\"));\n if ($routeParams['next'] && $routeParams['next'] !== $navUrls.resolve(\"login\")) {\n $scope.nextUrl = decodeURIComponent($routeParams['next']);\n } else {\n $scope.nextUrl = $navUrls.resolve(\"home\");\n }\n onSuccess = function(response) {\n $events.setupConnection();\n return $location.url($scope.nextUrl);\n };\n onError = function(response) {\n return $confirm.notify(\"light-error\", $translate.instant(\"LOGIN_FORM.ERROR_AUTH_INCORRECT\"));\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var data, loginFormType, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n data = {\n \"username\": $el.find(\"form.login-form input[name=username]\").val(),\n \"password\": $el.find(\"form.login-form input[name=password]\").val()\n };\n loginFormType = $config.get(\"loginFormType\", \"normal\");\n promise = $auth.login(data, loginFormType);\n return promise.then(onSuccess, onError);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n window.prerenderReady = true;\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLogin\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgConfig\", \"$routeParams\", \"$tgNavUrls\", \"$tgEvents\", \"$translate\", LoginDirective]);\n\n RegisterDirective = function($auth, $confirm, $location, $navUrls, $config, $routeParams, $analytics, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n if (!$config.get(\"publicRegisterEnabled\")) {\n $location.path($navUrls.resolve(\"not-found\"));\n $location.replace();\n }\n $scope.data = {};\n form = $el.find(\"form\").checksley({\n onlyOneErrorElement: true\n });\n $scope.nextUrl = $navUrls.resolve(\"home\");\n onSuccessSubmit = function(response) {\n $analytics.trackEvent(\"auth\", \"register\", \"user registration\", 1);\n return $location.url($scope.nextUrl);\n };\n onErrorSubmit = function(response) {\n var text;\n if (response.data._error_message) {\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n $confirm.notify(\"light-error\", text);\n }\n return form.setErrors(response.data);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.register($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return window.prerenderReady = true;\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRegister\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$tgConfig\", \"$routeParams\", \"$tgAnalytics\", \"$translate\", RegisterDirective]);\n\n ForgotPasswordDirective = function($auth, $confirm, $location, $navUrls, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n var message, title;\n $location.path($navUrls.resolve(\"login\"));\n title = $translate.instant(\"FORGOT_PASSWORD_FORM.SUCCESS_TITLE\");\n message = $translate.instant(\"FORGOT_PASSWORD_FORM.SUCCESS_TEXT\");\n return $confirm.success(title, message);\n };\n onErrorSubmit = function(response) {\n var text;\n text = $translate.instant(\"FORGOT_PASSWORD_FORM.ERROR\");\n return $confirm.notify(\"light-error\", text);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.forgotPassword($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return window.prerenderReady = true;\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgForgotPassword\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$tgNavUrls\", \"$translate\", ForgotPasswordDirective]);\n\n ChangePasswordFromRecoveryDirective = function($auth, $confirm, $location, $params, $navUrls, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit, text;\n $scope.data = {};\n if ($params.token != null) {\n $scope.tokenInParams = true;\n $scope.data.token = $params.token;\n } else {\n $location.path($navUrls.resolve(\"login\"));\n text = $translate.instant(\"CHANGE_PASSWORD_RECOVERY_FORM.ERROR\");\n $confirm.notify(\"light-error\", text);\n }\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n $location.path($navUrls.resolve(\"login\"));\n text = $translate.instant(\"CHANGE_PASSWORD_RECOVERY_FORM.SUCCESS\");\n return $confirm.success(text);\n };\n onErrorSubmit = function(response) {\n text = $translate.instant(\"CHANGE_PASSWORD_RECOVERY_FORM.ERROR\");\n return $confirm.notify(\"light-error\", text);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.changePasswordFromRecovery($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangePasswordFromRecovery\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$translate\", ChangePasswordFromRecoveryDirective]);\n\n InvitationDirective = function($auth, $confirm, $location, $params, $navUrls, $analytics, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var loginForm, onErrorSubmitLogin, onErrorSubmitRegister, onSuccessSubmitLogin, onSuccessSubmitRegister, promise, registerForm, submitLogin, submitRegister, token;\n token = $params.token;\n promise = $auth.getInvitation(token);\n promise.then(function(invitation) {\n return $scope.invitation = invitation;\n });\n promise.then(null, function(response) {\n var text;\n $location.path($navUrls.resolve(\"login\"));\n text = $translate.instant(\"INVITATION_LOGIN_FORM.NOT_FOUND\");\n return $confirm.notify(\"light-error\", text);\n });\n $scope.dataLogin = {\n token: token\n };\n loginForm = $el.find(\"form.login-form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmitLogin = function(response) {\n var text;\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with existing user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n text = $translate.instant(\"INVITATION_LOGIN_FORM.SUCCESS\", {\n \"project_name\": $scope.invitation.project_name\n });\n return $confirm.notify(\"success\", text);\n };\n onErrorSubmitLogin = function(response) {\n return $confirm.notify(\"light-error\", response.data._error_message);\n };\n submitLogin = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!loginForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithExistingUser($scope.dataLogin);\n return promise.then(onSuccessSubmitLogin, onErrorSubmitLogin);\n };\n })(this));\n $el.on(\"submit\", \"form.login-form\", submitLogin);\n $el.on(\"click\", \".button-login\", submitLogin);\n $scope.dataRegister = {\n token: token\n };\n registerForm = $el.find(\"form.register-form\").checksley({\n onlyOneErrorElement: true\n });\n onSuccessSubmitRegister = function(response) {\n $analytics.trackEvent(\"auth\", \"invitationAccept\", \"invitation accept with new user\", 1);\n $location.path($navUrls.resolve(\"project\", {\n project: $scope.invitation.project_slug\n }));\n return $confirm.notify(\"success\", \"You've successfully joined this project\", \"Welcome to \" + (_.escape($scope.invitation.project_name)));\n };\n onErrorSubmitRegister = function(response) {\n var text;\n if (response.data._error_message) {\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n $confirm.notify(\"light-error\", text);\n }\n return registerForm.setErrors(response.data);\n };\n submitRegister = debounce(2000, (function(_this) {\n return function(event) {\n event.preventDefault();\n if (!registerForm.validate()) {\n return;\n }\n promise = $auth.acceptInvitiationWithNewUser($scope.dataRegister);\n return promise.then(onSuccessSubmitRegister, onErrorSubmitRegister);\n };\n })(this));\n $el.on(\"submit\", \"form.register-form\", submitRegister);\n $el.on(\"click\", \".button-register\", submitRegister);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgInvitation\", [\"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$tgAnalytics\", \"$translate\", InvitationDirective]);\n\n ChangeEmailDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls, $translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.email_token = $params.email_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n var text;\n if ($auth.isAuthenticated()) {\n $repo.queryOne(\"users\", $auth.getUser().id).then((function(_this) {\n return function(data) {\n $auth.setUser(data);\n return $location.path($navUrls.resolve(\"home\"));\n };\n })(this));\n } else {\n $location.path($navUrls.resolve(\"login\"));\n }\n text = $translate.instant(\"CHANGE_EMAIL_FORM.SUCCESS\");\n return $confirm.success(text);\n };\n onErrorSubmit = function(response) {\n var text;\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n return $confirm.notify(\"light-error\", text);\n };\n submit = function() {\n var promise;\n if (!form.validate()) {\n return;\n }\n promise = $auth.changeEmail($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n $el.on(\"submit\", function(event) {\n event.preventDefault();\n return submit();\n });\n $el.on(\"click\", \"a.button-change-email\", function(event) {\n event.preventDefault();\n return submit();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgChangeEmail\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", \"$translate\", ChangeEmailDirective]);\n\n CancelAccountDirective = function($repo, $model, $auth, $confirm, $location, $params, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n var form, onErrorSubmit, onSuccessSubmit, submit;\n $scope.data = {};\n $scope.data.cancel_token = $params.cancel_token;\n form = $el.find(\"form\").checksley();\n onSuccessSubmit = function(response) {\n var text;\n $auth.logout();\n $location.path($navUrls.resolve(\"home\"));\n text = $translate.instant(\"CANCEL_ACCOUNT.SUCCESS\");\n return $confirm.success(text);\n };\n onErrorSubmit = function(response) {\n var text;\n text = $translate.instant(\"COMMON.GENERIC_ERROR\", {\n error: response.data._error_message\n });\n return $confirm.notify(\"error\", text);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n promise = $auth.cancelAccount($scope.data);\n return promise.then(onSuccessSubmit, onErrorSubmit);\n };\n })(this));\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgCancelAccount\", [\"$tgRepo\", \"$tgModel\", \"$tgAuth\", \"$tgConfirm\", \"$tgLocation\", \"$routeParams\", \"$tgNavUrls\", CancelAccountDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/backlog.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaBacklog\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/base.coffee\n */\n\n(function() {\n var TaigaMainDirective, bindOnce, groupBy, init, module, taiga, urls;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaBase\", []);\n\n TaigaMainDirective = function($rootscope, $window) {\n var link;\n link = function($scope, $el, $attrs) {\n return $window.onresize = function() {\n return $rootscope.$broadcast(\"resize\");\n };\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgMain\", [\"$rootScope\", \"$window\", TaigaMainDirective]);\n\n urls = {\n \"home\": \"/\",\n \"projects\": \"/projects\",\n \"error\": \"/error\",\n \"not-found\": \"/not-found\",\n \"permission-denied\": \"/permission-denied\",\n \"discover\": \"/discover\",\n \"discover-search\": \"/discover/search\",\n \"login\": \"/login\",\n \"forgot-password\": \"/forgot-password\",\n \"change-password\": \"/change-password/:token\",\n \"change-email\": \"/change-email/:token\",\n \"cancel-account\": \"/cancel-account/:token\",\n \"register\": \"/register\",\n \"invitation\": \"/invitation/:token\",\n \"create-project\": \"/create-project\",\n \"profile\": \"/profile\",\n \"user-profile\": \"/profile/:username\",\n \"blocked-project\": \"/blocked-project/:project\",\n \"project\": \"/project/:project\",\n \"project-backlog\": \"/project/:project/backlog\",\n \"project-taskboard\": \"/project/:project/taskboard/:sprint\",\n \"project-kanban\": \"/project/:project/kanban\",\n \"project-issues\": \"/project/:project/issues\",\n \"project-search\": \"/project/:project/search\",\n \"project-userstories-detail\": \"/project/:project/us/:ref\",\n \"project-tasks-detail\": \"/project/:project/task/:ref\",\n \"project-issues-detail\": \"/project/:project/issue/:ref\",\n \"project-wiki\": \"/project/:project/wiki\",\n \"project-wiki-page\": \"/project/:project/wiki/:slug\",\n \"project-team\": \"/project/:project/team\",\n \"project-admin-home\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-details\": \"/project/:project/admin/project-profile/details\",\n \"project-admin-project-profile-default-values\": \"/project/:project/admin/project-profile/default-values\",\n \"project-admin-project-profile-modules\": \"/project/:project/admin/project-profile/modules\",\n \"project-admin-project-profile-export\": \"/project/:project/admin/project-profile/export\",\n \"project-admin-project-profile-reports\": \"/project/:project/admin/project-profile/reports\",\n \"project-admin-project-values-status\": \"/project/:project/admin/project-values/status\",\n \"project-admin-project-values-points\": \"/project/:project/admin/project-values/points\",\n \"project-admin-project-values-priorities\": \"/project/:project/admin/project-values/priorities\",\n \"project-admin-project-values-severities\": \"/project/:project/admin/project-values/severities\",\n \"project-admin-project-values-types\": \"/project/:project/admin/project-values/types\",\n \"project-admin-project-values-custom-fields\": \"/project/:project/admin/project-values/custom-fields\",\n \"project-admin-memberships\": \"/project/:project/admin/memberships\",\n \"project-admin-roles\": \"/project/:project/admin/roles\",\n \"project-admin-third-parties-webhooks\": \"/project/:project/admin/third-parties/webhooks\",\n \"project-admin-third-parties-github\": \"/project/:project/admin/third-parties/github\",\n \"project-admin-third-parties-gitlab\": \"/project/:project/admin/third-parties/gitlab\",\n \"project-admin-third-parties-bitbucket\": \"/project/:project/admin/third-parties/bitbucket\",\n \"project-admin-contrib\": \"/project/:project/admin/contrib/:plugin\",\n \"user-settings-user-profile\": \"/user-settings/user-profile\",\n \"user-settings-user-change-password\": \"/user-settings/user-change-password\",\n \"user-settings-user-avatar\": \"/user-settings/user-avatar\",\n \"user-settings-mail-notifications\": \"/user-settings/mail-notifications\",\n \"user-settings-contrib\": \"/user-settings/contrib/:plugin\"\n };\n\n init = function($log, $navurls) {\n $log.debug(\"Initialize navigation urls\");\n return $navurls.update(urls);\n };\n\n module.run([\"$log\", \"$tgNavUrls\", init]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common.coffee\n */\n\n(function() {\n var AnimationFrame, Capslock, CheckPermissionDirective, ClassPermissionDirective, DataPickerConfig, ProjectUrl, Qqueue, SelectedText, Template, ToggleCommentDirective, module, taiga,\n slice = [].slice;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\", []);\n\n DataPickerConfig = function($translate) {\n return {\n get: function() {\n return {\n i18n: {\n previousMonth: $translate.instant(\"COMMON.PICKERDATE.PREV_MONTH\"),\n nextMonth: $translate.instant(\"COMMON.PICKERDATE.NEXT_MONTH\"),\n months: [$translate.instant(\"COMMON.PICKERDATE.MONTHS.JAN\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.FEB\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.MAR\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.APR\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.MAY\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.JUN\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.JUL\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.AUG\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.SEP\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.OCT\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.NOV\"), $translate.instant(\"COMMON.PICKERDATE.MONTHS.DEC\")],\n weekdays: [$translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.SUN\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.MON\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.TUE\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.WED\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.THU\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.FRI\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS.SAT\")],\n weekdaysShort: [$translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.SUN\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.MON\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.TUE\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.WED\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.THU\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.FRI\"), $translate.instant(\"COMMON.PICKERDATE.WEEK_DAYS_SHORT.SAT\")]\n },\n isRTL: $translate.instant(\"COMMON.PICKERDATE.IS_RTL\") === \"true\",\n firstDay: parseInt($translate.instant(\"COMMON.PICKERDATE.FIRST_DAY_OF_WEEK\"), 10),\n format: $translate.instant(\"COMMON.PICKERDATE.FORMAT\")\n };\n }\n };\n };\n\n module.factory(\"tgDatePickerConfigService\", [\"$translate\", DataPickerConfig]);\n\n SelectedText = function($window, $document) {\n var get;\n get = function() {\n if ($window.getSelection) {\n return $window.getSelection().toString();\n } else if ($document.selection) {\n return $document.selection.createRange().text;\n }\n return \"\";\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$selectedText\", [\"$window\", \"$document\", SelectedText]);\n\n CheckPermissionDirective = function(projectService) {\n var link, render;\n render = function($el, project, permission) {\n if (project && permission) {\n if (project.get('my_permissions').indexOf(permission) > -1) {\n return $el.removeClass('hidden');\n }\n }\n };\n link = function($scope, $el, $attrs) {\n var permission, unObserve, unwatch;\n $el.addClass('hidden');\n permission = $attrs.tgCheckPermission;\n unwatch = $scope.$watch(function() {\n return projectService.project;\n }, function() {\n if (!projectService.project) {\n return;\n }\n render($el, projectService.project, permission);\n return unwatch();\n });\n unObserve = $attrs.$observe(\"tgCheckPermission\", function(permission) {\n if (!permission) {\n return;\n }\n render($el, projectService.project, permission);\n return unObserve();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n CheckPermissionDirective.$inject = [\"tgProjectService\"];\n\n module.directive(\"tgCheckPermission\", CheckPermissionDirective);\n\n ClassPermissionDirective = function() {\n var link, name;\n name = \"tgClassPermission\";\n link = function($scope, $el, $attrs) {\n var checkPermissions, tgClassPermissionWatchAction, unbindWatcher;\n checkPermissions = function(project, className, permission) {\n var negation;\n negation = permission[0] === \"!\";\n if (negation) {\n permission = permission.slice(1);\n }\n if (negation && project.my_permissions.indexOf(permission) === -1) {\n return $el.addClass(className);\n } else if (!negation && project.my_permissions.indexOf(permission) !== -1) {\n return $el.addClass(className);\n } else {\n return $el.removeClass(className);\n }\n };\n tgClassPermissionWatchAction = function(project) {\n var className, classes, permission, results;\n if (project) {\n unbindWatcher();\n classes = $scope.$eval($attrs[name]);\n results = [];\n for (className in classes) {\n permission = classes[className];\n results.push(checkPermissions(project, className, permission));\n }\n return results;\n }\n };\n return unbindWatcher = $scope.$watch(\"project\", tgClassPermissionWatchAction);\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgClassPermission\", ClassPermissionDirective);\n\n AnimationFrame = function() {\n var add, animationFrame, performAnimation, tail;\n animationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\n performAnimation = (function(_this) {\n return function(time) {\n var fn;\n fn = tail.shift();\n fn();\n if (tail.length) {\n return animationFrame(performAnimation);\n }\n };\n })(this);\n tail = [];\n add = function() {\n var fn, i, len, results;\n results = [];\n for (i = 0, len = arguments.length; i < len; i++) {\n fn = arguments[i];\n tail.push(fn);\n if (tail.length === 1) {\n results.push(animationFrame(performAnimation));\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n return {\n add: add\n };\n };\n\n module.factory(\"animationFrame\", AnimationFrame);\n\n ToggleCommentDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.find(\"textarea\").on(\"focus\", function() {\n return $el.addClass(\"active\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgToggleComment\", ToggleCommentDirective);\n\n ProjectUrl = function($navurls) {\n var get;\n get = function(project) {\n var ctx;\n ctx = {\n project: project.slug\n };\n if (project.is_backlog_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-backlog\", ctx);\n }\n if (project.is_kanban_activated && project.my_permissions.indexOf(\"view_us\") > -1) {\n return $navurls.resolve(\"project-kanban\", ctx);\n }\n if (project.is_wiki_activated && project.my_permissions.indexOf(\"view_wiki_pages\") > -1) {\n return $navurls.resolve(\"project-wiki\", ctx);\n }\n if (project.is_issues_activated && project.my_permissions.indexOf(\"view_issues\") > -1) {\n return $navurls.resolve(\"project-issues\", ctx);\n }\n return $navurls.resolve(\"project\", ctx);\n };\n return {\n get: get\n };\n };\n\n module.factory(\"$projectUrl\", [\"$tgNavUrls\", ProjectUrl]);\n\n Qqueue = function($q) {\n var deferred, lastPromise, qqueue;\n deferred = $q.defer();\n deferred.resolve();\n lastPromise = deferred.promise;\n qqueue = {\n bindAdd: (function(_this) {\n return function(fn) {\n return function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return lastPromise = lastPromise.then(function() {\n return fn.apply(_this, args);\n });\n };\n return qqueue;\n };\n })(this),\n add: (function(_this) {\n return function(fn) {\n if (!lastPromise) {\n lastPromise = fn();\n } else {\n lastPromise = lastPromise.then(fn);\n }\n return qqueue;\n };\n })(this)\n };\n return qqueue;\n };\n\n module.factory(\"$tgQqueue\", [\"$q\", Qqueue]);\n\n Template = function($templateCache) {\n return {\n get: (function(_this) {\n return function(name, lodash) {\n var tmp;\n if (lodash == null) {\n lodash = false;\n }\n tmp = $templateCache.get(name);\n if (lodash) {\n tmp = _.template(tmp);\n }\n return tmp;\n };\n })(this)\n };\n };\n\n module.factory(\"$tgTemplate\", [\"$templateCache\", Template]);\n\n Capslock = function($translate) {\n var link;\n link = function($scope, $el, $attrs) {\n var hideIcon, open, showIcon, warningIcon;\n open = false;\n warningIcon = \"\";\n hideIcon = function() {\n return $('.icon-capslock').fadeOut(function() {\n open = false;\n return $(this).remove();\n });\n };\n showIcon = function(e) {\n var element;\n if (open) {\n return;\n }\n element = e.currentTarget;\n $(element).parent().append(warningIcon);\n $('.icon-capslock').fadeIn();\n return open = true;\n };\n $el.on('blur', function(e) {\n return hideIcon();\n });\n $el.on('keyup.capslock, focus', function(e) {\n if ($el.val() === $el.val().toLowerCase()) {\n return hideIcon(e);\n } else {\n return showIcon(e);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off('.capslock');\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgCapslock\", [\"$translate\", Capslock]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/events.coffee\n */\n\n(function() {\n var EventsProvider, EventsService, bindMethods, module, startswith, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n startswith = this.taiga.startswith;\n\n bindMethods = this.taiga.bindMethods;\n\n module = angular.module(\"taigaEvents\", []);\n\n EventsService = (function() {\n function EventsService(win, log, config, auth, liveAnnouncementService1, rootScope) {\n this.win = win;\n this.log = log;\n this.config = config;\n this.auth = auth;\n this.liveAnnouncementService = liveAnnouncementService1;\n this.rootScope = rootScope;\n this.processMessage = bind(this.processMessage, this);\n bindMethods(this);\n }\n\n EventsService.prototype.initialize = function(sessionId) {\n this.sessionId = sessionId;\n this.subscriptions = {};\n this.connected = false;\n this.error = false;\n this.pendingMessages = [];\n this.missedHeartbeats = 0;\n this.heartbeatInterval = null;\n if (this.win.WebSocket === void 0) {\n return this.log.info(\"WebSockets not supported on your browser\");\n }\n };\n\n EventsService.prototype.setupConnection = function() {\n var loc, path, scheme, url;\n this.stopExistingConnection();\n url = this.config.get(\"eventsUrl\");\n if (!url) {\n return;\n }\n if (!startswith(url, \"ws:\") && !startswith(url, \"wss:\")) {\n loc = this.win.location;\n scheme = loc.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n path = _.trimStart(url, \"/\");\n url = scheme + \"//\" + loc.host + \"/\" + path;\n }\n this.ws = new this.win.WebSocket(url);\n this.ws.addEventListener(\"open\", this.onOpen);\n this.ws.addEventListener(\"message\", this.onMessage);\n this.ws.addEventListener(\"error\", this.onError);\n return this.ws.addEventListener(\"close\", this.onClose);\n };\n\n EventsService.prototype.stopExistingConnection = function() {\n if (this.ws === void 0) {\n return;\n }\n this.ws.removeEventListener(\"open\", this.onOpen);\n this.ws.removeEventListener(\"close\", this.onClose);\n this.ws.removeEventListener(\"error\", this.onError);\n this.ws.removeEventListener(\"message\", this.onMessage);\n this.stopHeartBeatMessages();\n this.ws.close();\n return delete this.ws;\n };\n\n EventsService.prototype.notifications = function() {\n return this.subscribe(null, 'notifications', (function(_this) {\n return function(data) {\n _this.liveAnnouncementService.show(data.title, data.desc);\n return _this.rootScope.$digest();\n };\n })(this));\n };\n\n EventsService.prototype.startHeartBeatMessages = function() {\n var heartbeatIntervalTime, maxMissedHeartbeats;\n if (this.heartbeatInterval) {\n return;\n }\n maxMissedHeartbeats = this.config.get(\"eventsMaxMissedHeartbeats\", 5);\n heartbeatIntervalTime = this.config.get(\"eventsHeartbeatIntervalTime\", 60000);\n this.missedHeartbeats = 0;\n this.heartbeatInterval = setInterval((function(_this) {\n return function() {\n var e, error1;\n try {\n if (_this.missedHeartbeats >= maxMissedHeartbeats) {\n throw new Error(\"Too many missed heartbeats PINGs.\");\n }\n _this.missedHeartbeats++;\n _this.sendMessage({\n cmd: \"ping\"\n });\n return _this.log.debug(\"HeartBeat send PING\");\n } catch (error1) {\n e = error1;\n _this.log.error(\"HeartBeat error: \" + e.message);\n return _this.stopHeartBeatMessages();\n }\n };\n })(this), heartbeatIntervalTime);\n return this.log.debug(\"HeartBeat enabled\");\n };\n\n EventsService.prototype.stopHeartBeatMessages = function() {\n if (!this.heartbeatInterval) {\n return;\n }\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = null;\n return this.log.debug(\"HeartBeat disabled\");\n };\n\n EventsService.prototype.processHeartBeatPongMessage = function(data) {\n this.missedHeartbeats = 0;\n return this.log.debug(\"HeartBeat recived PONG\");\n };\n\n EventsService.prototype.serialize = function(message) {\n if (_.isObject(message)) {\n return JSON.stringify(message);\n }\n return message;\n };\n\n EventsService.prototype.sendMessage = function(message) {\n var i, len, messages, msg, results;\n this.pendingMessages.push(message);\n if (!this.connected) {\n return;\n }\n messages = _.map(this.pendingMessages, this.serialize);\n this.pendingMessages = [];\n results = [];\n for (i = 0, len = messages.length; i < len; i++) {\n msg = messages[i];\n results.push(this.ws.send(msg));\n }\n return results;\n };\n\n EventsService.prototype.processMessage = function(data) {\n var routingKey, subscription;\n routingKey = data.routing_key;\n if (this.subscriptions[routingKey] == null) {\n return;\n }\n subscription = this.subscriptions[routingKey];\n if (subscription.scope) {\n return subscription.scope.$apply(function() {\n return subscription.callback(data.data);\n });\n } else {\n return subscription.callback(data.data);\n }\n };\n\n EventsService.prototype.subscribe = function(scope, routingKey, callback) {\n var message, subscription;\n if (this.error) {\n return;\n }\n this.log.debug(\"Subscribe to: \" + routingKey);\n subscription = {\n scope: scope,\n routingKey: routingKey,\n callback: _.debounce(callback, 500, {\n \"leading\": true,\n \"trailing\": false\n })\n };\n message = {\n \"cmd\": \"subscribe\",\n \"routing_key\": routingKey\n };\n this.subscriptions[routingKey] = subscription;\n this.sendMessage(message);\n if (scope) {\n return scope.$on(\"$destroy\", (function(_this) {\n return function() {\n return _this.unsubscribe(routingKey);\n };\n })(this));\n }\n };\n\n EventsService.prototype.unsubscribe = function(routingKey) {\n var message;\n if (this.error) {\n return;\n }\n this.log.debug(\"Unsubscribe from: \" + routingKey);\n message = {\n \"cmd\": \"unsubscribe\",\n \"routing_key\": routingKey\n };\n return this.sendMessage(message);\n };\n\n EventsService.prototype.onOpen = function() {\n var message, token;\n this.connected = true;\n this.startHeartBeatMessages();\n this.notifications();\n this.log.debug(\"WebSocket connection opened\");\n token = this.auth.getToken();\n message = {\n cmd: \"auth\",\n data: {\n token: token,\n sessionId: this.sessionId\n }\n };\n return this.sendMessage(message);\n };\n\n EventsService.prototype.onMessage = function(event) {\n var data;\n this.log.debug(\"WebSocket message received: \" + event.data);\n data = JSON.parse(event.data);\n if (data.cmd === \"pong\") {\n return this.processHeartBeatPongMessage(data);\n } else {\n return this.processMessage(data);\n }\n };\n\n EventsService.prototype.onError = function(error) {\n this.log.error(\"WebSocket error: \" + error);\n return this.error = true;\n };\n\n EventsService.prototype.onClose = function() {\n this.log.debug(\"WebSocket closed.\");\n this.connected = false;\n return this.stopHeartBeatMessages();\n };\n\n return EventsService;\n\n })();\n\n EventsProvider = (function() {\n function EventsProvider() {}\n\n EventsProvider.prototype.setSessionId = function(sessionId) {\n return this.sessionId = sessionId;\n };\n\n EventsProvider.prototype.$get = function($win, $log, $conf, $auth, liveAnnouncementService, $rootScope) {\n var service;\n service = new EventsService($win, $log, $conf, $auth, liveAnnouncementService, $rootScope);\n service.initialize(this.sessionId);\n return service;\n };\n\n EventsProvider.prototype.$get.$inject = [\"$window\", \"$log\", \"$tgConfig\", \"$tgAuth\", \"tgLiveAnnouncementService\", \"$rootScope\"];\n\n return EventsProvider;\n\n })();\n\n module.provider(\"$tgEvents\", EventsProvider);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/feedback.coffee\n */\n\n(function() {\n var FeedbackDirective, bindOnce, debounce, groupBy, mixOf, module, taiga, trim;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n mixOf = this.taiga.mixOf;\n\n debounce = this.taiga.debounce;\n\n trim = this.taiga.trim;\n\n module = angular.module(\"taigaFeedback\", []);\n\n FeedbackDirective = function($lightboxService, $repo, $confirm, $loading, feedbackService) {\n var directive, link;\n link = function($scope, $el, $attrs) {\n var form, openLightbox, submit, submitButton;\n form = $el.find(\"form\").checksley();\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $repo.create(\"feedback\", $scope.feedback);\n promise.then(function(data) {\n currentLoading.finish();\n $lightboxService.close($el);\n return $confirm.notify(\"success\", \"\\\\o/ we'll be happy to read your\");\n });\n return promise.then(null, function() {\n currentLoading.finish();\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n openLightbox = function() {\n $scope.feedback = {};\n $lightboxService.open($el);\n return $el.find(\"textarea\").focus();\n };\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return openLightbox();\n };\n directive = {\n link: link,\n templateUrl: \"common/lightbox-feedback.html\",\n scope: {}\n };\n return directive;\n };\n\n module.directive(\"tgLbFeedback\", [\"lightboxService\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"tgFeedbackService\", FeedbackDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/integrations.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIntegrations\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/issues.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaIssues\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/kanban.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaKanban\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/backlog.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaPlugins\", [\"ngRoute\"]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/projects.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaProject\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/related-tasks.coffee\n */\n\n(function() {\n var RelatedTaskAssignedToInlineEditionDirective, RelatedTaskCreateButtonDirective, RelatedTaskCreateFormDirective, RelatedTaskRowDirective, RelatedTasksDirective, debounce, module, taiga, trim;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaRelatedTasks\", []);\n\n RelatedTaskRowDirective = function($repo, $compile, $confirm, $rootscope, $loading, $template, $translate) {\n var link, templateEdit, templateView;\n templateView = $template.get(\"task/related-task-row.html\", true);\n templateEdit = $template.get(\"task/related-task-row-edit.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var renderEdit, renderView, saveTask;\n saveTask = debounce(2000, function(task) {\n var currentLoading, promise;\n task.subject = $el.find('input').val();\n currentLoading = $loading().target($el.find('.task-name')).start();\n promise = $repo.save(task);\n promise.then((function(_this) {\n return function() {\n currentLoading.finish();\n return $rootscope.$broadcast(\"related-tasks:update\");\n };\n })(this));\n promise.then(null, (function(_this) {\n return function() {\n currentLoading.finish();\n $el.find('input').val(task.subject);\n return $confirm.notify(\"error\");\n };\n })(this));\n return promise;\n });\n renderEdit = function(task) {\n $el.html($compile(templateEdit({\n task: task\n }))($scope));\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n } else if (event.keyCode === 27) {\n return renderView($model.$modelValue);\n }\n });\n $el.on(\"click\", \".save-task\", function(event) {\n return saveTask($model.$modelValue).then(function() {\n return renderView($model.$modelValue);\n });\n });\n return $el.on(\"click\", \".cancel-edit\", function(event) {\n return renderView($model.$modelValue);\n });\n };\n renderView = function(task) {\n var perms;\n $el.off();\n perms = {\n modify_task: $scope.project.my_permissions.indexOf(\"modify_task\") !== -1,\n delete_task: $scope.project.my_permissions.indexOf(\"delete_task\") !== -1\n };\n $el.html($compile(templateView({\n task: task,\n perms: perms\n }))($scope));\n $el.on(\"click\", \".edit-task\", function() {\n renderEdit($model.$modelValue);\n return $el.find('input').focus().select();\n });\n return $el.on(\"click\", \".delete-task\", function(event) {\n var message, title;\n title = $translate.instant(\"TASK.TITLE_DELETE_ACTION\");\n task = $model.$modelValue;\n message = task.subject;\n return $confirm.askOnDelete(title, message).then(function(askResponse) {\n var promise;\n promise = $repo.remove(task);\n promise.then(function() {\n askResponse.finish();\n return $scope.$emit(\"related-tasks:delete\");\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n });\n });\n });\n };\n $scope.$watch($attrs.ngModel, function(val) {\n if (!val) {\n return;\n }\n return renderView(val);\n });\n $scope.$on(\"related-tasks:assigned-to-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n $scope.$on(\"related-tasks:status-changed\", function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgRelatedTaskRow\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$rootScope\", \"$tgLoading\", \"$tgTemplate\", \"$translate\", RelatedTaskRowDirective]);\n\n RelatedTaskCreateFormDirective = function($repo, $compile, $confirm, $tgmodel, $loading, $analytics, $template) {\n var link, newTask, template;\n template = $template.get(\"task/related-task-create-form.html\", true);\n newTask = {\n subject: \"\",\n assigned_to: null\n };\n link = function($scope, $el, $attrs) {\n var close, createTask, render;\n createTask = debounce(2000, function(task) {\n var currentLoading, promise;\n task.subject = $el.find('input').val();\n task.assigned_to = $scope.newTask.assigned_to;\n task.status = $scope.newTask.status;\n $scope.newTask.status = $scope.project.default_task_status;\n $scope.newTask.assigned_to = null;\n currentLoading = $loading().target($el.find('.task-name')).start();\n promise = $repo.create(\"tasks\", task);\n promise.then(function() {\n $analytics.trackEvent(\"task\", \"create\", \"create task on userstory\", 1);\n currentLoading.finish();\n return $scope.$emit(\"related-tasks:add\");\n });\n promise.then(null, function() {\n $el.find('input').val(task.subject);\n currentLoading.finish();\n return $confirm.notify(\"error\");\n });\n return promise;\n });\n close = function() {\n $el.off();\n $el.html(\"\");\n return $scope.newRelatedTaskFormOpen = false;\n };\n render = function() {\n $scope.newRelatedTaskFormOpen = true;\n $el.html($compile(template())($scope));\n $el.find('input').focus().select();\n $el.addClass('active');\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === 13) {\n return createTask(newTask).then(function() {\n return render();\n });\n } else if (event.keyCode === 27) {\n return $scope.$apply(function() {\n return close();\n });\n }\n });\n $el.on(\"click\", \".icon-close\", function(event) {\n return $scope.$apply(function() {\n return close();\n });\n });\n return $el.on(\"click\", \".icon-save\", function(event) {\n return createTask(newTask).then(function() {\n return close();\n });\n });\n };\n taiga.bindOnce($scope, \"us\", function(val) {\n newTask[\"status\"] = $scope.project.default_task_status;\n newTask[\"project\"] = $scope.project.id;\n newTask[\"user_story\"] = $scope.us.id;\n $scope.newTask = $tgmodel.make_model(\"tasks\", newTask);\n return $el.html(\"\");\n });\n $scope.$on(\"related-tasks:show-form\", function() {\n return render();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateForm\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgLoading\", \"$tgAnalytics\", \"$tgTemplate\", RelatedTaskCreateFormDirective]);\n\n RelatedTaskCreateButtonDirective = function($repo, $compile, $confirm, $tgmodel, $template) {\n var link, template;\n template = $template.get(\"common/components/add-button.html\", true);\n link = function($scope, $el, $attrs) {\n $scope.$watch(\"project\", function(val) {\n if (!val) {\n return;\n }\n $el.off();\n if ($scope.project.my_permissions.indexOf(\"add_task\") !== -1) {\n $el.html($compile(template())($scope));\n } else {\n $el.html(\"\");\n }\n return $el.on(\"click\", \".add-button\", function(event) {\n return $scope.$emit(\"related-tasks:add-new-clicked\");\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskCreateButton\", [\"$tgRepo\", \"$compile\", \"$tgConfirm\", \"$tgModel\", \"$tgTemplate\", RelatedTaskCreateButtonDirective]);\n\n RelatedTasksDirective = function($repo, $rs, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n var _isEditable, _isVisible, loadTasks;\n loadTasks = function() {\n return $rs.tasks.list($scope.projectId, null, $scope.usId).then((function(_this) {\n return function(tasks) {\n $scope.tasks = _.sortBy(tasks, 'ref');\n return tasks;\n };\n })(this));\n };\n _isVisible = function() {\n if ($scope.project) {\n return $scope.project.my_permissions.indexOf(\"view_tasks\") !== -1;\n }\n return false;\n };\n _isEditable = function() {\n if ($scope.project) {\n return $scope.project.my_permissions.indexOf(\"modify_task\") !== -1;\n }\n return false;\n };\n $scope.showRelatedTasks = function() {\n var ref;\n return _isVisible() && (_isEditable() || ((ref = $scope.tasks) != null ? ref.length : void 0));\n };\n $scope.$on(\"related-tasks:add\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:delete\", function() {\n return loadTasks().then(function() {\n return $rootscope.$broadcast(\"related-tasks:update\");\n });\n });\n $scope.$on(\"related-tasks:add-new-clicked\", function() {\n return $scope.$broadcast(\"related-tasks:show-form\");\n });\n taiga.bindOnce($scope, \"us\", function(val) {\n return loadTasks();\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTasks\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", RelatedTasksDirective]);\n\n RelatedTaskAssignedToInlineEditionDirective = function($repo, $rootscope, $translate) {\n var link, template;\n template = _.template(\"\\\" alt=\\\"<%- name %>\\\"/>\\n<%- name %>\");\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task, updateRelatedTask;\n updateRelatedTask = function(task) {\n var ctx, member;\n ctx = {\n name: $translate.instant(\"COMMON.ASSIGNED_TO.NOT_ASSIGNED\"),\n imgurl: \"/\" + window._version + \"/images/unnamed.png\"\n };\n member = $scope.usersById[task.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name_display;\n }\n $el.find(\".avatar\").html(template(ctx));\n return $el.find(\".task-assignedto\").attr('title', ctx.name);\n };\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskAssignedToInlineEdition);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n updateRelatedTask(task);\n $el.on(\"click\", \".task-assignedto\", function(event) {\n return $rootscope.$broadcast(\"assigned-to:add\", task);\n });\n taiga.bindOnce($scope, \"project\", function(project) {\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n $scope.$on(\"assigned-to:added\", debounce(2000, (function(_this) {\n return function(ctx, userId, updatedRelatedTask) {\n if (updatedRelatedTask.id === task.id) {\n updatedRelatedTask.assigned_to = userId;\n if (autoSave) {\n $repo.save(updatedRelatedTask).then(function() {\n return $scope.$emit(\"related-tasks:assigned-to-changed\");\n });\n }\n return updateRelatedTask(updatedRelatedTask);\n }\n };\n })(this)));\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskAssignedToInlineEdition\", [\"$tgRepo\", \"$rootScope\", \"$translate\", RelatedTaskAssignedToInlineEditionDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/resources.coffee\n */\n\n(function() {\n var ResourcesService, initResources, initUrls, module, taiga, urls,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n ResourcesService = (function(superClass) {\n extend(ResourcesService, superClass);\n\n function ResourcesService() {\n return ResourcesService.__super__.constructor.apply(this, arguments);\n }\n\n return ResourcesService;\n\n })(taiga.Service);\n\n urls = {\n \"auth\": \"/auth\",\n \"auth-register\": \"/auth/register\",\n \"invitations\": \"/invitations\",\n \"users\": \"/users\",\n \"by_username\": \"/users/by_username\",\n \"users-password-recovery\": \"/users/password_recovery\",\n \"users-change-password-from-recovery\": \"/users/change_password_from_recovery\",\n \"users-change-password\": \"/users/change_password\",\n \"users-change-email\": \"/users/change_email\",\n \"users-cancel-account\": \"/users/cancel\",\n \"user-stats\": \"/users/%s/stats\",\n \"user-liked\": \"/users/%s/liked\",\n \"user-voted\": \"/users/%s/voted\",\n \"user-watched\": \"/users/%s/watched\",\n \"user-contacts\": \"/users/%s/contacts\",\n \"user-me\": \"/users/me\",\n \"permissions\": \"/permissions\",\n \"notify-policies\": \"/notify-policies\",\n \"user-storage\": \"/user-storage\",\n \"memberships\": \"/memberships\",\n \"bulk-create-memberships\": \"/memberships/bulk_create\",\n \"roles\": \"/roles\",\n \"permissions\": \"/permissions\",\n \"resolver\": \"/resolver\",\n \"projects\": \"/projects\",\n \"project-templates\": \"/project-templates\",\n \"project-modules\": \"/projects/%s/modules\",\n \"bulk-update-projects-order\": \"/projects/bulk_update_order\",\n \"project-like\": \"/projects/%s/like\",\n \"project-unlike\": \"/projects/%s/unlike\",\n \"project-watch\": \"/projects/%s/watch\",\n \"project-unwatch\": \"/projects/%s/unwatch\",\n \"project-transfer-validate-token\": \"/projects/%s/transfer_validate_token\",\n \"project-transfer-accept\": \"/projects/%s/transfer_accept\",\n \"project-transfer-reject\": \"/projects/%s/transfer_reject\",\n \"project-transfer-request\": \"/projects/%s/transfer_request\",\n \"project-transfer-start\": \"/projects/%s/transfer_start\",\n \"userstory-statuses\": \"/userstory-statuses\",\n \"points\": \"/points\",\n \"task-statuses\": \"/task-statuses\",\n \"issue-statuses\": \"/issue-statuses\",\n \"issue-types\": \"/issue-types\",\n \"priorities\": \"/priorities\",\n \"severities\": \"/severities\",\n \"milestones\": \"/milestones\",\n \"userstories\": \"/userstories\",\n \"bulk-create-us\": \"/userstories/bulk_create\",\n \"bulk-update-us-backlog-order\": \"/userstories/bulk_update_backlog_order\",\n \"bulk-update-us-sprint-order\": \"/userstories/bulk_update_sprint_order\",\n \"bulk-update-us-kanban-order\": \"/userstories/bulk_update_kanban_order\",\n \"userstories-filters\": \"/userstories/filters_data\",\n \"userstory-upvote\": \"/userstories/%s/upvote\",\n \"userstory-downvote\": \"/userstories/%s/downvote\",\n \"userstory-watch\": \"/userstories/%s/watch\",\n \"userstory-unwatch\": \"/userstories/%s/unwatch\",\n \"tasks\": \"/tasks\",\n \"bulk-create-tasks\": \"/tasks/bulk_create\",\n \"bulk-update-task-taskboard-order\": \"/tasks/bulk_update_taskboard_order\",\n \"task-upvote\": \"/tasks/%s/upvote\",\n \"task-downvote\": \"/tasks/%s/downvote\",\n \"task-watch\": \"/tasks/%s/watch\",\n \"task-unwatch\": \"/tasks/%s/unwatch\",\n \"issues\": \"/issues\",\n \"bulk-create-issues\": \"/issues/bulk_create\",\n \"issues-filters\": \"/issues/filters_data\",\n \"issue-upvote\": \"/issues/%s/upvote\",\n \"issue-downvote\": \"/issues/%s/downvote\",\n \"issue-watch\": \"/issues/%s/watch\",\n \"issue-unwatch\": \"/issues/%s/unwatch\",\n \"wiki\": \"/wiki\",\n \"wiki-restore\": \"/wiki/%s/restore\",\n \"wiki-links\": \"/wiki-links\",\n \"history/us\": \"/history/userstory\",\n \"history/issue\": \"/history/issue\",\n \"history/task\": \"/history/task\",\n \"history/wiki\": \"/history/wiki\",\n \"attachments/us\": \"/userstories/attachments\",\n \"attachments/issue\": \"/issues/attachments\",\n \"attachments/task\": \"/tasks/attachments\",\n \"attachments/wiki_page\": \"/wiki/attachments\",\n \"custom-attributes/userstory\": \"/userstory-custom-attributes\",\n \"custom-attributes/issue\": \"/issue-custom-attributes\",\n \"custom-attributes/task\": \"/task-custom-attributes\",\n \"custom-attributes-values/userstory\": \"/userstories/custom-attributes-values\",\n \"custom-attributes-values/issue\": \"/issues/custom-attributes-values\",\n \"custom-attributes-values/task\": \"/tasks/custom-attributes-values\",\n \"webhooks\": \"/webhooks\",\n \"webhooks-test\": \"/webhooks/%s/test\",\n \"webhooklogs\": \"/webhooklogs\",\n \"webhooklogs-resend\": \"/webhooklogs/%s/resend\",\n \"userstories-csv\": \"/userstories/csv?uuid=%s\",\n \"tasks-csv\": \"/tasks/csv?uuid=%s\",\n \"issues-csv\": \"/issues/csv?uuid=%s\",\n \"timeline-profile\": \"/timeline/profile\",\n \"timeline-user\": \"/timeline/user\",\n \"timeline-project\": \"/timeline/project\",\n \"search\": \"/search\",\n \"exporter\": \"/exporter\",\n \"importer\": \"/importer/load_dump\",\n \"feedback\": \"/feedback\",\n \"locales\": \"/locales\",\n \"applications\": \"/applications\",\n \"application-tokens\": \"/application-tokens\",\n \"stats-discover\": \"/stats/discover\"\n };\n\n initUrls = function($log, $urls) {\n $log.debug(\"Initialize api urls\");\n return $urls.update(urls);\n };\n\n initResources = function($log, $rs) {\n var i, len, provider, providers, results;\n $log.debug(\"Initialize resources\");\n providers = _.toArray(arguments).slice(2);\n results = [];\n for (i = 0, len = providers.length; i < len; i++) {\n provider = providers[i];\n results.push(provider($rs));\n }\n return results;\n };\n\n module = angular.module(\"taigaResources\", [\"taigaBase\"]);\n\n module.service(\"$tgResources\", ResourcesService);\n\n module.run([\"$log\", \"$tgUrls\", initUrls]);\n\n module.run([\"$log\", \"$tgResources\", \"$tgProjectsResourcesProvider\", \"$tgCustomAttributesResourcesProvider\", \"$tgCustomAttributesValuesResourcesProvider\", \"$tgMembershipsResourcesProvider\", \"$tgNotifyPoliciesResourcesProvider\", \"$tgInvitationsResourcesProvider\", \"$tgRolesResourcesProvider\", \"$tgUserSettingsResourcesProvider\", \"$tgSprintsResourcesProvider\", \"$tgUserstoriesResourcesProvider\", \"$tgTasksResourcesProvider\", \"$tgIssuesResourcesProvider\", \"$tgWikiResourcesProvider\", \"$tgSearchResourcesProvider\", \"$tgMdRenderResourcesProvider\", \"$tgHistoryResourcesProvider\", \"$tgKanbanResourcesProvider\", \"$tgModulesResourcesProvider\", \"$tgWebhooksResourcesProvider\", \"$tgWebhookLogsResourcesProvider\", \"$tgLocalesResourcesProvider\", \"$tgUsersResourcesProvider\", initResources]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/search.coffee\n */\n\n(function() {\n var SearchBoxDirective, SearchController, SearchDirective, bindOnce, debounce, debounceLeading, groupBy, mixOf, module, taiga, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n bindOnce = this.taiga.bindOnce;\n\n mixOf = this.taiga.mixOf;\n\n debounceLeading = this.taiga.debounceLeading;\n\n trim = this.taiga.trim;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaSearch\", []);\n\n SearchController = (function(superClass) {\n extend(SearchController, superClass);\n\n SearchController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\", \"$routeParams\", \"$q\", \"$tgLocation\", \"tgAppMetaService\", \"$tgNavUrls\", \"$translate\"];\n\n function SearchController(scope1, repo, rs, params, q, location, appMetaService, navUrls, translate) {\n var loadSearchData, promise;\n this.scope = scope1;\n this.repo = repo;\n this.rs = rs;\n this.params = params;\n this.q = q;\n this.location = location;\n this.appMetaService = appMetaService;\n this.navUrls = navUrls;\n this.translate = translate;\n this.scope.sectionName = \"Search\";\n promise = this.loadInitialData();\n promise.then((function(_this) {\n return function() {\n var description, title;\n title = _this.translate.instant(\"SEARCH.PAGE_TITLE\", {\n projectName: _this.scope.project.name\n });\n description = _this.translate.instant(\"SEARCH.PAGE_DESCRIPTION\", {\n projectName: _this.scope.project.name,\n projectDescription: _this.scope.project.description\n });\n return _this.appMetaService.setAll(title, description);\n };\n })(this));\n promise.then(null, this.onInitialDataError.bind(this));\n this.scope.searchTerm = null;\n loadSearchData = debounceLeading(100, (function(_this) {\n return function(t) {\n return _this.loadSearchData(t);\n };\n })(this));\n bindOnce(this.scope, \"projectId\", (function(_this) {\n return function(projectId) {\n if (!_this.scope.searchResults && _this.scope.searchTerm) {\n return _this.loadSearchData();\n }\n };\n })(this));\n this.scope.$watch(\"searchTerm\", (function(_this) {\n return function(term) {\n if (term !== void 0 && _this.scope.projectId) {\n return _this.loadSearchData(term);\n }\n };\n })(this));\n }\n\n SearchController.prototype.loadFilters = function() {\n var defered;\n defered = this.q.defer();\n defered.resolve();\n return defered.promise;\n };\n\n SearchController.prototype.loadProject = function() {\n return this.rs.projects.getBySlug(this.params.pslug).then((function(_this) {\n return function(project) {\n _this.scope.project = project;\n _this.scope.$emit('project:loaded', project);\n _this.scope.issueStatusById = groupBy(project.issue_statuses, function(x) {\n return x.id;\n });\n _this.scope.taskStatusById = groupBy(project.task_statuses, function(x) {\n return x.id;\n });\n _this.scope.severityById = groupBy(project.severities, function(x) {\n return x.id;\n });\n _this.scope.priorityById = groupBy(project.priorities, function(x) {\n return x.id;\n });\n _this.scope.usStatusById = groupBy(project.us_statuses, function(x) {\n return x.id;\n });\n return project;\n };\n })(this));\n };\n\n SearchController.prototype.loadSearchData = function(term) {\n if (term == null) {\n term = \"\";\n }\n this.scope.loading = true;\n return this._loadSearchData(term).then((function(_this) {\n return function(data) {\n _this.scope.searchResults = data;\n return _this.scope.loading = false;\n };\n })(this));\n };\n\n SearchController.prototype._loadSearchData = function(term) {\n if (term == null) {\n term = \"\";\n }\n if (this._promise) {\n this._promise.abort();\n }\n this._promise = this.rs.search[\"do\"](this.scope.projectId, term);\n return this._promise;\n };\n\n SearchController.prototype.loadInitialData = function() {\n return this.loadProject().then((function(_this) {\n return function(project) {\n _this.scope.projectId = project.id;\n return _this.fillUsersAndRoles(project.members, project.roles);\n };\n })(this));\n };\n\n return SearchController;\n\n })(mixOf(taiga.Controller, taiga.PageMixin));\n\n module.controller(\"SearchController\", SearchController);\n\n SearchBoxDirective = function(projectService, $lightboxService, $navurls, $location, $route) {\n var link;\n link = function($scope, $el, $attrs) {\n var openLightbox, project, submit;\n project = null;\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var form, text, url;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n text = $el.find(\"#search-text\").val();\n url = $navurls.resolve(\"project-search\", {\n project: project.get(\"slug\")\n });\n return $scope.$apply(function() {\n $lightboxService.close($el);\n $location.path(url);\n $location.search(\"text\", text).path(url);\n return $route.reload();\n });\n };\n })(this));\n openLightbox = function() {\n project = projectService.project;\n return $lightboxService.open($el).then(function() {\n return $el.find(\"#search-text\").focus();\n });\n };\n $el.on(\"submit\", \"form\", submit);\n return openLightbox();\n };\n return {\n templateUrl: \"search/lightbox-search.html\",\n link: link\n };\n };\n\n SearchBoxDirective.$inject = [\"tgProjectService\", \"lightboxService\", \"$tgNavUrls\", \"$tgLocation\", \"$route\"];\n\n module.directive(\"tgSearchBox\", SearchBoxDirective);\n\n SearchDirective = function($log, $compile, $templatecache, $routeparams, $location) {\n var link, linkTable;\n linkTable = function($scope, $el, $attrs, $ctrl) {\n var activeSectionName, applyAutoTab, getActiveSection, lastSearchResults, markSectionTabActive, renderFilterTabs, renderTableContent, tabsDom, templates;\n applyAutoTab = true;\n activeSectionName = \"userstories\";\n tabsDom = $el.find(\".search-filter\");\n lastSearchResults = null;\n getActiveSection = function(data) {\n var i, len, maxVal, name, ref, selectedSection, value;\n maxVal = 0;\n selectedSection = {};\n selectedSection.name = \"userstories\";\n selectedSection.value = [];\n if (!applyAutoTab) {\n selectedSection.name = activeSectionName;\n selectedSection.value = data[activeSectionName];\n return selectedSection;\n }\n if (data) {\n ref = [\"userstories\", \"issues\", \"tasks\", \"wikipages\"];\n for (i = 0, len = ref.length; i < len; i++) {\n name = ref[i];\n value = data[name];\n if (value.length > maxVal) {\n maxVal = value.length;\n selectedSection.name = name;\n selectedSection.value = value;\n break;\n }\n }\n }\n if (maxVal === 0) {\n return selectedSection;\n }\n return selectedSection;\n };\n renderFilterTabs = function(data) {\n var name, results, value;\n results = [];\n for (name in data) {\n value = data[name];\n tabsDom.find(\"li.\" + name).show();\n results.push(tabsDom.find(\"li.\" + name + \" .num\").html(value.length));\n }\n return results;\n };\n markSectionTabActive = function(section) {\n tabsDom.find(\"a.active\").removeClass(\"active\");\n tabsDom.find(\"li.\" + section.name + \" a\").addClass(\"active\");\n applyAutoTab = false;\n return activeSectionName = section.name;\n };\n templates = {\n issues: $templatecache.get(\"search-issues\"),\n tasks: $templatecache.get(\"search-tasks\"),\n userstories: $templatecache.get(\"search-userstories\"),\n wikipages: $templatecache.get(\"search-wikipages\")\n };\n renderTableContent = function(section) {\n var element, oldElements, oldScope, scope, template;\n oldElements = $el.find(\".search-result-table\").children();\n oldScope = oldElements.scope();\n if (oldScope) {\n oldScope.$destroy();\n oldElements.remove();\n }\n scope = $scope.$new();\n scope[section.name] = section.value;\n template = angular.element.parseHTML(trim(templates[section.name]));\n element = $compile(template)(scope);\n return $el.find(\".search-result-table\").html(element);\n };\n $scope.$watch(\"searchResults\", function(data) {\n var activeSection;\n lastSearchResults = data;\n if (!lastSearchResults) {\n return;\n }\n activeSection = getActiveSection(data);\n renderFilterTabs(data);\n renderTableContent(activeSection);\n return markSectionTabActive(activeSection);\n });\n $scope.$watch(\"searchTerm\", function(searchTerm) {\n if (searchTerm !== void 0) {\n return $location.search(\"text\", searchTerm);\n }\n });\n return $el.on(\"click\", \".search-filter li > a\", function(event) {\n var section, sectionData, sectionName, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n sectionName = target.parent().data(\"name\");\n sectionData = !lastSearchResults ? [] : lastSearchResults[sectionName];\n section = {\n name: sectionName,\n value: sectionData\n };\n return $scope.$apply(function() {\n renderTableContent(section);\n return markSectionTabActive(section);\n });\n });\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, searchText;\n $ctrl = $el.controller();\n linkTable($scope, $el, $attrs, $ctrl);\n searchText = $routeparams.text;\n return $scope.$watch(\"projectId\", function(projectId) {\n if (projectId != null) {\n return $scope.searchTerm = searchText;\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSearch\", [\"$log\", \"$compile\", \"$templateCache\", \"$routeParams\", \"$tgLocation\", SearchDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/taskboard.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTaskboard\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/tasks.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTasks\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/team.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaTeam\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/user-settings.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaUserSettings\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/userstories.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaUserStories\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/wiki.coffee\n */\n\n(function() {\n var module;\n\n module = angular.module(\"taigaWiki\", []);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/analytics.coffee\n */\n\n(function() {\n var AnalyticsService, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n AnalyticsService = (function(superClass) {\n extend(AnalyticsService, superClass);\n\n AnalyticsService.$inject = [\"$rootScope\", \"$log\", \"$tgConfig\", \"$window\", \"$document\", \"$location\"];\n\n function AnalyticsService(rootscope, log, config, win, doc, location) {\n var conf;\n this.rootscope = rootscope;\n this.log = log;\n this.config = config;\n this.win = win;\n this.doc = doc;\n this.location = location;\n this.initialized = false;\n conf = this.config.get(\"analytics\", {});\n this.accountId = conf.accountId;\n this.pageEvent = conf.pageEvent || \"$routeChangeSuccess\";\n this.trackRoutes = conf.trackRoutes || true;\n this.ignoreFirstPageLoad = conf.ignoreFirstPageLoad || false;\n }\n\n AnalyticsService.prototype.initialize = function() {\n if (!this.accountId) {\n this.log.debug(\"Analytics: no acount id provided. Disabling.\");\n return;\n }\n this.injectAnalytics();\n this.win.ga(\"create\", this.accountId, \"auto\");\n this.win.ga(\"require\", \"displayfeatures\");\n if (this.trackRoutes && (!this.ignoreFirstPageLoad)) {\n this.win.ga(\"send\", \"pageview\", this.getUrl());\n }\n if (this.trackRoutes) {\n this.rootscope.$on(this.pageEvent, (function(_this) {\n return function() {\n return _this.trackPage(_this.getUrl(), \"Taiga\");\n };\n })(this));\n }\n return this.initialized = true;\n };\n\n AnalyticsService.prototype.getUrl = function() {\n return this.location.path();\n };\n\n AnalyticsService.prototype.injectAnalytics = function() {\n var fn;\n fn = (function(i,s,o,g,r,a,m){i[\"GoogleAnalyticsObject\"]=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments);},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m);});\n return fn(window, document, \"script\", \"//www.google-analytics.com/analytics.js\", \"ga\");\n };\n\n AnalyticsService.prototype.trackPage = function(url, title) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n title = title || this.doc[0].title;\n return this.win.ga(\"send\", \"pageview\", {\n \"page\": url,\n \"title\": title\n });\n };\n\n AnalyticsService.prototype.trackEvent = function(category, action, label, value) {\n if (!this.initialized) {\n return;\n }\n if (!this.win.ga) {\n return;\n }\n return this.win.ga(\"send\", \"event\", category, action, label, value);\n };\n\n return AnalyticsService;\n\n })(taiga.Service);\n\n module.service(\"$tgAnalytics\", AnalyticsService);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Taiga Agile LLC \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: bind-scope.coffee\n */\n\n(function() {\n var BindScope, module;\n\n module = angular.module(\"taigaCommon\");\n\n BindScope = function(config) {\n var link;\n if (!config.debugInfo) {\n jQuery.fn.scope = function() {\n return this.data('scope');\n };\n }\n link = function($scope, $el) {\n if (!config.debugInfo) {\n return $el.data('scope', $scope).addClass('tg-scope');\n }\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgBindScope\", [\"$tgConfig\", BindScope]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Taiga Agile LLC \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: compile-html.directive.coffee\n */\n\n(function() {\n var CompileHtmlDirective;\n\n CompileHtmlDirective = function($compile) {\n var link;\n link = function(scope, element, attrs) {\n return scope.$watch(attrs.tgCompileHtml, function(newValue, oldValue) {\n element.html(newValue);\n return $compile(element.contents())(scope);\n });\n };\n return {\n link: link\n };\n };\n\n CompileHtmlDirective.$inject = [\"$compile\"];\n\n angular.module(\"taigaCommon\").directive(\"tgCompileHtml\", CompileHtmlDirective);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/components.coffee\n */\n\n(function() {\n var AssignedToDirective, BlockButtonDirective, CreatedByDisplayDirective, DateRangeDirective, DateSelectorDirective, DeleteButtonDirective, EditableDescriptionDirective, EditableSubjectDirective, EditableWysiwyg, ListItemAssignedtoDirective, ListItemIssueStatusDirective, ListItemPriorityDirective, ListItemSeverityDirective, ListItemTaskStatusDirective, ListItemTypeDirective, ListItemUsStatusDirective, SprintProgressBarDirective, TgMainTitleDirective, TgProgressBarDirective, WatchersDirective, bindOnce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n DateRangeDirective = function($translate) {\n var link, renderRange;\n renderRange = function($el, first, second) {\n var endDate, initDate, prettyDate;\n prettyDate = $translate.instant(\"BACKLOG.SPRINTS.DATE\");\n initDate = moment(first).format(prettyDate);\n endDate = moment(second).format(prettyDate);\n return $el.html(initDate + \"-\" + endDate);\n };\n link = function($scope, $el, $attrs) {\n var first, ref, second;\n ref = $attrs.tgDateRange.split(\",\"), first = ref[0], second = ref[1];\n return bindOnce($scope, first, function(valFirst) {\n return bindOnce($scope, second, function(valSecond) {\n return renderRange($el, valFirst, valSecond);\n });\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgDateRange\", [\"$translate\", DateRangeDirective]);\n\n DateSelectorDirective = function($rootscope, datePickerConfigService) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var initialize, selectedDate, unbind;\n selectedDate = null;\n initialize = function() {\n var datePickerConfig;\n datePickerConfig = datePickerConfigService.get();\n _.merge(datePickerConfig, {\n field: $el[0],\n onSelect: (function(_this) {\n return function(date) {\n return selectedDate = date;\n };\n })(this),\n onOpen: (function(_this) {\n return function() {\n if (selectedDate != null) {\n return $el.picker.setDate(selectedDate);\n }\n };\n })(this)\n });\n return $el.picker = new Pikaday(datePickerConfig);\n };\n unbind = $rootscope.$on(\"$translateChangeEnd\", (function(_this) {\n return function(ctx) {\n return initialize();\n };\n })(this));\n $scope.$watch($attrs.ngModel, function(val) {\n if ((val != null) && !$el.picker) {\n initialize();\n }\n if (val != null) {\n return $el.picker.setDate(val);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return unbind();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgDateSelector\", [\"$rootScope\", \"tgDatePickerConfigService\", DateSelectorDirective]);\n\n SprintProgressBarDirective = function() {\n var link, renderProgress;\n renderProgress = function($el, percentage, visual_percentage) {\n if ($el.hasClass(\".current-progress\")) {\n return $el.css(\"width\", percentage + \"%\");\n } else {\n $el.find(\".current-progress\").css(\"width\", visual_percentage + \"%\");\n return $el.find(\".number\").html(percentage + \" %\");\n }\n };\n link = function($scope, $el, $attrs) {\n bindOnce($scope, $attrs.tgSprintProgressbar, function(sprint) {\n var closedPoints, percentage, totalPoints, visual_percentage;\n closedPoints = sprint.closed_points;\n totalPoints = sprint.total_points;\n percentage = 0;\n if (totalPoints !== 0) {\n percentage = Math.round(100 * (closedPoints / totalPoints));\n }\n visual_percentage = 0;\n if (totalPoints !== 0) {\n visual_percentage = Math.round(98 * (closedPoints / totalPoints));\n }\n return renderProgress($el, percentage, visual_percentage);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgSprintProgressbar\", SprintProgressBarDirective);\n\n CreatedByDisplayDirective = function($template, $compile, $translate, $navUrls) {\n var link;\n link = function($scope, $el, $attrs) {\n bindOnce($scope, $attrs.ngModel, function(model) {\n var ref;\n if (model != null) {\n $scope.owner = model.owner_extra_info || {\n full_name_display: $translate.instant(\"COMMON.EXTERNAL_USER\"),\n photo: \"/\" + window._version + \"/images/user-noimage.png\"\n };\n $scope.url = ((ref = $scope.owner) != null ? ref.is_active : void 0) ? $navUrls.resolve(\"user-profile\", {\n username: $scope.owner.username\n }) : \"\";\n return $scope.date = moment(model.created_date).format($translate.instant(\"COMMON.DATETIME\"));\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n scope: true,\n templateUrl: \"common/components/created-by.html\"\n };\n };\n\n module.directive(\"tgCreatedByDisplay\", [\"$tgTemplate\", \"$compile\", \"$translate\", \"$tgNavUrls\", CreatedByDisplayDirective]);\n\n WatchersDirective = function($rootscope, $confirm, $repo, $qqueue, $template, $compile, $translate) {\n var link, template;\n template = $template.get(\"common/components/watchers.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var deleteWatcher, isEditable, renderWatchers, save;\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(watchers) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watchers;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n watchers = _.map(watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"object:updated\");\n });\n return promise.then(null, function() {\n $model.$modelValue.revert();\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n deleteWatcher = $qqueue.bindAdd((function(_this) {\n return function(watcherIds) {\n var item, promise;\n item = $model.$modelValue.clone();\n item.watchers = watcherIds;\n $model.$setViewValue(item);\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n var watchers;\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n renderWatchers(watchers);\n return $rootscope.$broadcast(\"object:updated\");\n });\n return promise.then(null, function() {\n item.revert();\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n renderWatchers = function(watchers) {\n var ctx, html;\n ctx = {\n watchers: watchers,\n isEditable: isEditable()\n };\n html = $compile(template(ctx))($scope);\n return $el.html(html);\n };\n $el.on(\"click\", \".js-delete-watcher\", function(event) {\n var message, target, title, watcherId;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n target = angular.element(event.currentTarget);\n watcherId = target.data(\"watcher-id\");\n title = $translate.instant(\"COMMON.WATCHERS.TITLE_LIGHTBOX_DELETE_WARTCHER\");\n message = $scope.usersById[watcherId].full_name_display;\n return $confirm.askOnDelete(title, message).then((function(_this) {\n return function(askResponse) {\n var watcherIds;\n askResponse.finish();\n watcherIds = _.clone($model.$modelValue.watchers, false);\n watcherIds = _.pull(watcherIds, watcherId);\n return deleteWatcher(watcherIds);\n };\n })(this));\n });\n $scope.$on(\"watcher:added\", function(ctx, watcherId) {\n var watchers;\n watchers = _.clone($model.$modelValue.watchers, false);\n watchers.push(watcherId);\n watchers = _.uniq(watchers);\n return save(watchers);\n });\n $scope.$watch($attrs.ngModel, function(item) {\n var watchers;\n if (item == null) {\n return;\n }\n watchers = _.map(item.watchers, function(watcherId) {\n return $scope.usersById[watcherId];\n });\n return renderWatchers(watchers);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgWatchers\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgQqueue\", \"$tgTemplate\", \"$compile\", \"$translate\", WatchersDirective]);\n\n AssignedToDirective = function($rootscope, $confirm, $repo, $loading, $qqueue, $template, $translate, $compile, $currentUserService) {\n var link, template;\n template = $template.get(\"common/components/assigned-to.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var isEditable, renderAssignedTo, save;\n isEditable = function() {\n var ref, ref1;\n return ((ref = $scope.project) != null ? (ref1 = ref.my_permissions) != null ? ref1.indexOf($attrs.requiredPerm) : void 0 : void 0) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(userId) {\n var currentLoading, promise;\n $model.$modelValue.assigned_to = userId;\n currentLoading = $loading().target($el).start();\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n currentLoading.finish();\n renderAssignedTo($model.$modelValue);\n return $rootscope.$broadcast(\"object:updated\");\n });\n promise.then(null, function() {\n $model.$modelValue.revert();\n $confirm.notify(\"error\");\n return currentLoading.finish();\n });\n return promise;\n };\n })(this));\n renderAssignedTo = function(assignedObject) {\n var ctx, fullName, html, isIocaine, isUnassigned, photo;\n if ((assignedObject != null ? assignedObject.assigned_to : void 0) != null) {\n fullName = assignedObject.assigned_to_extra_info.full_name_display;\n photo = assignedObject.assigned_to_extra_info.photo;\n isUnassigned = false;\n } else {\n fullName = $translate.instant(\"COMMON.ASSIGNED_TO.ASSIGN\");\n photo = \"/\" + window._version + \"/images/unnamed.png\";\n isUnassigned = true;\n }\n isIocaine = assignedObject != null ? assignedObject.is_iocaine : void 0;\n ctx = {\n fullName: fullName,\n photo: photo,\n isUnassigned: isUnassigned,\n isEditable: isEditable(),\n isIocaine: isIocaine,\n fullNameVisible: !(isUnassigned && !$currentUserService.isAuthenticated())\n };\n html = $compile(template(ctx))($scope);\n return $el.html(html);\n };\n $el.on(\"click\", \".user-assigned\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n return $scope.$apply(function() {\n return $rootscope.$broadcast(\"assigned-to:add\", $model.$modelValue);\n });\n });\n $el.on(\"click\", \".assign-to-me\", function(event) {\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n $model.$modelValue.assigned_to = $currentUserService.getUser().get('id');\n return save($currentUserService.getUser().get('id'));\n });\n $el.on(\"click\", \".remove-user\", function(event) {\n var title;\n event.preventDefault();\n if (!isEditable()) {\n return;\n }\n title = $translate.instant(\"COMMON.ASSIGNED_TO.CONFIRM_UNASSIGNED\");\n return $confirm.ask(title).then((function(_this) {\n return function(response) {\n response.finish();\n $model.$modelValue.assigned_to = null;\n return save(null);\n };\n })(this));\n });\n $scope.$on(\"assigned-to:added\", function(ctx, userId, item) {\n if (item.id !== $model.$modelValue.id) {\n return;\n }\n return save(userId);\n });\n $scope.$watch($attrs.ngModel, function(instance) {\n return renderAssignedTo(instance);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgAssignedTo\", [\"$rootScope\", \"$tgConfirm\", \"$tgRepo\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", \"$translate\", \"$compile\", \"tgCurrentUserService\", AssignedToDirective]);\n\n BlockButtonDirective = function($rootscope, $loading, $template) {\n var link, template;\n template = $template.get(\"common/components/block-button.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable;\n isEditable = function() {\n return $scope.project.my_permissions.indexOf(\"modify_us\") !== -1;\n };\n $scope.$watch($attrs.ngModel, function(item) {\n if (!item) {\n return;\n }\n if (isEditable()) {\n $el.find('.item-block').addClass('editable');\n }\n if (item.is_blocked) {\n $el.find('.item-block').removeClass('is-active');\n return $el.find('.item-unblock').addClass('is-active');\n } else {\n $el.find('.item-block').addClass('is-active');\n return $el.find('.item-unblock').removeClass('is-active');\n }\n });\n $el.on(\"click\", \".item-block\", function(event) {\n event.preventDefault();\n return $rootscope.$broadcast(\"block\", $model.$modelValue);\n });\n $el.on(\"click\", \".item-unblock\", function(event) {\n var currentLoading, finish;\n event.preventDefault();\n currentLoading = $loading().target($el.find(\".item-unblock\")).start();\n finish = function() {\n return currentLoading.finish();\n };\n return $rootscope.$broadcast(\"unblock\", $model.$modelValue, finish);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgBlockButton\", [\"$rootScope\", \"$tgLoading\", \"$tgTemplate\", BlockButtonDirective]);\n\n DeleteButtonDirective = function($log, $repo, $confirm, $location, $template) {\n var link, template;\n template = $template.get(\"common/components/delete-button.html\");\n link = function($scope, $el, $attrs, $model) {\n if (!$attrs.onDeleteGoToUrl) {\n return $log.error(\"DeleteButtonDirective requires on-delete-go-to-url set in scope.\");\n }\n if (!$attrs.onDeleteTitle) {\n return $log.error(\"DeleteButtonDirective requires on-delete-title set in scope.\");\n }\n $el.on(\"click\", \".button-delete\", function(event) {\n var subtitle, title;\n title = $attrs.onDeleteTitle;\n subtitle = $model.$modelValue.subject;\n return $confirm.askOnDelete(title, subtitle).then((function(_this) {\n return function(askResponse) {\n var promise;\n promise = $repo.remove($model.$modelValue);\n promise.then(function() {\n var url;\n askResponse.finish();\n url = $scope.$eval($attrs.onDeleteGoToUrl);\n return $location.path(url);\n });\n return promise.then(null, function() {\n askResponse.finish(false);\n return $confirm.notify(\"error\");\n });\n };\n })(this));\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgDeleteButton\", [\"$log\", \"$tgRepo\", \"$tgConfirm\", \"$tgLocation\", \"$tgTemplate\", DeleteButtonDirective]);\n\n EditableSubjectDirective = function($rootscope, $repo, $confirm, $loading, $qqueue, $template) {\n var link, template;\n template = $template.get(\"common/components/editable-subject.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n $scope.$on(\"object:updated\", function() {\n $el.find('.edit-subject').hide();\n return $el.find('.view-subject').show();\n });\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(subject) {\n var currentLoading, promise;\n $model.$modelValue.subject = subject;\n currentLoading = $loading().target($el.find('.save-container')).start();\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"object:updated\");\n $el.find('.edit-subject').hide();\n return $el.find('.view-subject').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n promise[\"finally\"](function() {\n return currentLoading.finish();\n });\n return promise;\n };\n })(this));\n $el.click(function() {\n if (!isEditable()) {\n return;\n }\n $el.find('.edit-subject').show();\n $el.find('.view-subject').hide();\n return $el.find('input').focus();\n });\n $el.on(\"click\", \".save\", function(e) {\n var subject;\n e.preventDefault();\n subject = $scope.item.subject;\n return save(subject);\n });\n $el.on(\"keyup\", \"input\", function(event) {\n var subject;\n if (event.keyCode === 13) {\n subject = $scope.item.subject;\n return save(subject);\n } else if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $model.$modelValue.revert();\n };\n })(this));\n $el.find('.edit-subject').hide();\n return $el.find('.view-subject').show();\n }\n });\n $el.find('.edit-subject').hide();\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (!isEditable()) {\n return $el.find('.view-subject .edit').remove();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgEditableSubject\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", EditableSubjectDirective]);\n\n EditableDescriptionDirective = function($rootscope, $repo, $confirm, $compile, $loading, $selectedText, $qqueue, $template) {\n var link, noDescriptionMegEditMode, noDescriptionMegReadMode, template;\n template = $template.get(\"common/components/editable-description.html\");\n noDescriptionMegEditMode = $template.get(\"common/components/editable-description-msg-edit-mode.html\");\n noDescriptionMegReadMode = $template.get(\"common/components/editable-description-msg-read-mode.html\");\n link = function($scope, $el, $attrs, $model) {\n var isEditable, save;\n $el.find('.edit-description').hide();\n $el.find('.view-description .edit').hide();\n $scope.$on(\"object:updated\", function() {\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n });\n isEditable = function() {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(description) {\n var currentLoading, promise;\n $model.$modelValue.description = description;\n currentLoading = $loading().target($el.find('.save-container')).start();\n promise = $repo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"object:updated\");\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n });\n promise.then(null, function() {\n return $confirm.notify(\"error\");\n });\n return promise[\"finally\"](function() {\n return currentLoading.finish();\n });\n };\n })(this));\n $el.on(\"mouseup\", \".view-description\", function(event) {\n var target;\n target = angular.element(event.target);\n if (!isEditable()) {\n return;\n }\n if (target.is('a')) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n $el.find('.edit-description').show();\n $el.find('.view-description').hide();\n return $el.find('textarea').focus();\n });\n $el.on(\"click\", \"a\", function(event) {\n var href, target;\n target = angular.element(event.target);\n href = target.attr('href');\n if (href.indexOf(\"#\") === 0) {\n event.preventDefault();\n return $('body').scrollTop($(href).offset().top);\n }\n });\n $el.on(\"click\", \".save\", function(e) {\n var description;\n e.preventDefault();\n description = $scope.item.description;\n return save(description);\n });\n $el.on(\"keydown\", \"textarea\", function(event) {\n if (event.keyCode === 27) {\n $scope.$apply((function(_this) {\n return function() {\n return $scope.item.revert();\n };\n })(this));\n $el.find('.edit-description').hide();\n return $el.find('.view-description').show();\n }\n });\n $scope.$watch($attrs.ngModel, function(value) {\n if (!value) {\n return;\n }\n $scope.item = value;\n if (isEditable()) {\n $el.find('.view-description .edit').show();\n $el.find('.view-description .us-content').addClass('editable');\n return $scope.noDescriptionMsg = $compile(noDescriptionMegEditMode)($scope);\n } else {\n return $scope.noDescriptionMsg = $compile(noDescriptionMegReadMode)($scope);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\",\n template: template\n };\n };\n\n module.directive(\"tgEditableDescription\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"$compile\", \"$tgLoading\", \"$selectedText\", \"$tgQqueue\", \"$tgTemplate\", EditableDescriptionDirective]);\n\n EditableWysiwyg = function(attachmentsService, attachmentsFullService) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var isInEditMode, uploadFile;\n isInEditMode = function() {\n return $el.find('textarea').is(':visible');\n };\n uploadFile = function(file, type) {\n if (!attachmentsService.validate(file)) {\n return;\n }\n return attachmentsFullService.addAttachment($model.$modelValue.project, $model.$modelValue.id, type, file).then(function(result) {\n if (taiga.isImage(result.getIn(['file', 'name']))) {\n return '![' + result.getIn(['file', 'name']) + '](' + result.getIn(['file', 'url']) + ')';\n } else {\n return '[' + result.getIn(['file', 'name']) + '](' + result.getIn(['file', 'url']) + ')';\n }\n });\n };\n $el.on('dragover', function(e) {\n var textarea;\n textarea = $el.find('textarea').focus();\n return false;\n });\n return $el.on('drop', function(e) {\n var dataTransfer, promises, textarea, type;\n e.stopPropagation();\n e.preventDefault();\n if (isInEditMode()) {\n dataTransfer = e.dataTransfer || (e.originalEvent && e.originalEvent.dataTransfer);\n textarea = $el.find('textarea');\n textarea.addClass('in-progress');\n type = $model.$modelValue['_name'];\n if (type === \"userstories\") {\n type = \"us\";\n } else if (type === \"tasks\") {\n type = \"task\";\n } else if (type === \"issues\") {\n type = \"issue\";\n } else if (type === \"wiki\") {\n type = \"wiki_page\";\n }\n promises = _.map(dataTransfer.files, function(file) {\n return uploadFile(file, type);\n });\n return Promise.all(promises).then(function(result) {\n textarea = $el.find('textarea');\n $.markItUp({\n replaceWith: result.join(' ')\n });\n return textarea.removeClass('in-progress');\n });\n }\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgEditableWysiwyg\", [\"tgAttachmentsService\", \"tgAttachmentsFullService\", EditableWysiwyg]);\n\n ListItemUsStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var us;\n us = $scope.$eval($attrs.tgListitemUsStatus);\n return bindOnce($scope, \"usStatusById\", function(usStatusById) {\n return $el.html(usStatusById[us.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemUsStatus\", ListItemUsStatusDirective);\n\n ListItemTaskStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var task;\n task = $scope.$eval($attrs.tgListitemTaskStatus);\n return bindOnce($scope, \"taskStatusById\", function(taskStatusById) {\n return $el.html(taskStatusById[task.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemTaskStatus\", ListItemTaskStatusDirective);\n\n ListItemAssignedtoDirective = function($template, $translate) {\n var link, template;\n template = $template.get(\"common/components/list-item-assigned-to-avatar.html\", true);\n link = function($scope, $el, $attrs) {\n return bindOnce($scope, \"usersById\", function(usersById) {\n var ctx, item, member;\n item = $scope.$eval($attrs.tgListitemAssignedto);\n ctx = {\n name: $translate.instant(\"COMMON.ASSIGNED_TO.NOT_ASSIGNED\"),\n imgurl: \"/\" + window._version + \"/images/unnamed.png\"\n };\n member = usersById[item.assigned_to];\n if (member) {\n ctx.imgurl = member.photo;\n ctx.name = member.full_name_display;\n }\n return $el.html(template(ctx));\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemAssignedto\", [\"$tgTemplate\", \"$translate\", ListItemAssignedtoDirective]);\n\n ListItemIssueStatusDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemIssueStatus);\n return bindOnce($scope, \"issueStatusById\", function(issueStatusById) {\n return $el.html(issueStatusById[issue.status].name);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgListitemIssueStatus\", ListItemIssueStatusDirective);\n\n ListItemTypeDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(issueTypeById, issue) {\n var domNode, type;\n type = issueTypeById[issue.type];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", type.color);\n return domNode.attr(\"title\", type.name);\n };\n bindOnce($scope, \"issueTypeById\", function(issueTypeById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemType);\n return render(issueTypeById, issue);\n });\n return $scope.$watch($attrs.tgListitemType, function(issue) {\n return render($scope.issueTypeById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemType\", ListItemTypeDirective);\n\n ListItemPriorityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(priorityById, issue) {\n var domNode, priority;\n priority = priorityById[issue.priority];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", priority.color);\n return domNode.attr(\"title\", priority.name);\n };\n bindOnce($scope, \"priorityById\", function(priorityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemPriority);\n return render(priorityById, issue);\n });\n return $scope.$watch($attrs.tgListitemPriority, function(issue) {\n return render($scope.priorityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemPriority\", ListItemPriorityDirective);\n\n ListItemSeverityDirective = function() {\n var link;\n link = function($scope, $el, $attrs) {\n var render;\n render = function(severityById, issue) {\n var domNode, severity;\n severity = severityById[issue.severity];\n domNode = $el.find(\".level\");\n domNode.css(\"background-color\", severity.color);\n return domNode.attr(\"title\", severity.name);\n };\n bindOnce($scope, \"severityById\", function(severityById) {\n var issue;\n issue = $scope.$eval($attrs.tgListitemSeverity);\n return render(severityById, issue);\n });\n return $scope.$watch($attrs.tgListitemSeverity, function(issue) {\n return render($scope.severityById, issue);\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/level.html\"\n };\n };\n\n module.directive(\"tgListitemSeverity\", ListItemSeverityDirective);\n\n TgProgressBarDirective = function($template) {\n var link, render, template;\n template = $template.get(\"common/components/progress-bar.html\", true);\n render = function(el, percentage) {\n return el.html(template({\n percentage: percentage\n }));\n };\n link = function($scope, $el, $attrs) {\n var element;\n element = angular.element($el);\n $scope.$watch($attrs.tgProgressBar, function(percentage) {\n percentage = _.max([0, percentage]);\n percentage = _.min([100, percentage]);\n return render($el, percentage);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgProgressBar\", [\"$tgTemplate\", TgProgressBarDirective]);\n\n TgMainTitleDirective = function($translate) {\n var link;\n link = function($scope, $el, $attrs) {\n $attrs.$observe(\"i18nSectionName\", function(i18nSectionName) {\n return $scope.sectionName = i18nSectionName;\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n templateUrl: \"common/components/main-title.html\",\n scope: {\n projectName: \"=projectName\"\n }\n };\n };\n\n module.directive(\"tgMainTitle\", [\"$translate\", TgMainTitleDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/base/confirm.coffee\n */\n\n(function() {\n var ConfirmService, NOTIFICATION_MSG, bindMethods, cancelTimeout, debounce, module, taiga, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n timeout = this.taiga.timeout;\n\n cancelTimeout = this.taiga.cancelTimeout;\n\n debounce = this.taiga.debounce;\n\n bindMethods = this.taiga.bindMethods;\n\n NOTIFICATION_MSG = {\n \"success\": {\n title: \"NOTIFICATION.OK\",\n message: \"NOTIFICATION.SAVED\"\n },\n \"error\": {\n title: \"NOTIFICATION.WARNING\",\n message: \"NOTIFICATION.WARNING_TEXT\"\n },\n \"light-error\": {\n title: \"NOTIFICATION.WARNING\",\n message: \"NOTIFICATION.WARNING_TEXT\"\n }\n };\n\n ConfirmService = (function(superClass) {\n extend(ConfirmService, superClass);\n\n ConfirmService.$inject = [\"$q\", \"lightboxService\", \"$tgLoading\", \"$translate\"];\n\n function ConfirmService(q, lightboxService, loading, translate) {\n this.q = q;\n this.lightboxService = lightboxService;\n this.loading = loading;\n this.translate = translate;\n bindMethods(this);\n }\n\n ConfirmService.prototype.hide = function(el) {\n if (el) {\n this.lightboxService.close(el);\n return el.off(\".confirm-dialog\");\n }\n };\n\n ConfirmService.prototype.ask = function(title, subtitle, message, lightboxSelector) {\n var defered, el;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-generic-ask\";\n }\n defered = this.q.defer();\n el = angular.element(lightboxSelector);\n el.find(\".title\").text(title);\n el.find(\".subtitle\").text(subtitle);\n el.find(\".message\").text(message);\n el.on(\"click.confirm-dialog\", \".button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n currentLoading = _this.loading().target(target).start();\n return defered.resolve({\n finish: function(ok) {\n if (ok == null) {\n ok = true;\n }\n currentLoading.finish();\n if (ok) {\n return _this.hide(el);\n }\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \".button-red\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.askOnDelete = function(title, message) {\n return this.ask(title, this.translate.instant(\"NOTIFICATION.ASK_DELETE\"), message);\n };\n\n ConfirmService.prototype.askChoice = function(title, subtitle, choices, replacement, warning, lightboxSelector) {\n var choicesField, defered, el;\n if (lightboxSelector == null) {\n lightboxSelector = \".lightbox-ask-choice\";\n }\n defered = this.q.defer();\n el = angular.element(lightboxSelector);\n el.find(\".title\").text(title);\n el.find(\".subtitle\").text(subtitle);\n if (replacement) {\n el.find(\".replacement\").text(replacement);\n } else {\n el.find(\".replacement\").remove();\n }\n if (warning) {\n el.find(\".warning\").text(warning);\n } else {\n el.find(\".warning\").remove();\n }\n choicesField = el.find(\".choices\");\n choicesField.html('');\n _.each(choices, function(value, key) {\n value = _.escape(value);\n return choicesField.append(angular.element(\"\" + value + \"\"));\n });\n el.on(\"click.confirm-dialog\", \"a.button-green\", debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n currentLoading = _this.loading().target(target).start();\n return defered.resolve({\n selected: choicesField.val(),\n finish: function(ok) {\n if (ok == null) {\n ok = true;\n }\n currentLoading.finish();\n if (ok) {\n return _this.hide(el);\n }\n }\n });\n };\n })(this)));\n el.on(\"click.confirm-dialog\", \".button-red\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.reject();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.error = function(message) {\n var defered, el;\n defered = this.q.defer();\n el = angular.element(\".lightbox-generic-error\");\n el.find(\".title\").html(message);\n el.on(\"click.confirm-dialog\", \".button-green\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \".close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.success = function(title, message, icon) {\n var defered, detailImage, el, useSVG;\n defered = this.q.defer();\n el = angular.element(\".lightbox-generic-success\");\n el.find(\"img\").remove();\n el.find(\"svg\").remove();\n if (icon) {\n if (icon.type === \"img\") {\n detailImage = $('').addClass('lb-icon').attr('src', icon.name);\n } else if (icon.type === \"svg\") {\n useSVG = document.createElementNS('http://www.w3.org/2000/svg', 'use');\n useSVG.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + icon.name);\n detailImage = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n detailImage.classList.add(\"icon\");\n detailImage.classList.add(\"lb-icon\");\n detailImage.classList.add(icon.name);\n detailImage.appendChild(useSVG);\n }\n if (detailImage) {\n el.find('section').prepend(detailImage);\n }\n }\n if (title) {\n el.find(\".title\").html(title);\n }\n if (message) {\n el.find(\".message\").html(message);\n }\n el.on(\"click.confirm-dialog\", \".button-green\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n el.on(\"click.confirm-dialog\", \".close\", (function(_this) {\n return function(event) {\n event.preventDefault();\n defered.resolve();\n return _this.hide(el);\n };\n })(this));\n this.lightboxService.open(el);\n return defered.promise;\n };\n\n ConfirmService.prototype.loader = function(title, message) {\n var el;\n el = angular.element(\".lightbox-generic-loading\");\n if (title) {\n el.find(\".title\").html(title);\n }\n if (message) {\n el.find(\".message\").html(message);\n }\n return {\n start: (function(_this) {\n return function() {\n return _this.lightboxService.open(el);\n };\n })(this),\n stop: (function(_this) {\n return function() {\n return _this.lightboxService.close(el);\n };\n })(this),\n update: (function(_this) {\n return function(status, title, message, percent) {\n if (title) {\n el.find(\".title\").html(title);\n }\n if (message) {\n el.find(\".message\").html(message);\n }\n if (percent) {\n el.find(\".spin\").addClass(\"hidden\");\n el.find(\".progress-bar-wrapper\").removeClass(\"hidden\");\n el.find(\".progress-bar-wrapper > .bar\").width(percent + '%');\n return el.find(\".progress-bar-wrapper > span\").html(percent + '%').css('left', (percent - 9) + '%');\n } else {\n el.find(\".spin\").removeClass(\"hidden\");\n return el.find(\".progress-bar-wrapper\").addClass(\"hidden\");\n }\n };\n })(this)\n };\n };\n\n ConfirmService.prototype.notify = function(type, message, title, time) {\n var body, el, selector;\n selector = \".notification-message-\" + type;\n el = angular.element(selector);\n if (el.hasClass(\"active\")) {\n return;\n }\n if (title) {\n el.find(\"h4\").html(title);\n } else {\n el.find(\"h4\").html(this.translate.instant(NOTIFICATION_MSG[type].title));\n }\n if (message) {\n el.find(\"p\").html(message);\n } else {\n el.find(\"p\").html(this.translate.instant(NOTIFICATION_MSG[type].message));\n }\n body = angular.element(\"body\");\n body.find(\".notification-message .notification-light\").removeClass('active').addClass('inactive');\n body.find(selector).removeClass('inactive').addClass('active');\n if (this.tsem) {\n cancelTimeout(this.tsem);\n }\n if (!time) {\n time = type === 'error' || type === 'light-error' ? 3500 : 1500;\n }\n this.tsem = timeout(time, (function(_this) {\n return function() {\n body.find(selector).removeClass('active').addClass('inactive').one('animationend', function() {\n return $(this).removeClass('inactive');\n });\n return delete _this.tsem;\n };\n })(this));\n return el.on(\"click\", \".icon-close, .close\", (function(_this) {\n return function(event) {\n return body.find(selector).removeClass('active').addClass('inactive');\n };\n })(this));\n };\n\n return ConfirmService;\n\n })(taiga.Service);\n\n module = angular.module(\"taigaCommon\");\n\n module.service(\"$tgConfirm\", ConfirmService);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/custom-field-values.coffee\n */\n\n(function() {\n var CustomAttributeValueDirective, CustomAttributesValuesController, CustomAttributesValuesDirective, DATE_TYPE, MULTILINE_TYPE, TEXT_TYPE, TYPE_CHOICES, URL_TYPE, bindMethods, bindOnce, debounce, generateHash, module, taiga,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n bindMethods = this.taiga.bindMethods;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n generateHash = taiga.generateHash;\n\n module = angular.module(\"taigaCommon\");\n\n TEXT_TYPE = \"text\";\n\n MULTILINE_TYPE = \"multiline\";\n\n DATE_TYPE = \"date\";\n\n URL_TYPE = \"url\";\n\n TYPE_CHOICES = [\n {\n key: TEXT_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_TEXT\"\n }, {\n key: MULTILINE_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_MULTI\"\n }, {\n key: DATE_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_DATE\"\n }, {\n key: URL_TYPE,\n name: \"ADMIN.CUSTOM_FIELDS.FIELD_TYPE_URL\"\n }\n ];\n\n CustomAttributesValuesController = (function(superClass) {\n extend(CustomAttributesValuesController, superClass);\n\n CustomAttributesValuesController.$inject = [\"$scope\", \"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$q\"];\n\n function CustomAttributesValuesController(scope, rootscope, repo, rs, confirm, q) {\n this.scope = scope;\n this.rootscope = rootscope;\n this.repo = repo;\n this.rs = rs;\n this.confirm = confirm;\n this.q = q;\n bindMethods(this);\n this.type = null;\n this.objectId = null;\n this.projectId = null;\n this.customAttributes = [];\n this.customAttributesValues = null;\n }\n\n CustomAttributesValuesController.prototype.initialize = function(type, objectId) {\n this.project = this.scope.project;\n this.type = type;\n this.objectId = objectId;\n return this.projectId = this.scope.projectId;\n };\n\n CustomAttributesValuesController.prototype.loadCustomAttributesValues = function() {\n if (!this.objectId) {\n return this.customAttributesValues;\n }\n return this.rs.customAttributesValues[this.type].get(this.objectId).then((function(_this) {\n return function(customAttributesValues) {\n _this.customAttributes = _this.project[_this.type + \"_custom_attributes\"];\n _this.customAttributesValues = customAttributesValues;\n return customAttributesValues;\n };\n })(this));\n };\n\n CustomAttributesValuesController.prototype.getAttributeValue = function(attribute) {\n var attributeValue;\n attributeValue = _.clone(attribute, false);\n attributeValue.value = this.customAttributesValues.attributes_values[attribute.id];\n return attributeValue;\n };\n\n CustomAttributesValuesController.prototype.updateAttributeValue = function(attributeValue) {\n var attributesValues, onError, onSuccess;\n onSuccess = (function(_this) {\n return function() {\n return _this.rootscope.$broadcast(\"custom-attributes-values:edit\");\n };\n })(this);\n onError = (function(_this) {\n return function(response) {\n _this.confirm.notify(\"error\");\n return _this.q.reject();\n };\n })(this);\n attributesValues = _.clone(this.customAttributesValues.attributes_values, true);\n attributesValues[attributeValue.id] = attributeValue.value;\n this.customAttributesValues.attributes_values = attributesValues;\n this.customAttributesValues.id = this.objectId;\n return this.repo.save(this.customAttributesValues).then(onSuccess, onError);\n };\n\n return CustomAttributesValuesController;\n\n })(taiga.Controller);\n\n CustomAttributesValuesDirective = function($templates, $storage) {\n var collapsedHash, link, template, templateFn;\n template = $templates.get(\"custom-attributes/custom-attributes-values.html\", true);\n collapsedHash = function(type) {\n return generateHash([\"custom-attributes-collapsed\", type]);\n };\n link = function($scope, $el, $attrs, $ctrls) {\n var $ctrl, $model;\n $ctrl = $ctrls[0];\n $model = $ctrls[1];\n bindOnce($scope, $attrs.ngModel, function(value) {\n $ctrl.initialize($attrs.type, value.id);\n return $ctrl.loadCustomAttributesValues();\n });\n $el.on(\"click\", \".custom-fields-header .icon\", function() {\n var collapsed, hash;\n hash = collapsedHash($attrs.type);\n collapsed = !($storage.get(hash) || false);\n $storage.set(hash, collapsed);\n if (collapsed) {\n $el.find(\".custom-fields-header .icon\").removeClass(\"open\");\n return $el.find(\".custom-fields-body\").removeClass(\"open\");\n } else {\n $el.find(\".custom-fields-header .icon\").addClass(\"open\");\n return $el.find(\".custom-fields-body\").addClass(\"open\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n templateFn = function($el, $attrs) {\n var collapsed;\n collapsed = $storage.get(collapsedHash($attrs.type)) || false;\n return template({\n requiredEditionPerm: $attrs.requiredEditionPerm,\n collapsed: collapsed\n });\n };\n return {\n require: [\"tgCustomAttributesValues\", \"ngModel\"],\n controller: CustomAttributesValuesController,\n controllerAs: \"ctrl\",\n restrict: \"AE\",\n scope: true,\n link: link,\n template: templateFn\n };\n };\n\n module.directive(\"tgCustomAttributesValues\", [\"$tgTemplate\", \"$tgStorage\", \"$translate\", CustomAttributesValuesDirective]);\n\n CustomAttributeValueDirective = function($template, $selectedText, $compile, $translate, datePickerConfigService) {\n var link, template, templateEdit;\n template = $template.get(\"custom-attributes/custom-attribute-value.html\", true);\n templateEdit = $template.get(\"custom-attributes/custom-attribute-value-edit.html\", true);\n link = function($scope, $el, $attrs, $ctrl) {\n var attributeValue, isEditable, prettyDate, render, setFocusAndSelectOnInputField, submit;\n prettyDate = $translate.instant(\"COMMON.PICKERDATE.FORMAT\");\n render = function(attributeValue, edit) {\n var ctx, datePickerConfig, editable, html, value;\n if (edit == null) {\n edit = false;\n }\n if (attributeValue.type === DATE_TYPE && attributeValue.value) {\n value = moment(attributeValue.value, \"YYYY-MM-DD\").format(prettyDate);\n } else {\n value = attributeValue.value;\n }\n editable = isEditable();\n ctx = {\n id: attributeValue.id,\n name: attributeValue.name,\n description: attributeValue.description,\n value: value,\n isEditable: editable,\n type: attributeValue.type\n };\n if (editable && (edit || !value)) {\n html = templateEdit(ctx);\n html = $compile(html)($scope);\n $el.html(html);\n if (attributeValue.type === DATE_TYPE) {\n datePickerConfig = datePickerConfigService.get();\n _.merge(datePickerConfig, {\n field: $el.find(\"input[name=value]\")[0],\n onSelect: (function(_this) {\n return function(date) {\n var selectedDate;\n return selectedDate = date;\n };\n })(this),\n onOpen: (function(_this) {\n return function() {\n if (typeof selectedDate !== \"undefined\" && selectedDate !== null) {\n return $el.picker.setDate(selectedDate);\n }\n };\n })(this)\n });\n return $el.picker = new Pikaday(datePickerConfig);\n }\n } else {\n html = template(ctx);\n html = $compile(html)($scope);\n return $el.html(html);\n }\n };\n isEditable = function() {\n var permissions, requiredEditionPerm;\n permissions = $scope.project.my_permissions;\n requiredEditionPerm = $attrs.requiredEditionPerm;\n return permissions.indexOf(requiredEditionPerm) > -1;\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var form, input;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n input = $el.find(\"input[name=value], textarea[name='value']\");\n attributeValue.value = input.val();\n if (attributeValue.type === DATE_TYPE) {\n if (moment(attributeValue.value, prettyDate).isValid()) {\n attributeValue.value = moment(attributeValue.value, prettyDate).format(\"YYYY-MM-DD\");\n }\n }\n return $scope.$apply(function() {\n return $ctrl.updateAttributeValue(attributeValue).then(function() {\n return render(attributeValue, false);\n });\n });\n };\n })(this));\n setFocusAndSelectOnInputField = function() {\n return $el.find(\"input[name='value'], textarea[name='value']\").focus().select();\n };\n attributeValue = $scope.$eval($attrs.tgCustomAttributeValue);\n render(attributeValue);\n $el.on(\"click\", \".js-value-view-mode span a\", function(event) {\n return event.stopPropagation();\n });\n $el.on(\"click\", \".js-value-view-mode\", function() {\n if (!isEditable()) {\n return;\n }\n if ($selectedText.get().length) {\n return;\n }\n render(attributeValue, true);\n return setFocusAndSelectOnInputField();\n });\n $el.on(\"click\", \".js-edit-description\", function(event) {\n event.preventDefault();\n render(attributeValue, true);\n return setFocusAndSelectOnInputField();\n });\n $el.on(\"keyup\", \"input[name=value], textarea[name='value']\", function(event) {\n if (event.keyCode === 13 && event.currentTarget.type !== \"textarea\") {\n return submit(event);\n } else if (event.keyCode === 27) {\n return render(attributeValue, false);\n }\n });\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", \".js-save-description\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"^tgCustomAttributesValues\",\n restrict: \"AE\"\n };\n };\n\n module.directive(\"tgCustomAttributeValue\", [\"$tgTemplate\", \"$selectedText\", \"$compile\", \"$translate\", \"tgDatePickerConfigService\", CustomAttributeValueDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/estimation.coffee\n */\n\n(function() {\n var EstimationsService, LbUsEstimationDirective, UsEstimationDirective, groupBy, module, taiga,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n taiga = this.taiga;\n\n groupBy = this.taiga.groupBy;\n\n module = angular.module(\"taigaCommon\");\n\n LbUsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $template, $compile) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.$watch($attrs.ngModel, function(us) {\n var estimationProcess;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId) {\n return $scope.$apply(function() {\n return $model.$setViewValue(us);\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n html = $compile(html)($scope);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgLbUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgTemplate\", \"$compile\", LbUsEstimationDirective]);\n\n UsEstimationDirective = function($tgEstimationsService, $rootScope, $repo, $qqueue, $template, $compile) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n $scope.$watch($attrs.ngModel, function(us) {\n var estimationProcess;\n if (us) {\n estimationProcess = $tgEstimationsService.create($el, us, $scope.project);\n estimationProcess.onSelectedPointForRole = function(roleId, pointId) {\n return this.save(roleId, pointId).then(function() {\n return $rootScope.$broadcast(\"object:updated\");\n });\n };\n estimationProcess.render = function() {\n var ctx, html, mainTemplate, template;\n ctx = {\n totalPoints: this.calculateTotalPoints(),\n roles: this.calculateRoles(),\n editable: this.isEditable\n };\n mainTemplate = \"common/estimation/us-estimation-points-per-role.html\";\n template = $template.get(mainTemplate, true);\n html = template(ctx);\n html = $compile(html)($scope);\n return this.$el.html(html);\n };\n return estimationProcess.render();\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n restrict: \"EA\",\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgUsEstimation\", [\"$tgEstimationsService\", \"$rootScope\", \"$tgRepo\", \"$tgQqueue\", \"$tgTemplate\", \"$compile\", UsEstimationDirective]);\n\n EstimationsService = function($template, $qqueue, $repo, $confirm, $q) {\n var EstimationProcess, create, pointsTemplate;\n pointsTemplate = $template.get(\"common/estimation/us-estimation-points.html\", true);\n EstimationProcess = (function() {\n function EstimationProcess($el1, us1, project1) {\n this.$el = $el1;\n this.us = us1;\n this.project = project1;\n this.bindClickEvents = bind(this.bindClickEvents, this);\n this.isEditable = this.project.my_permissions.indexOf(\"modify_us\") !== -1;\n this.roles = this.project.roles;\n this.points = this.project.points;\n this.pointsById = groupBy(this.points, function(x) {\n return x.id;\n });\n this.onSelectedPointForRole = function(roleId, pointId) {};\n this.render = function() {};\n }\n\n EstimationProcess.prototype.save = function(roleId, pointId) {\n var deferred;\n deferred = $q.defer();\n $qqueue.add((function(_this) {\n return function() {\n var onError, onSuccess;\n onSuccess = function() {\n return deferred.resolve();\n };\n onError = function() {\n $confirm.notify(\"error\");\n _this.us.revert();\n _this.render();\n return deferred.reject();\n };\n return $repo.save(_this.us).then(onSuccess, onError);\n };\n })(this));\n return deferred.promise;\n };\n\n EstimationProcess.prototype.calculateTotalPoints = function() {\n var notNullValues, values;\n values = _.map(this.us.points, (function(_this) {\n return function(v, k) {\n var ref;\n return (ref = _this.pointsById[v]) != null ? ref.value : void 0;\n };\n })(this));\n if (values.length === 0) {\n return \"?\";\n }\n notNullValues = _.filter(values, function(v) {\n return v != null;\n });\n if (notNullValues.length === 0) {\n return \"?\";\n }\n return _.reduce(notNullValues, function(acc, num) {\n return acc + num;\n });\n };\n\n EstimationProcess.prototype.calculateRoles = function() {\n var computableRoles, roles;\n computableRoles = _.filter(this.project.roles, \"computable\");\n roles = _.map(computableRoles, (function(_this) {\n return function(role) {\n var pointId, pointObj;\n pointId = _this.us.points[role.id];\n pointObj = _this.pointsById[pointId];\n role = _.clone(role, true);\n role.points = (pointObj != null) && (pointObj.name != null) ? pointObj.name : \"?\";\n return role;\n };\n })(this));\n return roles;\n };\n\n EstimationProcess.prototype.bindClickEvents = function() {\n this.$el.on(\"click\", \".total.clickable\", (function(_this) {\n return function(event) {\n var roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n _this.renderPointsSelector(roleId, target);\n target.siblings().removeClass('active');\n return target.addClass('active');\n };\n })(this));\n return this.$el.on(\"click\", \".point\", (function(_this) {\n return function(event) {\n var pointId, points, roleId, target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n roleId = target.data(\"role-id\");\n pointId = target.data(\"point-id\");\n _this.$el.find(\".popover\").popover().close();\n points = _.clone(_this.us.points, true);\n points[roleId] = pointId;\n _this.us.points = points;\n _this.render();\n return _this.onSelectedPointForRole(roleId, pointId);\n };\n })(this));\n };\n\n EstimationProcess.prototype.renderPointsSelector = function(roleId, target) {\n var horizontalList, html, maxPointLength, points, pop;\n points = _.map(this.points, (function(_this) {\n return function(point) {\n point = _.clone(point, true);\n point.selected = _this.us.points[roleId] === point.id ? false : true;\n return point;\n };\n })(this));\n maxPointLength = 5;\n horizontalList = _.some(points, (function(_this) {\n return function(point) {\n return point.name.length > maxPointLength;\n };\n })(this));\n html = pointsTemplate({\n \"points\": points,\n roleId: roleId,\n horizontal: horizontalList\n });\n this.$el.find(\".popover\").popover().close();\n this.$el.find(\".pop-points-open\").remove();\n if (target != null) {\n this.$el.find(target).append(html);\n } else {\n this.$el.append(html);\n }\n this.$el.find(\".pop-points-open\").popover().open(function() {\n return $(this).removeClass(\"active\").closest(\"li\").removeClass(\"active\");\n });\n this.$el.find(\".pop-points-open\").show();\n pop = this.$el.find(\".pop-points-open\");\n if (pop.offset().top + pop.height() > document.body.clientHeight) {\n return pop.addClass('pop-bottom');\n }\n };\n\n return EstimationProcess;\n\n })();\n create = function($el, us, project) {\n var estimationProcess;\n $el.unbind(\"click\");\n estimationProcess = new EstimationProcess($el, us, project);\n if (estimationProcess.isEditable) {\n estimationProcess.bindClickEvents();\n }\n return estimationProcess;\n };\n return {\n create: create\n };\n };\n\n module.factory(\"$tgEstimationsService\", [\"$tgTemplate\", \"$tgQqueue\", \"$tgRepo\", \"$tgConfirm\", \"$q\", EstimationsService]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/filters.coffee\n */\n\n(function() {\n var defaultFilter, module, momentFormat, momentFromNow, sizeFormat, taiga, unslugify, yesNoFilter;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n defaultFilter = function() {\n return function(value, defaultValue) {\n if (value === [null, void 0]) {\n return defaultValue;\n }\n return value;\n };\n };\n\n module.filter(\"default\", defaultFilter);\n\n yesNoFilter = function($translate) {\n return function(value) {\n if (value) {\n return $translate.instant(\"COMMON.YES\");\n }\n return $translate.instant(\"COMMON.NO\");\n };\n };\n\n module.filter(\"yesNo\", [\"$translate\", yesNoFilter]);\n\n unslugify = function() {\n return taiga.unslugify;\n };\n\n module.filter(\"unslugify\", unslugify);\n\n momentFormat = function() {\n return function(input, format) {\n if (input) {\n return moment(input).format(format);\n }\n return \"\";\n };\n };\n\n module.filter(\"momentFormat\", momentFormat);\n\n momentFromNow = function() {\n return function(input, without_suffix) {\n if (input) {\n return moment(input).fromNow(without_suffix || false);\n }\n return \"\";\n };\n };\n\n module.filter(\"momentFromNow\", momentFromNow);\n\n sizeFormat = (function(_this) {\n return function() {\n return _this.taiga.sizeFormat;\n };\n })(this);\n\n module.filter(\"sizeFormat\", sizeFormat);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/history.coffee\n */\n\n(function() {\n var HistoryController, HistoryDirective, IGNORED_FIELDS, bindOnce, debounce, module, taiga, trim,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaCommon\");\n\n IGNORED_FIELDS = {\n \"userstories.userstory\": [\"watchers\", \"kanban_order\", \"backlog_order\", \"sprint_order\", \"finish_date\", \"tribe_gig\"],\n \"tasks.task\": [\"watchers\", \"us_order\", \"taskboard_order\"],\n \"issues.issue\": [\"watchers\"]\n };\n\n HistoryController = (function(superClass) {\n extend(HistoryController, superClass);\n\n HistoryController.$inject = [\"$scope\", \"$tgRepo\", \"$tgResources\"];\n\n function HistoryController(scope, repo, rs) {\n this.scope = scope;\n this.repo = repo;\n this.rs = rs;\n }\n\n HistoryController.prototype.initialize = function(type, objectId) {\n this.type = type;\n return this.objectId = objectId;\n };\n\n HistoryController.prototype.loadHistory = function(type, objectId) {\n return this.rs.history.get(type, objectId).then((function(_this) {\n return function(history) {\n var changeModel, historyEntry, historyResult, i, j, len, len1;\n for (i = 0, len = history.length; i < len; i++) {\n historyResult = history[i];\n if (historyResult.values_diff.description_diff != null) {\n historyResult.values_diff.description = historyResult.values_diff.description_diff;\n }\n delete historyResult.values_diff.description_html;\n delete historyResult.values_diff.description_diff;\n if (historyResult.values_diff.blocked_note_diff != null) {\n historyResult.values_diff.blocked_note = historyResult.values_diff.blocked_note_diff;\n }\n delete historyResult.values_diff.blocked_note_html;\n delete historyResult.values_diff.blocked_note_diff;\n }\n for (j = 0, len1 = history.length; j < len1; j++) {\n historyEntry = history[j];\n changeModel = historyEntry.key.split(\":\")[0];\n if (IGNORED_FIELDS[changeModel] != null) {\n historyEntry.values_diff = _.removeKeys(historyEntry.values_diff, IGNORED_FIELDS[changeModel]);\n }\n }\n _this.scope.history = _.filter(history, function(item) {\n return Object.keys(item.values_diff).length > 0;\n });\n return _this.scope.comments = _.filter(history, function(item) {\n return item.comment !== \"\";\n });\n };\n })(this));\n };\n\n HistoryController.prototype.deleteComment = function(type, objectId, activityId) {\n return this.rs.history.deleteComment(type, objectId, activityId).then((function(_this) {\n return function() {\n return _this.loadHistory(type, objectId);\n };\n })(this));\n };\n\n HistoryController.prototype.undeleteComment = function(type, objectId, activityId) {\n return this.rs.history.undeleteComment(type, objectId, activityId).then((function(_this) {\n return function() {\n return _this.loadHistory(type, objectId);\n };\n })(this));\n };\n\n return HistoryController;\n\n })(taiga.Controller);\n\n HistoryDirective = function($log, $loading, $qqueue, $template, $confirm, $translate, $compile, $navUrls, $rootScope, checkPermissionsService) {\n var link, templateActivity, templateBase, templateBaseEntries, templateChangeAttachment, templateChangeDiff, templateChangeGeneric, templateChangeList, templateChangePoints, templateDeletedComment;\n templateChangeDiff = $template.get(\"common/history/history-change-diff.html\", true);\n templateChangePoints = $template.get(\"common/history/history-change-points.html\", true);\n templateChangeGeneric = $template.get(\"common/history/history-change-generic.html\", true);\n templateChangeAttachment = $template.get(\"common/history/history-change-attachment.html\", true);\n templateChangeList = $template.get(\"common/history/history-change-list.html\", true);\n templateDeletedComment = $template.get(\"common/history/history-deleted-comment.html\", true);\n templateActivity = $template.get(\"common/history/history-activity.html\", true);\n templateBaseEntries = $template.get(\"common/history/history-base-entries.html\", true);\n templateBase = $template.get(\"common/history/history-base.html\", true);\n link = function($scope, $el, $attrs, $ctrl) {\n var countChanges, formatChange, getHumanizedFieldName, getPrettyDateFormat, objectId, renderActivity, renderAttachmentEntry, renderBase, renderChange, renderChangeEntries, renderChangeEntry, renderChangesHelperText, renderComment, renderComments, renderCustomAttributesEntry, renderHistory, rerender, save, showAllActivity, showAllComments, type;\n type = $attrs.type;\n objectId = null;\n showAllComments = false;\n showAllActivity = false;\n getPrettyDateFormat = function() {\n return $translate.instant(\"ACTIVITY.DATETIME\");\n };\n bindOnce($scope, $attrs.ngModel, function(model) {\n type = $attrs.type;\n objectId = model.id;\n $ctrl.initialize(type, objectId);\n return $ctrl.loadHistory(type, objectId);\n });\n getHumanizedFieldName = function(field) {\n var humanizedFieldNames;\n humanizedFieldNames = {\n subject: $translate.instant(\"ACTIVITY.FIELDS.SUBJECT\"),\n name: $translate.instant(\"ACTIVITY.FIELDS.NAME\"),\n description: $translate.instant(\"ACTIVITY.FIELDS.DESCRIPTION\"),\n content: $translate.instant(\"ACTIVITY.FIELDS.CONTENT\"),\n status: $translate.instant(\"ACTIVITY.FIELDS.STATUS\"),\n is_closed: $translate.instant(\"ACTIVITY.FIELDS.IS_CLOSED\"),\n finish_date: $translate.instant(\"ACTIVITY.FIELDS.FINISH_DATE\"),\n type: $translate.instant(\"ACTIVITY.FIELDS.TYPE\"),\n priority: $translate.instant(\"ACTIVITY.FIELDS.PRIORITY\"),\n severity: $translate.instant(\"ACTIVITY.FIELDS.SEVERITY\"),\n assigned_to: $translate.instant(\"ACTIVITY.FIELDS.ASSIGNED_TO\"),\n watchers: $translate.instant(\"ACTIVITY.FIELDS.WATCHERS\"),\n milestone: $translate.instant(\"ACTIVITY.FIELDS.MILESTONE\"),\n user_story: $translate.instant(\"ACTIVITY.FIELDS.USER_STORY\"),\n project: $translate.instant(\"ACTIVITY.FIELDS.PROJECT\"),\n is_blocked: $translate.instant(\"ACTIVITY.FIELDS.IS_BLOCKED\"),\n blocked_note: $translate.instant(\"ACTIVITY.FIELDS.BLOCKED_NOTE\"),\n points: $translate.instant(\"ACTIVITY.FIELDS.POINTS\"),\n client_requirement: $translate.instant(\"ACTIVITY.FIELDS.CLIENT_REQUIREMENT\"),\n team_requirement: $translate.instant(\"ACTIVITY.FIELDS.TEAM_REQUIREMENT\"),\n is_iocaine: $translate.instant(\"ACTIVITY.FIELDS.IS_IOCAINE\"),\n tags: $translate.instant(\"ACTIVITY.FIELDS.TAGS\"),\n attachments: $translate.instant(\"ACTIVITY.FIELDS.ATTACHMENTS\"),\n is_deprecated: $translate.instant(\"ACTIVITY.FIELDS.IS_DEPRECATED\"),\n blocked_note: $translate.instant(\"ACTIVITY.FIELDS.BLOCKED_NOTE\"),\n is_blocked: $translate.instant(\"ACTIVITY.FIELDS.IS_BLOCKED\"),\n order: $translate.instant(\"ACTIVITY.FIELDS.ORDER\"),\n backlog_order: $translate.instant(\"ACTIVITY.FIELDS.BACKLOG_ORDER\"),\n sprint_order: $translate.instant(\"ACTIVITY.FIELDS.SPRINT_ORDER\"),\n kanban_order: $translate.instant(\"ACTIVITY.FIELDS.KANBAN_ORDER\"),\n taskboard_order: $translate.instant(\"ACTIVITY.FIELDS.TASKBOARD_ORDER\"),\n us_order: $translate.instant(\"ACTIVITY.FIELDS.US_ORDER\")\n };\n return humanizedFieldNames[field] || field;\n };\n countChanges = function(comment) {\n return _.keys(comment.values_diff).length;\n };\n formatChange = function(change) {\n if (_.isArray(change)) {\n if (change.length === 0) {\n return $translate.instant(\"ACTIVITY.VALUES.EMPTY\");\n }\n return change.join(\", \");\n }\n if (change === \"\") {\n return $translate.instant(\"ACTIVITY.VALUES.EMPTY\");\n }\n if ((change == null) || change === false) {\n return $translate.instant(\"ACTIVITY.VALUES.NO\");\n }\n if (change === true) {\n return $translate.instant(\"ACTIVITY.VALUES.YES\");\n }\n return change;\n };\n renderAttachmentEntry = function(value) {\n var attachments;\n attachments = _.map(value, function(changes, type) {\n if (type === \"new\") {\n return _.map(changes, function(change) {\n return templateChangeDiff({\n name: $translate.instant(\"ACTIVITY.NEW_ATTACHMENT\"),\n diff: change.filename\n });\n });\n } else if (type === \"deleted\") {\n return _.map(changes, function(change) {\n return templateChangeDiff({\n name: $translate.instant(\"ACTIVITY.DELETED_ATTACHMENT\"),\n diff: change.filename\n });\n });\n } else {\n return _.map(changes, function(change) {\n var diff, name;\n name = $translate.instant(\"ACTIVITY.UPDATED_ATTACHMENT\", {\n filename: change.filename\n });\n diff = _.map(change.changes, function(values, name) {\n return {\n name: getHumanizedFieldName(name),\n from: formatChange(values[0]),\n to: formatChange(values[1])\n };\n });\n return templateChangeAttachment({\n name: name,\n diff: diff\n });\n });\n }\n });\n return _.flatten(attachments).join(\"\\n\");\n };\n renderCustomAttributesEntry = function(value) {\n var customAttributes;\n customAttributes = _.map(value, function(changes, type) {\n if (type === \"new\") {\n return _.map(changes, function(change) {\n var html;\n html = templateChangeGeneric({\n name: change.name,\n from: formatChange(\"\"),\n to: formatChange(change.value)\n });\n html = $compile(html)($scope);\n return html[0].outerHTML;\n });\n } else if (type === \"deleted\") {\n return _.map(changes, function(change) {\n return templateChangeDiff({\n name: $translate.instant(\"ACTIVITY.DELETED_CUSTOM_ATTRIBUTE\"),\n diff: change.name\n });\n });\n } else {\n return _.map(changes, function(change) {\n var customAttrsChanges;\n customAttrsChanges = _.map(change.changes, function(values) {\n return templateChangeGeneric({\n name: change.name,\n from: formatChange(values[0]),\n to: formatChange(values[1])\n });\n });\n return _.flatten(customAttrsChanges).join(\"\\n\");\n });\n }\n });\n return _.flatten(customAttributes).join(\"\\n\");\n };\n renderChangeEntry = function(field, value) {\n var added, from, html, name, removed, to;\n if (field === \"description\") {\n return templateChangeDiff({\n name: getHumanizedFieldName(\"description\"),\n diff: value[1]\n });\n } else if (field === \"blocked_note\") {\n return templateChangeDiff({\n name: getHumanizedFieldName(\"blocked_note\"),\n diff: value[1]\n });\n } else if (field === \"points\") {\n html = templateChangePoints({\n points: value\n });\n html = $compile(html)($scope);\n return html[0].outerHTML;\n } else if (field === \"attachments\") {\n return renderAttachmentEntry(value);\n } else if (field === \"custom_attributes\") {\n return renderCustomAttributesEntry(value);\n } else if (field === \"tags\" || field === \"watchers\") {\n name = getHumanizedFieldName(field);\n removed = _.difference(value[0], value[1]);\n added = _.difference(value[1], value[0]);\n html = templateChangeList({\n name: name,\n removed: removed,\n added: added\n });\n html = $compile(html)($scope);\n return html[0].outerHTML;\n } else if (field === \"assigned_to\") {\n name = getHumanizedFieldName(field);\n from = formatChange(value[0] || $translate.instant(\"ACTIVITY.VALUES.UNASSIGNED\"));\n to = formatChange(value[1] || $translate.instant(\"ACTIVITY.VALUES.UNASSIGNED\"));\n return templateChangeGeneric({\n name: name,\n from: from,\n to: to\n });\n } else {\n name = getHumanizedFieldName(field);\n from = formatChange(value[0]);\n to = formatChange(value[1]);\n return templateChangeGeneric({\n name: name,\n from: from,\n to: to\n });\n }\n };\n renderChangeEntries = function(change) {\n return _.map(change.values_diff, function(value, field) {\n return renderChangeEntry(field, value);\n });\n };\n renderChangesHelperText = function(change) {\n var size;\n size = countChanges(change);\n return $translate.instant(\"ACTIVITY.SIZE_CHANGE\", {\n size: size\n }, 'messageformat');\n };\n renderComment = function(comment) {\n var html, ref, ref1, ref2;\n if (comment.delete_comment_date || ((ref = comment.delete_comment_user) != null ? ref.name : void 0)) {\n html = templateDeletedComment({\n deleteCommentDate: comment.delete_comment_date ? moment(comment.delete_comment_date).format(getPrettyDateFormat()) : void 0,\n deleteCommentUser: comment.delete_comment_user.name,\n deleteComment: comment.comment_html,\n activityId: comment.id,\n canRestoreComment: $scope.user && (comment.delete_comment_user.pk === $scope.user.id || $scope.project.my_permissions.indexOf(\"modify_project\") > -1)\n });\n html = $compile(html)($scope);\n return html[0].outerHTML;\n }\n html = templateActivity({\n avatar: comment.user.photo,\n userFullName: comment.user.name,\n userProfileUrl: comment.user.is_active ? $navUrls.resolve(\"user-profile\", {\n username: comment.user.username\n }) : \"\",\n creationDate: moment(comment.created_at).format(getPrettyDateFormat()),\n comment: comment.comment_html,\n changesText: renderChangesHelperText(comment),\n changes: renderChangeEntries(comment),\n mode: \"comment\",\n deleteCommentActionTitle: $translate.instant(\"COMMENTS.DELETE\"),\n deleteCommentDate: comment.delete_comment_date ? moment(comment.delete_comment_date).format(getPrettyDateFormat()) : void 0,\n deleteCommentUser: ((ref1 = comment.delete_comment_user) != null ? ref1.name : void 0) ? comment.delete_comment_user.name : void 0,\n activityId: comment.id,\n canDeleteComment: comment.user.pk === ((ref2 = $scope.user) != null ? ref2.id : void 0) || $scope.project.my_permissions.indexOf(\"modify_project\") > -1\n });\n html = $compile(html)($scope);\n return html[0].outerHTML;\n };\n renderChange = function(change) {\n var ref;\n return templateActivity({\n avatar: change.user.photo,\n userFullName: change.user.name,\n userProfileUrl: change.user.is_active ? $navUrls.resolve(\"user-profile\", {\n username: change.user.username\n }) : \"\",\n creationDate: moment(change.created_at).format(getPrettyDateFormat()),\n comment: change.comment_html,\n changes: renderChangeEntries(change),\n changesText: \"\",\n mode: \"activity\",\n deleteCommentDate: change.delete_comment_date ? moment(change.delete_comment_date).format(getPrettyDateFormat()) : void 0,\n deleteCommentUser: ((ref = change.delete_comment_user) != null ? ref.name : void 0) ? change.delete_comment_user.name : void 0,\n activityId: change.id\n });\n };\n renderHistory = function(entries, totalEntries) {\n var html, showMore;\n if (entries.length === totalEntries) {\n showMore = 0;\n } else {\n showMore = totalEntries - entries.length;\n }\n html = templateBaseEntries({\n entries: entries,\n showMore: showMore\n });\n html = $compile(html)($scope);\n return html;\n };\n renderBase = function() {\n var changes, comments, commentsVisible, historyVisible, html;\n comments = $scope.comments || [];\n changes = $scope.history || [];\n historyVisible = !!changes.length;\n commentsVisible = (!!comments.length) || checkPermissionsService.check('modify_' + $attrs.type);\n html = templateBase({\n ngmodel: $attrs.ngModel,\n type: $attrs.type,\n mode: $attrs.mode,\n historyVisible: historyVisible,\n commentsVisible: commentsVisible\n });\n html = $compile(html)($scope);\n return $el.html(html);\n };\n rerender = function() {\n renderBase();\n renderComments();\n return renderActivity();\n };\n renderComments = function() {\n var comments, html, totalComments;\n comments = $scope.comments || [];\n totalComments = comments.length;\n if (!showAllComments) {\n comments = _.takeRight(comments, 4);\n }\n comments = _.map(comments, function(x) {\n return renderComment(x);\n });\n html = renderHistory(comments, totalComments);\n return $el.find(\".comments-list\").html(html);\n };\n renderActivity = function() {\n var changes, html, totalChanges;\n changes = $scope.history || [];\n totalChanges = changes.length;\n if (!showAllActivity) {\n changes = _.takeRight(changes, 4);\n }\n changes = _.map(changes, function(x) {\n return renderChange(x);\n });\n html = renderHistory(changes, totalChanges);\n return $el.find(\".changes-list\").html(html);\n };\n save = $qqueue.bindAdd((function(_this) {\n return function(target) {\n var currentLoading, model, onError, onSuccess;\n $scope.$broadcast(\"markdown-editor:submit\");\n $el.find(\".comment-list\").addClass(\"activeanimation\");\n currentLoading = $loading().target(target).start();\n onSuccess = function() {\n $rootScope.$broadcast(\"comment:new\");\n return $ctrl.loadHistory(type, objectId)[\"finally\"](function() {\n return currentLoading.finish();\n });\n };\n onError = function() {\n currentLoading.finish();\n return $confirm.notify(\"error\");\n };\n model = $scope.$eval($attrs.ngModel);\n return $ctrl.repo.save(model).then(onSuccess, onError);\n };\n })(this));\n $scope.$watch(\"comments\", rerender);\n $scope.$watch(\"history\", rerender);\n $scope.$on(\"object:updated\", function() {\n return $ctrl.loadHistory(type, objectId);\n });\n $el.on(\"click\", \".add-comment button.button-green\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return save(target);\n }));\n $el.on(\"click\", \"a\", function(event) {\n var href, target;\n target = angular.element(event.target);\n href = target.attr('href');\n if (href && href.indexOf(\"#\") === 0) {\n event.preventDefault();\n return $('body').scrollTop($(href).offset().top);\n }\n });\n $el.on(\"click\", \".show-more\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n if (target.parent().is(\".changes-list\")) {\n showAllActivity = !showAllActivity;\n return renderActivity();\n } else {\n showAllComments = !showAllComments;\n return renderComments();\n }\n });\n $el.on(\"click\", \".show-deleted-comment\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n target.parents('.activity-single').find('.hide-deleted-comment').show();\n target.parents('.activity-single').find('.show-deleted-comment').hide();\n return target.parents('.activity-single').find('.comment-body').show();\n });\n $el.on(\"click\", \".hide-deleted-comment\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n target.parents('.activity-single').find('.hide-deleted-comment').hide();\n target.parents('.activity-single').find('.show-deleted-comment').show();\n return target.parents('.activity-single').find('.comment-body').hide();\n });\n $el.on(\"click\", \".changes-title\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return target.parent().find(\".change-entry\").toggleClass(\"active\");\n });\n $el.on(\"focus\", \".add-comment textarea\", function(event) {\n return $(this).addClass('active');\n });\n $el.on(\"click\", \".history-tabs li a\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n $el.find(\".history-tabs li a\").removeClass(\"active\");\n target.addClass(\"active\");\n $el.find(\".history section\").addClass(\"hidden\");\n return $el.find(\".history section.\" + (target.data('section-class'))).removeClass(\"hidden\");\n });\n $el.on(\"click\", \".comment-delete\", debounce(2000, function(event) {\n var activityId, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n activityId = target.data('activity-id');\n return $ctrl.deleteComment(type, objectId, activityId);\n }));\n $el.on(\"click\", \".comment-restore\", debounce(2000, function(event) {\n var activityId, target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n activityId = target.data('activity-id');\n return $ctrl.undeleteComment(type, objectId, activityId);\n }));\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return renderBase();\n };\n return {\n controller: HistoryController,\n restrict: \"AE\",\n link: link\n };\n };\n\n module.directive(\"tgHistory\", [\"$log\", \"$tgLoading\", \"$tgQqueue\", \"$tgTemplate\", \"$tgConfirm\", \"$translate\", \"$compile\", \"$tgNavUrls\", \"$rootScope\", \"tgCheckPermissionsService\", HistoryDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/importer.coffee\n */\n\n(function() {\n var ImportProjectButtonDirective, LbImportErrorDirective, module;\n\n module = angular.module(\"taigaCommon\");\n\n ImportProjectButtonDirective = function($rs, $confirm, $location, $navUrls, $translate, $lightboxFactory, currentUserService, $tgAuth) {\n var link;\n link = function($scope, $el, $attrs) {\n var getRestrictionError;\n getRestrictionError = function(result) {\n var errorKey, maxMemberships, membersError, privateError, publicError, user;\n if (result.headers) {\n errorKey = '';\n user = currentUserService.getUser();\n maxMemberships = 0;\n if (result.headers.isPrivate) {\n privateError = !currentUserService.canCreatePrivateProjects().valid;\n maxMemberships = null;\n if (user.get('max_memberships_private_projects') !== null && result.headers.memberships >= user.get('max_memberships_private_projects')) {\n membersError = true;\n } else {\n membersError = false;\n }\n if (privateError && membersError) {\n errorKey = 'private-space-members';\n maxMemberships = user.get('max_memberships_private_projects');\n } else if (privateError) {\n errorKey = 'private-space';\n } else if (membersError) {\n errorKey = 'private-members';\n maxMemberships = user.get('max_memberships_private_projects');\n }\n } else {\n publicError = !currentUserService.canCreatePublicProjects().valid;\n if (user.get('max_memberships_public_projects') !== null && result.headers.memberships >= user.get('max_memberships_public_projects')) {\n membersError = true;\n } else {\n membersError = false;\n }\n if (publicError && membersError) {\n errorKey = 'public-space-members';\n maxMemberships = user.get('max_memberships_public_projects');\n } else if (publicError) {\n errorKey = 'public-space';\n } else if (membersError) {\n errorKey = 'public-members';\n maxMemberships = user.get('max_memberships_public_projects');\n }\n }\n return {\n key: errorKey,\n values: {\n max_memberships: maxMemberships,\n members: result.headers.memberships\n }\n };\n } else {\n return false;\n }\n };\n $el.on(\"click\", \".import-project-button\", function(event) {\n event.preventDefault();\n $el.find(\"input.import-file\").val(\"\");\n return $el.find(\"input.import-file\").trigger(\"click\");\n });\n return $el.on(\"change\", \"input.import-file\", function(event) {\n var file, loader, onError, onSuccess;\n event.preventDefault();\n file = event.target.files[0];\n if (!file) {\n return;\n }\n loader = $confirm.loader($translate.instant(\"PROJECT.IMPORT.UPLOADING_FILE\"));\n onSuccess = function(result) {\n return currentUserService.loadProjects().then(function() {\n var ctx, message, msg, title;\n loader.stop();\n if (result.status === 202) {\n title = $translate.instant(\"PROJECT.IMPORT.ASYNC_IN_PROGRESS_TITLE\");\n message = $translate.instant(\"PROJECT.IMPORT.ASYNC_IN_PROGRESS_MESSAGE\");\n return $confirm.success(title, message);\n } else {\n ctx = {\n project: result.data.slug\n };\n $location.path($navUrls.resolve(\"project-admin-project-profile-details\", ctx));\n msg = $translate.instant(\"PROJECT.IMPORT.SYNC_SUCCESS\");\n return $confirm.notify(\"success\", msg);\n }\n });\n };\n onError = function(result) {\n return $tgAuth.refresh().then(function() {\n var errorMsg, ref, restrictionError;\n restrictionError = getRestrictionError(result);\n loader.stop();\n if (restrictionError) {\n return $lightboxFactory.create('tg-lb-import-error', {\n \"class\": 'lightbox lightbox-import-error'\n }, restrictionError);\n } else {\n errorMsg = $translate.instant(\"PROJECT.IMPORT.ERROR\");\n if (result.status === 429) {\n errorMsg = $translate.instant(\"PROJECT.IMPORT.ERROR_TOO_MANY_REQUEST\");\n } else if ((ref = result.data) != null ? ref._error_message : void 0) {\n errorMsg = $translate.instant(\"PROJECT.IMPORT.ERROR_MESSAGE\", {\n error_message: result.data._error_message\n });\n }\n return $confirm.notify(\"error\", errorMsg);\n }\n });\n };\n loader.start();\n return $rs.projects[\"import\"](file, loader.update).then(onSuccess, onError);\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgImportProjectButton\", [\"$tgResources\", \"$tgConfirm\", \"$location\", \"$tgNavUrls\", \"$translate\", \"tgLightboxFactory\", \"tgCurrentUserService\", \"$tgAuth\", ImportProjectButtonDirective]);\n\n LbImportErrorDirective = function(lightboxService) {\n var link;\n link = function(scope, el, attrs) {\n lightboxService.open(el);\n return scope.close = function() {\n lightboxService.close(el);\n };\n };\n return {\n templateUrl: \"common/lightbox/lightbox-import-error.html\",\n link: link\n };\n };\n\n LbImportErrorDirective.$inject = [\"lightboxService\"];\n\n module.directive(\"tgLbImportError\", LbImportErrorDirective);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/lightboxes.coffee\n */\n\n(function() {\n var AssignedToLightboxDirective, AttachmentPreviewLightboxDirective, BlockLightboxDirective, BlockingMessageInputDirective, CreateBulkUserstoriesDirective, CreateEditUserstoryDirective, LightboxDirective, LightboxKeyboardNavigationService, LightboxLeaveProjectWarningDirective, LightboxService, WatchersLightboxDirective, bindOnce, debounce, module, sizeFormat, timeout,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n module = angular.module(\"taigaCommon\");\n\n bindOnce = this.taiga.bindOnce;\n\n timeout = this.taiga.timeout;\n\n debounce = this.taiga.debounce;\n\n sizeFormat = this.taiga.sizeFormat;\n\n LightboxService = (function(superClass) {\n extend(LightboxService, superClass);\n\n function LightboxService(animationFrame, q) {\n this.animationFrame = animationFrame;\n this.q = q;\n }\n\n LightboxService.prototype.open = function($el) {\n var defered, docEl, lightboxContent;\n if (_.isString($el)) {\n $el = $($el);\n }\n defered = this.q.defer();\n lightboxContent = $el.children().not(\".close\");\n lightboxContent.hide();\n this.animationFrame.add(function() {\n return $el.css('display', 'flex');\n });\n this.animationFrame.add(function() {\n $el.addClass(\"open\");\n return $el.one(\"transitionend\", (function(_this) {\n return function() {\n return $el.find('input,textarea').first().focus();\n };\n })(this));\n });\n this.animationFrame.add((function(_this) {\n return function() {\n lightboxContent.show();\n return defered.resolve();\n };\n })(this));\n docEl = angular.element(document);\n docEl.on(\"keydown.lightbox\", (function(_this) {\n return function(e) {\n var code;\n code = e.keyCode ? e.keyCode : e.which;\n if (code === 27) {\n return _this.close($el);\n }\n };\n })(this));\n return defered.promise;\n };\n\n LightboxService.prototype.close = function($el) {\n var docEl, scope;\n if (_.isString($el)) {\n $el = $($el);\n }\n docEl = angular.element(document);\n docEl.off(\".lightbox\");\n docEl.off(\".keyboard-navigation\");\n $el.one(\"transitionend\", (function(_this) {\n return function() {\n $el.removeAttr('style');\n return $el.removeClass(\"open\").removeClass('close');\n };\n })(this));\n this.animationFrame.add(function() {\n return $el.addClass('close');\n });\n if ($el.hasClass(\"remove-on-close\")) {\n scope = $el.data(\"scope\");\n scope.$destroy();\n return $el.remove();\n }\n };\n\n LightboxService.prototype.closeAll = function() {\n var docEl, i, len, lightboxEl, ref, results;\n docEl = angular.element(document);\n ref = docEl.find(\".lightbox.open\");\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n lightboxEl = ref[i];\n results.push(this.close($(lightboxEl)));\n }\n return results;\n };\n\n return LightboxService;\n\n })(taiga.Service);\n\n module.service(\"lightboxService\", [\"animationFrame\", \"$q\", LightboxService]);\n\n LightboxKeyboardNavigationService = (function(superClass) {\n extend(LightboxKeyboardNavigationService, superClass);\n\n function LightboxKeyboardNavigationService() {\n return LightboxKeyboardNavigationService.__super__.constructor.apply(this, arguments);\n }\n\n LightboxKeyboardNavigationService.prototype.stop = function() {\n var docEl;\n docEl = angular.element(document);\n return docEl.off(\".keyboard-navigation\");\n };\n\n LightboxKeyboardNavigationService.prototype.dispatch = function($el, code) {\n var activeElement, next, prev;\n activeElement = $el.find(\".selected\");\n if (code === 13) {\n if ($el.find(\".user-list-single\").length === 1) {\n return $el.find('.user-list-single:first').trigger(\"click\");\n } else {\n return activeElement.trigger(\"click\");\n }\n } else if (code === 40) {\n if (!activeElement.length) {\n return $el.find('.user-list-single:not(\".is-active\"):first').addClass('selected');\n } else {\n next = activeElement.next('.user-list-single');\n if (next.length) {\n activeElement.removeClass('selected');\n return next.addClass('selected');\n }\n }\n } else if (code === 38) {\n if (!activeElement.length) {\n return $el.find('.user-list-single:last').addClass('selected');\n } else {\n prev = activeElement.prev('.user-list-single:not(\".is-active\")');\n if (prev.length) {\n activeElement.removeClass('selected');\n return prev.addClass('selected');\n }\n }\n }\n };\n\n LightboxKeyboardNavigationService.prototype.init = function($el) {\n var docEl;\n this.stop();\n docEl = angular.element(document);\n return docEl.on(\"keydown.keyboard-navigation\", (function(_this) {\n return function(event) {\n var code;\n code = event.keyCode ? event.keyCode : event.which;\n if (code === 40 || code === 38 || code === 13) {\n event.preventDefault();\n return _this.dispatch($el, code);\n }\n };\n })(this));\n };\n\n return LightboxKeyboardNavigationService;\n\n })(taiga.Service);\n\n module.service(\"lightboxKeyboardNavigationService\", LightboxKeyboardNavigationService);\n\n LightboxDirective = function(lightboxService) {\n var link;\n link = function($scope, $el, $attrs) {\n return $el.on(\"click\", \".close\", function(event) {\n event.preventDefault();\n return lightboxService.close($el);\n });\n };\n return {\n restrict: \"C\",\n link: link\n };\n };\n\n module.directive(\"lightbox\", [\"lightboxService\", LightboxDirective]);\n\n BlockLightboxDirective = function($rootscope, $tgrepo, $confirm, lightboxService, $loading, $qqueue, $translate) {\n var link;\n link = function($scope, $el, $attrs, $model) {\n var block, title, unblock;\n title = $translate.instant($attrs.title);\n $el.find(\"h2.title\").text(title);\n unblock = $qqueue.bindAdd((function(_this) {\n return function(item, finishCallback) {\n var promise;\n promise = $tgrepo.save(item);\n promise.then(function() {\n $confirm.notify(\"success\");\n $rootscope.$broadcast(\"object:updated\");\n $model.$setViewValue(item);\n return finishCallback();\n });\n promise.then(null, function() {\n $confirm.notify(\"error\");\n item.revert();\n return $model.$setViewValue(item);\n });\n promise[\"finally\"](function() {\n return finishCallback();\n });\n return promise;\n };\n })(this));\n block = $qqueue.bindAdd((function(_this) {\n return function(item) {\n var currentLoading, promise;\n $model.$setViewValue(item);\n currentLoading = $loading().target($el.find(\".button-green\")).start();\n promise = $tgrepo.save($model.$modelValue);\n promise.then(function() {\n $confirm.notify(\"success\");\n return $rootscope.$broadcast(\"object:updated\");\n });\n promise.then(null, function() {\n $confirm.notify(\"error\");\n item.revert();\n return $model.$setViewValue(item);\n });\n return promise[\"finally\"](function() {\n currentLoading.finish();\n return lightboxService.close($el);\n });\n };\n })(this));\n $scope.$on(\"block\", function() {\n $el.find(\".reason\").val($model.$modelValue.blocked_note);\n return lightboxService.open($el);\n });\n $scope.$on(\"unblock\", (function(_this) {\n return function(event, model, finishCallback) {\n var item;\n item = $model.$modelValue.clone();\n item.is_blocked = false;\n item.blocked_note = \"\";\n return unblock(item, finishCallback);\n };\n })(this));\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n return $el.on(\"click\", \".button-green\", function(event) {\n var item;\n event.preventDefault();\n item = $model.$modelValue.clone();\n item.is_blocked = true;\n item.blocked_note = $el.find(\".reason\").val();\n return block(item);\n });\n };\n return {\n templateUrl: \"common/lightbox/lightbox-block.html\",\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgLbBlock\", [\"$rootScope\", \"$tgRepo\", \"$tgConfirm\", \"lightboxService\", \"$tgLoading\", \"$tgQqueue\", \"$translate\", BlockLightboxDirective]);\n\n BlockingMessageInputDirective = function($log, $template, $compile) {\n var link, template, templateFn;\n template = $template.get(\"common/lightbox/lightbox-blocking-message-input.html\", true);\n link = function($scope, $el, $attrs, $model) {\n if (!$attrs.watch) {\n return $log.error(\"No watch attribute on tg-blocking-message-input directive\");\n }\n return $scope.$watch($attrs.watch, function(value) {\n if (value === !void 0 && value === true) {\n return $el.find(\".blocked-note\").removeClass(\"hidden\");\n } else {\n return $el.find(\".blocked-note\").addClass(\"hidden\");\n }\n });\n };\n templateFn = function($el, $attrs) {\n return template({\n ngmodel: $attrs.ngModel\n });\n };\n return {\n template: templateFn,\n link: link,\n require: \"ngModel\",\n restrict: \"EA\"\n };\n };\n\n module.directive(\"tgBlockingMessageInput\", [\"$log\", \"$tgTemplate\", \"$compile\", BlockingMessageInputDirective]);\n\n CreateEditUserstoryDirective = function($repo, $model, $rs, $rootScope, lightboxService, $loading, $translate, $confirm, $q, attachmentsService) {\n var link;\n link = function($scope, $el, attrs) {\n var attachmentsToAdd, attachmentsToDelete, createAttachments, deleteAttachments, form, resetAttachments, submit, submitButton;\n form = null;\n $scope.createEditUs = {};\n $scope.isNew = true;\n attachmentsToAdd = Immutable.List();\n attachmentsToDelete = Immutable.List();\n resetAttachments = function() {\n attachmentsToAdd = Immutable.List();\n return attachmentsToDelete = Immutable.List();\n };\n $scope.addAttachment = function(attachment) {\n return attachmentsToAdd = attachmentsToAdd.push(attachment);\n };\n $scope.deleteAttachment = function(attachment) {\n return attachmentsToDelete = attachmentsToDelete.push(attachment);\n };\n $scope.$on(\"usform:new\", function(ctx, projectId, status, statusList) {\n if (form) {\n form.reset();\n }\n $scope.isNew = true;\n $scope.usStatusList = statusList;\n $scope.attachments = Immutable.List();\n resetAttachments();\n $scope.us = $model.make_model(\"userstories\", {\n project: projectId,\n points: {},\n status: status,\n is_archived: false,\n tags: []\n });\n $el.find(\".button-green\").html($translate.instant(\"COMMON.CREATE\"));\n $el.find(\".title\").html($translate.instant(\"LIGHTBOX.CREATE_EDIT_US.NEW_US\"));\n $el.find(\".tag-input\").val(\"\");\n $el.find(\".blocked-note\").addClass(\"hidden\");\n $el.find(\"label.blocked\").removeClass(\"selected\");\n $el.find(\"label.team-requirement\").removeClass(\"selected\");\n $el.find(\"label.client-requirement\").removeClass(\"selected\");\n return lightboxService.open($el);\n });\n $scope.$on(\"usform:edit\", function(ctx, us, attachments) {\n if (form) {\n form.reset();\n }\n $scope.us = us;\n $scope.attachments = Immutable.fromJS(attachments);\n $scope.isNew = false;\n resetAttachments();\n $el.find(\".button-green\").html($translate.instant(\"COMMON.SAVE\"));\n $el.find(\".title\").html($translate.instant(\"LIGHTBOX.CREATE_EDIT_US.EDIT_US\"));\n $el.find(\".tag-input\").val(\"\");\n if (us.is_blocked) {\n $el.find(\".blocked-note\").removeClass(\"hidden\");\n $el.find(\"label.blocked\").addClass(\"selected\");\n } else {\n $el.find(\".blocked-note\").addClass(\"hidden\");\n $el.find(\"label.blocked\").removeClass(\"selected\");\n }\n if (us.team_requirement) {\n $el.find(\"label.team-requirement\").addClass(\"selected\");\n } else {\n $el.find(\"label.team-requirement\").removeClass(\"selected\");\n }\n if (us.client_requirement) {\n $el.find(\"label.client-requirement\").addClass(\"selected\");\n } else {\n $el.find(\"label.client-requirement\").removeClass(\"selected\");\n }\n return lightboxService.open($el);\n });\n createAttachments = function(obj) {\n var promises;\n promises = _.map(attachmentsToAdd.toJS(), function(attachment) {\n return attachmentsService.upload(attachment.file, obj.id, $scope.us.project, 'us');\n });\n return $q.all(promises);\n };\n deleteAttachments = function(obj) {\n var promises;\n promises = _.map(attachmentsToDelete.toJS(), function(attachment) {\n return attachmentsService[\"delete\"](\"us\", attachment.id);\n });\n return $q.all(promises);\n };\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var broadcastEvent, currentLoading, promise;\n event.preventDefault();\n form = $el.find(\"form\").checksley();\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n if ($scope.isNew) {\n promise = $repo.create(\"userstories\", $scope.us);\n broadcastEvent = \"usform:new:success\";\n } else {\n promise = $repo.save($scope.us);\n broadcastEvent = \"usform:edit:success\";\n }\n promise.then(function(data) {\n deleteAttachments(data).then((function(_this) {\n return function() {\n return createAttachments(data);\n };\n })(this));\n return data;\n });\n promise.then(function(data) {\n currentLoading.finish();\n lightboxService.close($el);\n return $rootScope.$broadcast(broadcastEvent, data);\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n $el.on(\"click\", \".close\", function(event) {\n event.preventDefault();\n $scope.$apply(function() {\n return $scope.us.revert();\n });\n return lightboxService.close($el);\n });\n $el.keydown(function(event) {\n var code;\n code = event.keyCode ? event.keyCode : event.which;\n if (code === 27) {\n lightboxService.close($el);\n return $scope.$apply(function() {\n return $scope.us.revert();\n });\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbCreateEditUserstory\", [\"$tgRepo\", \"$tgModel\", \"$tgResources\", \"$rootScope\", \"lightboxService\", \"$tgLoading\", \"$translate\", \"$tgConfirm\", \"$q\", \"tgAttachmentsService\", CreateEditUserstoryDirective]);\n\n CreateBulkUserstoriesDirective = function($repo, $rs, $rootscope, lightboxService, $loading) {\n var link;\n link = function($scope, $el, attrs) {\n var form, submit, submitButton;\n form = null;\n $scope.$on(\"usform:bulk\", function(ctx, projectId, status) {\n if (form) {\n form.reset();\n }\n $scope[\"new\"] = {\n projectId: projectId,\n statusId: status,\n bulk: \"\"\n };\n return lightboxService.open($el);\n });\n submit = debounce(2000, (function(_this) {\n return function(event) {\n var currentLoading, promise;\n event.preventDefault();\n form = $el.find(\"form\").checksley({\n onlyOneErrorElement: true\n });\n if (!form.validate()) {\n return;\n }\n currentLoading = $loading().target(submitButton).start();\n promise = $rs.userstories.bulkCreate($scope[\"new\"].projectId, $scope[\"new\"].statusId, $scope[\"new\"].bulk);\n promise.then(function(result) {\n currentLoading.finish();\n $rootscope.$broadcast(\"usform:bulk:success\", result);\n return lightboxService.close($el);\n });\n return promise.then(null, function(data) {\n currentLoading.finish();\n form.setErrors(data);\n if (data._error_message) {\n return $confirm.notify(\"error\", data._error_message);\n }\n });\n };\n })(this));\n submitButton = $el.find(\".submit-button\");\n $el.on(\"submit\", \"form\", submit);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLbCreateBulkUserstories\", [\"$tgRepo\", \"$tgResources\", \"$rootScope\", \"lightboxService\", \"$tgLoading\", CreateBulkUserstoriesDirective]);\n\n AssignedToLightboxDirective = function(lightboxService, lightboxKeyboardNavigationService, $template, $compile) {\n var link;\n link = function($scope, $el, $attrs) {\n var closeLightbox, filterUsers, normalizeString, render, selectedItem, selectedUser, usersTemplate;\n selectedUser = null;\n selectedItem = null;\n usersTemplate = $template.get(\"common/lightbox/lightbox-assigned-to-users.html\", true);\n normalizeString = function(string) {\n var normalizedString;\n normalizedString = string;\n normalizedString = normalizedString.replace(\"Á\", \"A\").replace(\"Ä\", \"A\").replace(\"À\", \"A\");\n normalizedString = normalizedString.replace(\"É\", \"E\").replace(\"Ë\", \"E\").replace(\"È\", \"E\");\n normalizedString = normalizedString.replace(\"Í\", \"I\").replace(\"Ï\", \"I\").replace(\"Ì\", \"I\");\n normalizedString = normalizedString.replace(\"Ó\", \"O\").replace(\"Ö\", \"O\").replace(\"Ò\", \"O\");\n normalizedString = normalizedString.replace(\"Ú\", \"U\").replace(\"Ü\", \"U\").replace(\"Ù\", \"U\");\n return normalizedString;\n };\n filterUsers = function(text, user) {\n var username;\n username = user.full_name_display.toUpperCase();\n username = normalizeString(username);\n text = text.toUpperCase();\n text = normalizeString(text);\n return _.includes(username, text);\n };\n render = function(selected, text) {\n var ctx, html, users;\n users = _.clone($scope.activeUsers, true);\n if (selected != null) {\n users = _.reject(users, {\n \"id\": selected.id\n });\n }\n if (text != null) {\n users = _.filter(users, _.partial(filterUsers, text));\n }\n ctx = {\n selected: selected,\n users: _.slice(users, 0, 5),\n showMore: users.length > 5\n };\n html = usersTemplate(ctx);\n html = $compile(html)($scope);\n return $el.find(\".assigned-to-list\").html(html);\n };\n closeLightbox = function() {\n lightboxKeyboardNavigationService.stop();\n return lightboxService.close($el);\n };\n $scope.$on(\"assigned-to:add\", function(ctx, item) {\n var assignedToId;\n selectedItem = item;\n assignedToId = item.assigned_to;\n selectedUser = $scope.usersById[assignedToId];\n render(selectedUser);\n return lightboxService.open($el).then(function() {\n $el.find('input').focus();\n return lightboxKeyboardNavigationService.init($el);\n });\n });\n $scope.$watch(\"usersSearch\", function(searchingText) {\n if (searchingText != null) {\n render(selectedUser, searchingText);\n return $el.find('input').focus();\n }\n });\n $el.on(\"click\", \".user-list-single\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n closeLightbox();\n return $scope.$apply(function() {\n $scope.$broadcast(\"assigned-to:added\", target.data(\"user-id\"), selectedItem);\n return $scope.usersSearch = null;\n });\n });\n $el.on(\"click\", \".remove-assigned-to\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n closeLightbox();\n return $scope.$apply(function() {\n $scope.usersSearch = null;\n return $scope.$broadcast(\"assigned-to:added\", null, selectedItem);\n });\n });\n $el.on(\"click\", \".close\", function(event) {\n event.preventDefault();\n closeLightbox();\n return $scope.$apply(function() {\n return $scope.usersSearch = null;\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n templateUrl: \"common/lightbox/lightbox-assigned-to.html\",\n link: link\n };\n };\n\n module.directive(\"tgLbAssignedto\", [\"lightboxService\", \"lightboxKeyboardNavigationService\", \"$tgTemplate\", \"$compile\", AssignedToLightboxDirective]);\n\n WatchersLightboxDirective = function($repo, lightboxService, lightboxKeyboardNavigationService, $template, $compile) {\n var link;\n link = function($scope, $el, $attrs) {\n var closeLightbox, getFilteredUsers, render, selectedItem, usersTemplate;\n selectedItem = null;\n usersTemplate = $template.get(\"common/lightbox/lightbox-assigned-to-users.html\", true);\n getFilteredUsers = function(text) {\n var _filterUsers, users;\n if (text == null) {\n text = \"\";\n }\n _filterUsers = function(text, user) {\n var username;\n if (selectedItem && _.find(selectedItem.watchers, function(x) {\n return x === user.id;\n })) {\n return false;\n }\n username = user.full_name_display.toUpperCase();\n text = text.toUpperCase();\n return _.includes(username, text);\n };\n users = _.clone($scope.activeUsers, true);\n users = _.filter(users, _.partial(_filterUsers, text));\n return users;\n };\n render = function(users) {\n var ctx, html;\n ctx = {\n selected: false,\n users: _.slice(users, 0, 5),\n showMore: users.length > 5\n };\n html = usersTemplate(ctx);\n html = $compile(html)($scope);\n return $el.find(\".ticket-watchers\").html(html);\n };\n closeLightbox = function() {\n lightboxKeyboardNavigationService.stop();\n return lightboxService.close($el);\n };\n $scope.$on(\"watcher:add\", function(ctx, item) {\n var users;\n selectedItem = item;\n users = getFilteredUsers();\n render(users);\n return lightboxService.open($el).then(function() {\n $el.find(\"input\").focus();\n return lightboxKeyboardNavigationService.init($el);\n });\n });\n $scope.$watch(\"usersSearch\", function(searchingText) {\n var users;\n if (searchingText == null) {\n return;\n }\n users = getFilteredUsers(searchingText);\n render(users);\n return $el.find(\"input\").focus();\n });\n $el.on(\"click\", \".user-list-single\", debounce(2000, function(event) {\n var target;\n closeLightbox();\n event.preventDefault();\n target = angular.element(event.currentTarget);\n return $scope.$apply(function() {\n $scope.usersSearch = null;\n return $scope.$broadcast(\"watcher:added\", target.data(\"user-id\"));\n });\n }));\n $el.on(\"click\", \".close\", function(event) {\n event.preventDefault();\n closeLightbox();\n return $scope.$apply(function() {\n return $scope.usersSearch = null;\n });\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n templateUrl: \"common/lightbox/lightbox-users.html\",\n link: link\n };\n };\n\n module.directive(\"tgLbWatchers\", [\"$tgRepo\", \"lightboxService\", \"lightboxKeyboardNavigationService\", \"$tgTemplate\", \"$compile\", WatchersLightboxDirective]);\n\n AttachmentPreviewLightboxDirective = function(lightboxService, $template, $compile) {\n var link;\n link = function($scope, $el, attrs) {\n return lightboxService.open($el);\n };\n return {\n templateUrl: 'common/lightbox/lightbox-attachment-preview.html',\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgLbAttachmentPreview\", [\"lightboxService\", \"$tgTemplate\", \"$compile\", AttachmentPreviewLightboxDirective]);\n\n LightboxLeaveProjectWarningDirective = function(lightboxService, $template, $compile) {\n var link;\n link = function($scope, $el, attrs) {\n return lightboxService.open($el);\n };\n return {\n templateUrl: 'common/lightbox/lightbox-leave-project-warning.html',\n link: link,\n scope: true\n };\n };\n\n module.directive(\"tgLightboxLeaveProjectWarning\", [\"lightboxService\", LightboxLeaveProjectWarningDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/loader.coffee\n */\n\n(function() {\n var Loader, LoaderDirective, module, sizeFormat, taiga, timeout;\n\n taiga = this.taiga;\n\n sizeFormat = this.taiga.sizeFormat;\n\n timeout = this.taiga.timeout;\n\n module = angular.module(\"taigaCommon\");\n\n LoaderDirective = function(tgLoader, $rootscope) {\n var link;\n link = function($scope, $el, $attrs) {\n tgLoader.onStart(function() {\n $(document.body).addClass(\"loader-active\");\n return $el.addClass(\"active\");\n });\n return tgLoader.onEnd(function() {\n $(document.body).removeClass(\"loader-active\");\n return $el.removeClass(\"active\");\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLoader\", [\"tgLoader\", \"$rootScope\", LoaderDirective]);\n\n Loader = function($rootscope) {\n var autoClose, config, lastResponseDate, open, pageLoaded, requestCount, start, startLoadTime;\n config = {\n minTime: 300\n };\n open = false;\n startLoadTime = 0;\n requestCount = 0;\n lastResponseDate = 0;\n pageLoaded = function(force) {\n var diff, endTime, timeoutValue;\n if (force == null) {\n force = false;\n }\n if (startLoadTime) {\n timeoutValue = 0;\n if (!force) {\n endTime = new Date().getTime();\n diff = endTime - startLoadTime;\n if (diff < config.minTime) {\n timeoutValue = config.minTime - diff;\n }\n }\n timeout(timeoutValue, function() {\n $rootscope.$broadcast(\"loader:end\");\n open = false;\n return window.prerenderReady = true;\n });\n }\n startLoadTime = 0;\n requestCount = 0;\n return lastResponseDate = 0;\n };\n autoClose = function() {\n var intervalAuto;\n return intervalAuto = setInterval((function() {\n if (lastResponseDate && requestCount === 0) {\n pageLoaded();\n return clearInterval(intervalAuto);\n }\n }), 50);\n };\n start = function() {\n startLoadTime = new Date().getTime();\n $rootscope.$broadcast(\"loader:start\");\n return open = true;\n };\n return {\n pageLoaded: pageLoaded,\n start: function(auto) {\n if (auto == null) {\n auto = false;\n }\n if (!open) {\n start();\n if (auto) {\n return autoClose();\n }\n }\n },\n onStart: function(fn) {\n return $rootscope.$on(\"loader:start\", fn);\n },\n onEnd: function(fn) {\n return $rootscope.$on(\"loader:end\", fn);\n },\n logRequest: function() {\n return requestCount++;\n },\n logResponse: function() {\n requestCount--;\n return lastResponseDate = new Date().getTime();\n }\n };\n };\n\n Loader.$inject = [\"$rootScope\"];\n\n module.factory(\"tgLoader\", Loader);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/lightboxes.coffee\n */\n\n(function() {\n var LoadingDirective, TgLoadingService, module,\n slice = [].slice;\n\n module = angular.module(\"taigaCommon\");\n\n TgLoadingService = function($compile) {\n var spinner;\n spinner = \"\";\n return function() {\n var service;\n service = {\n settings: {\n target: null,\n scope: null,\n classes: [],\n timeout: 0,\n template: null\n },\n target: function(target) {\n service.settings.target = target;\n return service;\n },\n scope: function(scope) {\n service.settings.scope = scope;\n return service;\n },\n template: function(template) {\n service.settings.template = template;\n return service;\n },\n removeClasses: function() {\n var classess;\n classess = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n service.settings.classes = classess;\n return service;\n },\n timeout: function(timeout) {\n service.settings.timeout = timeout;\n return service;\n },\n start: function() {\n var target, timeoutId;\n target = service.settings.target;\n service.settings.classes.map(function(className) {\n return target.removeClass(className);\n });\n if (!target.hasClass('loading') && !service.settings.template) {\n service.settings.template = target.html();\n }\n timeoutId = setTimeout((function() {\n if (!target.hasClass('loading')) {\n target.addClass('loading');\n return target.html(spinner);\n }\n }), service.settings.timeout);\n service.settings.timeoutId = timeoutId;\n return service;\n },\n finish: function() {\n var removeClasses, target, timeoutId;\n target = service.settings.target;\n timeoutId = service.settings.timeoutId;\n if (timeoutId) {\n clearTimeout(timeoutId);\n removeClasses = service.settings.classes;\n removeClasses.map(function(className) {\n return service.settings.target.addClass(className);\n });\n target.html(service.settings.template);\n target.removeClass('loading');\n if (service.settings.scope) {\n $compile(target.contents())(service.settings.scope);\n }\n }\n return service;\n }\n };\n return service;\n };\n };\n\n TgLoadingService.$inject = [\"$compile\"];\n\n module.factory(\"$tgLoading\", TgLoadingService);\n\n LoadingDirective = function($loading) {\n var link;\n link = function($scope, $el, attr) {\n var currentLoading, template;\n currentLoading = null;\n template = $el.html();\n return $scope.$watch(attr.tgLoading, (function(_this) {\n return function(showLoading) {\n if (showLoading) {\n return currentLoading = $loading().target($el).timeout(100).template(template).scope($scope).start();\n } else if (currentLoading) {\n return currentLoading.finish();\n }\n };\n })(this));\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgLoading\", [\"$tgLoading\", LoadingDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/popovers.coffee\n */\n\n(function() {\n var RelatedTaskStatusDirective, UsStatusDirective, bindOnce, debounce, module, taiga;\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n debounce = this.taiga.debounce;\n\n module = angular.module(\"taigaCommon\");\n\n UsStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a US and a popover to change it.\n - tg-us-status: The user story\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-us-status=\"us\" on-update=\"ctrl.loadSprintState()\")\n a.us-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'usStatusById' and 'project'.\n */\n var link, template;\n template = $template.get(\"common/popover/popover-us-status.html\", true);\n link = function($scope, $el, $attrs) {\n var $ctrl, render, us;\n $ctrl = $el.controller();\n render = function(us) {\n var usStatusById, usStatusDom, usStatusDomParent;\n usStatusDomParent = $el.find(\".us-status\");\n usStatusDom = $el.find(\".us-status .us-status-bind\");\n usStatusById = $scope.usStatusById;\n if (usStatusById[us.status]) {\n usStatusDom.text(usStatusById[us.status].name);\n return usStatusDomParent.css(\"color\", usStatusById[us.status].color);\n }\n };\n $el.on(\"click\", \".us-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", debounce(2000, function(event) {\n var target, us;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n us = $scope.$eval($attrs.tgUsStatus);\n us.status = target.data(\"status-id\");\n render(us);\n $el.find(\".pop-status\").popover().close();\n return $scope.$apply(function() {\n return $repo.save(us).then(function() {\n return $scope.$eval($attrs.onUpdate);\n });\n });\n }));\n $scope.$on(\"userstories:loaded\", function() {\n return render($scope.$eval($attrs.tgUsStatus));\n });\n $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n us = $scope.$eval($attrs.tgUsStatus);\n render(us);\n return bindOnce($scope, \"project\", function(project) {\n var html;\n html = template({\n \"statuses\": project.us_statuses\n });\n $el.append(html);\n if ($scope.project.my_permissions.indexOf(\"modify_us\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgUsStatus\", [\"$tgRepo\", \"$tgTemplate\", UsStatusDirective]);\n\n RelatedTaskStatusDirective = function($repo, $template) {\n\n /*\n Print the status of a related task and a popover to change it.\n - tg-related-task-status: The related task\n - on-update: Method call after US is updated\n \n Example:\n \n div.status(tg-related-task-status=\"task\" on-update=\"ctrl.loadSprintState()\")\n a.task-status(href=\"\", title=\"Status Name\")\n \n NOTE: This directive need 'taskStatusById' and 'project'.\n */\n var link, selectionTemplate, updateTaskStatus;\n selectionTemplate = $template.get(\"common/popover/popover-related-task-status.html\", true);\n updateTaskStatus = function($el, task, taskStatusById) {\n var taskStatusDom, taskStatusDomParent;\n taskStatusDomParent = $el.find(\".us-status\");\n taskStatusDom = $el.find(\".task-status .task-status-bind\");\n if (taskStatusById[task.status]) {\n taskStatusDom.text(taskStatusById[task.status].name);\n return taskStatusDomParent.css('color', taskStatusById[task.status].color);\n }\n };\n link = function($scope, $el, $attrs) {\n var $ctrl, autoSave, notAutoSave, task;\n $ctrl = $el.controller();\n task = $scope.$eval($attrs.tgRelatedTaskStatus);\n notAutoSave = $scope.$eval($attrs.notAutoSave);\n autoSave = !notAutoSave;\n $el.on(\"click\", \".task-status\", function(event) {\n event.preventDefault();\n event.stopPropagation();\n return $el.find(\".pop-status\").popover().open();\n });\n $el.on(\"click\", \".status\", debounce(2000, function(event) {\n var target;\n event.preventDefault();\n event.stopPropagation();\n target = angular.element(event.currentTarget);\n task.status = target.data(\"status-id\");\n $el.find(\".pop-status\").popover().close();\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (autoSave) {\n return $scope.$apply(function() {\n return $repo.save(task).then(function() {\n $scope.$eval($attrs.onUpdate);\n return $scope.$emit(\"related-tasks:status-changed\");\n });\n });\n }\n }));\n taiga.bindOnce($scope, \"project\", function(project) {\n $el.append(selectionTemplate({\n 'statuses': project.task_statuses\n }));\n updateTaskStatus($el, task, $scope.taskStatusById);\n if (project.my_permissions.indexOf(\"modify_task\") === -1) {\n $el.unbind(\"click\");\n return $el.find(\"a\").addClass(\"not-clickable\");\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgRelatedTaskStatus\", [\"$tgRepo\", \"$tgTemplate\", RelatedTaskStatusDirective]);\n\n $.fn.popover = function() {\n var $el, close, closeAll, closePopover, isVisible, open;\n $el = this;\n isVisible = (function(_this) {\n return function() {\n var docViewBottom, docViewLeft, docViewRight, docViewTop, docViewWidth, elemBottom, elemLeft, elemRight, elemTop, elemWidth;\n $el.css({\n \"display\": \"block\",\n \"visibility\": \"hidden\"\n });\n docViewTop = $(window).scrollTop();\n docViewBottom = docViewTop + $(window).height();\n docViewWidth = $(window).width();\n docViewRight = docViewWidth;\n docViewLeft = 0;\n elemTop = $el.offset().top;\n elemBottom = elemTop + $el.height();\n elemWidth = $el.width();\n elemLeft = $el.offset().left;\n elemRight = $el.offset().left + elemWidth;\n $el.css({\n \"display\": \"none\",\n \"visibility\": \"visible\"\n });\n return (elemBottom <= docViewBottom) && (elemTop >= docViewTop) && (elemLeft >= docViewLeft) && (elemRight <= docViewRight);\n };\n })(this);\n closePopover = (function(_this) {\n return function(onClose) {\n if (onClose) {\n onClose.call($el);\n }\n $el.fadeOut(function() {\n return $el.removeClass(\"active\").removeClass(\"fix\");\n });\n return $el.off(\"popup:close\");\n };\n })(this);\n closeAll = (function(_this) {\n return function() {\n return $(\".popover.active\").each(function() {\n return $(this).trigger(\"popup:close\");\n });\n };\n })(this);\n open = (function(_this) {\n return function(onClose) {\n if ($el.hasClass(\"active\")) {\n return close();\n } else {\n closeAll();\n if (!isVisible()) {\n $el.addClass(\"fix\");\n }\n $el.fadeIn(function() {\n $el.addClass(\"active\");\n $(document.body).off(\"popover\");\n return $(document.body).one(\"click.popover\", function() {\n return closeAll();\n });\n });\n return $el.on(\"popup:close\", function(e) {\n return closePopover(onClose);\n });\n }\n };\n })(this);\n close = (function(_this) {\n return function() {\n return $el.trigger(\"popup:close\");\n };\n })(this);\n return {\n open: open,\n close: close,\n closeAll: closeAll\n };\n };\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/raven-logger.coffee\n */\n\n(function() {\n var ExceptionHandlerFactory, module, taiga;\n\n taiga = this.taiga;\n\n module = angular.module(\"taigaCommon\");\n\n ExceptionHandlerFactory = function($log, config) {\n var ravenConfig;\n this.config = config;\n ravenConfig = this.config.get(\"ravenConfig\", null);\n if (ravenConfig) {\n $log.debug(\"Using the RavenJS exception handler.\");\n Raven.config(ravenConfig).install();\n return function(exception, cause) {\n $log.error.apply($log, arguments);\n return Raven.captureException(exception);\n };\n } else {\n $log.debug(\"Using the default logging exception handler.\");\n return function(exception, cause) {\n return $log.error.apply($log, arguments);\n };\n }\n };\n\n module.factory(\"$exceptionHandler\", [\"$log\", \"$tgConfig\", ExceptionHandlerFactory]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/tags.coffee\n */\n\n(function() {\n var ColorizeTagsDirective, LbTagLineDirective, TagLineDirective, TagsDirective, bindOnce, module, taiga, trim,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n trim = this.taiga.trim;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n TagsDirective = function() {\n var formatter, link, parser;\n formatter = function(v) {\n if (_.isArray(v)) {\n return v.join(\", \");\n }\n return \"\";\n };\n parser = function(v) {\n var result;\n if (!v) {\n return [];\n }\n result = _(v.split(\",\")).map(function(x) {\n return _.trim(x);\n });\n return result.value();\n };\n link = function($scope, $el, $attrs, $ctrl) {\n $ctrl.$formatters.push(formatter);\n $ctrl.$parsers.push(parser);\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n require: \"ngModel\",\n link: link\n };\n };\n\n module.directive(\"tgTags\", TagsDirective);\n\n ColorizeTagsDirective = function() {\n var link, templates;\n templates = {\n backlog: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\"><%- tag.name %>\\n<% }) %>\"),\n kanban: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\"),\n taskboard: _.template(\"<% _.each(tags, function(tag) { %>\\n \\\" title=\\\"<%- tag.name %>\\\" />\\n<% }) %>\")\n };\n link = function($scope, $el, $attrs, $ctrl) {\n var render;\n render = function(srcTags) {\n var html, tags, template;\n template = templates[$attrs.tgColorizeTagsType];\n srcTags.sort();\n tags = _.map(srcTags, function(tag) {\n var color;\n color = $scope.project.tags_colors[tag];\n return {\n name: tag,\n color: color\n };\n });\n html = template({\n tags: tags\n });\n return $el.html(html);\n };\n $scope.$watch($attrs.tgColorizeTags, function(tags) {\n if (tags != null) {\n return render(tags);\n }\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link\n };\n };\n\n module.directive(\"tgColorizeTags\", ColorizeTagsDirective);\n\n LbTagLineDirective = function($rs, $template, $compile) {\n var COMMA_KEY, ENTER_KEY, link, templateTags;\n ENTER_KEY = 13;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/lb-tag-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideSaveButton, renderTags, resetInput, saveInputTag, showSaveButton;\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n })\n };\n _.map(ctx.tags, (function(_this) {\n return function(tag) {\n if (tag.color) {\n return tag.style = \"border-left: 5px solid \" + tag.color;\n }\n };\n })(this));\n html = $compile(templateTags(ctx))($scope);\n return $el.find(\".tags-container\").html(html);\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return $el.find(\"input\").autocomplete(\"close\");\n };\n addValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n return hideSaveButton();\n };\n deleteValue = function(value) {\n var tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue, false);\n tags = _.pull(tags, value);\n return $scope.$apply(function() {\n return $model.$setViewValue(tags);\n });\n };\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n $el.on(\"keypress\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n event.preventDefault();\n return saveInputTag();\n } else if (String.fromCharCode(event.keyCode) === ',') {\n event.preventDefault();\n return saveInputTag();\n } else {\n if (target.val().length) {\n return showSaveButton();\n } else {\n return hideSaveButton();\n }\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return saveInputTag();\n });\n $el.on(\"click\", \".remove-tag\", function(event) {\n var target, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n value = target.siblings(\".tag-name\").text();\n return deleteValue(value);\n });\n bindOnce($scope, \"project\", function(project) {\n var positioningFunction;\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(project.tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\n });\n });\n $scope.$watch($attrs.ngModel, function(tags) {\n var ref, tagsColors;\n tagsColors = ((ref = $scope.project) != null ? ref.tags_colors : void 0) || [];\n return renderTags(tags, tagsColors);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\",\n templateUrl: \"common/tag/lb-tag-line.html\"\n };\n };\n\n module.directive(\"tgLbTagLine\", [\"$tgResources\", \"$tgTemplate\", \"$compile\", LbTagLineDirective]);\n\n TagLineDirective = function($rootScope, $repo, $rs, $confirm, $qqueue, $template, $compile) {\n var COMMA_KEY, ENTER_KEY, ESC_KEY, link, templateTags;\n ENTER_KEY = 13;\n ESC_KEY = 27;\n COMMA_KEY = 188;\n templateTags = $template.get(\"common/tag/tags-line-tags.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addValue, deleteValue, hideAddTagButton, hideAddTagButtonText, hideInput, hideSaveButton, isEditable, renderInReadModeOnly, renderTags, resetInput, saveInputTag, showAddTagButton, showAddTagButtonText, showInput, showSaveButton;\n isEditable = function() {\n if ($attrs.requiredPerm != null) {\n return $scope.project.my_permissions.indexOf($attrs.requiredPerm) !== -1;\n }\n return true;\n };\n renderTags = function(tags, tagsColors) {\n var ctx, html;\n ctx = {\n tags: _.map(tags, function(t) {\n return {\n name: t,\n color: tagsColors[t]\n };\n }),\n isEditable: isEditable()\n };\n html = $compile(templateTags(ctx))($scope);\n return $el.find(\"div.tags-container\").html(html);\n };\n renderInReadModeOnly = function() {\n $el.find(\".add-tag\").remove();\n $el.find(\"input\").remove();\n return $el.find(\".save\").remove();\n };\n showAddTagButton = function() {\n return $el.find(\".add-tag\").removeClass(\"hidden\");\n };\n hideAddTagButton = function() {\n return $el.find(\".add-tag\").addClass(\"hidden\");\n };\n showAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").removeClass(\"hidden\");\n };\n hideAddTagButtonText = function() {\n return $el.find(\".add-tag-text\").addClass(\"hidden\");\n };\n showSaveButton = function() {\n return $el.find(\".save\").removeClass(\"hidden\");\n };\n hideSaveButton = function() {\n return $el.find(\".save\").addClass(\"hidden\");\n };\n showInput = function() {\n return $el.find(\"input\").removeClass(\"hidden\").focus();\n };\n hideInput = function() {\n return $el.find(\"input\").addClass(\"hidden\").blur();\n };\n resetInput = function() {\n $el.find(\"input\").val(\"\");\n return $el.find(\"input\").autocomplete(\"close\");\n };\n addValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n if (tags == null) {\n tags = [];\n }\n if (indexOf.call(tags, value) < 0) {\n tags.push(value);\n }\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"object:updated\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n hideSaveButton();\n return $repo.save(model).then(onSuccess, onError);\n });\n deleteValue = $qqueue.bindAdd(function(value) {\n var model, onError, onSuccess, tags;\n value = trim(value.toLowerCase());\n if (value.length === 0) {\n return;\n }\n tags = _.clone($model.$modelValue.tags, false);\n tags = _.pull(tags, value);\n model = $model.$modelValue.clone();\n model.tags = tags;\n $model.$setViewValue(model);\n onSuccess = function() {\n return $rootScope.$broadcast(\"object:updated\");\n };\n onError = function() {\n $confirm.notify(\"error\");\n model.revert();\n return $model.$setViewValue(model);\n };\n return $repo.save(model).then(onSuccess, onError);\n });\n saveInputTag = function() {\n var value;\n value = $el.find(\"input\").val();\n addValue(value);\n return resetInput();\n };\n $el.on(\"keypress\", \"input\", function(event) {\n var target;\n target = angular.element(event.currentTarget);\n if (event.keyCode === ENTER_KEY) {\n return saveInputTag();\n } else if (String.fromCharCode(event.keyCode) === ',') {\n event.preventDefault();\n return saveInputTag();\n } else {\n if (target.val().length) {\n return showSaveButton();\n } else {\n return hideSaveButton();\n }\n }\n });\n $el.on(\"keyup\", \"input\", function(event) {\n if (event.keyCode === ESC_KEY) {\n resetInput();\n hideInput();\n hideSaveButton();\n return showAddTagButton();\n }\n });\n $el.on(\"click\", \".save\", function(event) {\n event.preventDefault();\n return saveInputTag();\n });\n $el.on(\"click\", \".add-tag\", function(event) {\n event.preventDefault();\n hideAddTagButton();\n return showInput();\n });\n $el.on(\"click\", \".remove-tag\", function(event) {\n var target, value;\n event.preventDefault();\n target = angular.element(event.currentTarget);\n value = target.siblings(\".tag-name\").text();\n return deleteValue(value);\n });\n bindOnce($scope, \"project.tags_colors\", function(tags_colors) {\n var positioningFunction;\n if (!isEditable()) {\n renderInReadModeOnly();\n return;\n }\n showAddTagButton();\n positioningFunction = function(position, elements) {\n var menu;\n menu = elements.element.element;\n menu.css(\"width\", elements.target.width);\n menu.css(\"top\", position.top);\n return menu.css(\"left\", position.left);\n };\n return $el.find(\"input\").autocomplete({\n source: _.keys(tags_colors),\n position: {\n my: \"left top\",\n using: positioningFunction\n },\n select: function(event, ui) {\n addValue(ui.item.value);\n return ui.item.value = \"\";\n }\n });\n });\n $scope.$watch($attrs.ngModel, function(model) {\n var ref, ref1, tagsColors;\n if (!model) {\n return;\n }\n if ((ref = model.tags) != null ? ref.length : void 0) {\n hideAddTagButtonText();\n } else {\n showAddTagButtonText();\n }\n tagsColors = ((ref1 = $scope.project) != null ? ref1.tags_colors : void 0) || [];\n return renderTags(model.tags, tagsColors);\n });\n return $scope.$on(\"$destroy\", function() {\n return $el.off();\n });\n };\n return {\n link: link,\n require: \"ngModel\",\n templateUrl: \"common/tag/tag-line.html\"\n };\n };\n\n module.directive(\"tgTagLine\", [\"$rootScope\", \"$tgRepo\", \"$tgResources\", \"$tgConfirm\", \"$tgQqueue\", \"$tgTemplate\", \"$compile\", TagLineDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso \n * Copyright (C) 2014-2016 Juan Francisco Alcántara \n * Copyright (C) 2014-2016 Xavi Julian \n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n * File: modules/common/wisiwyg.coffee\n */\n\n(function() {\n var MarkitupDirective, bindOnce, module, taiga,\n indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\n\n taiga = this.taiga;\n\n bindOnce = this.taiga.bindOnce;\n\n module = angular.module(\"taigaCommon\");\n\n MarkitupDirective = function($rootscope, $rs, $selectedText, $template, $compile, $translate) {\n var link, previewTemplate;\n previewTemplate = $template.get(\"common/wysiwyg/wysiwyg-markitup-preview.html\", true);\n link = function($scope, $el, $attrs, $model) {\n var addLine, cancelablePromise, closePreviewMode, element, markdownTitle, prepareUrlFormatting, preview, previewDomNode, previewInProgress, renderMarkItUp, setCaretPosition, unbind, urlFormatting;\n element = angular.element($el);\n previewDomNode = $(\"\", {\n \"class\": \"preview\"\n });\n closePreviewMode = function() {\n element.parents(\".markdown\").find(\".preview\").remove();\n return element.parents(\".markItUp\").show();\n };\n $scope.$on(\"markdown-editor:submit\", function() {\n return closePreviewMode();\n });\n cancelablePromise = null;\n previewInProgress = false;\n preview = function() {\n var markItUpDomNode, markdownDomNode;\n if (previewInProgress) {\n return;\n }\n previewInProgress = true;\n markdownDomNode = element.parents(\".markdown\");\n markItUpDomNode = element.parents(\".markItUp\");\n return $rs.mdrender.render($scope.projectId, $model.$modelValue).then(function(data) {\n var html, markdown;\n html = previewTemplate({\n data: data.data\n });\n html = $compile(html)($scope);\n markdownDomNode.append(html);\n markItUpDomNode.hide();\n previewInProgress = false;\n markdown = element.closest(\".markdown\");\n return markdown.on(\"mouseup.preview\", \".preview\", function(event) {\n var target;\n event.preventDefault();\n target = angular.element(event.target);\n if (!target.is('a') && $selectedText.get().length) {\n return;\n }\n markdown.off(\".preview\");\n return closePreviewMode();\n });\n });\n };\n setCaretPosition = function(textarea, caretPosition) {\n var line, range, scrollRelation, totalLines;\n if (textarea.createTextRange) {\n range = textarea.createTextRange();\n range.move(\"character\", caretPosition);\n range.select();\n } else if (textarea.selectionStart) {\n textarea.focus();\n textarea.setSelectionRange(caretPosition, caretPosition);\n }\n totalLines = textarea.value.split(\"\\n\").length;\n line = textarea.value.slice(0, +(caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n scrollRelation = line / totalLines;\n return $el.scrollTop((scrollRelation * $el[0].scrollHeight) - ($el.height() / 2));\n };\n addLine = function(textarea, nline, replace) {\n var cursorPosition, j, key, len, line, lines;\n lines = textarea.value.split(\"\\n\");\n if (replace) {\n lines[nline] = replace + lines[nline];\n } else {\n lines[nline] = \"\";\n }\n cursorPosition = 0;\n for (key = j = 0, len = lines.length; j < len; key = ++j) {\n line = lines[key];\n cursorPosition += line.length + 1 || 1;\n if (key === nline) {\n break;\n }\n }\n textarea.value = lines.join(\"\\n\");\n if (replace) {\n return cursorPosition - lines[nline].length + replace.length - 1;\n } else {\n return cursorPosition;\n }\n };\n prepareUrlFormatting = function(markItUp) {\n var indices, regex, result;\n regex = /(<<<|>>>)/gi;\n result = 0;\n indices = [];\n while ((result = regex.exec(markItUp.textarea.value))) {\n indices.push(result.index);\n }\n return markItUp.donotparse = indices;\n };\n urlFormatting = function(markItUp) {\n var endIndex, ref, ref1, regex, result, startIndex, url, value;\n regex = /<<>>/gi;\n endIndex = 0;\n while (true) {\n result = regex.exec(markItUp.textarea.value);\n if (!result) {\n break;\n }\n if (ref1 = result.index, indexOf.call(markItUp.donotparse, ref1) < 0) {\n endIndex = result.index;\n break;\n }\n }\n value = markItUp.textarea.value;\n url = value.substring(startIndex, endIndex).replace('<<<', '').replace('>>>', '');\n url = url.replace('(', '%28').replace(')', '%29');\n url = url.replace('[', '%5B').replace(']', '%5D');\n value = value.substring(0, startIndex) + url + value.substring(endIndex + 3, value.length);\n markItUp.textarea.value = value;\n return markItUp.donotparse = void 0;\n };\n markdownTitle = function(markItUp, char) {\n var heading, i, j, n, ref;\n heading = \"\";\n n = $.trim(markItUp.selection || markItUp.placeHolder).length;\n for (i = j = 0, ref = n - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n heading += char;\n }\n return \"\\n\" + heading + \"\\n\";\n };\n renderMarkItUp = function() {\n var markdownSettings;\n markdownSettings = {\n nameSpace: \"markdown\",\n onShiftEnter: {\n keepDefault: false,\n openWith: \"\\n\\n\"\n },\n onEnter: {\n keepDefault: false,\n replaceWith: function() {\n if (!$('.textcomplete-dropdown').is(':visible')) {\n return \"\\n\";\n }\n },\n afterInsert: function(data) {\n var cursorLine, emptyListItem, lastLine, lines, markdownCaretPositon, match, newLineContent, nline, replace;\n lines = data.textarea.value.split(\"\\n\");\n if (data.caretPosition > 0) {\n cursorLine = data.textarea.value.slice(0, +(data.caretPosition - 1) + 1 || 9e9).split(\"\\n\").length;\n } else {\n cursorLine = 1;\n }\n newLineContent = data.textarea.value.slice(data.caretPosition).split(\"\\n\")[0];\n lastLine = lines[cursorLine - 1];\n match = lastLine.match(/^(\\s*- ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)\\-\\s$/);\n if (emptyListItem) {\n nline = cursorLine - 1;\n replace = null;\n } else {\n nline = cursorLine;\n replace = \"\" + match[1];\n }\n markdownCaretPositon = addLine(data.textarea, nline, replace);\n }\n match = lastLine.match(/^(\\s*\\* ).*/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*\\* )$/);\n if (emptyListItem) {\n nline = cursorLine - 1;\n replace = null;\n } else {\n nline = cursorLine;\n replace = \"\" + match[1];\n }\n markdownCaretPositon = addLine(data.textarea, nline, replace);\n }\n match = lastLine.match(/^(\\s*)(\\d+)\\.\\s/);\n if (match) {\n emptyListItem = lastLine.match(/^(\\s*)(\\d+)\\.\\s$/);\n if (emptyListItem) {\n nline = cursorLine - 1;\n replace = null;\n } else {\n nline = cursorLine;\n replace = (match[1] + (parseInt(match[2], 10) + 1)) + \". \";\n }\n markdownCaretPositon = addLine(data.textarea, nline, replace);\n }\n if (markdownCaretPositon) {\n return setCaretPosition(data.textarea, markdownCaretPositon);\n }\n }\n },\n markupSet: [\n {\n name: $translate.instant(\"COMMON.WYSIWYG.H1_BUTTON\"),\n key: \"1\",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.H1_SAMPLE_TEXT\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"=\");\n }\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.H2_BUTTON\"),\n key: \"2\",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.H2_SAMPLE_TEXT\"),\n closeWith: function(markItUp) {\n return markdownTitle(markItUp, \"-\");\n }\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.H3_BUTTON\"),\n key: \"3\",\n openWith: \"### \",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.H3_SAMPLE_TEXT\")\n }, {\n separator: \"---------------\"\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.BOLD_BUTTON\"),\n key: \"B\",\n openWith: \"**\",\n closeWith: \"**\",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.BOLD_BUTTON_SAMPLE_TEXT\")\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.ITALIC_SAMPLE_TEXT\"),\n key: \"I\",\n openWith: \"_\",\n closeWith: \"_\",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.ITALIC_SAMPLE_TEXT\")\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.STRIKE_BUTTON\"),\n key: \"S\",\n openWith: \"~~\",\n closeWith: \"~~\",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.STRIKE_SAMPLE_TEXT\")\n }, {\n separator: \"---------------\"\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.BULLETED_LIST_BUTTON\"),\n openWith: \"- \",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.BULLETED_LIST_SAMPLE_TEXT\")\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.NUMERIC_LIST_BUTTON\"),\n openWith: function(markItUp) {\n return markItUp.line + \". \";\n },\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.NUMERIC_LIST_SAMPLE_TEXT\")\n }, {\n separator: \"---------------\"\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.PICTURE_BUTTON\"),\n key: \"P\",\n openWith: \"',\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.PICTURE_SAMPLE_TEXT\"),\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.LINK_BUTTON\"),\n key: \"L\",\n openWith: \"[\",\n closeWith: '](<<<[![Url:!:http://]!]>>> \"[![Title]!]\")',\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.LINK_SAMPLE_TEXT\"),\n beforeInsert: function(markItUp) {\n return prepareUrlFormatting(markItUp);\n },\n afterInsert: function(markItUp) {\n return urlFormatting(markItUp);\n }\n }, {\n separator: \"---------------\"\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.QUOTE_BLOCK_BUTTON\"),\n openWith: \"> \",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.QUOTE_BLOCK_SAMPLE_TEXT\")\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.CODE_BLOCK_BUTTON\"),\n openWith: \"```\\n\",\n placeHolder: $translate.instant(\"COMMON.WYSIWYG.CODE_BLOCK_SAMPLE_TEXT\"),\n closeWith: \"\\n```\"\n }, {\n separator: \"---------------\"\n }, {\n name: $translate.instant(\"COMMON.WYSIWYG.PREVIEW_BUTTON\"),\n call: preview,\n className: \"preview-icon\"\n }\n ],\n afterInsert: function(event) {\n var target;\n target = angular.element(event.textarea);\n return $model.$setViewValue(target.val());\n }\n };\n return element.markItUpRemove().markItUp(markdownSettings).textcomplete([\n {\n cache: true,\n match: /(^|\\s)#([a-z0-9]+)$/i,\n search: function(term, callback) {\n var filter, searchProps, searchTypes;\n term = taiga.slugify(term);\n searchTypes = ['issues', 'tasks', 'userstories'];\n searchProps = ['ref', 'subject'];\n filter = (function(_this) {\n return function(item) {\n var j, len, prop;\n for (j = 0, len = searchProps.length; j < len; j++) {\n prop = searchProps[j];\n if (taiga.slugify(item[prop]).indexOf(term) >= 0) {\n return true;\n }\n }\n return false;\n };\n })(this);\n if (cancelablePromise) {\n cancelablePromise.abort();\n }\n cancelablePromise = $rs.search[\"do\"]($scope.projectId, term);\n cancelablePromise.then((function(_this) {\n return function(res) {\n var j, len, results, type;\n if (res.count < 1 || res.count === res.wikipages.length) {\n return callback([]);\n } else {\n results = [];\n for (j = 0, len = searchTypes.length; j < len; j++) {\n type = searchTypes[j];\n if (res[type] && res[type].length > 0) {\n results.push(callback(res[type].filter(filter), true));\n } else {\n results.push(void 0);\n }\n }\n return results;\n }\n };\n })(this));\n return callback([]);\n },\n replace: function(res) {\n return \"$1\\#\" + res.ref + \" \";\n },\n template: function(res, term) {\n return \"\\#\" + res.ref + \" - \" + res.subject;\n }\n }, {\n cache: true,\n match: /(^|\\s)@([a-z0-9\\-\\._]{2,})$/i,\n search: function(term, callback) {\n var searchProps, username;\n username = taiga.slugify(term);\n searchProps = ['username', 'full_name', 'full_name_display'];\n if ($scope.project.members.length < 1) {\n return callback([]);\n } else {\n return callback($scope.project.members.filter((function(_this) {\n return function(user) {\n var j, len, prop;\n for (j = 0, len = searchProps.length; j < len; j++) {\n prop = searchProps[j];\n if (taiga.slugify(user[prop]).indexOf(username) >= 0) {\n return true;\n }\n }\n return false;\n };\n })(this)));\n }\n },\n replace: function(user) {\n return \"$1@\" + user.username + \" \";\n },\n template: function(user) {\n return user.username + \" - \" + user.full_name_display;\n }\n }, {\n cache: true,\n match: /(^|\\s)\\[\\[([a-z0-9\\-]+)$/i,\n search: function(term, callback) {\n term = taiga.slugify(term);\n return $rs.search[\"do\"]($scope.projectId, term).then((function(_this) {\n return function(res) {\n if (res.count < 1) {\n callback([]);\n }\n if (res.count < 1 || !res.wikipages || res.wikipages.length <= 0) {\n callback([]);\n } else {\n callback(res.wikipages.filter(function(page) {\n return taiga.slugify(page['slug']).indexOf(term) >= 0;\n }), true);\n }\n return callback([]);\n };\n })(this));\n },\n replace: function(res) {\n return \"$1[[\" + res.slug + \"]]\";\n },\n template: function(res, term) {\n return res.slug;\n }\n }\n ], {\n debounce: 200\n });\n };\n renderMarkItUp();\n unbind = $rootscope.$on(\"$translateChangeEnd\", renderMarkItUp);\n element.on(\"keypress\", function(event) {\n return $scope.$apply();\n });\n return $scope.$on(\"$destroy\", function() {\n $el.off();\n return unbind();\n });\n };\n return {\n link: link,\n require: \"ngModel\"\n };\n };\n\n module.directive(\"tgMarkitup\", [\"$rootScope\", \"$tgResources\", \"$selectedText\", \"$tgTemplate\", \"$compile\", \"$translate\", MarkitupDirective]);\n\n}).call(this);\n\n\n/*\n * Copyright (C) 2014-2016 Andrey Antukh \n * Copyright (C) 2014-2016 Jesús Espino Garcia \n * Copyright (C) 2014-2016 David Barragán Merino \n * Copyright (C) 2014-2016 Alejandro Alonso