{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/@core/core.module.ts","webpack:///./src/app/@core/module-import-guard.ts","webpack:///./src/app/@core/utils/index.ts","webpack:///./src/app/@core/utils/state.service.ts","webpack:///./src/app/@theme/components/footer/footer.component.scss","webpack:///./src/app/@theme/components/footer/footer.component.ts","webpack:///./src/app/@theme/components/header/header.component.html","webpack:///./src/app/@theme/components/header/header.component.scss","webpack:///./src/app/@theme/components/header/header.component.ts","webpack:///./src/app/@theme/components/index.ts","webpack:///./src/app/@theme/components/layout-direction-switcher/layout-direction-switcher.component.ts","webpack:///./src/app/@theme/components/search-input/search-input.component.scss","webpack:///./src/app/@theme/components/search-input/search-input.component.ts","webpack:///./src/app/@theme/components/switcher/switcher.component.scss","webpack:///./src/app/@theme/components/switcher/switcher.component.ts","webpack:///./src/app/@theme/layouts/index.ts","webpack:///./src/app/@theme/layouts/one-column/one-column.layout.scss","webpack:///./src/app/@theme/layouts/one-column/one-column.layout.ts","webpack:///./src/app/@theme/layouts/sample/sample.layout.scss","webpack:///./src/app/@theme/layouts/sample/sample.layout.ts","webpack:///./src/app/@theme/layouts/three-columns/three-columns.layout.scss","webpack:///./src/app/@theme/layouts/three-columns/three-columns.layout.ts","webpack:///./src/app/@theme/layouts/two-columns/two-columns.layout.scss","webpack:///./src/app/@theme/layouts/two-columns/two-columns.layout.ts","webpack:///./src/app/@theme/pipes/capitalize.pipe.ts","webpack:///./src/app/@theme/pipes/eva-icons.pipe.ts","webpack:///./src/app/@theme/pipes/index.ts","webpack:///./src/app/@theme/pipes/number-with-commas.pipe.ts","webpack:///./src/app/@theme/pipes/plural.pipe.ts","webpack:///./src/app/@theme/pipes/round.pipe.ts","webpack:///./src/app/@theme/pipes/timing.pipe.ts","webpack:///./src/app/@theme/styles/theme.corporate.ts","webpack:///./src/app/@theme/styles/theme.default.ts","webpack:///./src/app/@theme/theme.module.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/services/auth-guard.service.ts","webpack:///./src/app/services/users.service.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["var map = {\n\t\"./auth/auth.module\": [\n\t\t\"./src/app/auth/auth.module.ts\",\n\t\t\"auth-auth-module\"\n\t],\n\t\"./projects/projects.module\": [\n\t\t\"./src/app/pages/projects/projects.module.ts\",\n\t\t\"projects-projects-module\"\n\t],\n\t\"./settings/settings.module\": [\n\t\t\"./src/app/pages/settings/settings.module.ts\",\n\t\t\"settings-settings-module\"\n\t],\n\t\"app/pages/pages.module\": [\n\t\t\"./src/app/pages/pages.module.ts\",\n\t\t\"app-pages-pages-module\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";\nmodule.exports = webpackAsyncContext;","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NbAuthModule, NbPasswordAuthStrategy, NbAuthSimpleToken, NbPasswordAuthStrategyOptions } from '@nebular/auth';\r\nimport { NbSecurityModule, NbRoleProvider } from '@nebular/security';\r\nimport { of as observableOf } from 'rxjs';\r\nimport { getDeepFromObject } from '@nebular/auth/helpers';\r\n\r\nimport { throwIfAlreadyLoaded } from './module-import-guard';\r\nimport { StateService } from './utils';\r\nimport { HttpResponse } from '@angular/common/http';\r\n\r\nimport { User, UsersService } from '../services/users.service';\r\n\r\nconst DATA_SERVICES = [\r\n { provide: User, useClass: UsersService },\r\n];\r\n\r\nexport class NbSimpleRoleProvider extends NbRoleProvider {\r\n getRole() {\r\n // here you could provide any role based on any auth flow\r\n return observableOf('guest');\r\n }\r\n}\r\n\r\nconst defaultAuthSettings: any = {\r\n strategies: [\r\n NbPasswordAuthStrategy.setup({\r\n name: 'email',\r\n baseEndpoint: '/webapi/api/Users',\r\n login: {\r\n endpoint: '/Login',\r\n },\r\n logout: {\r\n endpoint: null,\r\n method: null,\r\n },\r\n register: {\r\n endpoint: '/Register',\r\n redirect: {\r\n success: null,\r\n failure: null,\r\n },\r\n },\r\n token: {\r\n class: NbAuthSimpleToken,\r\n key: 'id',\r\n getter: (module: string, res: HttpResponse, options: NbPasswordAuthStrategyOptions) => getDeepFromObject(\r\n res.body,\r\n options.token.key,\r\n ),\r\n },\r\n }),\r\n ],\r\n forms: {\r\n login: {\r\n redirectDelay: 0,\r\n strategy: 'email',\r\n rememberMe: true,\r\n showMessages: {\r\n success: true,\r\n error: true,\r\n },\r\n },\r\n requestPassword: {\r\n redirectDelay: 0,\r\n strategy: 'email',\r\n showMessages: {\r\n success: true,\r\n error: true,\r\n },\r\n },\r\n resetPassword: {\r\n redirectDelay: 0,\r\n strategy: 'email',\r\n showMessages: {\r\n success: true,\r\n error: true,\r\n },\r\n },\r\n logout: {\r\n redirectDelay: 0,\r\n strategy: 'email',\r\n },\r\n validation: {\r\n password: {\r\n required: true,\r\n minLength: 4,\r\n maxLength: 50,\r\n },\r\n email: {\r\n required: true,\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport const NB_CORE_PROVIDERS = [\r\n ...DATA_SERVICES,\r\n ...NbAuthModule.forRoot(defaultAuthSettings).providers,\r\n\r\n NbSecurityModule.forRoot({\r\n accessControl: {\r\n guest: {\r\n view: '*',\r\n },\r\n user: {\r\n parent: 'guest',\r\n create: '*',\r\n edit: '*',\r\n remove: '*',\r\n },\r\n admin: {\r\n parent: 'user',\r\n users: '*',\r\n },\r\n },\r\n }).providers,\r\n\r\n {\r\n provide: NbRoleProvider, useClass: NbSimpleRoleProvider,\r\n },\r\n StateService,\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n NbAuthModule,\r\n ],\r\n declarations: [],\r\n})\r\nexport class CoreModule {\r\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\r\n throwIfAlreadyLoaded(parentModule, 'CoreModule');\r\n }\r\n\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: CoreModule,\r\n providers: [\r\n ...NB_CORE_PROVIDERS,\r\n ],\r\n };\r\n }\r\n}\r\n","export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\r\n if (parentModule) {\r\n throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`);\r\n }\r\n}\r\n","import { StateService } from './state.service';\r\n\r\nexport { StateService };\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { of as observableOf, Observable, BehaviorSubject } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\nimport { NbLayoutDirectionService, NbLayoutDirection } from '@nebular/theme';\r\n\r\n@Injectable()\r\nexport class StateService implements OnDestroy {\r\n\r\n protected layouts: any = [\r\n {\r\n name: 'One Column',\r\n icon: 'nb-layout-default',\r\n id: 'one-column',\r\n selected: true,\r\n },\r\n {\r\n name: 'Two Column',\r\n icon: 'nb-layout-two-column',\r\n id: 'two-column',\r\n },\r\n {\r\n name: 'Center Column',\r\n icon: 'nb-layout-centre',\r\n id: 'center-column',\r\n },\r\n ];\r\n\r\n protected sidebars: any = [\r\n {\r\n name: 'Sidebar at layout start',\r\n icon: 'nb-layout-sidebar-left',\r\n id: 'start',\r\n selected: true,\r\n },\r\n {\r\n name: 'Sidebar at layout end',\r\n icon: 'nb-layout-sidebar-right',\r\n id: 'end',\r\n },\r\n ];\r\n\r\n protected layoutState$ = new BehaviorSubject(this.layouts[0]);\r\n protected sidebarState$ = new BehaviorSubject(this.sidebars[0]);\r\n\r\n alive = true;\r\n\r\n constructor(directionService: NbLayoutDirectionService) {\r\n directionService.onDirectionChange()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe(direction => this.updateSidebarIcons(direction));\r\n\r\n this.updateSidebarIcons(directionService.getDirection());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.alive = false;\r\n }\r\n\r\n private updateSidebarIcons(direction: NbLayoutDirection) {\r\n const [ startSidebar, endSidebar ] = this.sidebars;\r\n const isLtr = direction === NbLayoutDirection.LTR;\r\n const startIconClass = isLtr ? 'nb-layout-sidebar-left' : 'nb-layout-sidebar-right';\r\n const endIconClass = isLtr ? 'nb-layout-sidebar-right' : 'nb-layout-sidebar-left';\r\n startSidebar.icon = startIconClass;\r\n endSidebar.icon = endIconClass;\r\n }\r\n\r\n setLayoutState(state: any): any {\r\n this.layoutState$.next(state);\r\n }\r\n\r\n getLayoutStates(): Observable {\r\n return observableOf(this.layouts);\r\n }\r\n\r\n onLayoutState(): Observable {\r\n return this.layoutState$.asObservable();\r\n }\r\n\r\n setSidebarState(state: any): any {\r\n this.sidebarState$.next(state);\r\n }\r\n\r\n getSidebarStates(): Observable {\r\n return observableOf(this.sidebars);\r\n }\r\n\r\n onSidebarState(): Observable {\r\n return this.sidebarState$.asObservable();\r\n }\r\n}\r\n","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host {\\n width: 100%;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n.nb-theme-default :host .socials {\\n font-size: 2rem; }\\n.nb-theme-default :host .socials a {\\n padding: 0.4rem;\\n color: #a4abb3;\\n -webkit-transition: color ease-out 0.1s;\\n transition: color ease-out 0.1s; }\\n.nb-theme-default :host .socials a:hover {\\n color: #2a2a2a; }\\n@media (max-width: 575.98px) {\\n .nb-theme-default :host .socials {\\n font-size: 1.5rem; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-cosmic :host {\\n width: 100%;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n.nb-theme-cosmic :host .socials {\\n font-size: 2rem; }\\n.nb-theme-cosmic :host .socials a {\\n padding: 0.4rem;\\n color: #a1a1e5;\\n -webkit-transition: color ease-out 0.1s;\\n transition: color ease-out 0.1s; }\\n.nb-theme-cosmic :host .socials a:hover {\\n color: #ffffff; }\\n@media (max-width: 575.98px) {\\n .nb-theme-cosmic :host .socials {\\n font-size: 1.5rem; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-corporate :host {\\n width: 100%;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n.nb-theme-corporate :host .socials {\\n font-size: 2rem; }\\n.nb-theme-corporate :host .socials a {\\n padding: 0.4rem;\\n color: #a4abb3;\\n -webkit-transition: color ease-out 0.1s;\\n transition: color ease-out 0.1s; }\\n.nb-theme-corporate :host .socials a:hover {\\n color: #181818; }\\n@media (max-width: 575.98px) {\\n .nb-theme-corporate :host .socials {\\n font-size: 1.5rem; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvZm9vdGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxfdGhlbWluZy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9mb290ZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGNvcmVcXF9taXhpbnMuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvZm9vdGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL2Zvb3Rlci9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcdGhlbWVzXFxfZGVmYXVsdC5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9mb290ZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2Nvc21pYy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9mb290ZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2NvcnBvcmF0ZS5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9mb290ZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGdsb2JhbFxcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL2Zvb3Rlci9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvc3JjXFxhcHBcXEB0aGVtZVxcY29tcG9uZW50c1xcZm9vdGVyXFxmb290ZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL2Zvb3Rlci9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxib290c3RyYXBcXHNjc3NcXG1peGluc1xcX2JyZWFrcG9pbnRzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdIOztHQUVHO0FDVEg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FDdlRGOzs7O0dBSUc7QUNKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBR3ZURjs7OztHQUlHO0FGSkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBRXZURjs7OztHQUlHO0FESkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBSXZURjs7OztHQUlHO0FISkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBRXZURjs7OztHQUlHO0FESkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBS3ZURjs7OztHQUlHO0FOK0dDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUJFO0FBQ0Y7RU9sSUYsWUFBVztFQUNYLHFCQUFhO0VBQWIscUJBQWE7RUFBYixjQUFhO0VBQ2IsMEJBQThCO01BQTlCLHVCQUE4QjtVQUE5QiwrQkFBOEI7RUFDOUIsMEJBQW1CO01BQW5CLHVCQUFtQjtVQUFuQixvQkFBbUIsRVBrSWhCO0FPaElIO0lBQ0UsZ0JBQWUsRUFXaEI7QUFUQztNQUNFLGdCQUFlO01BQ2YsZUpxQmE7TUlwQmIsd0NBQStCO01BQS9CLGdDQUErQixFQUtoQztBQUhDO1FBQ0UsZUprQm1CLEVJakJwQjtBQ3FESDtJRGhEQTtNQUNFLGtCQUFpQixFQUNsQixFQUFBO0FQd0ZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUJFO0FBQ0Y7RU9sSUYsWUFBVztFQUNYLHFCQUFhO0VBQWIscUJBQWE7RUFBYixjQUFhO0VBQ2IsMEJBQThCO01BQTlCLHVCQUE4QjtVQUE5QiwrQkFBOEI7RUFDOUIsMEJBQW1CO01BQW5CLHVCQUFtQjtVQUFuQixvQkFBbUIsRVBrSWhCO0FPaElIO0lBQ0UsZ0JBQWUsRUFXaEI7QUFUQztNQUNFLGdCQUFlO01BQ2YsZUhDYTtNR0FiLHdDQUErQjtNQUEvQixnQ0FBK0IsRUFLaEM7QUFIQztRQUNFLGVIRm1CLEVHR3BCO0FDcURIO0lEaERBO01BQ0Usa0JBQWlCLEVBQ2xCLEVBQUE7QVB3RkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFtQkU7QUFDRjtFT2xJRixZQUFXO0VBQ1gscUJBQWE7RUFBYixxQkFBYTtFQUFiLGNBQWE7RUFDYiwwQkFBOEI7TUFBOUIsdUJBQThCO1VBQTlCLCtCQUE4QjtFQUM5QiwwQkFBbUI7TUFBbkIsdUJBQW1CO1VBQW5CLG9CQUFtQixFUGtJaEI7QU9oSUg7SUFDRSxnQkFBZSxFQVdoQjtBQVRDO01BQ0UsZ0JBQWU7TUFDZixlSnFCYTtNSXBCYix3Q0FBK0I7TUFBL0IsZ0NBQStCLEVBS2hDO0FBSEM7UUFDRSxlRkZtQixFRUdwQjtBQ3FESDtJRGhEQTtNQUNFLGtCQUFpQixFQUNsQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuXG4vKipcbiAqIFRoaXMgaXMgYSBzdGFydGluZyBwb2ludCB3aGVyZSB3ZSBkZWNsYXJlIHRoZSBtYXBzIG9mIHRoZW1lcyBhbmQgZ2xvYmFsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucy9taXhpbnNcbiAqL1xuXG5AaW1wb3J0ICdjb3JlL21peGlucyc7XG5AaW1wb3J0ICdjb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICdjb3JlL2JyZWFraW5nLW5vdGljZSc7XG5cbiRuYi1lbmFibGVkLXRoZW1lczogKCkgIWdsb2JhbDtcbiRuYi1lbmFibGUtY3NzLXZhcmlhYmxlczogZmFsc2UgIWdsb2JhbDtcblxuJG5iLXRoZW1lczogKCkgIWdsb2JhbDtcbiRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZDogKCkgIWdsb2JhbDtcbiRuYi10aGVtZXMtZXhwb3J0OiAoKSAhZ2xvYmFsO1xuXG5AZnVuY3Rpb24gbmItdGhlbWUoJGtleSkge1xuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIG5iLWdldC12YWx1ZSgkdGhlbWUsICRrZXksICR2YWx1ZSkge1xuICBAaWYgKHR5cGUtb2YoJHZhbHVlKSA9PSAnc3RyaW5nJykge1xuICAgICR0bXA6IG1hcC1nZXQoJHRoZW1lLCAkdmFsdWUpO1xuXG4gICAgQGlmICgkdG1wICE9IG51bGwpIHtcbiAgICAgIEByZXR1cm4gbmItZ2V0LXZhbHVlKCR0aGVtZSwgJHZhbHVlLCAkdG1wKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tY3NzLXZhcmlhYmxlcygkdmFyaWFibGVzKSB7XG4gICRyZXN1bHQ6ICgpO1xuICBAZWFjaCAkdmFyLCAkdmFsdWUgaW4gJHZhcmlhYmxlcyB7XG4gICAgJHJlc3VsdDogbWFwLXNldCgkcmVzdWx0LCAkdmFyLCAnLS12YXIoI3skdmFyfSknKTtcbiAgfVxuXG4gIEBkZWJ1ZyAkcmVzdWx0O1xuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBmdW5jdGlvbiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSkge1xuICAkdGhlbWU6ICR0aGVtZSAhZ2xvYmFsO1xuICAkdGhlbWUtbmFtZTogJHRoZW1lLW5hbWUgIWdsb2JhbDtcbiAgQGlmICgkbmItZW5hYmxlLWNzcy12YXJpYWJsZXMpIHtcbiAgICAkdGhlbWU6IGNvbnZlcnQtdG8tY3NzLXZhcmlhYmxlcygkdGhlbWUpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiAkdGhlbWU7XG59XG5cbkBmdW5jdGlvbiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsICRuYW1lLCAkZGVmYXVsdDogbnVsbCkge1xuXG4gICR0aGVtZS1kYXRhOiAoKTtcblxuXG4gIEBpZiAoJGRlZmF1bHQgIT0gbnVsbCkge1xuXG4gICAgJHRoZW1lOiBtYXAtbWVyZ2UobWFwLWdldCgkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQsICRkZWZhdWx0KSwgJHRoZW1lKTtcbiAgICAkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkbmFtZSwgJHRoZW1lKSAhZ2xvYmFsO1xuXG4gICAgJHRoZW1lLWRhdGE6IG1hcC1zZXQoJHRoZW1lLWRhdGEsIGRhdGEsICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1leHBvcnQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1leHBvcnQsICRuYW1lLCBtYXAtc2V0KCR0aGVtZS1kYXRhLCBwYXJlbnQsICRkZWZhdWx0KSkgIWdsb2JhbDtcblxuICB9IEBlbHNlIHtcbiAgICAkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkbmFtZSwgJHRoZW1lKSAhZ2xvYmFsO1xuXG4gICAgJHRoZW1lLWRhdGE6IG1hcC1zZXQoJHRoZW1lLWRhdGEsIGRhdGEsICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1leHBvcnQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1leHBvcnQsICRuYW1lLCBtYXAtc2V0KCR0aGVtZS1kYXRhLCBwYXJlbnQsIG51bGwpKSAhZ2xvYmFsO1xuICB9XG5cbiAgJHRoZW1lLXBhcnNlZDogKCk7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkdGhlbWUge1xuICAgICR0aGVtZS1wYXJzZWQ6IG1hcC1zZXQoJHRoZW1lLXBhcnNlZCwgJGtleSwgbmItZ2V0LXZhbHVlKCR0aGVtZSwgJGtleSwgJHZhbHVlKSk7XG4gIH1cblxuICAvLyBlbmFibGUgcmlnaHQgYXdheSB3aGVuIGluc3RhbGxlZFxuICAkdGhlbWUtcGFyc2VkOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLXBhcnNlZCwgJG5hbWUpO1xuICBAcmV0dXJuIG1hcC1zZXQoJG5iLXRoZW1lcywgJG5hbWUsICR0aGVtZS1wYXJzZWQpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LWVuYWJsZWQtdGhlbWVzKCkge1xuICAkdGhlbWVzLXRvLWluc3RhbGw6ICgpO1xuXG4gIEBpZiAobGVuZ3RoKCRuYi1lbmFibGVkLXRoZW1lcykgPiAwKSB7XG4gICAgQGVhY2ggJHRoZW1lLW5hbWUgaW4gJG5iLWVuYWJsZWQtdGhlbWVzIHtcbiAgICAgICR0aGVtZXMtdG8taW5zdGFsbDogbWFwLXNldCgkdGhlbWVzLXRvLWluc3RhbGwsICR0aGVtZS1uYW1lLCBtYXAtZ2V0KCRuYi10aGVtZXMsICR0aGVtZS1uYW1lKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkdGhlbWVzLXRvLWluc3RhbGw6ICRuYi10aGVtZXM7XG4gIH1cblxuICBAcmV0dXJuICR0aGVtZXMtdG8taW5zdGFsbDtcbn1cblxuQG1peGluIGluc3RhbGwtY3NzLXZhcmlhYmxlcygkdGhlbWUtbmFtZSwgJHZhcmlhYmxlcykge1xuICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0ge1xuICAgIEBlYWNoICR2YXIsICR2YWx1ZSBpbiAkdmFyaWFibGVzIHtcbiAgICAgIC0tI3skdmFyfTogJHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPOiB3ZSBoaWRlIDpob3N0IGluc2lkZSBvZiBpdCB3aGljaCBpcyBub3Qgb2J2aW91c1xuQG1peGluIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xuXG4gICR0aGVtZXMtdG8taW5zdGFsbDogZ2V0LWVuYWJsZWQtdGhlbWVzKCk7XG5cbiAgQGVhY2ggJHRoZW1lLW5hbWUsICR0aGVtZSBpbiAkdGhlbWVzLXRvLWluc3RhbGwge1xuICAgIC8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuICAgIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSA6aG9zdCB7XG4gICAgICAkdGhlbWU6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbmItZm9yLXRoZW1lKCRuYW1lKSB7XG4gIEBpZiAoJHRoZW1lLW5hbWUgPT0gJG5hbWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuICAgIFxuLy8gQWRkIGNvbnRlbnQgZm9yIHRoZW1lIGludG8gYSBsaXN0IG9mIHRoZW1lc1xuQG1peGluIG5iLWZvci10aGVtZXMoJG5hbWVzLi4uKSB7XG4gIEBlYWNoICRuYW1lIGluICRuYW1lcyB7XG4gICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKCRuYW1lKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG5iLWV4Y2VwdC10aGVtZSgkbmFtZSkge1xuICBAaWYgKCR0aGVtZS1uYW1lICE9ICRuYW1lKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gQWRkIGNvbnRlbnQgZXhjZXB0IGZvciB0aGVtZSBpbnRvIGEgbGlzdCBvZiB0aGVtZXNcbkBtaXhpbiBuYi1leGNlcHQtZm9yLXRoZW1lcygkbmFtZXMuLi4pIHtcbiAgQGVhY2ggJG5hbWUgaW4gJG5hbWVzIHtcbiAgICBAaW5jbHVkZSBuYi1leGNlcHQtdGhlbWUoJG5hbWUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPOiBhbm90aGVyIG1peGluZyBmb3IgdGhlIGFsbW9zdCBzYW1lIHRoaW5nXG5AbWl4aW4gbmItaW5zdGFsbC1yb290LWNvbXBvbmVudCgpIHtcbiAgQHdhcm4gJ2BuYi1pbnN0YWxsLXJvb3QtY29tcG9uZW50YCBpcyBkZXByaWNhdGVkLCByZXBsYWNlIHdpdGggYG5iLWluc3RhbGwtY29tcG9uZW50YCwgYXMgYGJvZHlgIGlzIHJvb3QgZWxlbWVudCBub3cnO1xuXG4gIEBpbmNsdWRlIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1pbnN0YWxsLWdsb2JhbCgpIHtcbiAgJHRoZW1lcy10by1pbnN0YWxsOiBnZXQtZW5hYmxlZC10aGVtZXMoKTtcblxuICBAZWFjaCAkdGhlbWUtbmFtZSwgJHRoZW1lIGluICR0aGVtZXMtdG8taW5zdGFsbCB7XG4gICAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IHtcbiAgICAgICR0aGVtZTogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgJHRlbXA6IG5iLWJyZWFraW5nLW5vdGljZS1zaG93KCR0aGVtZSk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBtaXhpbiBuYi1zY3JvbGxiYXJzKCRmZywgJGJnLCAkc2l6ZSwgJGJvcmRlci1yYWRpdXM6ICRzaXplIC8gMikge1xuICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICRmZztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkYmc7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmVcbiAgLy8gRm9yIEludGVybmV0IEV4cGxvcmVyXG4gIHNjcm9sbGJhci1mYWNlLWNvbG9yOiAkZmc7XG4gIHNjcm9sbGJhci10cmFjay1jb2xvcjogJGJnO1xufVxuXG5AbWl4aW4gbmItcmFkaWFsLWdyYWRpZW50KCRjb2xvci0xLCAkY29sb3ItMiwgJGNvbG9yLTMpIHtcbiAgYmFja2dyb3VuZDogJGNvbG9yLTI7IC8qIE9sZCBicm93c2VycyAqL1xuICBiYWNrZ3JvdW5kOiAtbW96LXJhZGlhbC1ncmFkaWVudChib3R0b20sIGVsbGlwc2UgY292ZXIsICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogRkYzLjYtMTUgKi9cbiAgYmFja2dyb3VuZDogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoYm90dG9tLCBlbGxpcHNlIGNvdmVyLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIENocm9tZTEwLTI1LFNhZmFyaTUuMS02ICovXG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGJvdHRvbSwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBXM0MsIElFMTArLCBGRjE2KywgQ2hyb21lMjYrLCBPcGVyYTEyKywgU2FmYXJpNysgKi9cbiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJGNvbG9yLTEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRDb2xvcnN0cj0nJGNvbG9yLTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFkaWVudFR5cGU9MSk7IC8qIElFNi05IGZhbGxiYWNrIG9uIGhvcml6b250YWwgZ3JhZGllbnQgKi9cbn1cblxuQG1peGluIG5iLXJpZ2h0LWdyYWRpZW50KCRsZWZ0LWNvbG9yLCAkcmlnaHQtY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbGVmdC1jb2xvciwgJHJpZ2h0LWNvbG9yKTtcbn1cblxuQG1peGluIG5iLWhlYWRpbmdzKCRmcm9tOiAxLCAkdG86IDYpIHtcbiAgQGZvciAkaSBmcm9tICRmcm9tIHRocm91Z2ggJHRvIHtcbiAgICBoI3skaX0ge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMtYWN0aXZlIHtcbiAgJjpmb2N1cyxcbiAgJjphY3RpdmUsXG4gICY6aG92ZXIge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBjZW50ZXItaG9yaXpvbnRhbC1hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gIGxlZnQ6IDUwJTtcbn1cblxuQG1peGluIGluc3RhbGwtdGh1bWIoKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci10aHVtYidcbiAgICAnOjotbW96LXJhbmdlLXRodW1iJ1xuICAgICc6Oi1tcy10aHVtYidcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtdHJhY2soKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjaydcbiAgICAnOjotbW96LXJhbmdlLXRyYWNrJ1xuICAgICc6Oi1tcy10cmFjaydcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKSB7XG4gICRwbGFjZWhvbGRlci1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyJ1xuICAgICc6Oi1tb3otcGxhY2Vob2xkZXInXG4gICAgJzotbW96LXBsYWNlaG9sZGVyJ1xuICAgICc6LW1zLWlucHV0LXBsYWNlaG9sZGVyJ1xuICApO1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpO1xuICB9XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICRwbGFjZWhvbGRlci1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzI3skc2VsZWN0b3J9IHtcbiAgICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyLWZvY3VzKCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpIHtcbiAgY29sb3I6ICRjb2xvcjtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlci1mb2N1cygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG59XG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGUuLi4pIHtcbiAgJG1heDogbGVuZ3RoKCRhbmltYXRlKTtcbiAgJGFuaW1hdGlvbnM6ICcnO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XG4gICAgJGFuaW1hdGlvbnM6ICN7JGFuaW1hdGlvbnMgKyBudGgoJGFuaW1hdGUsICRpKX07XG5cbiAgICBAaWYgJGkgPCAkbWF4IHtcbiAgICAgICRhbmltYXRpb25zOiAjeyRhbmltYXRpb25zICsgJywgJ307XG4gICAgfVxuICB9XG4gIC13ZWJraXQtYW5pbWF0aW9uOiAkYW5pbWF0aW9ucztcbiAgLW1vei1hbmltYXRpb246ICAgICRhbmltYXRpb25zO1xuICAtby1hbmltYXRpb246ICAgICAgJGFuaW1hdGlvbnM7XG4gIGFuaW1hdGlvbjogICAgICAgICAkYW5pbWF0aW9ucztcbn1cblxuQG1peGluIGtleWZyYW1lcygkYW5pbWF0aW9uTmFtZSkge1xuICBALXdlYmtpdC1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1vLWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuQG1peGluIGJ0bi1wdWxzZSgkbmFtZSwgJGNvbG9yKSB7XG4gICYuYnRuLXB1bHNlIHtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24oYnRuLSN7JG5hbWV9LXB1bHNlIDEuNXMgaW5maW5pdGUpO1xuICB9XG5cbiAgQGluY2x1ZGUga2V5ZnJhbWVzKGJ0bi0jeyRuYW1lfS1wdWxzZSkge1xuICAgIDAlIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBvcGFjaXR5OiBuYi10aGVtZShidG4tZGlzYWJsZWQtb3BhY2l0eSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMXJlbSAwICRjb2xvcjtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIH1cbiAgfVxufVxuXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG5cbkBtaXhpbiBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCRzZWxlY3RvciwgJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICAjeyRzZWxlY3Rvcn0gJiB7XG4gICAgQGlmICRwcm9wICE9IG51bGwge1xuICAgICAgI3skcHJvcH06ICR2YWx1ZTtcbiAgICB9XG5cbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItbHRyKCRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgQGluY2x1ZGUgX3ByZXBlbmQtd2l0aC1zZWxlY3RvcignW2Rpcj1sdHJdJywgJHByb3AsICR2YWx1ZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1ydGwoJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICBAaW5jbHVkZSBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCdbZGlyPXJ0bF0nLCAkcHJvcCwgJHZhbHVlKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH07XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbi8vLyBTbGlnaHRseSBsaWdodGVuIGEgY29sb3Jcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGNvbG9yIHRvIHRpbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBwZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHJldHVybmVkIGNvbG9yXG4vLy8gQHJldHVybiB7Q29sb3J9XG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KHdoaXRlLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbiBhIGNvbG9yXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byBzaGFkZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIHBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gcmV0dXJuZWQgY29sb3Jcbi8vLyBAcmV0dXJuIHtDb2xvcn1cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KGJsYWNrLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIG1hcC1zZXQoJG1hcCwgJGtleSwgJHZhbHVlOiBudWxsKSB7XG4gICRuZXc6ICgka2V5OiAkdmFsdWUpO1xuICBAcmV0dXJuIG1hcC1tZXJnZSgkbWFwLCAkbmV3KTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuXG4kdGhlbWU6IChcbiAgZm9udC1tYWluOiB1bnF1b3RlKCdcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZicpLFxuICBmb250LXNlY29uZGFyeTogZm9udC1tYWluLFxuXG4gIGZvbnQtd2VpZ2h0LXRoaW46IDIwMCxcbiAgZm9udC13ZWlnaHQtbGlnaHQ6IDMwMCxcbiAgZm9udC13ZWlnaHQtbm9ybWFsOiA0MDAsXG4gIGZvbnQtd2VpZ2h0LWJvbGRlcjogNTAwLFxuICBmb250LXdlaWdodC1ib2xkOiA2MDAsXG4gIGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQ6IDgwMCxcblxuICAvLyBUT0RPOiB1c2UgaXQgYXMgYSBkZWZhdWx0IGZvbnQtc2l6ZVxuICBiYXNlLWZvbnQtc2l6ZTogMTZweCxcblxuICBmb250LXNpemUteGxnOiAxLjI1cmVtLFxuICBmb250LXNpemUtbGc6IDEuMTI1cmVtLFxuICBmb250LXNpemU6IDFyZW0sXG4gIGZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG4gIGZvbnQtc2l6ZS14czogMC43NXJlbSxcblxuICByYWRpdXM6IDAuMzc1cmVtLFxuICBwYWRkaW5nOiAxLjI1cmVtLFxuICBtYXJnaW46IDEuNXJlbSxcbiAgbGluZS1oZWlnaHQ6IDEuMjUsXG5cbiAgY29sb3ItYmc6ICNmZmZmZmYsXG4gIGNvbG9yLWJnLWFjdGl2ZTogI2U5ZWRmMixcbiAgY29sb3ItZmc6ICNhNGFiYjMsXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICMyYTJhMmEsXG4gIGNvbG9yLWZnLXRleHQ6ICM0YjRiNGIsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogIzQwZGM3ZSxcblxuICBzZXBhcmF0b3I6ICNlYmVlZjIsXG5cbiAgY29sb3ItZ3JheTogcmdiYSg4MSwgMTEzLCAxNjUsIDAuMTUpLFxuICBjb2xvci1uZXV0cmFsOiB0cmFuc3BhcmVudCxcbiAgY29sb3Itd2hpdGU6ICNmZmZmZmYsXG4gIGNvbG9yLWRpc2FibGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCksXG5cbiAgY29sb3ItcHJpbWFyeTogIzhhN2ZmZixcbiAgY29sb3Itc3VjY2VzczogIzQwZGM3ZSxcbiAgY29sb3ItaW5mbzogIzRjYTZmZixcbiAgY29sb3Itd2FybmluZzogI2ZmYTEwMCxcbiAgY29sb3ItZGFuZ2VyOiAjZmY0YzZhLFxuXG4gIC8vIFRPRE86IG1vdmUgdG8gY29uc3RhbnRzXG4gIHNvY2lhbC1jb2xvci1mYWNlYm9vazogIzNiNTk5OCxcbiAgc29jaWFsLWNvbG9yLXR3aXR0ZXI6ICM1NWFjZWUsXG4gIHNvY2lhbC1jb2xvci1nb29nbGU6ICNkZDRiMzksXG4gIHNvY2lhbC1jb2xvci1saW5rZWRpbjogIzAxNzdiNSxcbiAgc29jaWFsLWNvbG9yLWdpdGh1YjogIzZiNmI2YixcbiAgc29jaWFsLWNvbG9yLXN0YWNrb3ZlcmZsb3c6ICMyZjk2ZTgsXG4gIHNvY2lhbC1jb2xvci1kcmliYmxlOiAjZjI2Nzk4LFxuICBzb2NpYWwtY29sb3ItYmVoYW5jZTogIzAwOTNmYSxcblxuICBib3JkZXItY29sb3I6IGNvbG9yLWdyYXksXG4gIHNoYWRvdzogMCAycHggMTJweCAwICNkZmUzZWIsXG5cbiAgbGluay1jb2xvcjogIzNkY2M2ZCxcbiAgbGluay1jb2xvci1ob3ZlcjogIzJlZTU2YixcbiAgbGluay1jb2xvci12aXNpdGVkOiBsaW5rLWNvbG9yLFxuXG4gIHNjcm9sbGJhci1mZzogI2RhZGFkYSxcbiAgc2Nyb2xsYmFyLWJnOiAjZjJmMmYyLFxuICBzY3JvbGxiYXItd2lkdGg6IDVweCxcbiAgc2Nyb2xsYmFyLXRodW1iLXJhZGl1czogMi41cHgsXG5cbiAgcmFkaWFsLWdyYWRpZW50OiBub25lLFxuICBsaW5lYXItZ3JhZGllbnQ6IG5vbmUsXG5cbiAgY2FyZC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FyZC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGNhcmQtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FyZC1mZzogY29sb3ItZmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgY2FyZC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWJnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWlnaHQteHhzbWFsbDogOTZweCxcbiAgY2FyZC1oZWlnaHQteHNtYWxsOiAyMTZweCxcbiAgY2FyZC1oZWlnaHQtc21hbGw6IDMzNnB4LFxuICBjYXJkLWhlaWdodC1tZWRpdW06IDQ1NnB4LFxuICBjYXJkLWhlaWdodC1sYXJnZTogNTc2cHgsXG4gIGNhcmQtaGVpZ2h0LXhsYXJnZTogNjk2cHgsXG4gIGNhcmQtaGVpZ2h0LXh4bGFyZ2U6IDgxNnB4LFxuICBjYXJkLXNoYWRvdzogc2hhZG93LFxuICBjYXJkLWJvcmRlci13aWR0aDogMCxcbiAgY2FyZC1ib3JkZXItdHlwZTogc29saWQsXG4gIGNhcmQtYm9yZGVyLWNvbG9yOiBjb2xvci1iZyxcbiAgY2FyZC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNhcmQtcGFkZGluZzogcGFkZGluZyxcbiAgY2FyZC1tYXJnaW46IG1hcmdpbixcbiAgY2FyZC1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBjYXJkLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgY2FyZC1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIGNhcmQtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGNhcmQtaGVhZGVyLWZnOiBjb2xvci1mZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWZnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWFkZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBjYXJkLWhlYWRlci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYXJkLWhlYWRlci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjYXJkLWhlYWRlci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYXJkLWhlYWRlci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBjYXJkLWhlYWRlci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgY2FyZC1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgY2FyZC1oZWFkZXItYm9yZGVyLWNvbG9yOiBjYXJkLXNlcGFyYXRvcixcblxuICBoZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBoZWFkZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIGhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgaGVhZGVyLWJnOiBjb2xvci1iZyxcbiAgaGVhZGVyLWhlaWdodDogNC43NXJlbSxcbiAgaGVhZGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGhlYWRlci1zaGFkb3c6IHNoYWRvdyxcblxuICBmb290ZXItaGVpZ2h0OiA0LjcyNXJlbSxcbiAgZm9vdGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGZvb3Rlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWZnLWhpZ2hsaWdodDogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgZm9vdGVyLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBmb290ZXItc2hhZG93OiBzaGFkb3csXG5cbiAgbGF5b3V0LWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIGxheW91dC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbGF5b3V0LWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgbGF5b3V0LWZnOiBjb2xvci1mZyxcbiAgbGF5b3V0LWJnOiAjZWJlZmY1LFxuICBsYXlvdXQtbWluLWhlaWdodDogMTAwdmgsXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiA5MDBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLW1pbi13aWR0aDogMzAwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1tYXgtd2lkdGg6IDE5MjBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLWJnOiBsYXlvdXQtYmcsXG4gIGxheW91dC13aW5kb3ctbW9kZS1wYWRkaW5nLXRvcDogNC43NXJlbSxcbiAgbGF5b3V0LXdpbmRvdy1zaGFkb3c6IHNoYWRvdyxcbiAgbGF5b3V0LXBhZGRpbmc6IDIuMjVyZW0gMi4yNXJlbSAwLjc1cmVtLFxuICBsYXlvdXQtbWVkaXVtLXBhZGRpbmc6IDEuNXJlbSAxLjVyZW0gMC41cmVtLFxuICBsYXlvdXQtc21hbGwtcGFkZGluZzogMXJlbSAxcmVtIDAsXG5cbiAgc2lkZWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc2lkZWJhci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNpZGViYXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNpZGViYXItYmc6IGNvbG9yLWJnLFxuICBzaWRlYmFyLWhlaWdodDogMTAwdmgsXG4gIHNpZGViYXItd2lkdGg6IDE2cmVtLFxuICBzaWRlYmFyLXdpZHRoLWNvbXBhY3Q6IDMuNXJlbSxcbiAgc2lkZWJhci1wYWRkaW5nOiBwYWRkaW5nLFxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IDMuNXJlbSxcbiAgc2lkZWJhci1mb290ZXItaGVpZ2h0OiAzLjVyZW0sXG4gIHNpZGViYXItc2hhZG93OiBzaGFkb3csXG5cbiAgbWVudS1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIG1lbnUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1lbnUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuXG4gIG1lbnUtc3VibWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oaWdobGlnaHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiBub25lLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItZmc6IG1lbnUtc3VibWVudS1hY3RpdmUtZmcsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1iZzogbWVudS1zdWJtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItd2lkdGg6IDAuMTI1cmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1lbnUtc3VibWVudS1pdGVtLXBhZGRpbmc6IDAuNXJlbSAxcmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1jb250YWluZXItcGFkZGluZzogMCAxLjI1cmVtLFxuICBtZW51LXN1Ym1lbnUtcGFkZGluZzogMC41cmVtLFxuXG4gIG1lbnUtZ3JvdXAtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1ncm91cC1mb250LXNpemU6IDAuODc1cmVtLFxuICBtZW51LWdyb3VwLWZnOiBjb2xvci1mZyxcbiAgbWVudS1ncm91cC1wYWRkaW5nOiAxcmVtIDEuMjVyZW0sXG4gIG1lbnUtaXRlbS1wYWRkaW5nOiAwLjY3NXJlbSAwLjc1cmVtLFxuICBtZW51LWl0ZW0tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIG1lbnUtaWNvbi1mb250LXNpemU6IDIuNXJlbSxcbiAgbWVudS1pY29uLW1hcmdpbjogMCAwLjI1cmVtIDAsXG4gIG1lbnUtaWNvbi1jb2xvcjogY29sb3ItZmcsXG4gIG1lbnUtaWNvbi1hY3RpdmUtY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHRhYnMtY29udGVudC1mb250LWZhbWlseTogZm9udC1tYWluLFxuICB0YWJzLWNvbnRlbnQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIHRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICB0YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHRhYnMtY29udGVudC1wYWRkaW5nOiAwLFxuICB0YWJzLWhlYWRlci1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHRhYnMtZmc6IGNvbG9yLWZnLFxuICB0YWJzLWZnLWRpc2FibGVkOiB0YWJzLWZnLFxuICB0YWJzLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIHRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLWRlZ3JlZXM6IDAsXG4gIHRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgcm91dGUtdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHJvdXRlLXRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHJvdXRlLXRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICByb3V0ZS10YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHJvdXRlLXRhYnMtaGVhZGVyLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgcm91dGUtdGFicy1mZzogY29sb3ItZmcsXG4gIHJvdXRlLXRhYnMtZmctZGlzYWJsZWQ6IHJvdXRlLXRhYnMtZmcsXG4gIHJvdXRlLXRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgcm91dGUtdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJvdXRlLXRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgdXNlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgdXNlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHVzZXItYmc6IGNvbG9yLWJnLFxuICB1c2VyLWZnOiBjb2xvci1mZyxcbiAgdXNlci1mZy1oaWdobGlnaHQ6ICNiY2MzY2MsXG4gIHVzZXItZm9udC1mYW1pbHktc2Vjb25kYXJ5OiBmb250LXNlY29uZGFyeSxcbiAgdXNlci1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIHVzZXItc2l6ZS1tZWRpdW06IDIuNXJlbSxcbiAgdXNlci1zaXplLWxhcmdlOiAzLjI1cmVtLFxuICB1c2VyLXNpemUteGxhcmdlOiA0cmVtLFxuXG4gIHBvcG92ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHBvcG92ZXItYmc6IGNvbG9yLWJnLFxuICBwb3BvdmVyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgcG9wb3Zlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIHBvcG92ZXItc2hhZG93OiBub25lLFxuICBwb3BvdmVyLWFycm93LXNpemU6IDExcHgsXG5cbiAgY29udGV4dC1tZW51LWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjb250ZXh0LW1lbnUtYmc6IGNvbG9yLWJnLFxuICBjb250ZXh0LW1lbnUtYWN0aXZlLWZnOiBjb2xvci13aGl0ZSxcbiAgY29udGV4dC1tZW51LWFjdGl2ZS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY29udGV4dC1tZW51LXNoYWRvdzogbm9uZSxcbiAgY29udGV4dC1tZW51LWFycm93LXNpemU6IDExcHgsXG5cbiAgYWN0aW9ucy1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWN0aW9ucy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGFjdGlvbnMtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhY3Rpb25zLWZnOiBjb2xvci1mZyxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG4gIGFjdGlvbnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjdGlvbnMtcGFkZGluZzogcGFkZGluZyxcbiAgYWN0aW9ucy1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1tZWRpdW06IDIuMjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1sYXJnZTogMy41cmVtLFxuXG4gIHNlYXJjaC1idG4tb3Blbi1mZzogY29sb3ItZmcsXG4gIHNlYXJjaC1idG4tY2xvc2UtZmc6XHRjb2xvci1mZyxcbiAgc2VhcmNoLWJnOiBsYXlvdXQtYmcsXG4gIHNlYXJjaC1iZy1zZWNvbmRhcnk6IGNvbG9yLWZnLFxuICBzZWFyY2gtdGV4dDogY29sb3ItZmctaGVhZGluZyxcbiAgc2VhcmNoLWluZm86IGNvbG9yLWZnLFxuICBzZWFyY2gtZGFzaDogY29sb3ItZmcsXG4gIHNlYXJjaC1wbGFjZWhvbGRlcjogY29sb3ItZmcsXG5cbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBzbWFydC10YWJsZS1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWJnOiBjb2xvci1iZyxcblxuICBzbWFydC10YWJsZS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBzbWFydC10YWJsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc21hcnQtdGFibGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgc21hcnQtdGFibGUtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzbWFydC10YWJsZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtYmc6IGNvbG9yLWJnLFxuXG4gIHNtYXJ0LXRhYmxlLWJnLWV2ZW46ICNmNWY3ZmMsXG4gIHNtYXJ0LXRhYmxlLWZnLXNlY29uZGFyeTogY29sb3ItZmcsXG4gIHNtYXJ0LXRhYmxlLWJnLWFjdGl2ZTogI2U2ZjNmZixcbiAgc21hcnQtdGFibGUtcGFkZGluZzogMC44NzVyZW0gMS4yNXJlbSxcbiAgc21hcnQtdGFibGUtZmlsdGVyLXBhZGRpbmc6IDAuMzc1cmVtIDAuNXJlbSxcbiAgc21hcnQtdGFibGUtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ib3JkZXItd2lkdGg6IDFweCxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWZnLWFjdGl2ZTogI2ZmZmZmZixcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJnLWFjdGl2ZTogY29sb3Itc3VjY2VzcyxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWhvdmVyOiByZ2JhKDAsIDAsIDAsIDAuMDUpLFxuXG4gIHRvYXN0ci1iZzogY29sb3ItYmcsXG4gIHRvYXN0ci1wYWRkaW5nOiAxLjEyNXJlbSxcbiAgdG9hc3RyLWZnOiBjb2xvci1mZy10ZXh0LFxuICB0b2FzdHItYm9yZGVyOiAwLjEyNXJlbSBzb2xpZCxcbiAgdG9hc3RyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgdG9hc3RyLWJvcmRlci1jb2xvcjogI2JjYzNjYyxcbiAgdG9hc3RyLWljb24tcmFkaXVzOiAwLjI1cmVtLFxuICB0b2FzdHItc2hhZG93OiBzaGFkb3csXG5cbiAgYnRuLWZnOiBjb2xvci13aGl0ZSxcbiAgYnRuLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYnRuLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYnRuLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgYnRuLWN1cnNvcjogZGVmYXVsdCxcblxuICBidG4tcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgYnRuLXNlY29uZGFyeS1iZzogdHJhbnNwYXJlbnQsXG4gIGJ0bi1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBidG4tc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgYnRuLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGJ0bi1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogI2RhZGZlNixcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXItd2lkdGg6IDJweCxcblxuICBidG4tcGFkZGluZy15LWxnOiAwLjg3NXJlbSxcbiAgYnRuLXBhZGRpbmcteC1sZzogMS43NXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuXG4gIC8vIGRlZmF1bHQgc2l6ZVxuICBidG4tcGFkZGluZy15LW1kOiAwLjc1cmVtLFxuICBidG4tcGFkZGluZy14LW1kOiAxLjVyZW0sXG4gIGJ0bi1mb250LXNpemUtbWQ6IDFyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS1zbTogMC42MjVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtc206IDEuNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS14czogMC41cmVtLFxuICBidG4tcGFkZGluZy14LXhzOiAxLjI1cmVtLFxuICBidG4tZm9udC1zaXplLXhzOiAwLjc1cmVtLFxuXG4gIGJ0bi1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGJ0bi1yZWN0YW5nbGUtYm9yZGVyLXJhZGl1czogMC4yNXJlbSxcbiAgYnRuLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1czogMC43NXJlbSxcbiAgYnRuLXJvdW5kLWJvcmRlci1yYWRpdXM6IDEuNXJlbSxcblxuICBidG4taGVyby1zaGFkb3c6IG5vbmUsXG4gIGJ0bi1oZXJvLXRleHQtc2hhZG93OiBub25lLFxuICBidG4taGVyby1iZXZlbC1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kZWdyZWU6IDIwZGVnLFxuICBidG4taGVyby1wcmltYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zdWNjZXNzLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby13YXJuaW5nLWRlZ3JlZTogMTBkZWcsXG4gIGJ0bi1oZXJvLWluZm8tZGVncmVlOiAtMTBkZWcsXG4gIGJ0bi1oZXJvLWRhbmdlci1kZWdyZWU6IC0yMGRlZyxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG5cbiAgYnRuLW91dGxpbmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWhvdmVyLWZnOiAjZmZmZmZmLFxuICBidG4tb3V0bGluZS1mb2N1cy1mZzogY29sb3ItZmctaGVhZGluZyxcblxuICBidG4tZ3JvdXAtYmc6IGxheW91dC1iZyxcbiAgYnRuLWdyb3VwLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tZ3JvdXAtc2VwYXJhdG9yOiAjZGFkZmU2LFxuXG4gIGZvcm0tY29udHJvbC10ZXh0LXByaW1hcnktY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvcm0tY29udHJvbC1iZzogY29sb3ItYmcsXG4gIGZvcm0tY29udHJvbC1mb2N1cy1iZzogY29sb3ItYmcsXG5cbiAgZm9ybS1jb250cm9sLWJvcmRlci13aWR0aDogMnB4LFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBmb3JtLWNvbnRyb2wtc2VtaS1yb3VuZC1ib3JkZXItcmFkaXVzOiAwLjc1cmVtLFxuICBmb3JtLWNvbnRyb2wtcm91bmQtYm9yZGVyLXJhZGl1czogMS41cmVtLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOiAjZGFkZmU2LFxuICBmb3JtLWNvbnRyb2wtc2VsZWN0ZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuXG4gIGZvcm0tY29udHJvbC1pbmZvLWJvcmRlci1jb2xvcjogY29sb3ItaW5mbyxcbiAgZm9ybS1jb250cm9sLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBmb3JtLWNvbnRyb2wtZGFuZ2VyLWJvcmRlci1jb2xvcjogY29sb3ItZGFuZ2VyLFxuICBmb3JtLWNvbnRyb2wtd2FybmluZy1ib3JkZXItY29sb3I6IGNvbG9yLXdhcm5pbmcsXG5cbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yOiBjb2xvci1mZyxcbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZTogMXJlbSxcblxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplOiAxcmVtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZzogMC43NXJlbSAxLjEyNXJlbSxcbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZy1zbTogMC4zNzVyZW0gMS4xMjVyZW0sXG4gIGZvcm0tY29udHJvbC1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmctbGc6IDEuMTI1cmVtLFxuXG4gIGZvcm0tY29udHJvbC1sYWJlbC1mb250LXdlaWdodDogNDAwLFxuXG4gIGZvcm0tY29udHJvbC1mZWVkYmFjay1mb250LXNpemU6IDAuODc1cmVtLFxuICBmb3JtLWNvbnRyb2wtZmVlZGJhY2stZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcblxuICBjaGVja2JveC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWJvcmRlci1jb2xvcjogZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcixcbiAgY2hlY2tib3gtY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcblxuICBjaGVja2JveC1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBjaGVja2JveC1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBjaGVja2JveC1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWRpc2FibGVkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGVhZGluZyxcbiAgY2hlY2tib3gtZGlzYWJsZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIG1vZGFsLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtb2RhbC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIG1vZGFsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWZnOiBjb2xvci1mZy10ZXh0LFxuICBtb2RhbC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtb2RhbC1iZzogY29sb3ItYmcsXG4gIG1vZGFsLWJvcmRlcjogdHJhbnNwYXJlbnQsXG4gIG1vZGFsLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbW9kYWwtcGFkZGluZzogcGFkZGluZyxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1vZGFsLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgbW9kYWwtYm9keS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBtb2RhbC1ib2R5LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWJvZHktZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1vZGFsLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuXG4gIGJhZGdlLWZnLXRleHQ6IGNvbG9yLXdoaXRlLFxuICBiYWRnZS1wcmltYXJ5LWJnLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBiYWRnZS1zdWNjZXNzLWJnLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBiYWRnZS1pbmZvLWJnLWNvbG9yOiBjb2xvci1pbmZvLFxuICBiYWRnZS13YXJuaW5nLWJnLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuICBiYWRnZS1kYW5nZXItYmctY29sb3I6IGNvbG9yLWRhbmdlcixcblxuICBwcm9ncmVzcy1iYXItaGVpZ2h0LXhsZzogMS43NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1sZzogMS41cmVtLFxuICBwcm9ncmVzcy1iYXItaGVpZ2h0OiAxLjM3NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1zbTogMS4yNXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC14czogMXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXMsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUteGxnOiBmb250LXNpemUteGxnLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXhzOiBmb250LXNpemUteHMsXG4gIHByb2dyZXNzLWJhci1yYWRpdXM6IHJhZGl1cyxcbiAgcHJvZ3Jlc3MtYmFyLWJnOiBsYXlvdXQtYmcsXG4gIHByb2dyZXNzLWJhci1mb250LWNvbG9yOiBjb2xvci13aGl0ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBwcm9ncmVzcy1iYXItZGVmYXVsdC1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHByb2dyZXNzLWJhci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBwcm9ncmVzcy1iYXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHByb2dyZXNzLWJhci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBhbGVydC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWxlcnQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhbGVydC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhbGVydC1mZzogY29sb3Itd2hpdGUsXG4gIGFsZXJ0LW91dGxpbmUtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1iZzogY29sb3ItYmcsXG4gIGFsZXJ0LWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGFsZXJ0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgYWxlcnQtZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBhbGVydC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBhbGVydC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBhbGVydC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBhbGVydC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgYWxlcnQtaGVpZ2h0LXh4c21hbGw6IDUycHgsXG4gIGFsZXJ0LWhlaWdodC14c21hbGw6IDcycHgsXG4gIGFsZXJ0LWhlaWdodC1zbWFsbDogOTJweCxcbiAgYWxlcnQtaGVpZ2h0LW1lZGl1bTogMTEycHgsXG4gIGFsZXJ0LWhlaWdodC1sYXJnZTogMTMycHgsXG4gIGFsZXJ0LWhlaWdodC14bGFyZ2U6IDE1MnB4LFxuICBhbGVydC1oZWlnaHQteHhsYXJnZTogMTcycHgsXG4gIGFsZXJ0LXNoYWRvdzogbm9uZSxcbiAgYWxlcnQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBhbGVydC1wYWRkaW5nOiAxcmVtIDEuMTI1cmVtLFxuICBhbGVydC1jbG9zYWJsZS1wYWRkaW5nOiAzcmVtLFxuICBhbGVydC1idXR0b24tcGFkZGluZzogM3JlbSxcbiAgYWxlcnQtbWFyZ2luOiBtYXJnaW4sXG5cbiAgY2hhdC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2hhdC1mZzogY29sb3Itd2hpdGUsXG4gIGNoYXQtYmc6IGNvbG9yLWJnLFxuICBjaGF0LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2hhdC1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LWhlaWdodC14eHNtYWxsOiA5NnB4LFxuICBjaGF0LWhlaWdodC14c21hbGw6IDIxNnB4LFxuICBjaGF0LWhlaWdodC1zbWFsbDogMzM2cHgsXG4gIGNoYXQtaGVpZ2h0LW1lZGl1bTogNDU2cHgsXG4gIGNoYXQtaGVpZ2h0LWxhcmdlOiA1NzZweCxcbiAgY2hhdC1oZWlnaHQteGxhcmdlOiA2OTZweCxcbiAgY2hhdC1oZWlnaHQteHhsYXJnZTogODE2cHgsXG4gIGNoYXQtYm9yZGVyOiBib3JkZXIsXG4gIGNoYXQtcGFkZGluZzogcGFkZGluZyxcbiAgY2hhdC1zaGFkb3c6IHNoYWRvdyxcbiAgY2hhdC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgY2hhdC1tZXNzYWdlLWZnOiBjb2xvci13aGl0ZSxcbiAgY2hhdC1tZXNzYWdlLWJnOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM0Y2E2ZmYsICM1OWJmZmYpLFxuICBjaGF0LW1lc3NhZ2UtcmVwbHktYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2hhdC1tZXNzYWdlLXJlcGx5LWZnOiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LW1lc3NhZ2UtYXZhdGFyLWJnOiBjb2xvci1mZyxcbiAgY2hhdC1tZXNzYWdlLXNlbmRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjaGF0LW1lc3NhZ2UtZmlsZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1maWxlLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGF0LWZvcm0tYm9yZGVyOiBzZXBhcmF0b3IsXG4gIGNoYXQtZm9ybS1wbGFjZWhvbGRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtZm9ybS1hY3RpdmUtYm9yZGVyOiBjb2xvci1mZyxcbiAgY2hhdC1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBjaGF0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgY2hhdC1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGNoYXQtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2hhdC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjaGF0LXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoYXQtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgY2hhdC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBzcGlubmVyLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODMpLFxuICBzcGlubmVyLWNpcmNsZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBzcGlubmVyLWZnOiBjb2xvci1mZy10ZXh0LFxuICBzcGlubmVyLWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIHNwaW5uZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBzcGlubmVyLWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgc3Bpbm5lci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBzcGlubmVyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHNwaW5uZXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgc3Bpbm5lci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBzcGlubmVyLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICBzcGlubmVyLXh4c21hbGw6IDEuMjVyZW0sXG4gIHNwaW5uZXIteHNtYWxsOiAxLjVyZW0sXG4gIHNwaW5uZXItc21hbGw6IDEuNzVyZW0sXG4gIHNwaW5uZXItbWVkaXVtOiAycmVtLFxuICBzcGlubmVyLWxhcmdlOiAyLjI1cmVtLFxuICBzcGlubmVyLXhsYXJnZTogMi41cmVtLFxuICBzcGlubmVyLXh4bGFyZ2U6IDNyZW0sXG5cbiAgc3RlcHBlci1pbmRleC1zaXplOiAycmVtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtc2l6ZTogZm9udC1zaXplLXNtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIHN0ZXBwZXItYWNjZW50LWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBzdGVwcGVyLWNvbXBsZXRlZC1mZzogY29sb3Itd2hpdGUsXG4gIHN0ZXBwZXItZmc6IGNvbG9yLWZnLFxuICBzdGVwcGVyLWNvbXBsZXRlZC1pY29uLXNpemU6IDEuNXJlbSxcbiAgc3RlcHBlci1jb21wbGV0ZWQtaWNvbi13ZWlnaHQ6IGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQsXG4gIHN0ZXBwZXItc3RlcC1wYWRkaW5nOiBwYWRkaW5nLFxuXG4gIGFjY29yZGlvbi1wYWRkaW5nOiBwYWRkaW5nLFxuICBhY2NvcmRpb24tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjY29yZGlvbi1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFjY29yZGlvbi1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci1jb2xvcjogYWNjb3JkaW9uLXNlcGFyYXRvcixcbiAgYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYWNjb3JkaW9uLWl0ZW0tYmc6IGNvbG9yLWJnLFxuICBhY2NvcmRpb24taXRlbS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgYWNjb3JkaW9uLWl0ZW0tZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgYWNjb3JkaW9uLWl0ZW0tc2hhZG93OiBzaGFkb3csXG5cbiAgbGlzdC1pdGVtLWJvcmRlci1jb2xvcjogdGFicy1zZXBhcmF0b3IsXG4gIGxpc3QtaXRlbS1wYWRkaW5nOiAxcmVtLFxuXG4gIGNhbGVuZGFyLXdpZHRoOiAyMS44NzVyZW0sXG4gIGNhbGVuZGFyLWJvZHktaGVpZ2h0OiAyNS42MjVyZW0sXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZS14bGcsXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtdGhpbixcbiAgY2FsZW5kYXItbmF2aWdhdGlvbi1idXR0b24td2lkdGg6IDEwcmVtLFxuICBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1ob3Zlci1pdGVtLWJnOiBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnLFxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1mZzogY29sb3ItZmctdGV4dCxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtZmc6IGNvbG9yLXdoaXRlLFxuICBjYWxlbmRhci10b2RheS1mZzogY2FsZW5kYXItZmcsXG4gIGNhbGVuZGFyLWRheS1jZWxsLXdpZHRoOiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtaGVpZ2h0OiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aDogNC4yNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQ6IDIuMzc1cmVtLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtd2lkdGg6IGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXllYXItY2VsbC1oZWlnaHQ6IGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0LFxuICBjYWxlbmRhci1pbmFjdGl2ZS1vcGFjaXR5OiAwLjUsXG4gIGNhbGVuZGFyLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgY2FsZW5kYXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjYWxlbmRhci13ZWVrZGF5LXdpZHRoOiBjYWxlbmRhci1kYXktY2VsbC13aWR0aCxcbiAgY2FsZW5kYXItd2Vla2RheS1oZWlnaHQ6IDEuNzVyZW0sXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC1zaXplOiBmb250LXNpemUteHMsXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FsZW5kYXItd2Vla2RheS1mZzogY29sb3ItZmcsXG4gIGNhbGVuZGFyLXdlZWtkYXktaG9saWRheS1mZzogY29sb3ItZGFuZ2VyLFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogI2ViZmJmMixcblxuICBjYWxlbmRhci1sYXJnZS13aWR0aDogMjQuMzc1cmVtLFxuICBjYWxlbmRhci1sYXJnZS1ib2R5LWhlaWdodDogMjcuNzVyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWxhcmdlLXdpZHRoOiAzcmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1sYXJnZS1oZWlnaHQ6IDNyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2Utd2lkdGg6IDQuMjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2UtaGVpZ2h0OiAyLjM3NXJlbSxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWxhcmdlLXdpZHRoOiBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtbGFyZ2UtaGVpZ2h0OiBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodCxcblxuICBvdmVybGF5LWJhY2tkcm9wLWJnOiByZ2JhKDAsIDAsIDAsIDAuMjg4KSxcblxuICB0b29sdGlwLWJnOiBjb2xvci1mZy10ZXh0LFxuICB0b29sdGlwLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHRvb2x0aXAtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgdG9vbHRpcC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICB0b29sdGlwLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHRvb2x0aXAtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIHRvb2x0aXAtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zdGF0dXMtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zaGFkb3c6IHNoYWRvdyxcbiAgdG9vbHRpcC1mb250LXNpemU6IGZvbnQtc2l6ZSxcblxuICBzZWxlY3QtYm9yZGVyLXdpZHRoOiAycHgsXG4gIHNlbGVjdC1tYXgtaGVpZ2h0OiAyMHJlbSxcbiAgc2VsZWN0LWJnOiBjb2xvci1iZyxcblxuICBzZWxlY3QtY2hlY2tib3gtY29sb3I6IGNoZWNrYm94LWJvcmRlci1jb2xvcixcbiAgc2VsZWN0LWNoZWNrbWFyay1jb2xvcjogY2hlY2tib3gtYm9yZGVyLWNvbG9yLFxuXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtYmc6ICNmMmY0ZjcsXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtb3BhY2l0eTogMC4zLFxuICBzZWxlY3Qtb3B0aW9uLXBhZGRpbmc6IDAuNzVyZW0gMS41cmVtLFxuXG4gIGRhdGVwaWNrZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGRhdGVwaWNrZXItYmc6IGNvbG9yLWJnLFxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgZGF0ZXBpY2tlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGRhdGVwaWNrZXItc2hhZG93OiBub25lLFxuICBkYXRlcGlja2VyLWFycm93LXNpemU6IDExcHgsXG5cbiAgcmFkaW8tYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1mZzogY29sb3ItZmctdGV4dCxcbiAgcmFkaW8tc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tYm9yZGVyLWNvbG9yOiBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yLFxuICByYWRpby1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuICByYWRpby1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICByYWRpby1jaGVja2VkLWNoZWNrbWFyazogY29sb3Itc3VjY2VzcyxcbiAgcmFkaW8tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItY29sb3I6IHJhZGlvLWJvcmRlci1jb2xvcixcbiAgcmFkaW8tZGlzYWJsZWQtY2hlY2ttYXJrOiByYWRpby1jaGVja21hcmssXG5cbiAgdHJlZS1ncmlkLWNlbGwtYm9yZGVyLXdpZHRoOiAxcHgsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1zdHlsZTogc29saWQsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICB0cmVlLWdyaWQtcm93LW1pbi1oZWlnaHQ6IDJyZW0sXG4gIHRyZWUtZ3JpZC1jZWxsLXBhZGRpbmc6IDAuODc1cmVtIDEuMjVyZW0sXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYm9yZGVyOiBub25lLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLXBhZGRpbmc6IDAsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tZm9udC13ZWlnaHQ6IGJvbGQsXG4gIHRyZWUtZ3JpZC1oZWFkZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXJvdy1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctYmctZXZlbjogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctaG92ZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWNvbG9yOiBjb2xvci1mZy10ZXh0LFxuICB0cmVlLWdyaWQtaWNvbi1jb2xvcjogY29sb3ItZmctdGV4dCxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBkZWZhdWx0KTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuQGltcG9ydCAnZGVmYXVsdCc7XG5cbi8vIGRlZmF1bHQgdGhlIGJhc2UgdGhlbWVcbiR0aGVtZTogKFxuICByYWRpdXM6IDAuNXJlbSxcblxuICBjb2xvci1iZzogIzNkMzc4MCxcbiAgY29sb3ItYmctYWN0aXZlOiAjNDk0Mjk5LFxuICBjb2xvci1mZzogI2ExYTFlNSxcbiAgY29sb3ItZmctaGVhZGluZzogI2ZmZmZmZixcbiAgY29sb3ItZmctdGV4dDogI2QxZDFmZixcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiAjMDBmOWE2LFxuXG4gIGNvbG9yLWdyYXk6IHJnYmEoODEsIDExMywgMTY1LCAwLjE1KSxcbiAgY29sb3ItbmV1dHJhbDogdHJhbnNwYXJlbnQsXG4gIGNvbG9yLXdoaXRlOiAjZmZmZmZmLFxuICBjb2xvci1kaXNhYmxlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM3NjU5ZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICMwMGQ5NzcsXG4gIGNvbG9yLWluZm86ICMwMDg4ZmYsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmExMDAsXG4gIGNvbG9yLWRhbmdlcjogI2ZmMzg2YSxcblxuICBsaW5rLWNvbG9yOiAjMDBmOWE2LFxuICBsaW5rLWNvbG9yLWhvdmVyOiAjMTRmZmJlLFxuXG4gIHNlcGFyYXRvcjogIzM0MmU3MyxcbiAgc2hhZG93OiAwIDhweCAyMHB4IDAgcmdiYSg0MCwgMzcsIDg5LCAwLjYpLFxuXG4gIGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG5cbiAgbGF5b3V0LWJnOiAjMmYyOTZiLFxuXG4gIHNjcm9sbGJhci1mZzogIzU1NGRiMyxcbiAgc2Nyb2xsYmFyLWJnOiAjMzMyZTczLFxuXG4gIHJhZGlhbC1ncmFkaWVudDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCAjNDIzZjhjLCAjMzAyYzZlKSxcbiAgbGluZWFyLWdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMxNzE3NDksICM0MTM3ODkpLFxuXG4gIHNpZGViYXItZmc6IGNvbG9yLXNlY29uZGFyeSxcbiAgc2lkZWJhci1iZzogY29sb3ItYmcsXG5cbiAgaGVhZGVyLWZnOiBjb2xvci13aGl0ZSxcbiAgaGVhZGVyLWJnOiBjb2xvci1iZyxcblxuICBmb290ZXItZmc6IGNvbG9yLWZnLFxuICBmb290ZXItYmc6IGNvbG9yLWJnLFxuXG4gIGFjdGlvbnMtZmc6IGNvbG9yLWZnLFxuICBhY3Rpb25zLWJnOiBjb2xvci1iZyxcblxuICB1c2VyLWZnOiBjb2xvci1iZyxcbiAgdXNlci1iZzogY29sb3ItZmcsXG4gIHVzZXItZmctaGlnaGxpZ2h0OiBjb2xvci1mZy1oaWdobGlnaHQsXG5cbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4gIHBvcG92ZXItc2hhZG93OiBzaGFkb3csXG5cbiAgY29udGV4dC1tZW51LWFjdGl2ZS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY29udGV4dC1tZW51LWJvcmRlcjogY29sb3ItcHJpbWFyeSxcblxuICBmb290ZXItaGVpZ2h0OiBoZWFkZXItaGVpZ2h0LFxuXG4gIHNpZGViYXItd2lkdGg6IDE2LjI1cmVtLFxuICBzaWRlYmFyLXdpZHRoLWNvbXBhY3Q6IDMuNDVyZW0sXG5cbiAgbWVudS1mZzogY29sb3ItZmcsXG4gIG1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3Itd2hpdGUsXG4gIG1lbnUtZ3JvdXAtZmc6IGNvbG9yLXdoaXRlLFxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1lbnUtYWN0aXZlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtc3VibWVudS1iZzogbGF5b3V0LWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnOiByZ2JhKDAsIDI1NSwgMTcwLCAwLjI1KSxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhpZ2hsaWdodCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1zaGFkb3c6IDAgMnB4IDEycHggMCByZ2JhKDAsIDI1NSwgMTcwLCAwLjI1KSxcbiAgbWVudS1pdGVtLXBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbSxcbiAgbWVudS1pdGVtLXNlcGFyYXRvcjogdHJhbnNwYXJlbnQsXG5cbiAgYnRuLWhlcm8tc2hhZG93OiAwIDRweCAxMHB4IDAgcmdiYSgzMywgNywgNzcsIDAuNSksXG4gIGJ0bi1oZXJvLXRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpLFxuICBidG4taGVyby1iZXZlbC1zaXplOiAwIDNweCAwIDAsXG4gIGJ0bi1oZXJvLWdsb3ctc2l6ZTogMCAycHggOHB4IDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbiAgYnRuLW91dGxpbmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWhvdmVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1mb2N1cy1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLWdyb3VwLWJnOiAjMzczMjczLFxuICBidG4tZ3JvdXAtc2VwYXJhdG9yOiAjMzEyYzY2LFxuXG4gIGZvcm0tY29udHJvbC1iZzogIzM3MzE3YSxcbiAgZm9ybS1jb250cm9sLWZvY3VzLWJnOiBzZXBhcmF0b3IsXG4gIGZvcm0tY29udHJvbC1ib3JkZXItY29sb3I6IHNlcGFyYXRvcixcbiAgZm9ybS1jb250cm9sLXNlbGVjdGVkLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcblxuICBjaGVja2JveC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWJvcmRlci1jb2xvcjogY29sb3ItZmcsXG4gIGNoZWNrYm94LWNoZWNrbWFyazogdHJhbnNwYXJlbnQsXG5cbiAgY2hlY2tib3gtY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgY2hlY2tib3gtY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgY2hlY2tib3gtZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBzZWFyY2gtYmc6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzE3MTc0OSwgIzQxMzc4OSksXG5cbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1iZzogY29sb3ItYmctYWN0aXZlLFxuICBzbWFydC10YWJsZS1iZy1ldmVuOiAjM2EzNDdhLFxuICBzbWFydC10YWJsZS1iZy1hY3RpdmU6IGNvbG9yLWJnLWFjdGl2ZSxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLXdpZHRoOiAycHgsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1mZy1hY3RpdmU6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXByaW1hcnksXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjIpLFxuXG4gIGJhZGdlLWZnLXRleHQ6IGNvbG9yLXdoaXRlLFxuICBiYWRnZS1wcmltYXJ5LWJnLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBiYWRnZS1zdWNjZXNzLWJnLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBiYWRnZS1pbmZvLWJnLWNvbG9yOiBjb2xvci1pbmZvLFxuICBiYWRnZS13YXJuaW5nLWJnLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuICBiYWRnZS1kYW5nZXItYmctY29sb3I6IGNvbG9yLWRhbmdlcixcblxuICBzcGlubmVyLWJnOiByZ2JhKDYxLCA1NSwgMTI4LCAwLjkpLFxuICBzdGVwcGVyLWFjY2VudC1jb2xvcjogY29sb3Itc3VjY2VzcyxcblxuICB0YWJzLXNlbGVjdGVkLXNlY29uZC1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgdGFicy1zZWxlY3RlZC1kZWdyZWVzOiAyMGRlZyxcblxuICBjYWxlbmRhci1hY3RpdmUtaXRlbS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FsZW5kYXItcmFuZ2UtYmctaW4tcmFuZ2U6ICM0ZTQwOTUsXG4gIGNhbGVuZGFyLXRvZGF5LWl0ZW0tYmc6ICMzNTJmNmUsXG5cbiAgc2VsZWN0LW9wdGlvbi1kaXNhYmxlZC1iZzogIzMxMmU3NSxcblxuICB0b2FzdHItY29sb3ItZmc6IGNvbG9yLXdoaXRlLFxuICB0b2FzdHItcGFkZGluZzogMS4yNXJlbSxcbiAgdG9hc3RyLWJvcmRlcjogMCxcbiAgdG9hc3RyLWRlZmF1bHQtYmFja2dyb3VuZDogI2JjYzNjYyxcblxuICB0b29sdGlwLWZnOiBjb2xvci1iZyxcbiAgdG9vbHRpcC1zdGF0dXMtZmc6IGNvbG9yLXdoaXRlLFxuXG4gIGRhdGVwaWNrZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuICBkYXRlcGlja2VyLXNoYWRvdzogc2hhZG93LFxuXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICByYWRpby1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItcHJpbWFyeSxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBjb3NtaWMsIGRlZmF1bHQpO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AaW1wb3J0ICcuLi9jb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICcuLi9jb3JlL21peGlucyc7XG5AaW1wb3J0ICdkZWZhdWx0JztcblxuLy8gZGVmYXVsdCB0aGUgYmFzZSB0aGVtZVxuJHRoZW1lOiAoXG4gIGhlYWRlci1mZzogI2Y3ZmFmYixcbiAgaGVhZGVyLWJnOiAjMTExMjE4LFxuXG4gIGxheW91dC1iZzogI2YxZjVmOCxcblxuICBjb2xvci1mZy1oZWFkaW5nOiAjMTgxODE4LFxuICBjb2xvci1mZy10ZXh0OiAjNGI0YjRiLFxuICBjb2xvci1mZy1oaWdobGlnaHQ6IGNvbG9yLWZnLFxuXG4gIHNlcGFyYXRvcjogI2NkZDVkYyxcblxuICByYWRpdXM6IDAuMTdyZW0sXG5cbiAgc2Nyb2xsYmFyLWJnOiAjZTNlOWVlLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM3M2ExZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICM1ZGNmZTMsXG4gIGNvbG9yLWluZm86ICNiYTdmZWMsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmEzNmIsXG4gIGNvbG9yLWRhbmdlcjogI2ZmNmI4MyxcblxuICBidG4tc2Vjb25kYXJ5LWJnOiAjZWRmMmY1LFxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogI2VkZjJmNSxcblxuICBhY3Rpb25zLWZnOiAjZDNkYmU1LFxuICBhY3Rpb25zLWJnOiBjb2xvci1iZyxcblxuICBzaWRlYmFyLWJnOiAjZTNlOWVlLFxuXG4gIGJvcmRlci1jb2xvcjogI2Q1ZGJlMCxcblxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtYmc6ICNlM2U5ZWUsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LWFjdGl2ZS1iZzogbWVudS1iZyxcblxuICBtZW51LXN1Ym1lbnUtYmc6IG1lbnUtYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogI2NkZDVkYyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1ib3JkZXItY29sb3I6IG1lbnUtc3VibWVudS1hY3RpdmUtYmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiBub25lLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItZmc6IG1lbnUtc3VibWVudS1hY3RpdmUtZmcsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1iZzogbWVudS1iZyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXdpZHRoOiAwLjEyNXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1wYWRkaW5nOiAwLjVyZW0gMXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tY29udGFpbmVyLXBhZGRpbmc6IDAgMS4yNXJlbSxcbiAgbWVudS1zdWJtZW51LXBhZGRpbmc6IDAuNXJlbSxcblxuICBidG4tYm9yZGVyLXJhZGl1czogYnRuLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1cyxcblxuICBidG4taGVyby1kZWdyZWU6IDBkZWcsXG4gIGJ0bi1oZXJvLXByaW1hcnktZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWluZm8tZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWRhbmdlci1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMCAyMHB4IDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogMCAwIDAgMCxcbiAgYnRuLWhlcm8tYm9yZGVyLXJhZGl1czogYnRuLWJvcmRlci1yYWRpdXMsXG5cbiAgY2FyZC1zaGFkb3c6IG5vbmUsXG4gIGNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGNhcmQtYm9yZGVyLWNvbG9yOiBib3JkZXItY29sb3IsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci13aWR0aDogMCxcblxuICBsaW5rLWNvbG9yOiAjNWRjZmUzLFxuICBsaW5rLWNvbG9yLWhvdmVyOiAjN2RjZmUzLFxuICBsaW5rLWNvbG9yLXZpc2l0ZWQ6IGxpbmstY29sb3IsXG5cbiAgYWN0aW9ucy1zZXBhcmF0b3I6ICNmMWY0ZjUsXG5cbiAgbW9kYWwtc2VwYXJhdG9yOiBib3JkZXItY29sb3IsXG5cbiAgdGFicy1zZWxlY3RlZDogY29sb3ItcHJpbWFyeSxcbiAgdGFicy1zZWxlY3RlZC1zZWNvbmQtY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIHRhYnMtc2VwYXJhdG9yOiAjZWJlY2VlLFxuXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXByaW1hcnksXG5cbiAgcm91dGUtdGFicy1zZWxlY3RlZDogY29sb3ItcHJpbWFyeSxcblxuICBwb3BvdmVyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcblxuICBmb290ZXItc2hhZG93OiBub25lLFxuICBmb290ZXItc2VwYXJhdG9yOiBib3JkZXItY29sb3IsXG4gIGZvb3Rlci1mZy1oaWdobGlnaHQ6ICMyYTJhMmEsXG5cbiAgY2FsZW5kYXItdG9kYXktaXRlbS1iZzogI2EyYjJjNyxcbiAgY2FsZW5kYXItYWN0aXZlLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXJhbmdlLWJnLWluLXJhbmdlOiAjZTNlY2ZlLFxuICBjYWxlbmRhci10b2RheS1mZzogY29sb3Itd2hpdGUsXG5cbiAgdG9hc3RyLWljb24tcmFkaXVzOiByYWRpdXMsXG5cbiAgZGF0ZXBpY2tlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgY29ycG9yYXRlLCBkZWZhdWx0KTtcbiIsIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZTogMjRweCAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aHM6IChcbiAgeHM6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBzbTogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIG1kOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgbGc6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICB4bDogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2VcbikgIWRlZmF1bHQ7XG5cblxuJGdyaWQtYnJlYWtwb2ludHM6IChcbiAgeHM6IDAsXG4gIGlzOiA0MDBweCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweCxcbiAgeHhsOiAxNDAwcHgsXG4gIHh4eGw6IDE2MDBweFxuKTtcblxuJGNvbnRhaW5lci1tYXgtd2lkdGhzOiAoXG4gIGlzOiAzODBweCxcbiAgc206IDU0MHB4LFxuICBtZDogNzIwcHgsXG4gIGxnOiA5NjBweCxcbiAgeGw6IDExNDBweCxcbiAgeHhsOiAxMzIwcHgsXG4gIHh4eGw6IDE1MDBweFxuKTtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAwLjAycHgsIG51bGwpO1xufVxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiQGltcG9ydCAnLi4vLi4vc3R5bGVzL3RoZW1lcyc7XHJcbkBpbXBvcnQgJ35AbmVidWxhci90aGVtZS9zdHlsZXMvZ2xvYmFsL2JyZWFrcG9pbnRzJztcclxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucy9icmVha3BvaW50cyc7XHJcblxyXG5AaW5jbHVkZSBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAuc29jaWFscyB7XHJcbiAgICBmb250LXNpemU6IDJyZW07XHJcblxyXG4gICAgYSB7XHJcbiAgICAgIHBhZGRpbmc6IDAuNHJlbTtcclxuICAgICAgY29sb3I6IG5iLXRoZW1lKGNvbG9yLWZnKTtcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgZWFzZS1vdXQgMC4xcztcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGNvbG9yOiBuYi10aGVtZShjb2xvci1mZy1oZWFkaW5nKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGlzKSB7XHJcbiAgICAuc29jaWFscyB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIGxhcmdlc3QgKGxhc3QpIGJyZWFrcG9pbnQuXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyBjYWxjdWxhdGVkIGFzIHRoZSBtaW5pbXVtIG9mIHRoZSBuZXh0IG9uZSBsZXNzIDAuMDJweFxuLy8gdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gLjAycHgsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iXX0= */\"","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ngx-footer',\r\n styleUrls: ['./footer.component.scss'],\r\n template: `\r\n Developed with ♥ by VoidCore\r\n `,\r\n})\r\nexport class FooterComponent {\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Estify

\\r\\n
an Estimate ToolKit
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n width: 100%; }\\n.nb-theme-default :host .left {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n width: 100%;\\n -webkit-box-ordinal-group: 1;\\n -ms-flex-order: 0;\\n order: 0;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row; }\\n.nb-theme-default :host .right {\\n -webkit-box-ordinal-group: 2;\\n -ms-flex-order: 1;\\n order: 1;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n -ms-flex-direction: row-reverse;\\n flex-direction: row-reverse; }\\n.nb-theme-default :host .logo-containter {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: calc(16rem - 1.25rem); }\\n.nb-theme-default :host .control-item {\\n display: block; }\\n.nb-theme-default :host .header-container {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: auto; }\\n.nb-theme-default :host .header-container .navigation {\\n font-size: 2.5rem;\\n text-decoration: none; }\\n[dir=ltr] .nb-theme-default :host .header-container .navigation {\\n padding-right: 1.25rem; }\\n[dir=rtl] .nb-theme-default :host .header-container .navigation {\\n padding-left: 1.25rem; }\\n.nb-theme-default :host .header-container .navigation i {\\n display: block; }\\n.nb-theme-default :host .header-container .logo {\\n padding: 0 1.25rem;\\n font-size: 1.75rem;\\n font-weight: 500;\\n white-space: nowrap;\\n height: 50px; }\\n[dir=ltr] .nb-theme-default :host .header-container .logo {\\n border-left: 1px solid #ebeef2; }\\n[dir=rtl] .nb-theme-default :host .header-container .logo {\\n border-right: 1px solid #ebeef2; }\\n.nb-theme-default :host .header-container .logo img {\\n height: auto;\\n max-height: 100%; }\\n.nb-theme-default :host .header-container .logo span {\\n font-weight: 400; }\\n.nb-theme-default :host ngx-layout-direction-switcher {\\n margin: 0 1.5rem; }\\n@media (max-width: 1399.98px) {\\n .nb-theme-default :host ngx-layout-direction-switcher {\\n display: none; } }\\n.nb-theme-default :host .toggle-settings /deep/ a {\\n display: block;\\n text-decoration: none;\\n line-height: 1; }\\n.nb-theme-default :host .toggle-settings /deep/ a i {\\n color: #31177a;\\n font-size: 2.25rem;\\n border-radius: 50%;\\n position: relative;\\n -webkit-animation-name: pulse-light;\\n animation-name: pulse-light; }\\n.nb-theme-default :host .toggle-settings /deep/ a i::after {\\n content: ' ';\\n background-image: url(\\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\\");\\n border-radius: 50%;\\n pointer-events: none;\\n position: absolute;\\n top: 52.3%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n width: 13%;\\n height: 13%;\\n -webkit-animation: 3s linear infinite pulse;\\n animation: 3s linear infinite pulse;\\n -webkit-animation-name: pulse-light;\\n animation-name: pulse-light; }\\n@-webkit-keyframes pulse {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(49, 23, 122, 0);\\n box-shadow: 0 0 1px 0 rgba(49, 23, 122, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(49, 23, 122, 0.4);\\n box-shadow: 0 0 3px 10px rgba(49, 23, 122, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(49, 23, 122, 0);\\n box-shadow: 0 0 5px 20px rgba(49, 23, 122, 0); } }\\n@keyframes pulse {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(49, 23, 122, 0);\\n box-shadow: 0 0 1px 0 rgba(49, 23, 122, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(49, 23, 122, 0.4);\\n box-shadow: 0 0 3px 10px rgba(49, 23, 122, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(49, 23, 122, 0);\\n box-shadow: 0 0 5px 20px rgba(49, 23, 122, 0); } }\\n@-webkit-keyframes pulse-light {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0);\\n box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4);\\n box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0);\\n box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0); } }\\n@keyframes pulse-light {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0);\\n box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4);\\n box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0);\\n box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0); } }\\n@media (max-width: 991.98px) {\\n .nb-theme-default :host nb-action:not(.toggle-settings) {\\n border: none; }\\n .nb-theme-default :host .control-item {\\n display: none; }\\n .nb-theme-default :host .toggle-settings {\\n padding: 0; }\\n .nb-theme-default :host ngx-layout-direction-switcher {\\n display: none; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-default :host nb-user /deep/ .user-name {\\n display: none; } }\\n@media (max-width: 575.98px) {\\n .nb-theme-default :host .header-container .logo {\\n font-size: 1.25rem; }\\n .nb-theme-default :host .toggle-settings {\\n display: none; }\\n .nb-theme-default :host nb-action:not(.toggle-settings) {\\n padding: 0; } }\\n@media (max-width: 399.98px) {\\n .nb-theme-default :host .right /deep/ {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-cosmic :host {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n width: 100%; }\\n.nb-theme-cosmic :host .left {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n width: 100%;\\n -webkit-box-ordinal-group: 1;\\n -ms-flex-order: 0;\\n order: 0;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row; }\\n.nb-theme-cosmic :host .right {\\n -webkit-box-ordinal-group: 2;\\n -ms-flex-order: 1;\\n order: 1;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n -ms-flex-direction: row-reverse;\\n flex-direction: row-reverse; }\\n.nb-theme-cosmic :host .logo-containter {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: calc(16.25rem - 1.25rem); }\\n.nb-theme-cosmic :host .control-item {\\n display: block; }\\n.nb-theme-cosmic :host .header-container {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: auto; }\\n.nb-theme-cosmic :host .header-container .navigation {\\n font-size: 2.5rem;\\n text-decoration: none; }\\n[dir=ltr] .nb-theme-cosmic :host .header-container .navigation {\\n padding-right: 1.25rem; }\\n[dir=rtl] .nb-theme-cosmic :host .header-container .navigation {\\n padding-left: 1.25rem; }\\n.nb-theme-cosmic :host .header-container .navigation i {\\n display: block; }\\n.nb-theme-cosmic :host .header-container .logo {\\n padding: 0 1.25rem;\\n font-size: 1.75rem;\\n font-weight: 500;\\n white-space: nowrap;\\n height: 50px; }\\n[dir=ltr] .nb-theme-cosmic :host .header-container .logo {\\n border-left: 1px solid #342e73; }\\n[dir=rtl] .nb-theme-cosmic :host .header-container .logo {\\n border-right: 1px solid #342e73; }\\n.nb-theme-cosmic :host .header-container .logo img {\\n height: auto;\\n max-height: 100%; }\\n.nb-theme-cosmic :host .header-container .logo span {\\n font-weight: 400; }\\n.nb-theme-cosmic :host ngx-layout-direction-switcher {\\n margin: 0 1.5rem; }\\n@media (max-width: 1399.98px) {\\n .nb-theme-cosmic :host ngx-layout-direction-switcher {\\n display: none; } }\\n.nb-theme-cosmic :host .toggle-settings /deep/ a {\\n display: block;\\n text-decoration: none;\\n line-height: 1; }\\n.nb-theme-cosmic :host .toggle-settings /deep/ a i {\\n color: #00f9a6;\\n font-size: 2.25rem;\\n border-radius: 50%;\\n position: relative;\\n -webkit-animation-name: pulse-light;\\n animation-name: pulse-light; }\\n.nb-theme-cosmic :host .toggle-settings /deep/ a i::after {\\n content: ' ';\\n background-image: url(\\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\\");\\n border-radius: 50%;\\n pointer-events: none;\\n position: absolute;\\n top: 52.3%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n width: 13%;\\n height: 13%;\\n -webkit-animation: 3s linear infinite pulse;\\n animation: 3s linear infinite pulse; }\\n@-webkit-keyframes pulse {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(0, 249, 166, 0);\\n box-shadow: 0 0 1px 0 rgba(0, 249, 166, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(0, 249, 166, 0.4);\\n box-shadow: 0 0 3px 10px rgba(0, 249, 166, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(0, 249, 166, 0);\\n box-shadow: 0 0 5px 20px rgba(0, 249, 166, 0); } }\\n@keyframes pulse {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(0, 249, 166, 0);\\n box-shadow: 0 0 1px 0 rgba(0, 249, 166, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(0, 249, 166, 0.4);\\n box-shadow: 0 0 3px 10px rgba(0, 249, 166, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(0, 249, 166, 0);\\n box-shadow: 0 0 5px 20px rgba(0, 249, 166, 0); } }\\n@-webkit-keyframes pulse-light {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0);\\n box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4);\\n box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0);\\n box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0); } }\\n@keyframes pulse-light {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0);\\n box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4);\\n box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0);\\n box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0); } }\\n@media (max-width: 991.98px) {\\n .nb-theme-cosmic :host nb-action:not(.toggle-settings) {\\n border: none; }\\n .nb-theme-cosmic :host .control-item {\\n display: none; }\\n .nb-theme-cosmic :host .toggle-settings {\\n padding: 0; }\\n .nb-theme-cosmic :host ngx-layout-direction-switcher {\\n display: none; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-cosmic :host nb-user /deep/ .user-name {\\n display: none; } }\\n@media (max-width: 575.98px) {\\n .nb-theme-cosmic :host .header-container .logo {\\n font-size: 1.25rem; }\\n .nb-theme-cosmic :host .toggle-settings {\\n display: none; }\\n .nb-theme-cosmic :host nb-action:not(.toggle-settings) {\\n padding: 0; } }\\n@media (max-width: 399.98px) {\\n .nb-theme-cosmic :host .right /deep/ {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-corporate :host {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n width: 100%; }\\n.nb-theme-corporate :host .left {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n width: 100%;\\n -webkit-box-ordinal-group: 1;\\n -ms-flex-order: 0;\\n order: 0;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row; }\\n.nb-theme-corporate :host .right {\\n -webkit-box-ordinal-group: 2;\\n -ms-flex-order: 1;\\n order: 1;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: reverse;\\n -ms-flex-direction: row-reverse;\\n flex-direction: row-reverse; }\\n.nb-theme-corporate :host .logo-containter {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: calc(16rem - 1.25rem); }\\n.nb-theme-corporate :host .control-item {\\n display: block; }\\n.nb-theme-corporate :host .header-container {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n width: auto; }\\n.nb-theme-corporate :host .header-container .navigation {\\n font-size: 2.5rem;\\n text-decoration: none; }\\n[dir=ltr] .nb-theme-corporate :host .header-container .navigation {\\n padding-right: 1.25rem; }\\n[dir=rtl] .nb-theme-corporate :host .header-container .navigation {\\n padding-left: 1.25rem; }\\n.nb-theme-corporate :host .header-container .navigation i {\\n display: block; }\\n.nb-theme-corporate :host .header-container .logo {\\n padding: 0 1.25rem;\\n font-size: 1.75rem;\\n font-weight: 500;\\n white-space: nowrap;\\n height: 50px; }\\n[dir=ltr] .nb-theme-corporate :host .header-container .logo {\\n border-left: 1px solid #cdd5dc; }\\n[dir=rtl] .nb-theme-corporate :host .header-container .logo {\\n border-right: 1px solid #cdd5dc; }\\n.nb-theme-corporate :host .header-container .logo img {\\n height: auto;\\n max-height: 100%; }\\n.nb-theme-corporate :host .header-container .logo span {\\n font-weight: 400; }\\n[dir=ltr] .nb-theme-corporate :host nb-action {\\n border-left-color: #3f4550; }\\n[dir=rtl] .nb-theme-corporate :host nb-action {\\n border-right-color: #3f4550; }\\n[dir=ltr] .nb-theme-corporate :host .header-container .logo {\\n border: none; }\\n[dir=rtl] .nb-theme-corporate :host .header-container .logo {\\n border: none; }\\n.nb-theme-corporate :host ngx-layout-direction-switcher {\\n margin: 0 1.5rem; }\\n@media (max-width: 1399.98px) {\\n .nb-theme-corporate :host ngx-layout-direction-switcher {\\n display: none; } }\\n.nb-theme-corporate :host .toggle-settings /deep/ a {\\n display: block;\\n text-decoration: none;\\n line-height: 1; }\\n.nb-theme-corporate :host .toggle-settings /deep/ a i {\\n color: #a4abb3;\\n font-size: 2.25rem;\\n border-radius: 50%;\\n position: relative;\\n -webkit-animation-name: pulse-light;\\n animation-name: pulse-light; }\\n.nb-theme-corporate :host .toggle-settings /deep/ a i::after {\\n content: ' ';\\n background-image: url(\\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\\");\\n border-radius: 50%;\\n pointer-events: none;\\n position: absolute;\\n top: 52.3%;\\n left: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n width: 13%;\\n height: 13%;\\n -webkit-animation: 3s linear infinite pulse;\\n animation: 3s linear infinite pulse; }\\n@-webkit-keyframes pulse {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(164, 171, 179, 0);\\n box-shadow: 0 0 1px 0 rgba(164, 171, 179, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(164, 171, 179, 0.4);\\n box-shadow: 0 0 3px 10px rgba(164, 171, 179, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(164, 171, 179, 0);\\n box-shadow: 0 0 5px 20px rgba(164, 171, 179, 0); } }\\n@keyframes pulse {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(164, 171, 179, 0);\\n box-shadow: 0 0 1px 0 rgba(164, 171, 179, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(164, 171, 179, 0.4);\\n box-shadow: 0 0 3px 10px rgba(164, 171, 179, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(164, 171, 179, 0);\\n box-shadow: 0 0 5px 20px rgba(164, 171, 179, 0); } }\\n@-webkit-keyframes pulse-light {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0);\\n box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4);\\n box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0);\\n box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0); } }\\n@keyframes pulse-light {\\n 0% {\\n -webkit-box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0);\\n box-shadow: 0 0 1px 0 rgba(115, 255, 208, 0); }\\n 20% {\\n -webkit-box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4);\\n box-shadow: 0 0 3px 10px rgba(115, 255, 208, 0.4); }\\n 100% {\\n -webkit-box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0);\\n box-shadow: 0 0 5px 20px rgba(115, 255, 208, 0); } }\\n@media (max-width: 991.98px) {\\n .nb-theme-corporate :host nb-action:not(.toggle-settings) {\\n border: none; }\\n .nb-theme-corporate :host .control-item {\\n display: none; }\\n .nb-theme-corporate :host .toggle-settings {\\n padding: 0; }\\n .nb-theme-corporate :host ngx-layout-direction-switcher {\\n display: none; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-corporate :host nb-user /deep/ .user-name {\\n display: none; } }\\n@media (max-width: 575.98px) {\\n .nb-theme-corporate :host .header-container .logo {\\n font-size: 1.25rem; }\\n .nb-theme-corporate :host .toggle-settings {\\n display: none; }\\n .nb-theme-corporate :host nb-action:not(.toggle-settings) {\\n padding: 0; } }\\n@media (max-width: 399.98px) {\\n .nb-theme-corporate :host .right /deep/ {\\n display: none; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvaGVhZGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxfdGhlbWluZy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9oZWFkZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGNvcmVcXF9taXhpbnMuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvaGVhZGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL2hlYWRlci9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcdGhlbWVzXFxfZGVmYXVsdC5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9oZWFkZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2Nvc21pYy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9oZWFkZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2NvcnBvcmF0ZS5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9oZWFkZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGdsb2JhbFxcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL2hlYWRlci9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvc3JjXFxhcHBcXEB0aGVtZVxcY29tcG9uZW50c1xcaGVhZGVyXFxoZWFkZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL2hlYWRlci9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvc3JjXFxhcHBcXEB0aGVtZVxcc3R5bGVzXFx0aGVtZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBR0g7O0dBRUc7QUNUSDs7OztHQUlHO0FBc0tIOzs7O0dBSUc7QUFzQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSEU7QUN2VEY7Ozs7R0FJRztBQ0pIOzs7O0dBSUc7QURKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FHdlRGOzs7O0dBSUc7QUZKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FFdlRGOzs7O0dBSUc7QURKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FJdlRGOzs7O0dBSUc7QUhKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FFdlRGOzs7O0dBSUc7QURKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FLdlRGOzs7O0dBSUc7QU4rR0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFtQkU7QUFDRjtFT2xJRixxQkFBYTtFQUFiLHFCQUFhO0VBQWIsY0FBYTtFQUNiLDBCQUE4QjtNQUE5Qix1QkFBOEI7VUFBOUIsK0JBQThCO0VBQzlCLFlBQVcsRVBtSVI7QU9qSUg7SUFDRSxxQkFBYTtJQUFiLHFCQUFhO0lBQWIsY0FBYTtJQUNiLFlBQVc7SUFDWCw2QkFBUTtRQUFSLGtCQUFRO1lBQVIsU0FBUTtJQUNSLCtCQUFtQjtJQUFuQiw4QkFBbUI7UUFBbkIsd0JBQW1CO1lBQW5CLG9CQUFtQixFQUNwQjtBQUNEO0lBQ0UsNkJBQVE7UUFBUixrQkFBUTtZQUFSLFNBQVE7SUFDUiwrQkFBMkI7SUFBM0IsK0JBQTJCO1FBQTNCLGdDQUEyQjtZQUEzQiw0QkFBMkIsRUFDNUI7QUFFRDtJQUNFLHFCQUFhO0lBQWIscUJBQWE7SUFBYixjQUFhO0lBQ2IsMEJBQW1CO1FBQW5CLHVCQUFtQjtZQUFuQixvQkFBbUI7SUFDbkIsNkJBQXFFLEVBQ3RFO0FBRUQ7SUFDRSxlQUFjLEVBQ2Y7QUFFRDtJQUNFLHFCQUFhO0lBQWIscUJBQWE7SUFBYixjQUFhO0lBQ2IsMEJBQW1CO1FBQW5CLHVCQUFtQjtZQUFuQixvQkFBbUI7SUFDbkIsWUFBVyxFQStCWjtBQTdCQztNQUdFLGtCQUFpQjtNQUNqQixzQkFBcUIsRUFNdEI7QUN3ekJDO1FQemlCQSx1QkU5UlksRUZrU2Y7QU91aUJHO1FQM2lCQSxzQkU5UlksRUZrU2Y7QU12Ukc7UUFDRSxlQUFjLEVBQ2Y7QUFJSDtNQUNFLG1CSmxCWTtNSW1CWixtQkFBa0I7TUFDbEIsaUJKbENtQjtNSXFDbkIsb0JBQW1CO01BQ25CLGFBQVksRUFTYjtBQ2t6QkM7UVByakJBLCtCRW5SYyxFRnVSakI7QU9takJHO1FQdmpCQSxnQ0VuUmMsRUZ1UmpCO0FNelFHO1FBQ0UsYUFBWTtRQUNaLGlCQUFnQixFQUNqQjtBQUVEO1FBQ0UsaUJKOUNpQixFSStDbEI7QUFrQkw7SUFDRSxpQkFBZ0IsRUFDakI7QUQxQkM7SUM2QkE7TUFDRSxjQUFhLEVBQ2QsRUFBQTtBQUdIO0lBQ0UsZUFBYztJQUNkLHNCQUFxQjtJQUNyQixlQUFjLEVBOEJmO0FBNUJDO01BQ0UsZUUxRHVCO01GMkR2QixtQkFBa0I7TUFDbEIsbUJBQWtCO01BQ2xCLG1CQUFrQjtNQUNsQixvQ0FBMkI7Y0FBM0IsNEJBQTJCLEVBc0I1QjtBQXBCQztRQUNFLGFBQVk7UUFFWix3R0FBdUc7UUFDdkcsbUJBQWtCO1FBQ2xCLHFCQUFvQjtRQUVwQixtQkFBa0I7UUFDbEIsV0FBVTtRQUNWLFVBQVM7UUFDVCx5Q0FBZ0M7Z0JBQWhDLGlDQUFnQztRQUNoQyxXQUFVO1FBQ1YsWUFBVztRQUVYLDRDQUFtQztnQkFBbkMsb0NBQW1DO1FBR2pDLG9DQUEyQjtnQkFBM0IsNEJBQTJCLEVBRTlCO0FObUNMO0VNOUJFO0lBQ0UsbURFekZ1QjtZRnlGdkIsMkNFekZ1QixFQUFBO0VGMkZ6QjtJQUNFLHdERTVGdUI7WUY0RnZCLGdERTVGdUIsRUFBQTtFRjhGekI7SUFDRSxzREUvRnVCO1lGK0Z2Qiw4Q0UvRnVCLEVBQUEsRUFBQTtBUitIM0I7RU12Q0U7SUFDRSxtREV6RnVCO1lGeUZ2QiwyQ0V6RnVCLEVBQUE7RUYyRnpCO0lBQ0Usd0RFNUZ1QjtZRjRGdkIsZ0RFNUZ1QixFQUFBO0VGOEZ6QjtJQUNFLHNERS9GdUI7WUYrRnZCLDhDRS9GdUIsRUFBQSxFQUFBO0FSc0gzQjtFTWxCRTtJQUNFLHFEQUE0QztZQUE1Qyw2Q0FBNEMsRUFBQTtFQUU5QztJQUNFLDBEQUFpRDtZQUFqRCxrREFBaUQsRUFBQTtFQUVuRDtJQUNFLHdEQUErQztZQUEvQyxnREFBK0MsRUFBQSxFQUFBO0FOb0JuRDtFTTNCRTtJQUNFLHFEQUE0QztZQUE1Qyw2Q0FBNEMsRUFBQTtFQUU5QztJQUNFLDBEQUFpRDtZQUFqRCxrREFBaUQsRUFBQTtFQUVuRDtJQUNFLHdEQUErQztZQUEvQyxnREFBK0MsRUFBQSxFQUFBO0FEekZqRDtJQytGQTtNQUNFLGFBQVksRUFDYjtJQUVEO01BQ0UsY0FBYSxFQUNkO0lBRUQ7TUFDRSxXQUFVLEVBQ1g7SUFFRDtNQUNFLGNBQWEsRUFDZCxFQUFBO0FEN0dEO0lDa0hBO01BQ0UsY0FBYSxFQUNkLEVBQUE7QURwSEQ7SUMwSEU7TUFDRSxtQkFBa0IsRUFDbkI7SUFHSDtNQUNFLGNBQWEsRUFDZDtJQUVEO01BQ0UsV0FBVSxFQUNYLEVBQUE7QURySUQ7SUN5SUE7TUFDRSxjQUFhLEVBQ2QsRUFBQTtBUGhGRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1CRTtBQUNGO0VPbElGLHFCQUFhO0VBQWIscUJBQWE7RUFBYixjQUFhO0VBQ2IsMEJBQThCO01BQTlCLHVCQUE4QjtVQUE5QiwrQkFBOEI7RUFDOUIsWUFBVyxFUG1JUjtBT2pJSDtJQUNFLHFCQUFhO0lBQWIscUJBQWE7SUFBYixjQUFhO0lBQ2IsWUFBVztJQUNYLDZCQUFRO1FBQVIsa0JBQVE7WUFBUixTQUFRO0lBQ1IsK0JBQW1CO0lBQW5CLDhCQUFtQjtRQUFuQix3QkFBbUI7WUFBbkIsb0JBQW1CLEVBQ3BCO0FBQ0Q7SUFDRSw2QkFBUTtRQUFSLGtCQUFRO1lBQVIsU0FBUTtJQUNSLCtCQUEyQjtJQUEzQiwrQkFBMkI7UUFBM0IsZ0NBQTJCO1lBQTNCLDRCQUEyQixFQUM1QjtBQUVEO0lBQ0UscUJBQWE7SUFBYixxQkFBYTtJQUFiLGNBQWE7SUFDYiwwQkFBbUI7UUFBbkIsdUJBQW1CO1lBQW5CLG9CQUFtQjtJQUNuQixnQ0FBcUUsRUFDdEU7QUFFRDtJQUNFLGVBQWMsRUFDZjtBQUVEO0lBQ0UscUJBQWE7SUFBYixxQkFBYTtJQUFiLGNBQWE7SUFDYiwwQkFBbUI7UUFBbkIsdUJBQW1CO1lBQW5CLG9CQUFtQjtJQUNuQixZQUFXLEVBK0JaO0FBN0JDO01BR0Usa0JBQWlCO01BQ2pCLHNCQUFxQixFQU10QjtBQzYrQkM7UVA5dEJBLHVCRTlSWSxFRmtTZjtBTzR0Qkc7UVBodUJBLHNCRTlSWSxFRmtTZjtBTXZSRztRQUNFLGVBQWMsRUFDZjtBQUlIO01BQ0UsbUJKbEJZO01JbUJaLG1CQUFrQjtNQUNsQixpQkpsQ21CO01JcUNuQixvQkFBbUI7TUFDbkIsYUFBWSxFQVNiO0FDdStCQztRUDF1QkEsK0JHelJjLEVINlJqQjtBT3d1Qkc7UVA1dUJBLGdDR3pSYyxFSDZSakI7QU16UUc7UUFDRSxhQUFZO1FBQ1osaUJBQWdCLEVBQ2pCO0FBRUQ7UUFDRSxpQko5Q2lCLEVJK0NsQjtBQWtCTDtJQUNFLGlCQUFnQixFQUNqQjtBRDFCQztJQzZCQTtNQUNFLGNBQWEsRUFDZCxFQUFBO0FBR0g7SUFDRSxlQUFjO0lBQ2Qsc0JBQXFCO0lBQ3JCLGVBQWMsRUE4QmY7QUE1QkM7TUFDRSxlSDdFdUI7TUc4RXZCLG1CQUFrQjtNQUNsQixtQkFBa0I7TUFDbEIsbUJBQWtCO01BQ2xCLG9DQUEyQjtjQUEzQiw0QkFBMkIsRUFzQjVCO0FBcEJDO1FBQ0UsYUFBWTtRQUVaLHdHQUF1RztRQUN2RyxtQkFBa0I7UUFDbEIscUJBQW9CO1FBRXBCLG1CQUFrQjtRQUNsQixXQUFVO1FBQ1YsVUFBUztRQUNULHlDQUFnQztnQkFBaEMsaUNBQWdDO1FBQ2hDLFdBQVU7UUFDVixZQUFXO1FBRVgsNENBQW1DO2dCQUFuQyxvQ0FBbUMsRUFLcEM7QU5tQ0w7RU05QkU7SUFDRSxtREg1R3VCO1lHNEd2QiwyQ0g1R3VCLEVBQUE7RUc4R3pCO0lBQ0Usd0RIL0d1QjtZRytHdkIsZ0RIL0d1QixFQUFBO0VHaUh6QjtJQUNFLHNESGxIdUI7WUdrSHZCLDhDSGxIdUIsRUFBQSxFQUFBO0FIa0ozQjtFTXZDRTtJQUNFLG1ESDVHdUI7WUc0R3ZCLDJDSDVHdUIsRUFBQTtFRzhHekI7SUFDRSx3REgvR3VCO1lHK0d2QixnREgvR3VCLEVBQUE7RUdpSHpCO0lBQ0Usc0RIbEh1QjtZR2tIdkIsOENIbEh1QixFQUFBLEVBQUE7QUh5STNCO0VNbEJFO0lBQ0UscURBQTRDO1lBQTVDLDZDQUE0QyxFQUFBO0VBRTlDO0lBQ0UsMERBQWlEO1lBQWpELGtEQUFpRCxFQUFBO0VBRW5EO0lBQ0Usd0RBQStDO1lBQS9DLGdEQUErQyxFQUFBLEVBQUE7QU5vQm5EO0VNM0JFO0lBQ0UscURBQTRDO1lBQTVDLDZDQUE0QyxFQUFBO0VBRTlDO0lBQ0UsMERBQWlEO1lBQWpELGtEQUFpRCxFQUFBO0VBRW5EO0lBQ0Usd0RBQStDO1lBQS9DLGdEQUErQyxFQUFBLEVBQUE7QUR6RmpEO0lDK0ZBO01BQ0UsYUFBWSxFQUNiO0lBRUQ7TUFDRSxjQUFhLEVBQ2Q7SUFFRDtNQUNFLFdBQVUsRUFDWDtJQUVEO01BQ0UsY0FBYSxFQUNkLEVBQUE7QUQ3R0Q7SUNrSEE7TUFDRSxjQUFhLEVBQ2QsRUFBQTtBRHBIRDtJQzBIRTtNQUNFLG1CQUFrQixFQUNuQjtJQUdIO01BQ0UsY0FBYSxFQUNkO0lBRUQ7TUFDRSxXQUFVLEVBQ1gsRUFBQTtBRHJJRDtJQ3lJQTtNQUNFLGNBQWEsRUFDZCxFQUFBO0FQaEZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUJFO0FBQ0Y7RU9sSUYscUJBQWE7RUFBYixxQkFBYTtFQUFiLGNBQWE7RUFDYiwwQkFBOEI7TUFBOUIsdUJBQThCO1VBQTlCLCtCQUE4QjtFQUM5QixZQUFXLEVQbUlSO0FPaklIO0lBQ0UscUJBQWE7SUFBYixxQkFBYTtJQUFiLGNBQWE7SUFDYixZQUFXO0lBQ1gsNkJBQVE7UUFBUixrQkFBUTtZQUFSLFNBQVE7SUFDUiwrQkFBbUI7SUFBbkIsOEJBQW1CO1FBQW5CLHdCQUFtQjtZQUFuQixvQkFBbUIsRUFDcEI7QUFDRDtJQUNFLDZCQUFRO1FBQVIsa0JBQVE7WUFBUixTQUFRO0lBQ1IsK0JBQTJCO0lBQTNCLCtCQUEyQjtRQUEzQixnQ0FBMkI7WUFBM0IsNEJBQTJCLEVBQzVCO0FBRUQ7SUFDRSxxQkFBYTtJQUFiLHFCQUFhO0lBQWIsY0FBYTtJQUNiLDBCQUFtQjtRQUFuQix1QkFBbUI7WUFBbkIsb0JBQW1CO0lBQ25CLDZCQUFxRSxFQUN0RTtBQUVEO0lBQ0UsZUFBYyxFQUNmO0FBRUQ7SUFDRSxxQkFBYTtJQUFiLHFCQUFhO0lBQWIsY0FBYTtJQUNiLDBCQUFtQjtRQUFuQix1QkFBbUI7WUFBbkIsb0JBQW1CO0lBQ25CLFlBQVcsRUErQlo7QUE3QkM7TUFHRSxrQkFBaUI7TUFDakIsc0JBQXFCLEVBTXRCO0FDaXFDQztRUGw1QkEsdUJFOVJZLEVGa1NmO0FPZzVCRztRUHA1QkEsc0JFOVJZLEVGa1NmO0FNdlJHO1FBQ0UsZUFBYyxFQUNmO0FBSUg7TUFDRSxtQkpsQlk7TUltQlosbUJBQWtCO01BQ2xCLGlCSmxDbUI7TUlxQ25CLG9CQUFtQjtNQUNuQixhQUFZLEVBU2I7QUMycENDO1FQOTVCQSwrQkl2U2MsRUoyU2pCO0FPNDVCRztRUGg2QkEsZ0NJdlNjLEVKMlNqQjtBTXpRRztRQUNFLGFBQVk7UUFDWixpQkFBZ0IsRUFDakI7QUFFRDtRQUNFLGlCSjlDaUIsRUkrQ2xCO0FDcXFDTDtJUHY2QkksMkJNelBtQyxFTjZQdEM7QU9xNkJEO0lQejZCSSw0Qk16UG1DLEVONlB0QztBT3U2QkQ7SVAzNkJJLGFNalA0QixFTnFQL0I7QU95NkJEO0lQNzZCSSxhTWhQNEIsRU5vUC9CO0FNaFBEO0lBQ0UsaUJBQWdCLEVBQ2pCO0FEMUJDO0lDNkJBO01BQ0UsY0FBYSxFQUNkLEVBQUE7QUFHSDtJQUNFLGVBQWM7SUFDZCxzQkFBcUI7SUFDckIsZUFBYyxFQThCZjtBQTVCQztNQUNFLGVKNURhO01JNkRiLG1CQUFrQjtNQUNsQixtQkFBa0I7TUFDbEIsbUJBQWtCO01BQ2xCLG9DQUEyQjtjQUEzQiw0QkFBMkIsRUFzQjVCO0FBcEJDO1FBQ0UsYUFBWTtRQUVaLHdHQUF1RztRQUN2RyxtQkFBa0I7UUFDbEIscUJBQW9CO1FBRXBCLG1CQUFrQjtRQUNsQixXQUFVO1FBQ1YsVUFBUztRQUNULHlDQUFnQztnQkFBaEMsaUNBQWdDO1FBQ2hDLFdBQVU7UUFDVixZQUFXO1FBRVgsNENBQW1DO2dCQUFuQyxvQ0FBbUMsRUFLcEM7QU5tQ0w7RU05QkU7SUFDRSxxREozRmE7WUkyRmIsNkNKM0ZhLEVBQUE7RUk2RmY7SUFDRSwwREo5RmE7WUk4RmIsa0RKOUZhLEVBQUE7RUlnR2Y7SUFDRSx3REpqR2E7WUlpR2IsZ0RKakdhLEVBQUEsRUFBQTtBRmlJakI7RU12Q0U7SUFDRSxxREozRmE7WUkyRmIsNkNKM0ZhLEVBQUE7RUk2RmY7SUFDRSwwREo5RmE7WUk4RmIsa0RKOUZhLEVBQUE7RUlnR2Y7SUFDRSx3REpqR2E7WUlpR2IsZ0RKakdhLEVBQUEsRUFBQTtBRndIakI7RU1sQkU7SUFDRSxxREFBNEM7WUFBNUMsNkNBQTRDLEVBQUE7RUFFOUM7SUFDRSwwREFBaUQ7WUFBakQsa0RBQWlELEVBQUE7RUFFbkQ7SUFDRSx3REFBK0M7WUFBL0MsZ0RBQStDLEVBQUEsRUFBQTtBTm9CbkQ7RU0zQkU7SUFDRSxxREFBNEM7WUFBNUMsNkNBQTRDLEVBQUE7RUFFOUM7SUFDRSwwREFBaUQ7WUFBakQsa0RBQWlELEVBQUE7RUFFbkQ7SUFDRSx3REFBK0M7WUFBL0MsZ0RBQStDLEVBQUEsRUFBQTtBRHpGakQ7SUMrRkE7TUFDRSxhQUFZLEVBQ2I7SUFFRDtNQUNFLGNBQWEsRUFDZDtJQUVEO01BQ0UsV0FBVSxFQUNYO0lBRUQ7TUFDRSxjQUFhLEVBQ2QsRUFBQTtBRDdHRDtJQ2tIQTtNQUNFLGNBQWEsRUFDZCxFQUFBO0FEcEhEO0lDMEhFO01BQ0UsbUJBQWtCLEVBQ25CO0lBR0g7TUFDRSxjQUFhLEVBQ2Q7SUFFRDtNQUNFLFdBQVUsRUFDWCxFQUFBO0FEcklEO0lDeUlBO01BQ0UsY0FBYSxFQUNkLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5cbi8qKlxuICogVGhpcyBpcyBhIHN0YXJ0aW5nIHBvaW50IHdoZXJlIHdlIGRlY2xhcmUgdGhlIG1hcHMgb2YgdGhlbWVzIGFuZCBnbG9iYWxseSBhdmFpbGFibGUgZnVuY3Rpb25zL21peGluc1xuICovXG5cbkBpbXBvcnQgJ2NvcmUvbWl4aW5zJztcbkBpbXBvcnQgJ2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ2NvcmUvYnJlYWtpbmctbm90aWNlJztcblxuJG5iLWVuYWJsZWQtdGhlbWVzOiAoKSAhZ2xvYmFsO1xuJG5iLWVuYWJsZS1jc3MtdmFyaWFibGVzOiBmYWxzZSAhZ2xvYmFsO1xuXG4kbmItdGhlbWVzOiAoKSAhZ2xvYmFsO1xuJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiAoKSAhZ2xvYmFsO1xuJG5iLXRoZW1lcy1leHBvcnQ6ICgpICFnbG9iYWw7XG5cbkBmdW5jdGlvbiBuYi10aGVtZSgka2V5KSB7XG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gbmItZ2V0LXZhbHVlKCR0aGVtZSwgJGtleSwgJHZhbHVlKSB7XG4gIEBpZiAodHlwZS1vZigkdmFsdWUpID09ICdzdHJpbmcnKSB7XG4gICAgJHRtcDogbWFwLWdldCgkdGhlbWUsICR2YWx1ZSk7XG5cbiAgICBAaWYgKCR0bXAgIT0gbnVsbCkge1xuICAgICAgQHJldHVybiBuYi1nZXQtdmFsdWUoJHRoZW1lLCAkdmFsdWUsICR0bXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gY29udmVydC10by1jc3MtdmFyaWFibGVzKCR2YXJpYWJsZXMpIHtcbiAgJHJlc3VsdDogKCk7XG4gIEBlYWNoICR2YXIsICR2YWx1ZSBpbiAkdmFyaWFibGVzIHtcbiAgICAkcmVzdWx0OiBtYXAtc2V0KCRyZXN1bHQsICR2YXIsICctLXZhcigjeyR2YXJ9KScpO1xuICB9XG5cbiAgQGRlYnVnICRyZXN1bHQ7XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQGZ1bmN0aW9uIHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKSB7XG4gICR0aGVtZTogJHRoZW1lICFnbG9iYWw7XG4gICR0aGVtZS1uYW1lOiAkdGhlbWUtbmFtZSAhZ2xvYmFsO1xuICBAaWYgKCRuYi1lbmFibGUtY3NzLXZhcmlhYmxlcykge1xuICAgICR0aGVtZTogY29udmVydC10by1jc3MtdmFyaWFibGVzKCR0aGVtZSkgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuICR0aGVtZTtcbn1cblxuQGZ1bmN0aW9uIG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgJG5hbWUsICRkZWZhdWx0OiBudWxsKSB7XG5cbiAgJHRoZW1lLWRhdGE6ICgpO1xuXG5cbiAgQGlmICgkZGVmYXVsdCAhPSBudWxsKSB7XG5cbiAgICAkdGhlbWU6IG1hcC1tZXJnZShtYXAtZ2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJGRlZmF1bHQpLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZDogbWFwLXNldCgkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQsICRuYW1lLCAkdGhlbWUpICFnbG9iYWw7XG5cbiAgICAkdGhlbWUtZGF0YTogbWFwLXNldCgkdGhlbWUtZGF0YSwgZGF0YSwgJHRoZW1lKTtcbiAgICAkbmItdGhlbWVzLWV4cG9ydDogbWFwLXNldCgkbmItdGhlbWVzLWV4cG9ydCwgJG5hbWUsIG1hcC1zZXQoJHRoZW1lLWRhdGEsIHBhcmVudCwgJGRlZmF1bHQpKSAhZ2xvYmFsO1xuXG4gIH0gQGVsc2Uge1xuICAgICRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZDogbWFwLXNldCgkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQsICRuYW1lLCAkdGhlbWUpICFnbG9iYWw7XG5cbiAgICAkdGhlbWUtZGF0YTogbWFwLXNldCgkdGhlbWUtZGF0YSwgZGF0YSwgJHRoZW1lKTtcbiAgICAkbmItdGhlbWVzLWV4cG9ydDogbWFwLXNldCgkbmItdGhlbWVzLWV4cG9ydCwgJG5hbWUsIG1hcC1zZXQoJHRoZW1lLWRhdGEsIHBhcmVudCwgbnVsbCkpICFnbG9iYWw7XG4gIH1cblxuICAkdGhlbWUtcGFyc2VkOiAoKTtcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICR0aGVtZSB7XG4gICAgJHRoZW1lLXBhcnNlZDogbWFwLXNldCgkdGhlbWUtcGFyc2VkLCAka2V5LCBuYi1nZXQtdmFsdWUoJHRoZW1lLCAka2V5LCAkdmFsdWUpKTtcbiAgfVxuXG4gIC8vIGVuYWJsZSByaWdodCBhd2F5IHdoZW4gaW5zdGFsbGVkXG4gICR0aGVtZS1wYXJzZWQ6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUtcGFyc2VkLCAkbmFtZSk7XG4gIEByZXR1cm4gbWFwLXNldCgkbmItdGhlbWVzLCAkbmFtZSwgJHRoZW1lLXBhcnNlZCk7XG59XG5cbkBmdW5jdGlvbiBnZXQtZW5hYmxlZC10aGVtZXMoKSB7XG4gICR0aGVtZXMtdG8taW5zdGFsbDogKCk7XG5cbiAgQGlmIChsZW5ndGgoJG5iLWVuYWJsZWQtdGhlbWVzKSA+IDApIHtcbiAgICBAZWFjaCAkdGhlbWUtbmFtZSBpbiAkbmItZW5hYmxlZC10aGVtZXMge1xuICAgICAgJHRoZW1lcy10by1pbnN0YWxsOiBtYXAtc2V0KCR0aGVtZXMtdG8taW5zdGFsbCwgJHRoZW1lLW5hbWUsIG1hcC1nZXQoJG5iLXRoZW1lcywgJHRoZW1lLW5hbWUpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR0aGVtZXMtdG8taW5zdGFsbDogJG5iLXRoZW1lcztcbiAgfVxuXG4gIEByZXR1cm4gJHRoZW1lcy10by1pbnN0YWxsO1xufVxuXG5AbWl4aW4gaW5zdGFsbC1jc3MtdmFyaWFibGVzKCR0aGVtZS1uYW1lLCAkdmFyaWFibGVzKSB7XG4gIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSB7XG4gICAgQGVhY2ggJHZhciwgJHZhbHVlIGluICR2YXJpYWJsZXMge1xuICAgICAgLS0jeyR2YXJ9OiAkdmFsdWU7XG4gICAgfVxuICB9XG59XG5cbi8vIFRPRE86IHdlIGhpZGUgOmhvc3QgaW5zaWRlIG9mIGl0IHdoaWNoIGlzIG5vdCBvYnZpb3VzXG5AbWl4aW4gbmItaW5zdGFsbC1jb21wb25lbnQoKSB7XG5cbiAgJHRoZW1lcy10by1pbnN0YWxsOiBnZXQtZW5hYmxlZC10aGVtZXMoKTtcblxuICBAZWFjaCAkdGhlbWUtbmFtZSwgJHRoZW1lIGluICR0aGVtZXMtdG8taW5zdGFsbCB7XG4gICAgLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4gICAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IDpob3N0IHtcbiAgICAgICR0aGVtZTogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBuYi1mb3ItdGhlbWUoJG5hbWUpIHtcbiAgQGlmICgkdGhlbWUtbmFtZSA9PSAkbmFtZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4gICAgXG4vLyBBZGQgY29udGVudCBmb3IgdGhlbWUgaW50byBhIGxpc3Qgb2YgdGhlbWVzXG5AbWl4aW4gbmItZm9yLXRoZW1lcygkbmFtZXMuLi4pIHtcbiAgQGVhY2ggJG5hbWUgaW4gJG5hbWVzIHtcbiAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoJG5hbWUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbmItZXhjZXB0LXRoZW1lKCRuYW1lKSB7XG4gIEBpZiAoJHRoZW1lLW5hbWUgIT0gJG5hbWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBBZGQgY29udGVudCBleGNlcHQgZm9yIHRoZW1lIGludG8gYSBsaXN0IG9mIHRoZW1lc1xuQG1peGluIG5iLWV4Y2VwdC1mb3ItdGhlbWVzKCRuYW1lcy4uLikge1xuICBAZWFjaCAkbmFtZSBpbiAkbmFtZXMge1xuICAgIEBpbmNsdWRlIG5iLWV4Y2VwdC10aGVtZSgkbmFtZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIFRPRE86IGFub3RoZXIgbWl4aW5nIGZvciB0aGUgYWxtb3N0IHNhbWUgdGhpbmdcbkBtaXhpbiBuYi1pbnN0YWxsLXJvb3QtY29tcG9uZW50KCkge1xuICBAd2FybiAnYG5iLWluc3RhbGwtcm9vdC1jb21wb25lbnRgIGlzIGRlcHJpY2F0ZWQsIHJlcGxhY2Ugd2l0aCBgbmItaW5zdGFsbC1jb21wb25lbnRgLCBhcyBgYm9keWAgaXMgcm9vdCBlbGVtZW50IG5vdyc7XG5cbiAgQGluY2x1ZGUgbmItaW5zdGFsbC1jb21wb25lbnQoKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG5iLWluc3RhbGwtZ2xvYmFsKCkge1xuICAkdGhlbWVzLXRvLWluc3RhbGw6IGdldC1lbmFibGVkLXRoZW1lcygpO1xuXG4gIEBlYWNoICR0aGVtZS1uYW1lLCAkdGhlbWUgaW4gJHRoZW1lcy10by1pbnN0YWxsIHtcbiAgICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0ge1xuICAgICAgJHRoZW1lOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSk7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICAkdGVtcDogbmItYnJlYWtpbmctbm90aWNlLXNob3coJHRoZW1lKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQG1peGluIG5iLXNjcm9sbGJhcnMoJGZnLCAkYmcsICRzaXplLCAkYm9yZGVyLXJhZGl1czogJHNpemUgLyAyKSB7XG4gIDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogJGZnO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6ICRiZztcbiAgfVxuXG4gIC8vIFRPRE86IHJlbW92ZVxuICAvLyBGb3IgSW50ZXJuZXQgRXhwbG9yZXJcbiAgc2Nyb2xsYmFyLWZhY2UtY29sb3I6ICRmZztcbiAgc2Nyb2xsYmFyLXRyYWNrLWNvbG9yOiAkYmc7XG59XG5cbkBtaXhpbiBuYi1yYWRpYWwtZ3JhZGllbnQoJGNvbG9yLTEsICRjb2xvci0yLCAkY29sb3ItMykge1xuICBiYWNrZ3JvdW5kOiAkY29sb3ItMjsgLyogT2xkIGJyb3dzZXJzICovXG4gIGJhY2tncm91bmQ6IC1tb3otcmFkaWFsLWdyYWRpZW50KGJvdHRvbSwgZWxsaXBzZSBjb3ZlciwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBGRjMuNi0xNSAqL1xuICBiYWNrZ3JvdW5kOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChib3R0b20sIGVsbGlwc2UgY292ZXIsICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogQ2hyb21lMTAtMjUsU2FmYXJpNS4xLTYgKi9cbiAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgYm90dG9tLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIFczQywgSUUxMCssIEZGMTYrLCBDaHJvbWUyNissIE9wZXJhMTIrLCBTYWZhcmk3KyAqL1xuICBmaWx0ZXI6IHByb2dpZDpkeGltYWdldHJhbnNmb3JtLm1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSckY29sb3ItMScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENvbG9yc3RyPSckY29sb3ItMycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYWRpZW50VHlwZT0xKTsgLyogSUU2LTkgZmFsbGJhY2sgb24gaG9yaXpvbnRhbCBncmFkaWVudCAqL1xufVxuXG5AbWl4aW4gbmItcmlnaHQtZ3JhZGllbnQoJGxlZnQtY29sb3IsICRyaWdodC1jb2xvcikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRsZWZ0LWNvbG9yLCAkcmlnaHQtY29sb3IpO1xufVxuXG5AbWl4aW4gbmItaGVhZGluZ3MoJGZyb206IDEsICR0bzogNikge1xuICBAZm9yICRpIGZyb20gJGZyb20gdGhyb3VnaCAkdG8ge1xuICAgIGgjeyRpfSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBob3Zlci1mb2N1cy1hY3RpdmUge1xuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSxcbiAgJjpob3ZlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGNlbnRlci1ob3Jpem9udGFsLWFic29sdXRlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgbGVmdDogNTAlO1xufVxuXG5AbWl4aW4gaW5zdGFsbC10aHVtYigpIHtcbiAgJHRodW1iLXNlbGVjdG9yczogKFxuICAgICc6Oi13ZWJraXQtc2xpZGVyLXRodW1iJ1xuICAgICc6Oi1tb3otcmFuZ2UtdGh1bWInXG4gICAgJzo6LW1zLXRodW1iJ1xuICApO1xuXG4gIEBlYWNoICRzZWxlY3RvciBpbiAkdGh1bWItc2VsZWN0b3JzIHtcbiAgICAmI3skc2VsZWN0b3J9IHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaW5zdGFsbC10cmFjaygpIHtcbiAgJHRodW1iLXNlbGVjdG9yczogKFxuICAgICc6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrJ1xuICAgICc6Oi1tb3otcmFuZ2UtdHJhY2snXG4gICAgJzo6LW1zLXRyYWNrJ1xuICApO1xuXG4gIEBlYWNoICRzZWxlY3RvciBpbiAkdGh1bWItc2VsZWN0b3JzIHtcbiAgICAmI3skc2VsZWN0b3J9IHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaW5zdGFsbC1wbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpIHtcbiAgJHBsYWNlaG9sZGVyLXNlbGVjdG9yczogKFxuICAgICc6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXInXG4gICAgJzo6LW1vei1wbGFjZWhvbGRlcidcbiAgICAnOi1tb3otcGxhY2Vob2xkZXInXG4gICAgJzotbXMtaW5wdXQtcGxhY2Vob2xkZXInXG4gICk7XG5cbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSk7XG4gIH1cblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHBsYWNlaG9sZGVyLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICBAaW5jbHVkZSBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpO1xuICAgIH1cblxuICAgICY6Zm9jdXMjeyRzZWxlY3Rvcn0ge1xuICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXItZm9jdXMoKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSkge1xuICBjb2xvcjogJGNvbG9yO1xuICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIHBsYWNlaG9sZGVyLWZvY3VzKCkge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbn1cblxuQG1peGluIGFuaW1hdGlvbigkYW5pbWF0ZS4uLikge1xuICAkbWF4OiBsZW5ndGgoJGFuaW1hdGUpO1xuICAkYW5pbWF0aW9uczogJyc7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbWF4IHtcbiAgICAkYW5pbWF0aW9uczogI3skYW5pbWF0aW9ucyArIG50aCgkYW5pbWF0ZSwgJGkpfTtcblxuICAgIEBpZiAkaSA8ICRtYXgge1xuICAgICAgJGFuaW1hdGlvbnM6ICN7JGFuaW1hdGlvbnMgKyAnLCAnfTtcbiAgICB9XG4gIH1cbiAgLXdlYmtpdC1hbmltYXRpb246ICRhbmltYXRpb25zO1xuICAtbW96LWFuaW1hdGlvbjogICAgJGFuaW1hdGlvbnM7XG4gIC1vLWFuaW1hdGlvbjogICAgICAkYW5pbWF0aW9ucztcbiAgYW5pbWF0aW9uOiAgICAgICAgICRhbmltYXRpb25zO1xufVxuXG5AbWl4aW4ga2V5ZnJhbWVzKCRhbmltYXRpb25OYW1lKSB7XG4gIEAtd2Via2l0LWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3ota2V5ZnJhbWVzICN7JGFuaW1hdGlvbk5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW8ta2V5ZnJhbWVzICN7JGFuaW1hdGlvbk5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAa2V5ZnJhbWVzICN7JGFuaW1hdGlvbk5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG5AbWl4aW4gYnRuLXB1bHNlKCRuYW1lLCAkY29sb3IpIHtcbiAgJi5idG4tcHVsc2Uge1xuICAgIEBpbmNsdWRlIGFuaW1hdGlvbihidG4tI3skbmFtZX0tcHVsc2UgMS41cyBpbmZpbml0ZSk7XG4gIH1cblxuICBAaW5jbHVkZSBrZXlmcmFtZXMoYnRuLSN7JG5hbWV9LXB1bHNlKSB7XG4gICAgMCUge1xuICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIG9wYWNpdHk6IG5iLXRoZW1lKGJ0bi1kaXNhYmxlZC1vcGFjaXR5KTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIDAgJGNvbG9yO1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBvcGFjaXR5OiBuYi10aGVtZShidG4tZGlzYWJsZWQtb3BhY2l0eSk7XG4gICAgfVxuICB9XG59XG5cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cblxuQG1peGluIF9wcmVwZW5kLXdpdGgtc2VsZWN0b3IoJHNlbGVjdG9yLCAkcHJvcDogbnVsbCwgJHZhbHVlOiBudWxsKSB7XG4gICN7JHNlbGVjdG9yfSAmIHtcbiAgICBAaWYgJHByb3AgIT0gbnVsbCB7XG4gICAgICAjeyRwcm9wfTogJHZhbHVlO1xuICAgIH1cblxuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1sdHIoJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICBAaW5jbHVkZSBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCdbZGlyPWx0cl0nLCAkcHJvcCwgJHZhbHVlKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG5iLXJ0bCgkcHJvcDogbnVsbCwgJHZhbHVlOiBudWxsKSB7XG4gIEBpbmNsdWRlIF9wcmVwZW5kLXdpdGgtc2VsZWN0b3IoJ1tkaXI9cnRsXScsICRwcm9wLCAkdmFsdWUpIHtcbiAgICBAY29udGVudDtcbiAgfTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuLy8vIFNsaWdodGx5IGxpZ2h0ZW4gYSBjb2xvclxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gY29sb3IgdG8gdGludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIHBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gcmV0dXJuZWQgY29sb3Jcbi8vLyBAcmV0dXJuIHtDb2xvcn1cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgod2hpdGUsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG4vLy8gU2xpZ2h0bHkgZGFya2VuIGEgY29sb3Jcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGNvbG9yIHRvIHNoYWRlXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwZXJjZW50YWdlIC0gcGVyY2VudGFnZSBvZiBgJGNvbG9yYCBpbiByZXR1cm5lZCBjb2xvclxuLy8vIEByZXR1cm4ge0NvbG9yfVxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoYmxhY2ssICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG5AZnVuY3Rpb24gbWFwLXNldCgkbWFwLCAka2V5LCAkdmFsdWU6IG51bGwpIHtcbiAgJG5ldzogKCRrZXk6ICR2YWx1ZSk7XG4gIEByZXR1cm4gbWFwLW1lcmdlKCRtYXAsICRuZXcpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AaW1wb3J0ICcuLi9jb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICcuLi9jb3JlL21peGlucyc7XG5cbiR0aGVtZTogKFxuICBmb250LW1haW46IHVucXVvdGUoJ1wiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmJyksXG4gIGZvbnQtc2Vjb25kYXJ5OiBmb250LW1haW4sXG5cbiAgZm9udC13ZWlnaHQtdGhpbjogMjAwLFxuICBmb250LXdlaWdodC1saWdodDogMzAwLFxuICBmb250LXdlaWdodC1ub3JtYWw6IDQwMCxcbiAgZm9udC13ZWlnaHQtYm9sZGVyOiA1MDAsXG4gIGZvbnQtd2VpZ2h0LWJvbGQ6IDYwMCxcbiAgZm9udC13ZWlnaHQtdWx0cmEtYm9sZDogODAwLFxuXG4gIC8vIFRPRE86IHVzZSBpdCBhcyBhIGRlZmF1bHQgZm9udC1zaXplXG4gIGJhc2UtZm9udC1zaXplOiAxNnB4LFxuXG4gIGZvbnQtc2l6ZS14bGc6IDEuMjVyZW0sXG4gIGZvbnQtc2l6ZS1sZzogMS4xMjVyZW0sXG4gIGZvbnQtc2l6ZTogMXJlbSxcbiAgZm9udC1zaXplLXNtOiAwLjg3NXJlbSxcbiAgZm9udC1zaXplLXhzOiAwLjc1cmVtLFxuXG4gIHJhZGl1czogMC4zNzVyZW0sXG4gIHBhZGRpbmc6IDEuMjVyZW0sXG4gIG1hcmdpbjogMS41cmVtLFxuICBsaW5lLWhlaWdodDogMS4yNSxcblxuICBjb2xvci1iZzogI2ZmZmZmZixcbiAgY29sb3ItYmctYWN0aXZlOiAjZTllZGYyLFxuICBjb2xvci1mZzogI2E0YWJiMyxcbiAgY29sb3ItZmctaGVhZGluZzogIzJhMmEyYSxcbiAgY29sb3ItZmctdGV4dDogIzRiNGI0YixcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiAjNDBkYzdlLFxuXG4gIHNlcGFyYXRvcjogI2ViZWVmMixcblxuICBjb2xvci1ncmF5OiByZ2JhKDgxLCAxMTMsIDE2NSwgMC4xNSksXG4gIGNvbG9yLW5ldXRyYWw6IHRyYW5zcGFyZW50LFxuICBjb2xvci13aGl0ZTogI2ZmZmZmZixcbiAgY29sb3ItZGlzYWJsZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSxcblxuICBjb2xvci1wcmltYXJ5OiAjOGE3ZmZmLFxuICBjb2xvci1zdWNjZXNzOiAjNDBkYzdlLFxuICBjb2xvci1pbmZvOiAjNGNhNmZmLFxuICBjb2xvci13YXJuaW5nOiAjZmZhMTAwLFxuICBjb2xvci1kYW5nZXI6ICNmZjRjNmEsXG5cbiAgLy8gVE9ETzogbW92ZSB0byBjb25zdGFudHNcbiAgc29jaWFsLWNvbG9yLWZhY2Vib29rOiAjM2I1OTk4LFxuICBzb2NpYWwtY29sb3ItdHdpdHRlcjogIzU1YWNlZSxcbiAgc29jaWFsLWNvbG9yLWdvb2dsZTogI2RkNGIzOSxcbiAgc29jaWFsLWNvbG9yLWxpbmtlZGluOiAjMDE3N2I1LFxuICBzb2NpYWwtY29sb3ItZ2l0aHViOiAjNmI2YjZiLFxuICBzb2NpYWwtY29sb3Itc3RhY2tvdmVyZmxvdzogIzJmOTZlOCxcbiAgc29jaWFsLWNvbG9yLWRyaWJibGU6ICNmMjY3OTgsXG4gIHNvY2lhbC1jb2xvci1iZWhhbmNlOiAjMDA5M2ZhLFxuXG4gIGJvcmRlci1jb2xvcjogY29sb3ItZ3JheSxcbiAgc2hhZG93OiAwIDJweCAxMnB4IDAgI2RmZTNlYixcblxuICBsaW5rLWNvbG9yOiAjM2RjYzZkLFxuICBsaW5rLWNvbG9yLWhvdmVyOiAjMmVlNTZiLFxuICBsaW5rLWNvbG9yLXZpc2l0ZWQ6IGxpbmstY29sb3IsXG5cbiAgc2Nyb2xsYmFyLWZnOiAjZGFkYWRhLFxuICBzY3JvbGxiYXItYmc6ICNmMmYyZjIsXG4gIHNjcm9sbGJhci13aWR0aDogNXB4LFxuICBzY3JvbGxiYXItdGh1bWItcmFkaXVzOiAyLjVweCxcblxuICByYWRpYWwtZ3JhZGllbnQ6IG5vbmUsXG4gIGxpbmVhci1ncmFkaWVudDogbm9uZSxcblxuICBjYXJkLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBjYXJkLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgY2FyZC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBjYXJkLWZnOiBjb2xvci1mZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICBjYXJkLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtYmc6IGNvbG9yLWJnLFxuICBjYXJkLWhlaWdodC14eHNtYWxsOiA5NnB4LFxuICBjYXJkLWhlaWdodC14c21hbGw6IDIxNnB4LFxuICBjYXJkLWhlaWdodC1zbWFsbDogMzM2cHgsXG4gIGNhcmQtaGVpZ2h0LW1lZGl1bTogNDU2cHgsXG4gIGNhcmQtaGVpZ2h0LWxhcmdlOiA1NzZweCxcbiAgY2FyZC1oZWlnaHQteGxhcmdlOiA2OTZweCxcbiAgY2FyZC1oZWlnaHQteHhsYXJnZTogODE2cHgsXG4gIGNhcmQtc2hhZG93OiBzaGFkb3csXG4gIGNhcmQtYm9yZGVyLXdpZHRoOiAwLFxuICBjYXJkLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgY2FyZC1ib3JkZXItY29sb3I6IGNvbG9yLWJnLFxuICBjYXJkLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2FyZC1wYWRkaW5nOiBwYWRkaW5nLFxuICBjYXJkLW1hcmdpbjogbWFyZ2luLFxuICBjYXJkLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGNhcmQtaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICBjYXJkLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgY2FyZC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgY2FyZC1oZWFkZXItZmc6IGNvbG9yLWZnLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWhlYWRlci1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjYXJkLWhlYWRlci1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBjYXJkLWhlYWRlci1hY3RpdmUtZmc6IGNvbG9yLWJnLFxuICBjYXJkLWhlYWRlci1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIGNhcmQtaGVhZGVyLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhcmQtaGVhZGVyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIGNhcmQtaGVhZGVyLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNhcmQtaGVhZGVyLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGNhcmQtaGVhZGVyLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICBjYXJkLWhlYWRlci1ib3JkZXItd2lkdGg6IDFweCxcbiAgY2FyZC1oZWFkZXItYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBjYXJkLWhlYWRlci1ib3JkZXItY29sb3I6IGNhcmQtc2VwYXJhdG9yLFxuXG4gIGhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgaGVhZGVyLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgaGVhZGVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBoZWFkZXItYmc6IGNvbG9yLWJnLFxuICBoZWFkZXItaGVpZ2h0OiA0Ljc1cmVtLFxuICBoZWFkZXItcGFkZGluZzogMS4yNXJlbSxcbiAgaGVhZGVyLXNoYWRvdzogc2hhZG93LFxuXG4gIGZvb3Rlci1oZWlnaHQ6IDQuNzI1cmVtLFxuICBmb290ZXItcGFkZGluZzogMS4yNXJlbSxcbiAgZm9vdGVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBmb290ZXItZmctaGlnaGxpZ2h0OiBjb2xvci1mZy1oZWFkaW5nLFxuICBmb290ZXItYmc6IGNvbG9yLWJnLFxuICBmb290ZXItc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGZvb3Rlci1zaGFkb3c6IHNoYWRvdyxcblxuICBsYXlvdXQtZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgbGF5b3V0LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBsYXlvdXQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBsYXlvdXQtZmc6IGNvbG9yLWZnLFxuICBsYXlvdXQtYmc6ICNlYmVmZjUsXG4gIGxheW91dC1taW4taGVpZ2h0OiAxMDB2aCxcbiAgbGF5b3V0LWNvbnRlbnQtd2lkdGg6IDkwMHB4LFxuICBsYXlvdXQtd2luZG93LW1vZGUtbWluLXdpZHRoOiAzMDBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLW1heC13aWR0aDogMTkyMHB4LFxuICBsYXlvdXQtd2luZG93LW1vZGUtYmc6IGxheW91dC1iZyxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLXBhZGRpbmctdG9wOiA0Ljc1cmVtLFxuICBsYXlvdXQtd2luZG93LXNoYWRvdzogc2hhZG93LFxuICBsYXlvdXQtcGFkZGluZzogMi4yNXJlbSAyLjI1cmVtIDAuNzVyZW0sXG4gIGxheW91dC1tZWRpdW0tcGFkZGluZzogMS41cmVtIDEuNXJlbSAwLjVyZW0sXG4gIGxheW91dC1zbWFsbC1wYWRkaW5nOiAxcmVtIDFyZW0gMCxcblxuICBzaWRlYmFyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBzaWRlYmFyLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgc2lkZWJhci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc2lkZWJhci1iZzogY29sb3ItYmcsXG4gIHNpZGViYXItaGVpZ2h0OiAxMDB2aCxcbiAgc2lkZWJhci13aWR0aDogMTZyZW0sXG4gIHNpZGViYXItd2lkdGgtY29tcGFjdDogMy41cmVtLFxuICBzaWRlYmFyLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHNpZGViYXItaGVhZGVyLWhlaWdodDogMy41cmVtLFxuICBzaWRlYmFyLWZvb3Rlci1oZWlnaHQ6IDMuNXJlbSxcbiAgc2lkZWJhci1zaGFkb3c6IHNoYWRvdyxcblxuICBtZW51LWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgbWVudS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbWVudS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LWZnOiBjb2xvci1mZy10ZXh0LFxuICBtZW51LWJnOiBjb2xvci1iZyxcbiAgbWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtYWN0aXZlLWJnOiBjb2xvci1iZyxcbiAgbWVudS1hY3RpdmUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG5cbiAgbWVudS1zdWJtZW51LWJnOiBjb2xvci1iZyxcbiAgbWVudS1zdWJtZW51LWZnOiBjb2xvci1mZy10ZXh0LFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnOiBjb2xvci1iZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhpZ2hsaWdodCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1zaGFkb3c6IG5vbmUsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1mZzogbWVudS1zdWJtZW51LWFjdGl2ZS1mZyxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWJnOiBtZW51LXN1Ym1lbnUtYmcsXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci13aWR0aDogMC4xMjVyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tcGFkZGluZzogMC41cmVtIDFyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWNvbnRhaW5lci1wYWRkaW5nOiAwIDEuMjVyZW0sXG4gIG1lbnUtc3VibWVudS1wYWRkaW5nOiAwLjVyZW0sXG5cbiAgbWVudS1ncm91cC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LWdyb3VwLWZvbnQtc2l6ZTogMC44NzVyZW0sXG4gIG1lbnUtZ3JvdXAtZmc6IGNvbG9yLWZnLFxuICBtZW51LWdyb3VwLXBhZGRpbmc6IDFyZW0gMS4yNXJlbSxcbiAgbWVudS1pdGVtLXBhZGRpbmc6IDAuNjc1cmVtIDAuNzVyZW0sXG4gIG1lbnUtaXRlbS1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgbWVudS1pY29uLWZvbnQtc2l6ZTogMi41cmVtLFxuICBtZW51LWljb24tbWFyZ2luOiAwIDAuMjVyZW0gMCxcbiAgbWVudS1pY29uLWNvbG9yOiBjb2xvci1mZyxcbiAgbWVudS1pY29uLWFjdGl2ZS1jb2xvcjogY29sb3ItZmctaGVhZGluZyxcblxuICB0YWJzLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgdGFicy1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgdGFicy1jb250ZW50LWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIHRhYnMtY29udGVudC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgdGFicy1hY3RpdmUtYmc6IHRyYW5zcGFyZW50LFxuICB0YWJzLWFjdGl2ZS1mb250LXdlaWdodDogY2FyZC1oZWFkZXItZm9udC13ZWlnaHQsXG4gIHRhYnMtcGFkZGluZzogcGFkZGluZyxcbiAgdGFicy1jb250ZW50LXBhZGRpbmc6IDAsXG4gIHRhYnMtaGVhZGVyLWJnOiB0cmFuc3BhcmVudCxcbiAgdGFicy1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgdGFicy1mZzogY29sb3ItZmcsXG4gIHRhYnMtZmctZGlzYWJsZWQ6IHRhYnMtZmcsXG4gIHRhYnMtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgdGFicy1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICB0YWJzLWJnOiB0cmFuc3BhcmVudCxcbiAgdGFicy1zZWxlY3RlZDogY29sb3Itc3VjY2VzcyxcbiAgdGFicy1zZWxlY3RlZC1zZWNvbmQtY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtZGVncmVlczogMCxcbiAgdGFicy1pY29uLW9ubHktbWF4LXdpZHRoOiA1NzZweCxcblxuICByb3V0ZS10YWJzLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgcm91dGUtdGFicy1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgcm91dGUtdGFicy1hY3RpdmUtYmc6IHRyYW5zcGFyZW50LFxuICByb3V0ZS10YWJzLWFjdGl2ZS1mb250LXdlaWdodDogY2FyZC1oZWFkZXItZm9udC13ZWlnaHQsXG4gIHJvdXRlLXRhYnMtcGFkZGluZzogcGFkZGluZyxcbiAgcm91dGUtdGFicy1oZWFkZXItYmc6IHRyYW5zcGFyZW50LFxuICByb3V0ZS10YWJzLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICByb3V0ZS10YWJzLWZnOiBjb2xvci1mZyxcbiAgcm91dGUtdGFicy1mZy1kaXNhYmxlZDogcm91dGUtdGFicy1mZyxcbiAgcm91dGUtdGFicy1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICByb3V0ZS10YWJzLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1zZWxlY3RlZDogY29sb3Itc3VjY2VzcyxcbiAgcm91dGUtdGFicy1pY29uLW9ubHktbWF4LXdpZHRoOiA1NzZweCxcblxuICB1c2VyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICB1c2VyLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgdXNlci1iZzogY29sb3ItYmcsXG4gIHVzZXItZmc6IGNvbG9yLWZnLFxuICB1c2VyLWZnLWhpZ2hsaWdodDogI2JjYzNjYyxcbiAgdXNlci1mb250LWZhbWlseS1zZWNvbmRhcnk6IGZvbnQtc2Vjb25kYXJ5LFxuICB1c2VyLXNpemUtc21hbGw6IDEuNXJlbSxcbiAgdXNlci1zaXplLW1lZGl1bTogMi41cmVtLFxuICB1c2VyLXNpemUtbGFyZ2U6IDMuMjVyZW0sXG4gIHVzZXItc2l6ZS14bGFyZ2U6IDRyZW0sXG5cbiAgcG9wb3Zlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgcG9wb3Zlci1iZzogY29sb3ItYmcsXG4gIHBvcG92ZXItYm9yZGVyOiBjb2xvci1zdWNjZXNzLFxuICBwb3BvdmVyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgcG9wb3Zlci1zaGFkb3c6IG5vbmUsXG4gIHBvcG92ZXItYXJyb3ctc2l6ZTogMTFweCxcblxuICBjb250ZXh0LW1lbnUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNvbnRleHQtbWVudS1iZzogY29sb3ItYmcsXG4gIGNvbnRleHQtbWVudS1hY3RpdmUtZmc6IGNvbG9yLXdoaXRlLFxuICBjb250ZXh0LW1lbnUtYWN0aXZlLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjb250ZXh0LW1lbnUtYm9yZGVyOiBjb2xvci1zdWNjZXNzLFxuICBjb250ZXh0LW1lbnUtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjb250ZXh0LW1lbnUtc2hhZG93OiBub25lLFxuICBjb250ZXh0LW1lbnUtYXJyb3ctc2l6ZTogMTFweCxcblxuICBhY3Rpb25zLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBhY3Rpb25zLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYWN0aW9ucy1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGFjdGlvbnMtZmc6IGNvbG9yLWZnLFxuICBhY3Rpb25zLWJnOiBjb2xvci1iZyxcbiAgYWN0aW9ucy1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgYWN0aW9ucy1wYWRkaW5nOiBwYWRkaW5nLFxuICBhY3Rpb25zLXNpemUtc21hbGw6IDEuNXJlbSxcbiAgYWN0aW9ucy1zaXplLW1lZGl1bTogMi4yNXJlbSxcbiAgYWN0aW9ucy1zaXplLWxhcmdlOiAzLjVyZW0sXG5cbiAgc2VhcmNoLWJ0bi1vcGVuLWZnOiBjb2xvci1mZyxcbiAgc2VhcmNoLWJ0bi1jbG9zZS1mZzpcdGNvbG9yLWZnLFxuICBzZWFyY2gtYmc6IGxheW91dC1iZyxcbiAgc2VhcmNoLWJnLXNlY29uZGFyeTogY29sb3ItZmcsXG4gIHNlYXJjaC10ZXh0OiBjb2xvci1mZy1oZWFkaW5nLFxuICBzZWFyY2gtaW5mbzogY29sb3ItZmcsXG4gIHNlYXJjaC1kYXNoOiBjb2xvci1mZyxcbiAgc2VhcmNoLXBsYWNlaG9sZGVyOiBjb2xvci1mZyxcblxuICBzbWFydC10YWJsZS1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBzbWFydC10YWJsZS1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzbWFydC10YWJsZS1oZWFkZXItYmc6IGNvbG9yLWJnLFxuXG4gIHNtYXJ0LXRhYmxlLWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIHNtYXJ0LXRhYmxlLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBzbWFydC10YWJsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBzbWFydC10YWJsZS1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNtYXJ0LXRhYmxlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzbWFydC10YWJsZS1iZzogY29sb3ItYmcsXG5cbiAgc21hcnQtdGFibGUtYmctZXZlbjogI2Y1ZjdmYyxcbiAgc21hcnQtdGFibGUtZmctc2Vjb25kYXJ5OiBjb2xvci1mZyxcbiAgc21hcnQtdGFibGUtYmctYWN0aXZlOiAjZTZmM2ZmLFxuICBzbWFydC10YWJsZS1wYWRkaW5nOiAwLjg3NXJlbSAxLjI1cmVtLFxuICBzbWFydC10YWJsZS1maWx0ZXItcGFkZGluZzogMC4zNzVyZW0gMC41cmVtLFxuICBzbWFydC10YWJsZS1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgc21hcnQtdGFibGUtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ib3JkZXItY29sb3I6IHNlcGFyYXRvcixcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci13aWR0aDogMXB4LFxuICBzbWFydC10YWJsZS1wYWdpbmctZmctYWN0aXZlOiAjZmZmZmZmLFxuICBzbWFydC10YWJsZS1wYWdpbmctYmctYWN0aXZlOiBjb2xvci1zdWNjZXNzLFxuICBzbWFydC10YWJsZS1wYWdpbmctaG92ZXI6IHJnYmEoMCwgMCwgMCwgMC4wNSksXG5cbiAgdG9hc3RyLWJnOiBjb2xvci1iZyxcbiAgdG9hc3RyLXBhZGRpbmc6IDEuMTI1cmVtLFxuICB0b2FzdHItZmc6IGNvbG9yLWZnLXRleHQsXG4gIHRvYXN0ci1ib3JkZXI6IDAuMTI1cmVtIHNvbGlkLFxuICB0b2FzdHItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICB0b2FzdHItYm9yZGVyLWNvbG9yOiAjYmNjM2NjLFxuICB0b2FzdHItaWNvbi1yYWRpdXM6IDAuMjVyZW0sXG4gIHRvYXN0ci1zaGFkb3c6IHNoYWRvdyxcblxuICBidG4tZmc6IGNvbG9yLXdoaXRlLFxuICBidG4tZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBidG4tbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBidG4tZGlzYWJsZWQtb3BhY2l0eTogMC4zLFxuICBidG4tY3Vyc29yOiBkZWZhdWx0LFxuXG4gIGJ0bi1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBidG4tc2Vjb25kYXJ5LWJnOiB0cmFuc3BhcmVudCxcbiAgYnRuLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIGJ0bi1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBidG4td2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgYnRuLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuXG4gIGJ0bi1zZWNvbmRhcnktYm9yZGVyOiAjZGFkZmU2LFxuICBidG4tc2Vjb25kYXJ5LWJvcmRlci13aWR0aDogMnB4LFxuXG4gIGJ0bi1wYWRkaW5nLXktbGc6IDAuODc1cmVtLFxuICBidG4tcGFkZGluZy14LWxnOiAxLjc1cmVtLFxuICBidG4tZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG5cbiAgLy8gZGVmYXVsdCBzaXplXG4gIGJ0bi1wYWRkaW5nLXktbWQ6IDAuNzVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtbWQ6IDEuNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1tZDogMXJlbSxcblxuICBidG4tcGFkZGluZy15LXNtOiAwLjYyNXJlbSxcbiAgYnRuLXBhZGRpbmcteC1zbTogMS41cmVtLFxuICBidG4tZm9udC1zaXplLXNtOiAwLjg3NXJlbSxcblxuICBidG4tcGFkZGluZy15LXhzOiAwLjVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgteHM6IDEuMjVyZW0sXG4gIGJ0bi1mb250LXNpemUteHM6IDAuNzVyZW0sXG5cbiAgYnRuLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYnRuLXJlY3RhbmdsZS1ib3JkZXItcmFkaXVzOiAwLjI1cmVtLFxuICBidG4tc2VtaS1yb3VuZC1ib3JkZXItcmFkaXVzOiAwLjc1cmVtLFxuICBidG4tcm91bmQtYm9yZGVyLXJhZGl1czogMS41cmVtLFxuXG4gIGJ0bi1oZXJvLXNoYWRvdzogbm9uZSxcbiAgYnRuLWhlcm8tdGV4dC1zaGFkb3c6IG5vbmUsXG4gIGJ0bi1oZXJvLWJldmVsLXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLWdsb3ctc2l6ZTogMCAwIDAgMCxcbiAgYnRuLWhlcm8tcHJpbWFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc3VjY2Vzcy1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8td2FybmluZy1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8taW5mby1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tZGFuZ2VyLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zZWNvbmRhcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRlZ3JlZTogMjBkZWcsXG4gIGJ0bi1oZXJvLXByaW1hcnktZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZGVncmVlOiAxMGRlZyxcbiAgYnRuLWhlcm8taW5mby1kZWdyZWU6IC0xMGRlZyxcbiAgYnRuLWhlcm8tZGFuZ2VyLWRlZ3JlZTogLTIwZGVnLFxuICBidG4taGVyby1zZWNvbmRhcnktZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcblxuICBidG4tb3V0bGluZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLW91dGxpbmUtaG92ZXItZmc6ICNmZmZmZmYsXG4gIGJ0bi1vdXRsaW5lLWZvY3VzLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIGJ0bi1ncm91cC1iZzogbGF5b3V0LWJnLFxuICBidG4tZ3JvdXAtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1ncm91cC1zZXBhcmF0b3I6ICNkYWRmZTYsXG5cbiAgZm9ybS1jb250cm9sLXRleHQtcHJpbWFyeS1jb2xvcjogY29sb3ItZmctaGVhZGluZyxcbiAgZm9ybS1jb250cm9sLWJnOiBjb2xvci1iZyxcbiAgZm9ybS1jb250cm9sLWZvY3VzLWJnOiBjb2xvci1iZyxcblxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXdpZHRoOiAycHgsXG4gIGZvcm0tY29udHJvbC1ib3JkZXItdHlwZTogc29saWQsXG4gIGZvcm0tY29udHJvbC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGZvcm0tY29udHJvbC1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXM6IDAuNzVyZW0sXG4gIGZvcm0tY29udHJvbC1yb3VuZC1ib3JkZXItcmFkaXVzOiAxLjVyZW0sXG4gIGZvcm0tY29udHJvbC1ib3JkZXItY29sb3I6ICNkYWRmZTYsXG4gIGZvcm0tY29udHJvbC1zZWxlY3RlZC1ib3JkZXItY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG5cbiAgZm9ybS1jb250cm9sLWluZm8tYm9yZGVyLWNvbG9yOiBjb2xvci1pbmZvLFxuICBmb3JtLWNvbnRyb2wtc3VjY2Vzcy1ib3JkZXItY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIGZvcm0tY29udHJvbC1kYW5nZXItYm9yZGVyLWNvbG9yOiBjb2xvci1kYW5nZXIsXG4gIGZvcm0tY29udHJvbC13YXJuaW5nLWJvcmRlci1jb2xvcjogY29sb3Itd2FybmluZyxcblxuICBmb3JtLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3I6IGNvbG9yLWZnLFxuICBmb3JtLWNvbnRyb2wtcGxhY2Vob2xkZXItZm9udC1zaXplOiAxcmVtLFxuXG4gIGZvcm0tY29udHJvbC1mb250LXNpemU6IDFyZW0sXG4gIGZvcm0tY29udHJvbC1wYWRkaW5nOiAwLjc1cmVtIDEuMTI1cmVtLFxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplLXNtOiBmb250LXNpemUtc20sXG4gIGZvcm0tY29udHJvbC1wYWRkaW5nLXNtOiAwLjM3NXJlbSAxLjEyNXJlbSxcbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZy1sZzogMS4xMjVyZW0sXG5cbiAgZm9ybS1jb250cm9sLWxhYmVsLWZvbnQtd2VpZ2h0OiA0MDAsXG5cbiAgZm9ybS1jb250cm9sLWZlZWRiYWNrLWZvbnQtc2l6ZTogMC44NzVyZW0sXG4gIGZvcm0tY29udHJvbC1mZWVkYmFjay1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuXG4gIGNoZWNrYm94LWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtYm9yZGVyLWNvbG9yOiBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yLFxuICBjaGVja2JveC1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuXG4gIGNoZWNrYm94LWNoZWNrZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1jaGVja2VkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoZWNrYm94LWNoZWNrZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIGNoZWNrYm94LWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGVja2JveC1kaXNhYmxlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgbW9kYWwtZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1vZGFsLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgbW9kYWwtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgbW9kYWwtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1vZGFsLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1vZGFsLWJnOiBjb2xvci1iZyxcbiAgbW9kYWwtYm9yZGVyOiB0cmFuc3BhcmVudCxcbiAgbW9kYWwtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBtb2RhbC1wYWRkaW5nOiBwYWRkaW5nLFxuICBtb2RhbC1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBtb2RhbC1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbW9kYWwtaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICBtb2RhbC1ib2R5LWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIG1vZGFsLWJvZHktZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgbW9kYWwtYm9keS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbW9kYWwtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG5cbiAgYmFkZ2UtZmctdGV4dDogY29sb3Itd2hpdGUsXG4gIGJhZGdlLXByaW1hcnktYmctY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIGJhZGdlLXN1Y2Nlc3MtYmctY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIGJhZGdlLWluZm8tYmctY29sb3I6IGNvbG9yLWluZm8sXG4gIGJhZGdlLXdhcm5pbmctYmctY29sb3I6IGNvbG9yLXdhcm5pbmcsXG4gIGJhZGdlLWRhbmdlci1iZy1jb2xvcjogY29sb3ItZGFuZ2VyLFxuXG4gIHByb2dyZXNzLWJhci1oZWlnaHQteGxnOiAxLjc1cmVtLFxuICBwcm9ncmVzcy1iYXItaGVpZ2h0LWxnOiAxLjVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQ6IDEuMzc1cmVtLFxuICBwcm9ncmVzcy1iYXItaGVpZ2h0LXNtOiAxLjI1cmVtLFxuICBwcm9ncmVzcy1iYXItaGVpZ2h0LXhzOiAxcmVtLFxuICBwcm9ncmVzcy1iYXItYW5pbWF0aW9uLWR1cmF0aW9uOiA0MDBtcyxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS14bGc6IGZvbnQtc2l6ZS14bGcsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXNtOiBmb250LXNpemUtc20sXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUteHM6IGZvbnQtc2l6ZS14cyxcbiAgcHJvZ3Jlc3MtYmFyLXJhZGl1czogcmFkaXVzLFxuICBwcm9ncmVzcy1iYXItYmc6IGxheW91dC1iZyxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtY29sb3I6IGNvbG9yLXdoaXRlLFxuICBwcm9ncmVzcy1iYXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIHByb2dyZXNzLWJhci1kZWZhdWx0LWJnOiBjb2xvci1pbmZvLFxuICBwcm9ncmVzcy1iYXItcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgcHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIHByb2dyZXNzLWJhci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBwcm9ncmVzcy1iYXItd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgcHJvZ3Jlc3MtYmFyLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuXG4gIGFsZXJ0LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBhbGVydC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGFsZXJ0LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFsZXJ0LWZnOiBjb2xvci13aGl0ZSxcbiAgYWxlcnQtb3V0bGluZS1mZzogY29sb3ItZmcsXG4gIGFsZXJ0LWJnOiBjb2xvci1iZyxcbiAgYWxlcnQtYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgYWxlcnQtZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBhbGVydC1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGFsZXJ0LXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGFsZXJ0LWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIGFsZXJ0LXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGFsZXJ0LXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGFsZXJ0LWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICBhbGVydC1oZWlnaHQteHhzbWFsbDogNTJweCxcbiAgYWxlcnQtaGVpZ2h0LXhzbWFsbDogNzJweCxcbiAgYWxlcnQtaGVpZ2h0LXNtYWxsOiA5MnB4LFxuICBhbGVydC1oZWlnaHQtbWVkaXVtOiAxMTJweCxcbiAgYWxlcnQtaGVpZ2h0LWxhcmdlOiAxMzJweCxcbiAgYWxlcnQtaGVpZ2h0LXhsYXJnZTogMTUycHgsXG4gIGFsZXJ0LWhlaWdodC14eGxhcmdlOiAxNzJweCxcbiAgYWxlcnQtc2hhZG93OiBub25lLFxuICBhbGVydC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGFsZXJ0LXBhZGRpbmc6IDFyZW0gMS4xMjVyZW0sXG4gIGFsZXJ0LWNsb3NhYmxlLXBhZGRpbmc6IDNyZW0sXG4gIGFsZXJ0LWJ1dHRvbi1wYWRkaW5nOiAzcmVtLFxuICBhbGVydC1tYXJnaW46IG1hcmdpbixcblxuICBjaGF0LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBjaGF0LWZnOiBjb2xvci13aGl0ZSxcbiAgY2hhdC1iZzogY29sb3ItYmcsXG4gIGNoYXQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjaGF0LWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIGNoYXQtaGVpZ2h0LXh4c21hbGw6IDk2cHgsXG4gIGNoYXQtaGVpZ2h0LXhzbWFsbDogMjE2cHgsXG4gIGNoYXQtaGVpZ2h0LXNtYWxsOiAzMzZweCxcbiAgY2hhdC1oZWlnaHQtbWVkaXVtOiA0NTZweCxcbiAgY2hhdC1oZWlnaHQtbGFyZ2U6IDU3NnB4LFxuICBjaGF0LWhlaWdodC14bGFyZ2U6IDY5NnB4LFxuICBjaGF0LWhlaWdodC14eGxhcmdlOiA4MTZweCxcbiAgY2hhdC1ib3JkZXI6IGJvcmRlcixcbiAgY2hhdC1wYWRkaW5nOiBwYWRkaW5nLFxuICBjaGF0LXNoYWRvdzogc2hhZG93LFxuICBjaGF0LXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBjaGF0LW1lc3NhZ2UtZmc6IGNvbG9yLXdoaXRlLFxuICBjaGF0LW1lc3NhZ2UtYmc6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzRjYTZmZiwgIzU5YmZmZiksXG4gIGNoYXQtbWVzc2FnZS1yZXBseS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjaGF0LW1lc3NhZ2UtcmVwbHktZmc6IGNvbG9yLWZnLXRleHQsXG4gIGNoYXQtbWVzc2FnZS1hdmF0YXItYmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2Utc2VuZGVyLWZnOiBjb2xvci1mZyxcbiAgY2hhdC1tZXNzYWdlLXF1b3RlLWZnOiBjb2xvci1mZyxcbiAgY2hhdC1tZXNzYWdlLXF1b3RlLWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNoYXQtbWVzc2FnZS1maWxlLWZnOiBjb2xvci1mZyxcbiAgY2hhdC1tZXNzYWdlLWZpbGUtYmc6IHRyYW5zcGFyZW50LFxuICBjaGF0LWZvcm0tYmc6IHRyYW5zcGFyZW50LFxuICBjaGF0LWZvcm0tZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNoYXQtZm9ybS1ib3JkZXI6IHNlcGFyYXRvcixcbiAgY2hhdC1mb3JtLXBsYWNlaG9sZGVyLWZnOiBjb2xvci1mZyxcbiAgY2hhdC1mb3JtLWFjdGl2ZS1ib3JkZXI6IGNvbG9yLWZnLFxuICBjaGF0LWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGNoYXQtZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBjaGF0LWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgY2hhdC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBjaGF0LWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIGNoYXQtc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2hhdC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBjaGF0LWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuXG4gIHNwaW5uZXItYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44MyksXG4gIHNwaW5uZXItY2lyY2xlLWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHNwaW5uZXItZmc6IGNvbG9yLWZnLXRleHQsXG4gIHNwaW5uZXItYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgc3Bpbm5lci1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIHNwaW5uZXItZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBzcGlubmVyLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHNwaW5uZXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgc3Bpbm5lci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBzcGlubmVyLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHNwaW5uZXItZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIHNwaW5uZXIteHhzbWFsbDogMS4yNXJlbSxcbiAgc3Bpbm5lci14c21hbGw6IDEuNXJlbSxcbiAgc3Bpbm5lci1zbWFsbDogMS43NXJlbSxcbiAgc3Bpbm5lci1tZWRpdW06IDJyZW0sXG4gIHNwaW5uZXItbGFyZ2U6IDIuMjVyZW0sXG4gIHNwaW5uZXIteGxhcmdlOiAyLjVyZW0sXG4gIHNwaW5uZXIteHhsYXJnZTogM3JlbSxcblxuICBzdGVwcGVyLWluZGV4LXNpemU6IDJyZW0sXG4gIHN0ZXBwZXItbGFiZWwtZm9udC1zaXplOiBmb250LXNpemUtc20sXG4gIHN0ZXBwZXItbGFiZWwtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgc3RlcHBlci1hY2NlbnQtY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIHN0ZXBwZXItY29tcGxldGVkLWZnOiBjb2xvci13aGl0ZSxcbiAgc3RlcHBlci1mZzogY29sb3ItZmcsXG4gIHN0ZXBwZXItY29tcGxldGVkLWljb24tc2l6ZTogMS41cmVtLFxuICBzdGVwcGVyLWNvbXBsZXRlZC1pY29uLXdlaWdodDogZm9udC13ZWlnaHQtdWx0cmEtYm9sZCxcbiAgc3RlcHBlci1zdGVwLXBhZGRpbmc6IHBhZGRpbmcsXG5cbiAgYWNjb3JkaW9uLXBhZGRpbmc6IHBhZGRpbmcsXG4gIGFjY29yZGlvbi1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgYWNjb3JkaW9uLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGFjY29yZGlvbi1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIGFjY29yZGlvbi1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWNjb3JkaW9uLWhlYWRlci1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICBhY2NvcmRpb24taGVhZGVyLWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1ib3JkZXItd2lkdGg6IDFweCxcbiAgYWNjb3JkaW9uLWhlYWRlci1ib3JkZXItdHlwZTogc29saWQsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLWNvbG9yOiBhY2NvcmRpb24tc2VwYXJhdG9yLFxuICBhY2NvcmRpb24tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBhY2NvcmRpb24taXRlbS1iZzogY29sb3ItYmcsXG4gIGFjY29yZGlvbi1pdGVtLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBhY2NvcmRpb24taXRlbS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhY2NvcmRpb24taXRlbS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBhY2NvcmRpb24taXRlbS1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICBhY2NvcmRpb24taXRlbS1zaGFkb3c6IHNoYWRvdyxcblxuICBsaXN0LWl0ZW0tYm9yZGVyLWNvbG9yOiB0YWJzLXNlcGFyYXRvcixcbiAgbGlzdC1pdGVtLXBhZGRpbmc6IDFyZW0sXG5cbiAgY2FsZW5kYXItd2lkdGg6IDIxLjg3NXJlbSxcbiAgY2FsZW5kYXItYm9keS1oZWlnaHQ6IDI1LjYyNXJlbSxcbiAgY2FsZW5kYXItaGVhZGVyLXRpdGxlLWZvbnQtc2l6ZTogZm9udC1zaXplLXhsZyxcbiAgY2FsZW5kYXItaGVhZGVyLXRpdGxlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBjYWxlbmRhci1oZWFkZXItc3ViLXRpdGxlLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBjYWxlbmRhci1oZWFkZXItc3ViLXRpdGxlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC10aGluLFxuICBjYWxlbmRhci1uYXZpZ2F0aW9uLWJ1dHRvbi13aWR0aDogMTByZW0sXG4gIGNhbGVuZGFyLXNlbGVjdGVkLWl0ZW0tYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNhbGVuZGFyLWhvdmVyLWl0ZW0tYmc6IGNhbGVuZGFyLXNlbGVjdGVkLWl0ZW0tYmcsXG4gIGNhbGVuZGFyLXRvZGF5LWl0ZW0tYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2FsZW5kYXItYWN0aXZlLWl0ZW0tYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNhbGVuZGFyLWZnOiBjb2xvci1mZy10ZXh0LFxuICBjYWxlbmRhci1zZWxlY3RlZC1mZzogY29sb3Itd2hpdGUsXG4gIGNhbGVuZGFyLXRvZGF5LWZnOiBjYWxlbmRhci1mZyxcbiAgY2FsZW5kYXItZGF5LWNlbGwtd2lkdGg6IDIuNjI1cmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1oZWlnaHQ6IDIuNjI1cmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoOiA0LjI1cmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodDogMi4zNzVyZW0sXG4gIGNhbGVuZGFyLXllYXItY2VsbC13aWR0aDogY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aCxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWhlaWdodDogY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQsXG4gIGNhbGVuZGFyLWluYWN0aXZlLW9wYWNpdHk6IDAuNSxcbiAgY2FsZW5kYXItZGlzYWJsZWQtb3BhY2l0eTogMC4zLFxuICBjYWxlbmRhci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNhbGVuZGFyLXdlZWtkYXktd2lkdGg6IGNhbGVuZGFyLWRheS1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci13ZWVrZGF5LWhlaWdodDogMS43NXJlbSxcbiAgY2FsZW5kYXItd2Vla2RheS1mb250LXNpemU6IGZvbnQtc2l6ZS14cyxcbiAgY2FsZW5kYXItd2Vla2RheS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBjYWxlbmRhci13ZWVrZGF5LWZnOiBjb2xvci1mZyxcbiAgY2FsZW5kYXItd2Vla2RheS1ob2xpZGF5LWZnOiBjb2xvci1kYW5nZXIsXG4gIGNhbGVuZGFyLXJhbmdlLWJnLWluLXJhbmdlOiAjZWJmYmYyLFxuXG4gIGNhbGVuZGFyLWxhcmdlLXdpZHRoOiAyNC4zNzVyZW0sXG4gIGNhbGVuZGFyLWxhcmdlLWJvZHktaGVpZ2h0OiAyNy43NXJlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtbGFyZ2Utd2lkdGg6IDNyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWxhcmdlLWhlaWdodDogM3JlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC1sYXJnZS13aWR0aDogNC4yNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC1sYXJnZS1oZWlnaHQ6IDIuMzc1cmVtLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtbGFyZ2Utd2lkdGg6IGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXllYXItY2VsbC1sYXJnZS1oZWlnaHQ6IGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0LFxuXG4gIG92ZXJsYXktYmFja2Ryb3AtYmc6IHJnYmEoMCwgMCwgMCwgMC4yODgpLFxuXG4gIHRvb2x0aXAtYmc6IGNvbG9yLWZnLXRleHQsXG4gIHRvb2x0aXAtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgdG9vbHRpcC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICB0b29sdGlwLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRvb2x0aXAtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgdG9vbHRpcC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgdG9vbHRpcC1mZzogY29sb3ItYmctYWN0aXZlLFxuICB0b29sdGlwLXN0YXR1cy1mZzogY29sb3ItYmctYWN0aXZlLFxuICB0b29sdGlwLXNoYWRvdzogc2hhZG93LFxuICB0b29sdGlwLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuXG4gIHNlbGVjdC1ib3JkZXItd2lkdGg6IDJweCxcbiAgc2VsZWN0LW1heC1oZWlnaHQ6IDIwcmVtLFxuICBzZWxlY3QtYmc6IGNvbG9yLWJnLFxuXG4gIHNlbGVjdC1jaGVja2JveC1jb2xvcjogY2hlY2tib3gtYm9yZGVyLWNvbG9yLFxuICBzZWxlY3QtY2hlY2ttYXJrLWNvbG9yOiBjaGVja2JveC1ib3JkZXItY29sb3IsXG5cbiAgc2VsZWN0LW9wdGlvbi1kaXNhYmxlZC1iZzogI2YyZjRmNyxcbiAgc2VsZWN0LW9wdGlvbi1kaXNhYmxlZC1vcGFjaXR5OiAwLjMsXG4gIHNlbGVjdC1vcHRpb24tcGFkZGluZzogMC43NXJlbSAxLjVyZW0sXG5cbiAgZGF0ZXBpY2tlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgZGF0ZXBpY2tlci1iZzogY29sb3ItYmcsXG4gIGRhdGVwaWNrZXItYm9yZGVyOiBjb2xvci1zdWNjZXNzLFxuICBkYXRlcGlja2VyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgZGF0ZXBpY2tlci1zaGFkb3c6IG5vbmUsXG4gIGRhdGVwaWNrZXItYXJyb3ctc2l6ZTogMTFweCxcblxuICByYWRpby1iZzogdHJhbnNwYXJlbnQsXG4gIHJhZGlvLWZnOiBjb2xvci1mZy10ZXh0LFxuICByYWRpby1zaXplOiAxLjI1cmVtLFxuICByYWRpby1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1ib3JkZXItY29sb3I6IGZvcm0tY29udHJvbC1ib3JkZXItY29sb3IsXG4gIHJhZGlvLWNoZWNrbWFyazogdHJhbnNwYXJlbnQsXG4gIHJhZGlvLWNoZWNrZWQtYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1jaGVja2VkLXNpemU6IDEuMjVyZW0sXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tY2hlY2tlZC1ib3JkZXItY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJhZGlvLWNoZWNrZWQtY2hlY2ttYXJrOiBjb2xvci1zdWNjZXNzLFxuICByYWRpby1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQsXG4gIHJhZGlvLWRpc2FibGVkLXNpemU6IDEuMjVyZW0sXG4gIHJhZGlvLWRpc2FibGVkLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWRpc2FibGVkLWJvcmRlci1jb2xvcjogcmFkaW8tYm9yZGVyLWNvbG9yLFxuICByYWRpby1kaXNhYmxlZC1jaGVja21hcms6IHJhZGlvLWNoZWNrbWFyayxcblxuICB0cmVlLWdyaWQtY2VsbC1ib3JkZXItd2lkdGg6IDFweCxcbiAgdHJlZS1ncmlkLWNlbGwtYm9yZGVyLXN0eWxlOiBzb2xpZCxcbiAgdHJlZS1ncmlkLWNlbGwtYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIHRyZWUtZ3JpZC1yb3ctbWluLWhlaWdodDogMnJlbSxcbiAgdHJlZS1ncmlkLWNlbGwtcGFkZGluZzogMC44NzVyZW0gMS4yNXJlbSxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1ib3JkZXI6IG5vbmUsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tcGFkZGluZzogMCxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1mb250LXdlaWdodDogYm9sZCxcbiAgdHJlZS1ncmlkLWhlYWRlci1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1mb290ZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtcm93LWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXJvdy1iZy1ldmVuOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXJvdy1ob3Zlci1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tY29sb3I6IGNvbG9yLWZnLXRleHQsXG4gIHRyZWUtZ3JpZC1pY29uLWNvbG9yOiBjb2xvci1mZy10ZXh0LFxuKTtcblxuLy8gcmVnaXN0ZXIgdGhlIHRoZW1lXG4kbmItdGhlbWVzOiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsIGRlZmF1bHQpO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AaW1wb3J0ICcuLi9jb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICcuLi9jb3JlL21peGlucyc7XG5AaW1wb3J0ICdkZWZhdWx0JztcblxuLy8gZGVmYXVsdCB0aGUgYmFzZSB0aGVtZVxuJHRoZW1lOiAoXG4gIHJhZGl1czogMC41cmVtLFxuXG4gIGNvbG9yLWJnOiAjM2QzNzgwLFxuICBjb2xvci1iZy1hY3RpdmU6ICM0OTQyOTksXG4gIGNvbG9yLWZnOiAjYTFhMWU1LFxuICBjb2xvci1mZy1oZWFkaW5nOiAjZmZmZmZmLFxuICBjb2xvci1mZy10ZXh0OiAjZDFkMWZmLFxuICBjb2xvci1mZy1oaWdobGlnaHQ6ICMwMGY5YTYsXG5cbiAgY29sb3ItZ3JheTogcmdiYSg4MSwgMTEzLCAxNjUsIDAuMTUpLFxuICBjb2xvci1uZXV0cmFsOiB0cmFuc3BhcmVudCxcbiAgY29sb3Itd2hpdGU6ICNmZmZmZmYsXG4gIGNvbG9yLWRpc2FibGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCksXG5cbiAgY29sb3ItcHJpbWFyeTogIzc2NTlmZixcbiAgY29sb3Itc3VjY2VzczogIzAwZDk3NyxcbiAgY29sb3ItaW5mbzogIzAwODhmZixcbiAgY29sb3Itd2FybmluZzogI2ZmYTEwMCxcbiAgY29sb3ItZGFuZ2VyOiAjZmYzODZhLFxuXG4gIGxpbmstY29sb3I6ICMwMGY5YTYsXG4gIGxpbmstY29sb3ItaG92ZXI6ICMxNGZmYmUsXG5cbiAgc2VwYXJhdG9yOiAjMzQyZTczLFxuICBzaGFkb3c6IDAgOHB4IDIwcHggMCByZ2JhKDQwLCAzNywgODksIDAuNiksXG5cbiAgY2FyZC1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcblxuICBsYXlvdXQtYmc6ICMyZjI5NmIsXG5cbiAgc2Nyb2xsYmFyLWZnOiAjNTU0ZGIzLFxuICBzY3JvbGxiYXItYmc6ICMzMzJlNzMsXG5cbiAgcmFkaWFsLWdyYWRpZW50OiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSA1MCUsICM0MjNmOGMsICMzMDJjNmUpLFxuICBsaW5lYXItZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzE3MTc0OSwgIzQxMzc4OSksXG5cbiAgc2lkZWJhci1mZzogY29sb3Itc2Vjb25kYXJ5LFxuICBzaWRlYmFyLWJnOiBjb2xvci1iZyxcblxuICBoZWFkZXItZmc6IGNvbG9yLXdoaXRlLFxuICBoZWFkZXItYmc6IGNvbG9yLWJnLFxuXG4gIGZvb3Rlci1mZzogY29sb3ItZmcsXG4gIGZvb3Rlci1iZzogY29sb3ItYmcsXG5cbiAgYWN0aW9ucy1mZzogY29sb3ItZmcsXG4gIGFjdGlvbnMtYmc6IGNvbG9yLWJnLFxuXG4gIHVzZXItZmc6IGNvbG9yLWJnLFxuICB1c2VyLWJnOiBjb2xvci1mZyxcbiAgdXNlci1mZy1oaWdobGlnaHQ6IGNvbG9yLWZnLWhpZ2hsaWdodCxcblxuICBwb3BvdmVyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbiAgcG9wb3Zlci1zaGFkb3c6IHNoYWRvdyxcblxuICBjb250ZXh0LW1lbnUtYWN0aXZlLWJnOiBjb2xvci1wcmltYXJ5LFxuICBjb250ZXh0LW1lbnUtYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuXG4gIGZvb3Rlci1oZWlnaHQ6IGhlYWRlci1oZWlnaHQsXG5cbiAgc2lkZWJhci13aWR0aDogMTYuMjVyZW0sXG4gIHNpZGViYXItd2lkdGgtY29tcGFjdDogMy40NXJlbSxcblxuICBtZW51LWZnOiBjb2xvci1mZyxcbiAgbWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci13aGl0ZSxcbiAgbWVudS1ncm91cC1mZzogY29sb3Itd2hpdGUsXG4gIG1lbnUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgbWVudS1hY3RpdmUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1zdWJtZW51LWJnOiBsYXlvdXQtYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYmc6IHJnYmEoMCwgMjU1LCAxNzAsIDAuMjUpLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGlnaGxpZ2h0LFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLXNoYWRvdzogMCAycHggMTJweCAwIHJnYmEoMCwgMjU1LCAxNzAsIDAuMjUpLFxuICBtZW51LWl0ZW0tcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtLFxuICBtZW51LWl0ZW0tc2VwYXJhdG9yOiB0cmFuc3BhcmVudCxcblxuICBidG4taGVyby1zaGFkb3c6IDAgNHB4IDEwcHggMCByZ2JhKDMzLCA3LCA3NywgMC41KSxcbiAgYnRuLWhlcm8tdGV4dC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyksXG4gIGJ0bi1oZXJvLWJldmVsLXNpemU6IDAgM3B4IDAgMCxcbiAgYnRuLWhlcm8tZ2xvdy1zaXplOiAwIDJweCA4cHggMCxcbiAgYnRuLWhlcm8tcHJpbWFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc3VjY2Vzcy1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8td2FybmluZy1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8taW5mby1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tZGFuZ2VyLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zZWNvbmRhcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1zZWNvbmRhcnktYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuICBidG4tb3V0bGluZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLW91dGxpbmUtaG92ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWZvY3VzLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tZ3JvdXAtYmc6ICMzNzMyNzMsXG4gIGJ0bi1ncm91cC1zZXBhcmF0b3I6ICMzMTJjNjYsXG5cbiAgZm9ybS1jb250cm9sLWJnOiAjMzczMTdhLFxuICBmb3JtLWNvbnRyb2wtZm9jdXMtYmc6IHNlcGFyYXRvcixcbiAgZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICBmb3JtLWNvbnRyb2wtc2VsZWN0ZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuXG4gIGNoZWNrYm94LWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtYm9yZGVyLWNvbG9yOiBjb2xvci1mZyxcbiAgY2hlY2tib3gtY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcblxuICBjaGVja2JveC1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBjaGVja2JveC1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBjaGVja2JveC1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWRpc2FibGVkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGVhZGluZyxcbiAgY2hlY2tib3gtZGlzYWJsZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIHNlYXJjaC1iZzogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMTcxNzQ5LCAjNDEzNzg5KSxcblxuICBzbWFydC10YWJsZS1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHNtYXJ0LXRhYmxlLWJnLWV2ZW46ICMzYTM0N2EsXG4gIHNtYXJ0LXRhYmxlLWJnLWFjdGl2ZTogY29sb3ItYmctYWN0aXZlLFxuXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ib3JkZXItY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ib3JkZXItd2lkdGg6IDJweCxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWZnLWFjdGl2ZTogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJnLWFjdGl2ZTogY29sb3ItcHJpbWFyeSxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWhvdmVyOiByZ2JhKDAsIDAsIDAsIDAuMiksXG5cbiAgYmFkZ2UtZmctdGV4dDogY29sb3Itd2hpdGUsXG4gIGJhZGdlLXByaW1hcnktYmctY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIGJhZGdlLXN1Y2Nlc3MtYmctY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIGJhZGdlLWluZm8tYmctY29sb3I6IGNvbG9yLWluZm8sXG4gIGJhZGdlLXdhcm5pbmctYmctY29sb3I6IGNvbG9yLXdhcm5pbmcsXG4gIGJhZGdlLWRhbmdlci1iZy1jb2xvcjogY29sb3ItZGFuZ2VyLFxuXG4gIHNwaW5uZXItYmc6IHJnYmEoNjEsIDU1LCAxMjgsIDAuOSksXG4gIHN0ZXBwZXItYWNjZW50LWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLWRlZ3JlZXM6IDIwZGVnLFxuXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogIzRlNDA5NSxcbiAgY2FsZW5kYXItdG9kYXktaXRlbS1iZzogIzM1MmY2ZSxcblxuICBzZWxlY3Qtb3B0aW9uLWRpc2FibGVkLWJnOiAjMzEyZTc1LFxuXG4gIHRvYXN0ci1jb2xvci1mZzogY29sb3Itd2hpdGUsXG4gIHRvYXN0ci1wYWRkaW5nOiAxLjI1cmVtLFxuICB0b2FzdHItYm9yZGVyOiAwLFxuICB0b2FzdHItZGVmYXVsdC1iYWNrZ3JvdW5kOiAjYmNjM2NjLFxuXG4gIHRvb2x0aXAtZmc6IGNvbG9yLWJnLFxuICB0b29sdGlwLXN0YXR1cy1mZzogY29sb3Itd2hpdGUsXG5cbiAgZGF0ZXBpY2tlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4gIGRhdGVwaWNrZXItc2hhZG93OiBzaGFkb3csXG5cbiAgcmFkaW8tY2hlY2tlZC1ib3JkZXItY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIHJhZGlvLWNoZWNrZWQtY2hlY2ttYXJrOiBjb2xvci1wcmltYXJ5LFxuKTtcblxuLy8gcmVnaXN0ZXIgdGhlIHRoZW1lXG4kbmItdGhlbWVzOiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsIGNvc21pYywgZGVmYXVsdCk7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBpbXBvcnQgJy4uL2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJy4uL2NvcmUvbWl4aW5zJztcbkBpbXBvcnQgJ2RlZmF1bHQnO1xuXG4vLyBkZWZhdWx0IHRoZSBiYXNlIHRoZW1lXG4kdGhlbWU6IChcbiAgaGVhZGVyLWZnOiAjZjdmYWZiLFxuICBoZWFkZXItYmc6ICMxMTEyMTgsXG5cbiAgbGF5b3V0LWJnOiAjZjFmNWY4LFxuXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICMxODE4MTgsXG4gIGNvbG9yLWZnLXRleHQ6ICM0YjRiNGIsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogY29sb3ItZmcsXG5cbiAgc2VwYXJhdG9yOiAjY2RkNWRjLFxuXG4gIHJhZGl1czogMC4xN3JlbSxcblxuICBzY3JvbGxiYXItYmc6ICNlM2U5ZWUsXG5cbiAgY29sb3ItcHJpbWFyeTogIzczYTFmZixcbiAgY29sb3Itc3VjY2VzczogIzVkY2ZlMyxcbiAgY29sb3ItaW5mbzogI2JhN2ZlYyxcbiAgY29sb3Itd2FybmluZzogI2ZmYTM2YixcbiAgY29sb3ItZGFuZ2VyOiAjZmY2YjgzLFxuXG4gIGJ0bi1zZWNvbmRhcnktYmc6ICNlZGYyZjUsXG4gIGJ0bi1zZWNvbmRhcnktYm9yZGVyOiAjZWRmMmY1LFxuXG4gIGFjdGlvbnMtZmc6ICNkM2RiZTUsXG4gIGFjdGlvbnMtYmc6IGNvbG9yLWJnLFxuXG4gIHNpZGViYXItYmc6ICNlM2U5ZWUsXG5cbiAgYm9yZGVyLWNvbG9yOiAjZDVkYmUwLFxuXG4gIG1lbnUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1iZzogI2UzZTllZSxcbiAgbWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtYWN0aXZlLWJnOiBtZW51LWJnLFxuXG4gIG1lbnUtc3VibWVudS1iZzogbWVudS1iZyxcbiAgbWVudS1zdWJtZW51LWZnOiBjb2xvci1mZy10ZXh0LFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnOiAjY2RkNWRjLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJvcmRlci1jb2xvcjogbWVudS1zdWJtZW51LWFjdGl2ZS1iZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1zaGFkb3c6IG5vbmUsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1mZzogbWVudS1zdWJtZW51LWFjdGl2ZS1mZyxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWJnOiBtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItd2lkdGg6IDAuMTI1cmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1lbnUtc3VibWVudS1pdGVtLXBhZGRpbmc6IDAuNXJlbSAxcmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1jb250YWluZXItcGFkZGluZzogMCAxLjI1cmVtLFxuICBtZW51LXN1Ym1lbnUtcGFkZGluZzogMC41cmVtLFxuXG4gIGJ0bi1ib3JkZXItcmFkaXVzOiBidG4tc2VtaS1yb3VuZC1ib3JkZXItcmFkaXVzLFxuXG4gIGJ0bi1oZXJvLWRlZ3JlZTogMGRlZyxcbiAgYnRuLWhlcm8tcHJpbWFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tc3VjY2Vzcy1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8td2FybmluZy1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8taW5mby1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tZGFuZ2VyLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zZWNvbmRhcnktZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWdsb3ctc2l6ZTogMCAwIDIwcHggMCxcbiAgYnRuLWhlcm8tcHJpbWFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc3VjY2Vzcy1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8td2FybmluZy1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8taW5mby1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tZGFuZ2VyLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zZWNvbmRhcnktZ2xvdy1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1ib3JkZXItcmFkaXVzOiBidG4tYm9yZGVyLXJhZGl1cyxcblxuICBjYXJkLXNoYWRvdzogbm9uZSxcbiAgY2FyZC1ib3JkZXItd2lkdGg6IDFweCxcbiAgY2FyZC1ib3JkZXItY29sb3I6IGJvcmRlci1jb2xvcixcbiAgY2FyZC1oZWFkZXItYm9yZGVyLXdpZHRoOiAwLFxuXG4gIGxpbmstY29sb3I6ICM1ZGNmZTMsXG4gIGxpbmstY29sb3ItaG92ZXI6ICM3ZGNmZTMsXG4gIGxpbmstY29sb3ItdmlzaXRlZDogbGluay1jb2xvcixcblxuICBhY3Rpb25zLXNlcGFyYXRvcjogI2YxZjRmNSxcblxuICBtb2RhbC1zZXBhcmF0b3I6IGJvcmRlci1jb2xvcixcblxuICB0YWJzLXNlbGVjdGVkOiBjb2xvci1wcmltYXJ5LFxuICB0YWJzLXNlbGVjdGVkLXNlY29uZC1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgdGFicy1zZXBhcmF0b3I6ICNlYmVjZWUsXG5cbiAgc21hcnQtdGFibGUtcGFnaW5nLWJnLWFjdGl2ZTogY29sb3ItcHJpbWFyeSxcblxuICByb3V0ZS10YWJzLXNlbGVjdGVkOiBjb2xvci1wcmltYXJ5LFxuXG4gIHBvcG92ZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuXG4gIGZvb3Rlci1zaGFkb3c6IG5vbmUsXG4gIGZvb3Rlci1zZXBhcmF0b3I6IGJvcmRlci1jb2xvcixcbiAgZm9vdGVyLWZnLWhpZ2hsaWdodDogIzJhMmEyYSxcblxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiAjYTJiMmM3LFxuICBjYWxlbmRhci1hY3RpdmUtaXRlbS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FsZW5kYXItcmFuZ2UtYmctaW4tcmFuZ2U6ICNlM2VjZmUsXG4gIGNhbGVuZGFyLXRvZGF5LWZnOiBjb2xvci13aGl0ZSxcblxuICB0b2FzdHItaWNvbi1yYWRpdXM6IHJhZGl1cyxcblxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBjb3Jwb3JhdGUsIGRlZmF1bHQpO1xuIiwiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG4kZ3JpZC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aC1iYXNlOiAyNHB4ICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoczogKFxuICB4czogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIHNtOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgbWQ6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBsZzogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIHhsOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZVxuKSAhZGVmYXVsdDtcblxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgaXM6IDQwMHB4LFxuICBzbTogNTc2cHgsXG4gIG1kOiA3NjhweCxcbiAgbGc6IDk5MnB4LFxuICB4bDogMTIwMHB4LFxuICB4eGw6IDE0MDBweCxcbiAgeHh4bDogMTYwMHB4XG4pO1xuXG4kY29udGFpbmVyLW1heC13aWR0aHM6IChcbiAgaXM6IDM4MHB4LFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4LFxuICB4eGw6IDEzMjBweCxcbiAgeHh4bDogMTUwMHB4XG4pO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIDAuMDJweCwgbnVsbCk7XG59XG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvdGhlbWVzJztcclxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucy9icmVha3BvaW50cyc7XHJcbkBpbXBvcnQgJ35AbmVidWxhci90aGVtZS9zdHlsZXMvZ2xvYmFsL2JyZWFrcG9pbnRzJztcclxuXHJcbkBpbmNsdWRlIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAubGVmdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBvcmRlcjogMDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgfVxyXG4gIC5yaWdodCB7XHJcbiAgICBvcmRlcjogMTtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcclxuICB9XHJcblxyXG4gIC5sb2dvLWNvbnRhaW50ZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogY2FsYygje25iLXRoZW1lKHNpZGViYXItd2lkdGgpfSAtICN7bmItdGhlbWUoaGVhZGVyLXBhZGRpbmcpfSk7XHJcbiAgfVxyXG5cclxuICAuY29udHJvbC1pdGVtIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgLmhlYWRlci1jb250YWluZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogYXV0bztcclxuXHJcbiAgICAubmF2aWdhdGlvbiB7XHJcbiAgICAgIEBpbmNsdWRlIG5iLWx0cihwYWRkaW5nLXJpZ2h0LCBuYi10aGVtZShwYWRkaW5nKSk7XHJcbiAgICAgIEBpbmNsdWRlIG5iLXJ0bChwYWRkaW5nLWxlZnQsIG5iLXRoZW1lKHBhZGRpbmcpKTtcclxuICAgICAgZm9udC1zaXplOiAyLjVyZW07XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHJcbiAgICAgIGkge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC5sb2dvIHtcclxuICAgICAgcGFkZGluZzogMCBuYi10aGVtZShwYWRkaW5nKTtcclxuICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xyXG4gICAgICBmb250LXdlaWdodDogbmItdGhlbWUoZm9udC13ZWlnaHQtYm9sZGVyKTtcclxuICAgICAgQGluY2x1ZGUgbmItbHRyKGJvcmRlci1sZWZ0LCAxcHggc29saWQgbmItdGhlbWUoc2VwYXJhdG9yKSk7XHJcbiAgICAgIEBpbmNsdWRlIG5iLXJ0bChib3JkZXItcmlnaHQsIDFweCBzb2xpZCBuYi10aGVtZShzZXBhcmF0b3IpKTtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgICBpbWd7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHNwYW4ge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBuYi10aGVtZShmb250LXdlaWdodC1ub3JtYWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoY29ycG9yYXRlKSB7XHJcbiAgICAkbWVudS1hY3Rpb24tc2VwYXJhdG9yLWNvbG9yOiAjM2Y0NTUwO1xyXG5cclxuICAgIG5iLWFjdGlvbiB7XHJcbiAgICAgIEBpbmNsdWRlIG5iLWx0cihib3JkZXItbGVmdC1jb2xvciwgJG1lbnUtYWN0aW9uLXNlcGFyYXRvci1jb2xvcik7XHJcbiAgICAgIEBpbmNsdWRlIG5iLXJ0bChib3JkZXItcmlnaHQtY29sb3IsICRtZW51LWFjdGlvbi1zZXBhcmF0b3ItY29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcclxuICAgICAgQGluY2x1ZGUgbmItbHRyKGJvcmRlciwgbm9uZSk7XHJcbiAgICAgIEBpbmNsdWRlIG5iLXJ0bChib3JkZXIsIG5vbmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmd4LWxheW91dC1kaXJlY3Rpb24tc3dpdGNoZXIge1xyXG4gICAgbWFyZ2luOiAwIDEuNXJlbTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bih4bCkge1xyXG4gICAgbmd4LWxheW91dC1kaXJlY3Rpb24tc3dpdGNoZXIge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRvZ2dsZS1zZXR0aW5ncyAvZGVlcC8gYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG5cclxuICAgIGkge1xyXG4gICAgICBjb2xvcjogbmItdGhlbWUoY29sb3ItZmctaGlnaGxpZ2h0KTtcclxuICAgICAgZm9udC1zaXplOiAyLjI1cmVtO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgYW5pbWF0aW9uLW5hbWU6IHB1bHNlLWxpZ2h0O1xyXG5cclxuICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgIGNvbnRlbnQ6ICcgJztcclxuICAgICAgICAvLyBoYWNrIHRvIGJlIGFibGUgdG8gc2V0IGJvcmRlci1yYWRpdXNcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBSUFBQUFBQUFQLy8veUg1QkFFQUFBQUFMQUFBQUFBQkFBRUFBQUlCUkFBNycpO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuXHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTIuMyU7XHJcbiAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgICAgIHdpZHRoOiAxMyU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMyU7XHJcblxyXG4gICAgICAgIGFuaW1hdGlvbjogM3MgbGluZWFyIGluZmluaXRlIHB1bHNlO1xyXG5cclxuICAgICAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoZGVmYXVsdCkge1xyXG4gICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHB1bHNlLWxpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUga2V5ZnJhbWVzKHB1bHNlKSB7XHJcbiAgICAwJSB7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMCByZ2JhKG5iLXRoZW1lKGNvbG9yLWZnLWhpZ2hsaWdodCksIDApO1xyXG4gICAgfVxyXG4gICAgMjAlIHtcclxuICAgICAgYm94LXNoYWRvdzogMCAwIDNweCAxMHB4IHJnYmEobmItdGhlbWUoY29sb3ItZmctaGlnaGxpZ2h0KSwgMC40KTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYShuYi10aGVtZShjb2xvci1mZy1oaWdobGlnaHQpLCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGtleWZyYW1lcyhwdWxzZS1saWdodCkge1xyXG4gICAgMCUge1xyXG4gICAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTtcclxuICAgIH1cclxuICAgIDIwJSB7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDAuNCk7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcclxuXHJcbiAgICBuYi1hY3Rpb246bm90KC50b2dnbGUtc2V0dGluZ3MpIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5jb250cm9sLWl0ZW0ge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC50b2dnbGUtc2V0dGluZ3Mge1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIG5neC1sYXlvdXQtZGlyZWN0aW9uLXN3aXRjaGVyIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xyXG5cclxuICAgIG5iLXVzZXIgL2RlZXAvIC51c2VyLW5hbWUge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKGlzKSB7XHJcblxyXG4gICAgLmhlYWRlci1jb250YWluZXIge1xyXG4gICAgICAubG9nbyB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRvZ2dsZS1zZXR0aW5ncyB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgbmItYWN0aW9uOm5vdCgudG9nZ2xlLXNldHRpbmdzKSB7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oeHMpIHtcclxuICAgIC5yaWdodCAvZGVlcC8ge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgaXMgYSBzdGFydGluZyBwb2ludCB3aGVyZSB3ZSBkZWNsYXJlIHRoZSBtYXBzIG9mIHRoZW1lcyBhbmQgZ2xvYmFsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucy9taXhpbnNcbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4ubmItdGhlbWUtZGVmYXVsdCA6aG9zdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLmxlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3JkZXI6IDA7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAucmlnaHQge1xuICAgIG9yZGVyOiAxO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAubG9nby1jb250YWludGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IGNhbGMoMTZyZW0gLSAxLjI1cmVtKTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuY29udHJvbC1pdGVtIHtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdpZHRoOiBhdXRvOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24ge1xuICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgICAgIFtkaXI9bHRyXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubmF2aWdhdGlvbiB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuMjVyZW07IH1cbiAgICAgIFtkaXI9cnRsXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubmF2aWdhdGlvbiB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMS4yNXJlbTsgfVxuICAgICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24gaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLmxvZ28ge1xuICAgICAgcGFkZGluZzogMCAxLjI1cmVtO1xuICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBoZWlnaHQ6IDUwcHg7IH1cbiAgICAgIFtkaXI9bHRyXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubG9nbyB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ViZWVmMjsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2ViZWVmMjsgfVxuICAgICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLmxvZ28gaW1nIHtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlOyB9XG4gICAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubG9nbyBzcGFuIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuZ3gtbGF5b3V0LWRpcmVjdGlvbi1zd2l0Y2hlciB7XG4gICAgbWFyZ2luOiAwIDEuNXJlbTsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogMTM5OS45OHB4KSB7XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3Qgbmd4LWxheW91dC1kaXJlY3Rpb24tc3dpdGNoZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC50b2dnbGUtc2V0dGluZ3MgL2RlZXAvIGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC50b2dnbGUtc2V0dGluZ3MgL2RlZXAvIGEgaSB7XG4gICAgICBjb2xvcjogIzMxMTc3YTtcbiAgICAgIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBwdWxzZS1saWdodDsgfVxuICAgICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnRvZ2dsZS1zZXR0aW5ncyAvZGVlcC8gYSBpOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3XCIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTIuMyU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIHdpZHRoOiAxMyU7XG4gICAgICAgIGhlaWdodDogMTMlO1xuICAgICAgICBhbmltYXRpb246IDNzIGxpbmVhciBpbmZpbml0ZSBwdWxzZTtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHB1bHNlLWxpZ2h0OyB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSg0OSwgMjMsIDEyMiwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSg0OSwgMjMsIDEyMiwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSg0OSwgMjMsIDEyMiwgMCk7IH0gfVxuXG5ALW1vei1rZXlmcmFtZXMgcHVsc2Uge1xuICAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHJnYmEoNDksIDIzLCAxMjIsIDApOyB9XG4gIDIwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDNweCAxMHB4IHJnYmEoNDksIDIzLCAxMjIsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoNDksIDIzLCAxMjIsIDApOyB9IH1cblxuQC1vLWtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSg0OSwgMjMsIDEyMiwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSg0OSwgMjMsIDEyMiwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSg0OSwgMjMsIDEyMiwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHB1bHNlIHtcbiAgMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMCByZ2JhKDQ5LCAyMywgMTIyLCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDQ5LCAyMywgMTIyLCAwLjQpOyB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMjBweCByZ2JhKDQ5LCAyMywgMTIyLCAwKTsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZS1saWdodCB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH0gfVxuXG5ALW1vei1rZXlmcmFtZXMgcHVsc2UtbGlnaHQge1xuICAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSgxMTUsIDI1NSwgMjA4LCAwLjQpOyB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMjBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDApOyB9IH1cblxuQC1vLWtleWZyYW1lcyBwdWxzZS1saWdodCB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHB1bHNlLWxpZ2h0IHtcbiAgMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMCByZ2JhKDExNSwgMjU1LCAyMDgsIDApOyB9XG4gIDIwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDNweCAxMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLWFjdGlvbjpub3QoLnRvZ2dsZS1zZXR0aW5ncykge1xuICAgICAgYm9yZGVyOiBub25lOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLmNvbnRyb2wtaXRlbSB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnRvZ2dsZS1zZXR0aW5ncyB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3Qgbmd4LWxheW91dC1kaXJlY3Rpb24tc3dpdGNoZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXVzZXIgL2RlZXAvIC51c2VyLW5hbWUge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkge1xuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC50b2dnbGUtc2V0dGluZ3Mge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLWFjdGlvbjpub3QoLnRvZ2dsZS1zZXR0aW5ncykge1xuICAgICAgcGFkZGluZzogMDsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiAzOTkuOThweCkge1xuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5yaWdodCAvZGVlcC8ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWNvc21pYyA6aG9zdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAubGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvcmRlcjogMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnJpZ2h0IHtcbiAgICBvcmRlcjogMTtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAubG9nby1jb250YWludGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IGNhbGMoMTYuMjVyZW0gLSAxLjI1cmVtKTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IC5jb250cm9sLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLmhlYWRlci1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogYXV0bzsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24ge1xuICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29zbWljIDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5uYXZpZ2F0aW9uIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS4yNXJlbTsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IH1cbiAgICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24gaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubG9nbyB7XG4gICAgICBwYWRkaW5nOiAwIDEuMjVyZW07XG4gICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGhlaWdodDogNTBweDsgfVxuICAgICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLmxvZ28ge1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICMzNDJlNzM7IH1cbiAgICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzM0MmU3MzsgfVxuICAgICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubG9nbyBpbWcge1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7IH1cbiAgICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLmxvZ28gc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuZ3gtbGF5b3V0LWRpcmVjdGlvbi1zd2l0Y2hlciB7XG4gICAgbWFyZ2luOiAwIDEuNXJlbTsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogMTM5OS45OHB4KSB7XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuZ3gtbGF5b3V0LWRpcmVjdGlvbi1zd2l0Y2hlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAudG9nZ2xlLXNldHRpbmdzIC9kZWVwLyBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IC50b2dnbGUtc2V0dGluZ3MgL2RlZXAvIGEgaSB7XG4gICAgICBjb2xvcjogIzAwZjlhNjtcbiAgICAgIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBwdWxzZS1saWdodDsgfVxuICAgICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAudG9nZ2xlLXNldHRpbmdzIC9kZWVwLyBhIGk6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTdcIik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1Mi4zJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgd2lkdGg6IDEzJTtcbiAgICAgICAgaGVpZ2h0OiAxMyU7XG4gICAgICAgIGFuaW1hdGlvbjogM3MgbGluZWFyIGluZmluaXRlIHB1bHNlOyB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgwLCAyNDksIDE2NiwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSgwLCAyNDksIDE2NiwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSgwLCAyNDksIDE2NiwgMCk7IH0gfVxuXG5ALW1vei1rZXlmcmFtZXMgcHVsc2Uge1xuICAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHJnYmEoMCwgMjQ5LCAxNjYsIDApOyB9XG4gIDIwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDNweCAxMHB4IHJnYmEoMCwgMjQ5LCAxNjYsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMCwgMjQ5LCAxNjYsIDApOyB9IH1cblxuQC1vLWtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgwLCAyNDksIDE2NiwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSgwLCAyNDksIDE2NiwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSgwLCAyNDksIDE2NiwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHB1bHNlIHtcbiAgMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMCByZ2JhKDAsIDI0OSwgMTY2LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDAsIDI0OSwgMTY2LCAwLjQpOyB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMjBweCByZ2JhKDAsIDI0OSwgMTY2LCAwKTsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZS1saWdodCB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH0gfVxuXG5ALW1vei1rZXlmcmFtZXMgcHVsc2UtbGlnaHQge1xuICAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSgxMTUsIDI1NSwgMjA4LCAwLjQpOyB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMjBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDApOyB9IH1cblxuQC1vLWtleWZyYW1lcyBwdWxzZS1saWdodCB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHB1bHNlLWxpZ2h0IHtcbiAgMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMCByZ2JhKDExNSwgMjU1LCAyMDgsIDApOyB9XG4gIDIwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDNweCAxMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItYWN0aW9uOm5vdCgudG9nZ2xlLXNldHRpbmdzKSB7XG4gICAgICBib3JkZXI6IG5vbmU7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IC5jb250cm9sLWl0ZW0ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnRvZ2dsZS1zZXR0aW5ncyB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuZ3gtbGF5b3V0LWRpcmVjdGlvbi1zd2l0Y2hlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi11c2VyIC9kZWVwLyAudXNlci1uYW1lIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnRvZ2dsZS1zZXR0aW5ncyB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1hY3Rpb246bm90KC50b2dnbGUtc2V0dGluZ3MpIHtcbiAgICAgIHBhZGRpbmc6IDA7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogMzk5Ljk4cHgpIHtcbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IC5yaWdodCAvZGVlcC8ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAubGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvcmRlcjogMDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93OyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnJpZ2h0IHtcbiAgICBvcmRlcjogMTtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAubG9nby1jb250YWludGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IGNhbGMoMTZyZW0gLSAxLjI1cmVtKTsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5jb250cm9sLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLmhlYWRlci1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogYXV0bzsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24ge1xuICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5uYXZpZ2F0aW9uIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS4yNXJlbTsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IH1cbiAgICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLm5hdmlnYXRpb24gaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubG9nbyB7XG4gICAgICBwYWRkaW5nOiAwIDEuMjVyZW07XG4gICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGhlaWdodDogNTBweDsgfVxuICAgICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLmxvZ28ge1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNjZGQ1ZGM7IH1cbiAgICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2NkZDVkYzsgfVxuICAgICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubG9nbyBpbWcge1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7IH1cbiAgICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLmhlYWRlci1jb250YWluZXIgLmxvZ28gc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7IH1cbiAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItYWN0aW9uIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogIzNmNDU1MDsgfVxuICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1hY3Rpb24ge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzNmNDU1MDsgfVxuICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuaGVhZGVyLWNvbnRhaW5lciAubG9nbyB7XG4gICAgYm9yZGVyOiBub25lOyB9XG4gIFtkaXI9cnRsXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcbiAgICBib3JkZXI6IG5vbmU7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuZ3gtbGF5b3V0LWRpcmVjdGlvbi1zd2l0Y2hlciB7XG4gICAgbWFyZ2luOiAwIDEuNXJlbTsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogMTM5OS45OHB4KSB7XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuZ3gtbGF5b3V0LWRpcmVjdGlvbi1zd2l0Y2hlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAudG9nZ2xlLXNldHRpbmdzIC9kZWVwLyBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC50b2dnbGUtc2V0dGluZ3MgL2RlZXAvIGEgaSB7XG4gICAgICBjb2xvcjogI2E0YWJiMztcbiAgICAgIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBwdWxzZS1saWdodDsgfVxuICAgICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAudG9nZ2xlLXNldHRpbmdzIC9kZWVwLyBhIGk6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTdcIik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1Mi4zJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgd2lkdGg6IDEzJTtcbiAgICAgICAgaGVpZ2h0OiAxMyU7XG4gICAgICAgIGFuaW1hdGlvbjogM3MgbGluZWFyIGluZmluaXRlIHB1bHNlOyB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxNjQsIDE3MSwgMTc5LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDE2NCwgMTcxLCAxNzksIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTY0LCAxNzEsIDE3OSwgMCk7IH0gfVxuXG5ALW1vei1rZXlmcmFtZXMgcHVsc2Uge1xuICAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHJnYmEoMTY0LCAxNzEsIDE3OSwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSgxNjQsIDE3MSwgMTc5LCAwLjQpOyB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMjBweCByZ2JhKDE2NCwgMTcxLCAxNzksIDApOyB9IH1cblxuQC1vLWtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxNjQsIDE3MSwgMTc5LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDE2NCwgMTcxLCAxNzksIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTY0LCAxNzEsIDE3OSwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHB1bHNlIHtcbiAgMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMCByZ2JhKDE2NCwgMTcxLCAxNzksIDApOyB9XG4gIDIwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDNweCAxMHB4IHJnYmEoMTY0LCAxNzEsIDE3OSwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSgxNjQsIDE3MSwgMTc5LCAwKTsgfSB9XG5cbkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZS1saWdodCB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH0gfVxuXG5ALW1vei1rZXlmcmFtZXMgcHVsc2UtbGlnaHQge1xuICAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDFweCAwIHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH1cbiAgMjAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgM3B4IDEwcHggcmdiYSgxMTUsIDI1NSwgMjA4LCAwLjQpOyB9XG4gIDEwMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggMjBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDApOyB9IH1cblxuQC1vLWtleWZyYW1lcyBwdWxzZS1saWdodCB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMXB4IDAgcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfVxuICAyMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggMTBweCByZ2JhKDExNSwgMjU1LCAyMDgsIDAuNCk7IH1cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAyMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHB1bHNlLWxpZ2h0IHtcbiAgMCUge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggMCByZ2JhKDExNSwgMjU1LCAyMDgsIDApOyB9XG4gIDIwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDNweCAxMHB4IHJnYmEoMTE1LCAyNTUsIDIwOCwgMC40KTsgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDIwcHggcmdiYSgxMTUsIDI1NSwgMjA4LCAwKTsgfSB9XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItYWN0aW9uOm5vdCgudG9nZ2xlLXNldHRpbmdzKSB7XG4gICAgICBib3JkZXI6IG5vbmU7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5jb250cm9sLWl0ZW0ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnRvZ2dsZS1zZXR0aW5ncyB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuZ3gtbGF5b3V0LWRpcmVjdGlvbi1zd2l0Y2hlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi11c2VyIC9kZWVwLyAudXNlci1uYW1lIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5oZWFkZXItY29udGFpbmVyIC5sb2dvIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnRvZ2dsZS1zZXR0aW5ncyB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1hY3Rpb246bm90KC50b2dnbGUtc2V0dGluZ3MpIHtcbiAgICAgIHBhZGRpbmc6IDA7IH0gfVxuICBAbWVkaWEgKG1heC13aWR0aDogMzk5Ljk4cHgpIHtcbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5yaWdodCAvZGVlcC8ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4iLCIvLyBAbmVidWxhciB0aGVtaW5nIGZyYW1ld29ya1xyXG5AaW1wb3J0ICd+QG5lYnVsYXIvdGhlbWUvc3R5bGVzL3RoZW1pbmcnO1xyXG4vLyBAbmVidWxhciBvdXQgb2YgdGhlIGJveCB0aGVtZXNcclxuQGltcG9ydCAnfkBuZWJ1bGFyL3RoZW1lL3N0eWxlcy90aGVtZXMnO1xyXG5cclxuLy8gd2hpY2ggdGhlbWVzIHlvdSB3aGF0IHRvIGVuYWJsZSAoZW1wdHkgdG8gZW5hYmxlIGFsbClcclxuJG5iLWVuYWJsZWQtdGhlbWVzOiAoZGVmYXVsdCwgY29zbWljLCBjb3Jwb3JhdGUpO1xyXG5cclxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoKFxyXG4gLy8gYXBwIHdpc2UgdmFyaWFibGVzIGZvciBlYWNoIHRoZW1lXHJcbiAgc2lkZWJhci1oZWFkZXItZ2FwOiAycmVtLFxyXG4gIHNpZGViYXItaGVhZGVyLWhlaWdodDogaW5pdGlhbCxcclxuICBsYXlvdXQtY29udGVudC13aWR0aDogMTQwMHB4LFxyXG5cclxuICBmb250LW1haW46IFJhamRoYW5pLFxyXG4gIGZvbnQtc2Vjb25kYXJ5OiBSb2JvdG8sXHJcblxyXG4gIHN3aXRjaGVyLWJhY2tncm91bmQ6ICNlYmVmZjUsXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZC1wZXJjZW50YWdlOiA1MCUsXHJcbiAgZHJvcHMtaWNvbi1saW5lLWdhZGllbnQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCMwMWRiYjUsICMwYmJiNzkpLFxyXG5cclxuICBsaXN0LWl0ZW0tYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHNsaWRlLW91dC1jb250YWluZXItd2lkdGg6IDMwJSxcclxuICBzbGlkZS1vdXQtYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDI3MGRlZywgI2Y3ZmFmYiAwJSwgI2VjZjJmNSAxMDAlKSxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yOiAwIDRweCAxNHB4IDAgI2EyZDJjOCxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yLXJ0bDogMCA0cHggMTRweCAwICNhMmQyYzgsXHJcblxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm94LXNoYWRvdzogbm9uZSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJhY2tncm91bmQtY29sb3I6ICNlY2YyZjUsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItY29sb3I6ICNlYmVmZjEsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgZWNvbW1lcmNlLWNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHByb2dyZXNzLWJhci1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMzZWRkODEgMCUsICMzYmRkYWYgMTAwJSksXHJcblxyXG4gIGNvbG9yLXByaW1hcnk6ICMzMTE3N2EsXHJcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiAjMzExNzdhLFxyXG4pLCBkZWZhdWx0LCBkZWZhdWx0KTtcclxuXHJcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKChcclxuICAvLyBhcHAgd2lzZSB2YXJpYWJsZXMgZm9yIGVhY2ggdGhlbWVcclxuICBzaWRlYmFyLWhlYWRlci1nYXA6IDJyZW0sXHJcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiBpbml0aWFsLFxyXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiAxNDAwcHgsXHJcblxyXG4gIGZvbnQtbWFpbjogUmFqZGhhbmksXHJcbiAgZm9udC1zZWNvbmRhcnk6IFJvYm90byxcclxuXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZDogIzRlNDFhNSxcclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kLXBlcmNlbnRhZ2U6IDE0JSxcclxuICBkcm9wcy1pY29uLWxpbmUtZ2FkaWVudDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2EyNThmZSwgIzc5NThmYSksXHJcblxyXG4gIGxpc3QtaXRlbS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgc2xpZGUtb3V0LWNvbnRhaW5lci13aWR0aDogMzAlLFxyXG4gIHNsaWRlLW91dC1iYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCAjMzAyYzZlIDAlLCAjNDIzZjhjIDEwMCUpLFxyXG4gIHNsaWRlLW91dC1zaGFkb3ctY29sb3I6IDJweCAwIDNweCByZ2JhKDE5LCAxOSwgOTQsIDAuOSksXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvci1ydGw6IC0ycHggMCAzcHggcmdiYSgxOSwgMTksIDk0LCAwLjkpLFxyXG5cclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJveC1zaGFkb3c6IG5vbmUsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSksXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItY29sb3I6ICMzMzJlNzMsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgZWNvbW1lcmNlLWNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHByb2dyZXNzLWJhci1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMwMGM3YzcgMCUsICMwMGQ5NzcgMTAwJSksXHJcbiksIGNvc21pYywgY29zbWljKTtcclxuXHJcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKChcclxuICAvLyBhcHAgd2lzZSB2YXJpYWJsZXMgZm9yIGVhY2ggdGhlbWVcclxuICBzaWRlYmFyLWhlYWRlci1nYXA6IDJyZW0sXHJcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiBpbml0aWFsLFxyXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiAxNDAwcHgsXHJcblxyXG4gIGZvbnQtbWFpbjogUmFqZGhhbmksXHJcbiAgZm9udC1zZWNvbmRhcnk6IFJvYm90byxcclxuXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZDogIzJiMmQzNCxcclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kLXBlcmNlbnRhZ2U6IDE0JSxcclxuICBkcm9wcy1pY29uLWxpbmUtZ2FkaWVudDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2U5ZThlYiwgI2E3YTJiZSksXHJcblxyXG4gIGxpc3QtaXRlbS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgc2xpZGUtb3V0LWNvbnRhaW5lci13aWR0aDogMzAlLFxyXG4gIHNsaWRlLW91dC1iYWNrZ3JvdW5kOiBcdGxpbmVhci1ncmFkaWVudCgyNzBkZWcsICNmN2ZhZmIgMCUsICNlY2YyZjUgMTAwJSksXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvcjogMCA0cHggMTRweCAwICNhMmQyYzgsXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvci1ydGw6IDAgNHB4IDE0cHggMCAjYTJkMmM4LFxyXG5cclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJveC1zaGFkb3c6IG5vbmUsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjZjdmYWZiLFxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm9yZGVyLWNvbG9yOiAjZWJlZmYxLFxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIGVjb21tZXJjZS1jYXJkLWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBwcm9ncmVzcy1iYXItYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZmY5ZjZmIDAlLCAjZmY4Yjk3IDEwMCUpLFxyXG4pLCBjb3Jwb3JhdGUsIGNvcnBvcmF0ZSk7XHJcbiJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { NbMenuService, NbSidebarService } from '@nebular/theme';\r\nimport { UsersService, User, Role } from '../../../services/users.service';\r\n\r\n@Component({\r\n selector: 'ngx-header',\r\n styleUrls: ['./header.component.scss'],\r\n templateUrl: './header.component.html',\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n @Input() position = 'normal';\r\n\r\n user: User;\r\n roles: Array;\r\n\r\n userMenu = [{ title: 'Log out', link: '/auth/logout' }];\r\n settingsMenu = [{ title: 'Users', link: '/settings/users' }];\r\n\r\n constructor(private sidebarService: NbSidebarService,\r\n private menuService: NbMenuService,\r\n private usersService: UsersService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.usersService.loadRoles().subscribe(roles => {\r\n this.roles = roles;\r\n\r\n this.usersService.getCurrentUser().then((user) => this.user = user);\r\n });\r\n }\r\n\r\n getRoleName(roleId) {\r\n const role = this.roles.find(r => r.id === roleId);\r\n return role ? role.roleName : '';\r\n }\r\n\r\n toggleSidebar(): boolean {\r\n this.sidebarService.toggle(true, 'menu-sidebar');\r\n\r\n return false;\r\n }\r\n\r\n goToHome() {\r\n this.menuService.navigateHome();\r\n }\r\n}\r\n","export * from './header/header.component';\r\nexport * from './footer/footer.component';\r\nexport * from './search-input/search-input.component';\r\nexport * from './switcher/switcher.component';\r\nexport * from './layout-direction-switcher/layout-direction-switcher.component';\r\n","import { Component, OnDestroy, Input } from '@angular/core';\r\nimport { NbLayoutDirectionService, NbLayoutDirection } from '@nebular/theme';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ngx-layout-direction-switcher',\r\n template: `\r\n \r\n \r\n `,\r\n})\r\nexport class LayoutDirectionSwitcherComponent implements OnDestroy {\r\n directions = NbLayoutDirection;\r\n currentDirection: NbLayoutDirection;\r\n alive = true;\r\n\r\n @Input() vertical: boolean = false;\r\n\r\n constructor(private directionService: NbLayoutDirectionService) {\r\n this.currentDirection = this.directionService.getDirection();\r\n\r\n this.directionService.onDirectionChange()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe(newDirection => this.currentDirection = newDirection);\r\n }\r\n\r\n toggleDirection(newDirection) {\r\n this.directionService.setDirection(newDirection);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.alive = false;\r\n }\r\n}\r\n","module.exports = \":host {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center; }\\n :host i.control-icon::before {\\n font-size: 2.3rem; }\\n :host i.control-icon:hover {\\n cursor: pointer; }\\n :host input {\\n border: none;\\n outline: none;\\n margin-left: 1rem;\\n width: 15rem;\\n -webkit-transition: width 0.2s ease;\\n transition: width 0.2s ease; }\\n :host input.hidden {\\n width: 0;\\n margin: 0; }\\n :host /deep/ search-input input {\\n background: transparent; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvc2VhcmNoLWlucHV0L0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9zcmNcXGFwcFxcQHRoZW1lXFxjb21wb25lbnRzXFxzZWFyY2gtaW5wdXRcXHNlYXJjaC1pbnB1dC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHFCQUFhO0VBQWIscUJBQWE7RUFBYixjQUFhO0VBQ2IsMEJBQW1CO01BQW5CLHVCQUFtQjtVQUFuQixvQkFBbUIsRUE4QnBCO0VBaENEO0lBTU0sa0JBQWlCLEVBQ2xCO0VBUEw7SUFVTSxnQkFBZSxFQUNoQjtFQVhMO0lBZUksYUFBWTtJQUNaLGNBQWE7SUFDYixrQkFBaUI7SUFDakIsYUFBWTtJQUNaLG9DQUEyQjtJQUEzQiw0QkFBMkIsRUFNNUI7RUF6Qkg7TUFzQk0sU0FBUTtNQUNSLFVBQVMsRUFDVjtFQXhCTDtJQTZCTSx3QkFBdUIsRUFDeEIiLCJmaWxlIjoic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgaS5jb250cm9sLWljb24ge1xyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgZm9udC1zaXplOiAyLjNyZW07XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlucHV0IHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMnMgZWFzZTtcclxuXHJcbiAgICAmLmhpZGRlbiB7XHJcbiAgICAgIHdpZHRoOiAwO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvZGVlcC8gc2VhcmNoLWlucHV0IHtcclxuICAgIGlucHV0IHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import { Component, ElementRef, EventEmitter, Output, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ngx-search-input',\r\n styleUrls: ['./search-input.component.scss'],\r\n template: `\r\n \r\n \r\n `,\r\n})\r\nexport class SearchInputComponent {\r\n @ViewChild('input') input: ElementRef;\r\n\r\n @Output() search: EventEmitter = new EventEmitter();\r\n\r\n isInputShown = false;\r\n\r\n showInput() {\r\n this.isInputShown = true;\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n hideInput() {\r\n this.isInputShown = false;\r\n }\r\n\r\n onInput(val: string) {\r\n this.search.emit(val);\r\n }\r\n}\r\n","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host .switch-label {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n cursor: pointer;\\n margin: 0; }\\n.nb-theme-default :host .switch-label.vertical {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start; }\\n.nb-theme-default :host .switch-label.vertical .first,\\n .nb-theme-default :host .switch-label.vertical .second {\\n padding: 0; }\\n.nb-theme-default :host .switch-label.vertical .switch {\\n margin-top: 0.5em; }\\n.nb-theme-default :host .switch-label > span {\\n font-size: 1.125rem;\\n font-weight: 600;\\n -webkit-transition: opacity 0.3s ease;\\n transition: opacity 0.3s ease;\\n color: #a4abb3; }\\n[dir=ltr] .nb-theme-default :host .switch-label > span.first {\\n padding-right: 10px; }\\n[dir=rtl] .nb-theme-default :host .switch-label > span.first {\\n padding-left: 10px; }\\n[dir=ltr] .nb-theme-default :host .switch-label > span.second {\\n padding-left: 10px; }\\n[dir=rtl] .nb-theme-default :host .switch-label > span.second {\\n padding-right: 10px; }\\n.nb-theme-default :host .switch-label > span.active {\\n color: #4b4b4b; }\\n.nb-theme-default :host .switch-label > span:active {\\n opacity: 0.78; }\\n.nb-theme-default :host .switch {\\n position: relative;\\n display: inline-block;\\n width: 3rem;\\n height: 1.5rem;\\n margin: 0; }\\n.nb-theme-default :host .switch input {\\n display: none; }\\n[dir=ltr] .nb-theme-default :host .switch input:checked + .slider::before {\\n -webkit-transform: translateX(1.5rem);\\n transform: translateX(1.5rem); }\\n[dir=rtl] .nb-theme-default :host .switch input:checked + .slider::before {\\n -webkit-transform: translateX(-1.5rem);\\n transform: translateX(-1.5rem); }\\n.nb-theme-default :host .switch .slider {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n border-radius: 1.75rem;\\n background-color: #ebeff5; }\\n.nb-theme-default :host .switch .slider::before {\\n position: absolute;\\n content: '';\\n height: 1.5rem;\\n width: 1.5rem;\\n border-radius: 50%;\\n background-color: #40dc7e;\\n -webkit-transition: 0.2s;\\n transition: 0.2s;\\n -webkit-box-shadow: 0 0 0.25rem 0 rgba(164, 171, 179, 0.4);\\n box-shadow: 0 0 0.25rem 0 rgba(164, 171, 179, 0.4); }\\n@media (max-width: 399.98px) {\\n .nb-theme-default :host {\\n -webkit-box-align: end;\\n -ms-flex-align: end;\\n align-items: flex-end; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-cosmic :host .switch-label {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n cursor: pointer;\\n margin: 0; }\\n.nb-theme-cosmic :host .switch-label.vertical {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start; }\\n.nb-theme-cosmic :host .switch-label.vertical .first,\\n .nb-theme-cosmic :host .switch-label.vertical .second {\\n padding: 0; }\\n.nb-theme-cosmic :host .switch-label.vertical .switch {\\n margin-top: 0.5em; }\\n.nb-theme-cosmic :host .switch-label > span {\\n font-size: 1.125rem;\\n font-weight: 600;\\n -webkit-transition: opacity 0.3s ease;\\n transition: opacity 0.3s ease;\\n color: #a1a1e5;\\n color: #a1a1e5; }\\n[dir=ltr] .nb-theme-cosmic :host .switch-label > span.first {\\n padding-right: 10px; }\\n[dir=rtl] .nb-theme-cosmic :host .switch-label > span.first {\\n padding-left: 10px; }\\n[dir=ltr] .nb-theme-cosmic :host .switch-label > span.second {\\n padding-left: 10px; }\\n[dir=rtl] .nb-theme-cosmic :host .switch-label > span.second {\\n padding-right: 10px; }\\n.nb-theme-cosmic :host .switch-label > span.active {\\n color: #d1d1ff; }\\n.nb-theme-cosmic :host .switch-label > span.active {\\n color: #ffffff; }\\n.nb-theme-cosmic :host .switch-label > span:active {\\n opacity: 0.78; }\\n.nb-theme-cosmic :host .switch {\\n position: relative;\\n display: inline-block;\\n width: 3rem;\\n height: 1.5rem;\\n margin: 0; }\\n.nb-theme-cosmic :host .switch input {\\n display: none; }\\n[dir=ltr] .nb-theme-cosmic :host .switch input:checked + .slider::before {\\n -webkit-transform: translateX(1.5rem);\\n transform: translateX(1.5rem); }\\n[dir=rtl] .nb-theme-cosmic :host .switch input:checked + .slider::before {\\n -webkit-transform: translateX(-1.5rem);\\n transform: translateX(-1.5rem); }\\n.nb-theme-cosmic :host .switch .slider {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n border-radius: 1.75rem;\\n background-color: #2f296b; }\\n.nb-theme-cosmic :host .switch .slider::before {\\n position: absolute;\\n content: '';\\n height: 1.5rem;\\n width: 1.5rem;\\n border-radius: 50%;\\n background-color: #00d977;\\n -webkit-transition: 0.2s;\\n transition: 0.2s;\\n -webkit-box-shadow: 0 0 0.25rem 0 rgba(161, 161, 229, 0.4);\\n box-shadow: 0 0 0.25rem 0 rgba(161, 161, 229, 0.4);\\n background-image: -webkit-gradient(linear, left top, right top, from(#ad59ff), to(#7659ff));\\n background-image: linear-gradient(to right, #ad59ff, #7659ff); }\\n@media (max-width: 399.98px) {\\n .nb-theme-cosmic :host {\\n -webkit-box-align: end;\\n -ms-flex-align: end;\\n align-items: flex-end; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-corporate :host .switch-label {\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-pack: justify;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n cursor: pointer;\\n margin: 0; }\\n.nb-theme-corporate :host .switch-label.vertical {\\n -webkit-box-orient: vertical;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -webkit-box-align: start;\\n -ms-flex-align: start;\\n align-items: flex-start; }\\n.nb-theme-corporate :host .switch-label.vertical .first,\\n .nb-theme-corporate :host .switch-label.vertical .second {\\n padding: 0; }\\n.nb-theme-corporate :host .switch-label.vertical .switch {\\n margin-top: 0.5em; }\\n.nb-theme-corporate :host .switch-label > span {\\n font-size: 1.125rem;\\n font-weight: 600;\\n -webkit-transition: opacity 0.3s ease;\\n transition: opacity 0.3s ease;\\n color: #a4abb3; }\\n[dir=ltr] .nb-theme-corporate :host .switch-label > span.first {\\n padding-right: 10px; }\\n[dir=rtl] .nb-theme-corporate :host .switch-label > span.first {\\n padding-left: 10px; }\\n[dir=ltr] .nb-theme-corporate :host .switch-label > span.second {\\n padding-left: 10px; }\\n[dir=rtl] .nb-theme-corporate :host .switch-label > span.second {\\n padding-right: 10px; }\\n.nb-theme-corporate :host .switch-label > span.active {\\n color: #4b4b4b; }\\n.nb-theme-corporate :host .switch-label > span:active {\\n opacity: 0.78; }\\n.nb-theme-corporate :host .switch {\\n position: relative;\\n display: inline-block;\\n width: 3rem;\\n height: 1.5rem;\\n margin: 0; }\\n.nb-theme-corporate :host .switch input {\\n display: none; }\\n[dir=ltr] .nb-theme-corporate :host .switch input:checked + .slider::before {\\n -webkit-transform: translateX(1.5rem);\\n transform: translateX(1.5rem); }\\n[dir=rtl] .nb-theme-corporate :host .switch input:checked + .slider::before {\\n -webkit-transform: translateX(-1.5rem);\\n transform: translateX(-1.5rem); }\\n.nb-theme-corporate :host .switch .slider {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n border-radius: 1.75rem;\\n background-color: #f1f5f8; }\\n.nb-theme-corporate :host .switch .slider::before {\\n position: absolute;\\n content: '';\\n height: 1.5rem;\\n width: 1.5rem;\\n border-radius: 50%;\\n background-color: #5dcfe3;\\n -webkit-transition: 0.2s;\\n transition: 0.2s;\\n -webkit-box-shadow: 0 0 0.25rem 0 rgba(164, 171, 179, 0.4);\\n box-shadow: 0 0 0.25rem 0 rgba(164, 171, 179, 0.4);\\n background-color: #73a1ff; }\\n@media (max-width: 399.98px) {\\n .nb-theme-corporate :host {\\n -webkit-box-align: end;\\n -ms-flex-align: end;\\n align-items: flex-end; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvc3dpdGNoZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXF90aGVtaW5nLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL3N3aXRjaGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfbWl4aW5zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL3N3aXRjaGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL3N3aXRjaGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFx0aGVtZXNcXF9kZWZhdWx0LnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL3N3aXRjaGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFx0aGVtZXNcXF9jb3NtaWMuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvc3dpdGNoZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2NvcnBvcmF0ZS5zY3NzIiwic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9zd2l0Y2hlci9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcYm9vdHN0cmFwXFxzdHlsZXNcXF9oZXJvLWJ1dHRvbnMuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2NvbXBvbmVudHMvc3dpdGNoZXIvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGdsb2JhbFxcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL3N3aXRjaGVyL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9zcmNcXGFwcFxcQHRoZW1lXFxjb21wb25lbnRzXFxzd2l0Y2hlclxcc3dpdGNoZXIuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9jb21wb25lbnRzL3N3aXRjaGVyL3N3aXRjaGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFHSDs7R0FFRztBQ1RIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBQ3ZURjs7OztHQUlHO0FDSkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QURKSDs7OztHQUlHO0FBc0tIOzs7O0dBSUc7QUFzQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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bVBoRCwrQk9uUGdELEVQdVBuRDtBT25QQztJQUNFLG1CQUFrQjtJQUNsQixPQUFNO0lBQ04sUUFBTztJQUNQLFNBQVE7SUFDUixVQUFTO0lBQ1QsdUJBQXNCO0lBQ3RCLDBCSHJFYyxFR3NFZjtBQUVEO0lBQ0UsbUJBQWtCO0lBQ2xCLFlBQVc7SUFDWCxlQUFjO0lBQ2QsY0FBYTtJQUNiLG1CQUFrQjtJQUNsQiwwQkhqRWtCO0lHa0VsQix5QkFBZ0I7SUFBaEIsaUJBQWdCO0lBRWhCLDJETDVEYTtZSzREYixtREw1RGE7SUttRVgsMEJINUVnQixFRzhFbkI7QURqREQ7RVArRUE7SVExQkEsdUJBQXFCO1FBQXJCLG9CQUFxQjtZQUFyQixzQkFBcUIsRVI2QnBCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9AdGhlbWUvY29tcG9uZW50cy9zd2l0Y2hlci9zd2l0Y2hlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuXG4vKipcbiAqIFRoaXMgaXMgYSBzdGFydGluZyBwb2ludCB3aGVyZSB3ZSBkZWNsYXJlIHRoZSBtYXBzIG9mIHRoZW1lcyBhbmQgZ2xvYmFsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucy9taXhpbnNcbiAqL1xuXG5AaW1wb3J0ICdjb3JlL21peGlucyc7XG5AaW1wb3J0ICdjb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICdjb3JlL2JyZWFraW5nLW5vdGljZSc7XG5cbiRuYi1lbmFibGVkLXRoZW1lczogKCkgIWdsb2JhbDtcbiRuYi1lbmFibGUtY3NzLXZhcmlhYmxlczogZmFsc2UgIWdsb2JhbDtcblxuJG5iLXRoZW1lczogKCkgIWdsb2JhbDtcbiRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZDogKCkgIWdsb2JhbDtcbiRuYi10aGVtZXMtZXhwb3J0OiAoKSAhZ2xvYmFsO1xuXG5AZnVuY3Rpb24gbmItdGhlbWUoJGtleSkge1xuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIG5iLWdldC12YWx1ZSgkdGhlbWUsICRrZXksICR2YWx1ZSkge1xuICBAaWYgKHR5cGUtb2YoJHZhbHVlKSA9PSAnc3RyaW5nJykge1xuICAgICR0bXA6IG1hcC1nZXQoJHRoZW1lLCAkdmFsdWUpO1xuXG4gICAgQGlmICgkdG1wICE9IG51bGwpIHtcbiAgICAgIEByZXR1cm4gbmItZ2V0LXZhbHVlKCR0aGVtZSwgJHZhbHVlLCAkdG1wKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tY3NzLXZhcmlhYmxlcygkdmFyaWFibGVzKSB7XG4gICRyZXN1bHQ6ICgpO1xuICBAZWFjaCAkdmFyLCAkdmFsdWUgaW4gJHZhcmlhYmxlcyB7XG4gICAgJHJlc3VsdDogbWFwLXNldCgkcmVzdWx0LCAkdmFyLCAnLS12YXIoI3skdmFyfSknKTtcbiAgfVxuXG4gIEBkZWJ1ZyAkcmVzdWx0O1xuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBmdW5jdGlvbiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSkge1xuICAkdGhlbWU6ICR0aGVtZSAhZ2xvYmFsO1xuICAkdGhlbWUtbmFtZTogJHRoZW1lLW5hbWUgIWdsb2JhbDtcbiAgQGlmICgkbmItZW5hYmxlLWNzcy12YXJpYWJsZXMpIHtcbiAgICAkdGhlbWU6IGNvbnZlcnQtdG8tY3NzLXZhcmlhYmxlcygkdGhlbWUpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiAkdGhlbWU7XG59XG5cbkBmdW5jdGlvbiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsICRuYW1lLCAkZGVmYXVsdDogbnVsbCkge1xuXG4gICR0aGVtZS1kYXRhOiAoKTtcblxuXG4gIEBpZiAoJGRlZmF1bHQgIT0gbnVsbCkge1xuXG4gICAgJHRoZW1lOiBtYXAtbWVyZ2UobWFwLWdldCgkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQsICRkZWZhdWx0KSwgJHRoZW1lKTtcbiAgICAkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkbmFtZSwgJHRoZW1lKSAhZ2xvYmFsO1xuXG4gICAgJHRoZW1lLWRhdGE6IG1hcC1zZXQoJHRoZW1lLWRhdGEsIGRhdGEsICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1leHBvcnQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1leHBvcnQsICRuYW1lLCBtYXAtc2V0KCR0aGVtZS1kYXRhLCBwYXJlbnQsICRkZWZhdWx0KSkgIWdsb2JhbDtcblxuICB9IEBlbHNlIHtcbiAgICAkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkbmFtZSwgJHRoZW1lKSAhZ2xvYmFsO1xuXG4gICAgJHRoZW1lLWRhdGE6IG1hcC1zZXQoJHRoZW1lLWRhdGEsIGRhdGEsICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1leHBvcnQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1leHBvcnQsICRuYW1lLCBtYXAtc2V0KCR0aGVtZS1kYXRhLCBwYXJlbnQsIG51bGwpKSAhZ2xvYmFsO1xuICB9XG5cbiAgJHRoZW1lLXBhcnNlZDogKCk7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkdGhlbWUge1xuICAgICR0aGVtZS1wYXJzZWQ6IG1hcC1zZXQoJHRoZW1lLXBhcnNlZCwgJGtleSwgbmItZ2V0LXZhbHVlKCR0aGVtZSwgJGtleSwgJHZhbHVlKSk7XG4gIH1cblxuICAvLyBlbmFibGUgcmlnaHQgYXdheSB3aGVuIGluc3RhbGxlZFxuICAkdGhlbWUtcGFyc2VkOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLXBhcnNlZCwgJG5hbWUpO1xuICBAcmV0dXJuIG1hcC1zZXQoJG5iLXRoZW1lcywgJG5hbWUsICR0aGVtZS1wYXJzZWQpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LWVuYWJsZWQtdGhlbWVzKCkge1xuICAkdGhlbWVzLXRvLWluc3RhbGw6ICgpO1xuXG4gIEBpZiAobGVuZ3RoKCRuYi1lbmFibGVkLXRoZW1lcykgPiAwKSB7XG4gICAgQGVhY2ggJHRoZW1lLW5hbWUgaW4gJG5iLWVuYWJsZWQtdGhlbWVzIHtcbiAgICAgICR0aGVtZXMtdG8taW5zdGFsbDogbWFwLXNldCgkdGhlbWVzLXRvLWluc3RhbGwsICR0aGVtZS1uYW1lLCBtYXAtZ2V0KCRuYi10aGVtZXMsICR0aGVtZS1uYW1lKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkdGhlbWVzLXRvLWluc3RhbGw6ICRuYi10aGVtZXM7XG4gIH1cblxuICBAcmV0dXJuICR0aGVtZXMtdG8taW5zdGFsbDtcbn1cblxuQG1peGluIGluc3RhbGwtY3NzLXZhcmlhYmxlcygkdGhlbWUtbmFtZSwgJHZhcmlhYmxlcykge1xuICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0ge1xuICAgIEBlYWNoICR2YXIsICR2YWx1ZSBpbiAkdmFyaWFibGVzIHtcbiAgICAgIC0tI3skdmFyfTogJHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPOiB3ZSBoaWRlIDpob3N0IGluc2lkZSBvZiBpdCB3aGljaCBpcyBub3Qgb2J2aW91c1xuQG1peGluIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xuXG4gICR0aGVtZXMtdG8taW5zdGFsbDogZ2V0LWVuYWJsZWQtdGhlbWVzKCk7XG5cbiAgQGVhY2ggJHRoZW1lLW5hbWUsICR0aGVtZSBpbiAkdGhlbWVzLXRvLWluc3RhbGwge1xuICAgIC8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuICAgIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSA6aG9zdCB7XG4gICAgICAkdGhlbWU6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbmItZm9yLXRoZW1lKCRuYW1lKSB7XG4gIEBpZiAoJHRoZW1lLW5hbWUgPT0gJG5hbWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuICAgIFxuLy8gQWRkIGNvbnRlbnQgZm9yIHRoZW1lIGludG8gYSBsaXN0IG9mIHRoZW1lc1xuQG1peGluIG5iLWZvci10aGVtZXMoJG5hbWVzLi4uKSB7XG4gIEBlYWNoICRuYW1lIGluICRuYW1lcyB7XG4gICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKCRuYW1lKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG5iLWV4Y2VwdC10aGVtZSgkbmFtZSkge1xuICBAaWYgKCR0aGVtZS1uYW1lICE9ICRuYW1lKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gQWRkIGNvbnRlbnQgZXhjZXB0IGZvciB0aGVtZSBpbnRvIGEgbGlzdCBvZiB0aGVtZXNcbkBtaXhpbiBuYi1leGNlcHQtZm9yLXRoZW1lcygkbmFtZXMuLi4pIHtcbiAgQGVhY2ggJG5hbWUgaW4gJG5hbWVzIHtcbiAgICBAaW5jbHVkZSBuYi1leGNlcHQtdGhlbWUoJG5hbWUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPOiBhbm90aGVyIG1peGluZyBmb3IgdGhlIGFsbW9zdCBzYW1lIHRoaW5nXG5AbWl4aW4gbmItaW5zdGFsbC1yb290LWNvbXBvbmVudCgpIHtcbiAgQHdhcm4gJ2BuYi1pbnN0YWxsLXJvb3QtY29tcG9uZW50YCBpcyBkZXByaWNhdGVkLCByZXBsYWNlIHdpdGggYG5iLWluc3RhbGwtY29tcG9uZW50YCwgYXMgYGJvZHlgIGlzIHJvb3QgZWxlbWVudCBub3cnO1xuXG4gIEBpbmNsdWRlIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1pbnN0YWxsLWdsb2JhbCgpIHtcbiAgJHRoZW1lcy10by1pbnN0YWxsOiBnZXQtZW5hYmxlZC10aGVtZXMoKTtcblxuICBAZWFjaCAkdGhlbWUtbmFtZSwgJHRoZW1lIGluICR0aGVtZXMtdG8taW5zdGFsbCB7XG4gICAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IHtcbiAgICAgICR0aGVtZTogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgJHRlbXA6IG5iLWJyZWFraW5nLW5vdGljZS1zaG93KCR0aGVtZSk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBtaXhpbiBuYi1zY3JvbGxiYXJzKCRmZywgJGJnLCAkc2l6ZSwgJGJvcmRlci1yYWRpdXM6ICRzaXplIC8gMikge1xuICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICRmZztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkYmc7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmVcbiAgLy8gRm9yIEludGVybmV0IEV4cGxvcmVyXG4gIHNjcm9sbGJhci1mYWNlLWNvbG9yOiAkZmc7XG4gIHNjcm9sbGJhci10cmFjay1jb2xvcjogJGJnO1xufVxuXG5AbWl4aW4gbmItcmFkaWFsLWdyYWRpZW50KCRjb2xvci0xLCAkY29sb3ItMiwgJGNvbG9yLTMpIHtcbiAgYmFja2dyb3VuZDogJGNvbG9yLTI7IC8qIE9sZCBicm93c2VycyAqL1xuICBiYWNrZ3JvdW5kOiAtbW96LXJhZGlhbC1ncmFkaWVudChib3R0b20sIGVsbGlwc2UgY292ZXIsICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogRkYzLjYtMTUgKi9cbiAgYmFja2dyb3VuZDogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoYm90dG9tLCBlbGxpcHNlIGNvdmVyLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIENocm9tZTEwLTI1LFNhZmFyaTUuMS02ICovXG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGJvdHRvbSwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBXM0MsIElFMTArLCBGRjE2KywgQ2hyb21lMjYrLCBPcGVyYTEyKywgU2FmYXJpNysgKi9cbiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJGNvbG9yLTEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRDb2xvcnN0cj0nJGNvbG9yLTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFkaWVudFR5cGU9MSk7IC8qIElFNi05IGZhbGxiYWNrIG9uIGhvcml6b250YWwgZ3JhZGllbnQgKi9cbn1cblxuQG1peGluIG5iLXJpZ2h0LWdyYWRpZW50KCRsZWZ0LWNvbG9yLCAkcmlnaHQtY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbGVmdC1jb2xvciwgJHJpZ2h0LWNvbG9yKTtcbn1cblxuQG1peGluIG5iLWhlYWRpbmdzKCRmcm9tOiAxLCAkdG86IDYpIHtcbiAgQGZvciAkaSBmcm9tICRmcm9tIHRocm91Z2ggJHRvIHtcbiAgICBoI3skaX0ge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMtYWN0aXZlIHtcbiAgJjpmb2N1cyxcbiAgJjphY3RpdmUsXG4gICY6aG92ZXIge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBjZW50ZXItaG9yaXpvbnRhbC1hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gIGxlZnQ6IDUwJTtcbn1cblxuQG1peGluIGluc3RhbGwtdGh1bWIoKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci10aHVtYidcbiAgICAnOjotbW96LXJhbmdlLXRodW1iJ1xuICAgICc6Oi1tcy10aHVtYidcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtdHJhY2soKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjaydcbiAgICAnOjotbW96LXJhbmdlLXRyYWNrJ1xuICAgICc6Oi1tcy10cmFjaydcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKSB7XG4gICRwbGFjZWhvbGRlci1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyJ1xuICAgICc6Oi1tb3otcGxhY2Vob2xkZXInXG4gICAgJzotbW96LXBsYWNlaG9sZGVyJ1xuICAgICc6LW1zLWlucHV0LXBsYWNlaG9sZGVyJ1xuICApO1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpO1xuICB9XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICRwbGFjZWhvbGRlci1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzI3skc2VsZWN0b3J9IHtcbiAgICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyLWZvY3VzKCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpIHtcbiAgY29sb3I6ICRjb2xvcjtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlci1mb2N1cygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG59XG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGUuLi4pIHtcbiAgJG1heDogbGVuZ3RoKCRhbmltYXRlKTtcbiAgJGFuaW1hdGlvbnM6ICcnO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XG4gICAgJGFuaW1hdGlvbnM6ICN7JGFuaW1hdGlvbnMgKyBudGgoJGFuaW1hdGUsICRpKX07XG5cbiAgICBAaWYgJGkgPCAkbWF4IHtcbiAgICAgICRhbmltYXRpb25zOiAjeyRhbmltYXRpb25zICsgJywgJ307XG4gICAgfVxuICB9XG4gIC13ZWJraXQtYW5pbWF0aW9uOiAkYW5pbWF0aW9ucztcbiAgLW1vei1hbmltYXRpb246ICAgICRhbmltYXRpb25zO1xuICAtby1hbmltYXRpb246ICAgICAgJGFuaW1hdGlvbnM7XG4gIGFuaW1hdGlvbjogICAgICAgICAkYW5pbWF0aW9ucztcbn1cblxuQG1peGluIGtleWZyYW1lcygkYW5pbWF0aW9uTmFtZSkge1xuICBALXdlYmtpdC1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1vLWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuQG1peGluIGJ0bi1wdWxzZSgkbmFtZSwgJGNvbG9yKSB7XG4gICYuYnRuLXB1bHNlIHtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24oYnRuLSN7JG5hbWV9LXB1bHNlIDEuNXMgaW5maW5pdGUpO1xuICB9XG5cbiAgQGluY2x1ZGUga2V5ZnJhbWVzKGJ0bi0jeyRuYW1lfS1wdWxzZSkge1xuICAgIDAlIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBvcGFjaXR5OiBuYi10aGVtZShidG4tZGlzYWJsZWQtb3BhY2l0eSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMXJlbSAwICRjb2xvcjtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIH1cbiAgfVxufVxuXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG5cbkBtaXhpbiBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCRzZWxlY3RvciwgJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICAjeyRzZWxlY3Rvcn0gJiB7XG4gICAgQGlmICRwcm9wICE9IG51bGwge1xuICAgICAgI3skcHJvcH06ICR2YWx1ZTtcbiAgICB9XG5cbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItbHRyKCRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgQGluY2x1ZGUgX3ByZXBlbmQtd2l0aC1zZWxlY3RvcignW2Rpcj1sdHJdJywgJHByb3AsICR2YWx1ZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1ydGwoJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICBAaW5jbHVkZSBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCdbZGlyPXJ0bF0nLCAkcHJvcCwgJHZhbHVlKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH07XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbi8vLyBTbGlnaHRseSBsaWdodGVuIGEgY29sb3Jcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGNvbG9yIHRvIHRpbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBwZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHJldHVybmVkIGNvbG9yXG4vLy8gQHJldHVybiB7Q29sb3J9XG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KHdoaXRlLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbiBhIGNvbG9yXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byBzaGFkZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIHBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gcmV0dXJuZWQgY29sb3Jcbi8vLyBAcmV0dXJuIHtDb2xvcn1cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KGJsYWNrLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIG1hcC1zZXQoJG1hcCwgJGtleSwgJHZhbHVlOiBudWxsKSB7XG4gICRuZXc6ICgka2V5OiAkdmFsdWUpO1xuICBAcmV0dXJuIG1hcC1tZXJnZSgkbWFwLCAkbmV3KTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuXG4kdGhlbWU6IChcbiAgZm9udC1tYWluOiB1bnF1b3RlKCdcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZicpLFxuICBmb250LXNlY29uZGFyeTogZm9udC1tYWluLFxuXG4gIGZvbnQtd2VpZ2h0LXRoaW46IDIwMCxcbiAgZm9udC13ZWlnaHQtbGlnaHQ6IDMwMCxcbiAgZm9udC13ZWlnaHQtbm9ybWFsOiA0MDAsXG4gIGZvbnQtd2VpZ2h0LWJvbGRlcjogNTAwLFxuICBmb250LXdlaWdodC1ib2xkOiA2MDAsXG4gIGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQ6IDgwMCxcblxuICAvLyBUT0RPOiB1c2UgaXQgYXMgYSBkZWZhdWx0IGZvbnQtc2l6ZVxuICBiYXNlLWZvbnQtc2l6ZTogMTZweCxcblxuICBmb250LXNpemUteGxnOiAxLjI1cmVtLFxuICBmb250LXNpemUtbGc6IDEuMTI1cmVtLFxuICBmb250LXNpemU6IDFyZW0sXG4gIGZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG4gIGZvbnQtc2l6ZS14czogMC43NXJlbSxcblxuICByYWRpdXM6IDAuMzc1cmVtLFxuICBwYWRkaW5nOiAxLjI1cmVtLFxuICBtYXJnaW46IDEuNXJlbSxcbiAgbGluZS1oZWlnaHQ6IDEuMjUsXG5cbiAgY29sb3ItYmc6ICNmZmZmZmYsXG4gIGNvbG9yLWJnLWFjdGl2ZTogI2U5ZWRmMixcbiAgY29sb3ItZmc6ICNhNGFiYjMsXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICMyYTJhMmEsXG4gIGNvbG9yLWZnLXRleHQ6ICM0YjRiNGIsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogIzQwZGM3ZSxcblxuICBzZXBhcmF0b3I6ICNlYmVlZjIsXG5cbiAgY29sb3ItZ3JheTogcmdiYSg4MSwgMTEzLCAxNjUsIDAuMTUpLFxuICBjb2xvci1uZXV0cmFsOiB0cmFuc3BhcmVudCxcbiAgY29sb3Itd2hpdGU6ICNmZmZmZmYsXG4gIGNvbG9yLWRpc2FibGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCksXG5cbiAgY29sb3ItcHJpbWFyeTogIzhhN2ZmZixcbiAgY29sb3Itc3VjY2VzczogIzQwZGM3ZSxcbiAgY29sb3ItaW5mbzogIzRjYTZmZixcbiAgY29sb3Itd2FybmluZzogI2ZmYTEwMCxcbiAgY29sb3ItZGFuZ2VyOiAjZmY0YzZhLFxuXG4gIC8vIFRPRE86IG1vdmUgdG8gY29uc3RhbnRzXG4gIHNvY2lhbC1jb2xvci1mYWNlYm9vazogIzNiNTk5OCxcbiAgc29jaWFsLWNvbG9yLXR3aXR0ZXI6ICM1NWFjZWUsXG4gIHNvY2lhbC1jb2xvci1nb29nbGU6ICNkZDRiMzksXG4gIHNvY2lhbC1jb2xvci1saW5rZWRpbjogIzAxNzdiNSxcbiAgc29jaWFsLWNvbG9yLWdpdGh1YjogIzZiNmI2YixcbiAgc29jaWFsLWNvbG9yLXN0YWNrb3ZlcmZsb3c6ICMyZjk2ZTgsXG4gIHNvY2lhbC1jb2xvci1kcmliYmxlOiAjZjI2Nzk4LFxuICBzb2NpYWwtY29sb3ItYmVoYW5jZTogIzAwOTNmYSxcblxuICBib3JkZXItY29sb3I6IGNvbG9yLWdyYXksXG4gIHNoYWRvdzogMCAycHggMTJweCAwICNkZmUzZWIsXG5cbiAgbGluay1jb2xvcjogIzNkY2M2ZCxcbiAgbGluay1jb2xvci1ob3ZlcjogIzJlZTU2YixcbiAgbGluay1jb2xvci12aXNpdGVkOiBsaW5rLWNvbG9yLFxuXG4gIHNjcm9sbGJhci1mZzogI2RhZGFkYSxcbiAgc2Nyb2xsYmFyLWJnOiAjZjJmMmYyLFxuICBzY3JvbGxiYXItd2lkdGg6IDVweCxcbiAgc2Nyb2xsYmFyLXRodW1iLXJhZGl1czogMi41cHgsXG5cbiAgcmFkaWFsLWdyYWRpZW50OiBub25lLFxuICBsaW5lYXItZ3JhZGllbnQ6IG5vbmUsXG5cbiAgY2FyZC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FyZC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGNhcmQtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FyZC1mZzogY29sb3ItZmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgY2FyZC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWJnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWlnaHQteHhzbWFsbDogOTZweCxcbiAgY2FyZC1oZWlnaHQteHNtYWxsOiAyMTZweCxcbiAgY2FyZC1oZWlnaHQtc21hbGw6IDMzNnB4LFxuICBjYXJkLWhlaWdodC1tZWRpdW06IDQ1NnB4LFxuICBjYXJkLWhlaWdodC1sYXJnZTogNTc2cHgsXG4gIGNhcmQtaGVpZ2h0LXhsYXJnZTogNjk2cHgsXG4gIGNhcmQtaGVpZ2h0LXh4bGFyZ2U6IDgxNnB4LFxuICBjYXJkLXNoYWRvdzogc2hhZG93LFxuICBjYXJkLWJvcmRlci13aWR0aDogMCxcbiAgY2FyZC1ib3JkZXItdHlwZTogc29saWQsXG4gIGNhcmQtYm9yZGVyLWNvbG9yOiBjb2xvci1iZyxcbiAgY2FyZC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNhcmQtcGFkZGluZzogcGFkZGluZyxcbiAgY2FyZC1tYXJnaW46IG1hcmdpbixcbiAgY2FyZC1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBjYXJkLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgY2FyZC1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIGNhcmQtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGNhcmQtaGVhZGVyLWZnOiBjb2xvci1mZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWZnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWFkZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBjYXJkLWhlYWRlci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYXJkLWhlYWRlci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjYXJkLWhlYWRlci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYXJkLWhlYWRlci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBjYXJkLWhlYWRlci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgY2FyZC1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgY2FyZC1oZWFkZXItYm9yZGVyLWNvbG9yOiBjYXJkLXNlcGFyYXRvcixcblxuICBoZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBoZWFkZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIGhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgaGVhZGVyLWJnOiBjb2xvci1iZyxcbiAgaGVhZGVyLWhlaWdodDogNC43NXJlbSxcbiAgaGVhZGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGhlYWRlci1zaGFkb3c6IHNoYWRvdyxcblxuICBmb290ZXItaGVpZ2h0OiA0LjcyNXJlbSxcbiAgZm9vdGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGZvb3Rlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWZnLWhpZ2hsaWdodDogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgZm9vdGVyLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBmb290ZXItc2hhZG93OiBzaGFkb3csXG5cbiAgbGF5b3V0LWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIGxheW91dC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbGF5b3V0LWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgbGF5b3V0LWZnOiBjb2xvci1mZyxcbiAgbGF5b3V0LWJnOiAjZWJlZmY1LFxuICBsYXlvdXQtbWluLWhlaWdodDogMTAwdmgsXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiA5MDBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLW1pbi13aWR0aDogMzAwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1tYXgtd2lkdGg6IDE5MjBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLWJnOiBsYXlvdXQtYmcsXG4gIGxheW91dC13aW5kb3ctbW9kZS1wYWRkaW5nLXRvcDogNC43NXJlbSxcbiAgbGF5b3V0LXdpbmRvdy1zaGFkb3c6IHNoYWRvdyxcbiAgbGF5b3V0LXBhZGRpbmc6IDIuMjVyZW0gMi4yNXJlbSAwLjc1cmVtLFxuICBsYXlvdXQtbWVkaXVtLXBhZGRpbmc6IDEuNXJlbSAxLjVyZW0gMC41cmVtLFxuICBsYXlvdXQtc21hbGwtcGFkZGluZzogMXJlbSAxcmVtIDAsXG5cbiAgc2lkZWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc2lkZWJhci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNpZGViYXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNpZGViYXItYmc6IGNvbG9yLWJnLFxuICBzaWRlYmFyLWhlaWdodDogMTAwdmgsXG4gIHNpZGViYXItd2lkdGg6IDE2cmVtLFxuICBzaWRlYmFyLXdpZHRoLWNvbXBhY3Q6IDMuNXJlbSxcbiAgc2lkZWJhci1wYWRkaW5nOiBwYWRkaW5nLFxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IDMuNXJlbSxcbiAgc2lkZWJhci1mb290ZXItaGVpZ2h0OiAzLjVyZW0sXG4gIHNpZGViYXItc2hhZG93OiBzaGFkb3csXG5cbiAgbWVudS1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIG1lbnUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1lbnUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuXG4gIG1lbnUtc3VibWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oaWdobGlnaHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiBub25lLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItZmc6IG1lbnUtc3VibWVudS1hY3RpdmUtZmcsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1iZzogbWVudS1zdWJtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItd2lkdGg6IDAuMTI1cmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1lbnUtc3VibWVudS1pdGVtLXBhZGRpbmc6IDAuNXJlbSAxcmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1jb250YWluZXItcGFkZGluZzogMCAxLjI1cmVtLFxuICBtZW51LXN1Ym1lbnUtcGFkZGluZzogMC41cmVtLFxuXG4gIG1lbnUtZ3JvdXAtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1ncm91cC1mb250LXNpemU6IDAuODc1cmVtLFxuICBtZW51LWdyb3VwLWZnOiBjb2xvci1mZyxcbiAgbWVudS1ncm91cC1wYWRkaW5nOiAxcmVtIDEuMjVyZW0sXG4gIG1lbnUtaXRlbS1wYWRkaW5nOiAwLjY3NXJlbSAwLjc1cmVtLFxuICBtZW51LWl0ZW0tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIG1lbnUtaWNvbi1mb250LXNpemU6IDIuNXJlbSxcbiAgbWVudS1pY29uLW1hcmdpbjogMCAwLjI1cmVtIDAsXG4gIG1lbnUtaWNvbi1jb2xvcjogY29sb3ItZmcsXG4gIG1lbnUtaWNvbi1hY3RpdmUtY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHRhYnMtY29udGVudC1mb250LWZhbWlseTogZm9udC1tYWluLFxuICB0YWJzLWNvbnRlbnQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIHRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICB0YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHRhYnMtY29udGVudC1wYWRkaW5nOiAwLFxuICB0YWJzLWhlYWRlci1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHRhYnMtZmc6IGNvbG9yLWZnLFxuICB0YWJzLWZnLWRpc2FibGVkOiB0YWJzLWZnLFxuICB0YWJzLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIHRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLWRlZ3JlZXM6IDAsXG4gIHRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgcm91dGUtdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHJvdXRlLXRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHJvdXRlLXRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICByb3V0ZS10YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHJvdXRlLXRhYnMtaGVhZGVyLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgcm91dGUtdGFicy1mZzogY29sb3ItZmcsXG4gIHJvdXRlLXRhYnMtZmctZGlzYWJsZWQ6IHJvdXRlLXRhYnMtZmcsXG4gIHJvdXRlLXRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgcm91dGUtdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJvdXRlLXRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgdXNlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgdXNlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHVzZXItYmc6IGNvbG9yLWJnLFxuICB1c2VyLWZnOiBjb2xvci1mZyxcbiAgdXNlci1mZy1oaWdobGlnaHQ6ICNiY2MzY2MsXG4gIHVzZXItZm9udC1mYW1pbHktc2Vjb25kYXJ5OiBmb250LXNlY29uZGFyeSxcbiAgdXNlci1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIHVzZXItc2l6ZS1tZWRpdW06IDIuNXJlbSxcbiAgdXNlci1zaXplLWxhcmdlOiAzLjI1cmVtLFxuICB1c2VyLXNpemUteGxhcmdlOiA0cmVtLFxuXG4gIHBvcG92ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHBvcG92ZXItYmc6IGNvbG9yLWJnLFxuICBwb3BvdmVyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgcG9wb3Zlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIHBvcG92ZXItc2hhZG93OiBub25lLFxuICBwb3BvdmVyLWFycm93LXNpemU6IDExcHgsXG5cbiAgY29udGV4dC1tZW51LWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjb250ZXh0LW1lbnUtYmc6IGNvbG9yLWJnLFxuICBjb250ZXh0LW1lbnUtYWN0aXZlLWZnOiBjb2xvci13aGl0ZSxcbiAgY29udGV4dC1tZW51LWFjdGl2ZS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY29udGV4dC1tZW51LXNoYWRvdzogbm9uZSxcbiAgY29udGV4dC1tZW51LWFycm93LXNpemU6IDExcHgsXG5cbiAgYWN0aW9ucy1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWN0aW9ucy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGFjdGlvbnMtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhY3Rpb25zLWZnOiBjb2xvci1mZyxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG4gIGFjdGlvbnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjdGlvbnMtcGFkZGluZzogcGFkZGluZyxcbiAgYWN0aW9ucy1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1tZWRpdW06IDIuMjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1sYXJnZTogMy41cmVtLFxuXG4gIHNlYXJjaC1idG4tb3Blbi1mZzogY29sb3ItZmcsXG4gIHNlYXJjaC1idG4tY2xvc2UtZmc6XHRjb2xvci1mZyxcbiAgc2VhcmNoLWJnOiBsYXlvdXQtYmcsXG4gIHNlYXJjaC1iZy1zZWNvbmRhcnk6IGNvbG9yLWZnLFxuICBzZWFyY2gtdGV4dDogY29sb3ItZmctaGVhZGluZyxcbiAgc2VhcmNoLWluZm86IGNvbG9yLWZnLFxuICBzZWFyY2gtZGFzaDogY29sb3ItZmcsXG4gIHNlYXJjaC1wbGFjZWhvbGRlcjogY29sb3ItZmcsXG5cbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBzbWFydC10YWJsZS1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWJnOiBjb2xvci1iZyxcblxuICBzbWFydC10YWJsZS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBzbWFydC10YWJsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc21hcnQtdGFibGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgc21hcnQtdGFibGUtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzbWFydC10YWJsZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtYmc6IGNvbG9yLWJnLFxuXG4gIHNtYXJ0LXRhYmxlLWJnLWV2ZW46ICNmNWY3ZmMsXG4gIHNtYXJ0LXRhYmxlLWZnLXNlY29uZGFyeTogY29sb3ItZmcsXG4gIHNtYXJ0LXRhYmxlLWJnLWFjdGl2ZTogI2U2ZjNmZixcbiAgc21hcnQtdGFibGUtcGFkZGluZzogMC44NzVyZW0gMS4yNXJlbSxcbiAgc21hcnQtdGFibGUtZmlsdGVyLXBhZGRpbmc6IDAuMzc1cmVtIDAuNXJlbSxcbiAgc21hcnQtdGFibGUtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ib3JkZXItd2lkdGg6IDFweCxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWZnLWFjdGl2ZTogI2ZmZmZmZixcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJnLWFjdGl2ZTogY29sb3Itc3VjY2VzcyxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWhvdmVyOiByZ2JhKDAsIDAsIDAsIDAuMDUpLFxuXG4gIHRvYXN0ci1iZzogY29sb3ItYmcsXG4gIHRvYXN0ci1wYWRkaW5nOiAxLjEyNXJlbSxcbiAgdG9hc3RyLWZnOiBjb2xvci1mZy10ZXh0LFxuICB0b2FzdHItYm9yZGVyOiAwLjEyNXJlbSBzb2xpZCxcbiAgdG9hc3RyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgdG9hc3RyLWJvcmRlci1jb2xvcjogI2JjYzNjYyxcbiAgdG9hc3RyLWljb24tcmFkaXVzOiAwLjI1cmVtLFxuICB0b2FzdHItc2hhZG93OiBzaGFkb3csXG5cbiAgYnRuLWZnOiBjb2xvci13aGl0ZSxcbiAgYnRuLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYnRuLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYnRuLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgYnRuLWN1cnNvcjogZGVmYXVsdCxcblxuICBidG4tcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgYnRuLXNlY29uZGFyeS1iZzogdHJhbnNwYXJlbnQsXG4gIGJ0bi1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBidG4tc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgYnRuLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGJ0bi1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogI2RhZGZlNixcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXItd2lkdGg6IDJweCxcblxuICBidG4tcGFkZGluZy15LWxnOiAwLjg3NXJlbSxcbiAgYnRuLXBhZGRpbmcteC1sZzogMS43NXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuXG4gIC8vIGRlZmF1bHQgc2l6ZVxuICBidG4tcGFkZGluZy15LW1kOiAwLjc1cmVtLFxuICBidG4tcGFkZGluZy14LW1kOiAxLjVyZW0sXG4gIGJ0bi1mb250LXNpemUtbWQ6IDFyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS1zbTogMC42MjVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtc206IDEuNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS14czogMC41cmVtLFxuICBidG4tcGFkZGluZy14LXhzOiAxLjI1cmVtLFxuICBidG4tZm9udC1zaXplLXhzOiAwLjc1cmVtLFxuXG4gIGJ0bi1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGJ0bi1yZWN0YW5nbGUtYm9yZGVyLXJhZGl1czogMC4yNXJlbSxcbiAgYnRuLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1czogMC43NXJlbSxcbiAgYnRuLXJvdW5kLWJvcmRlci1yYWRpdXM6IDEuNXJlbSxcblxuICBidG4taGVyby1zaGFkb3c6IG5vbmUsXG4gIGJ0bi1oZXJvLXRleHQtc2hhZG93OiBub25lLFxuICBidG4taGVyby1iZXZlbC1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kZWdyZWU6IDIwZGVnLFxuICBidG4taGVyby1wcmltYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zdWNjZXNzLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby13YXJuaW5nLWRlZ3JlZTogMTBkZWcsXG4gIGJ0bi1oZXJvLWluZm8tZGVncmVlOiAtMTBkZWcsXG4gIGJ0bi1oZXJvLWRhbmdlci1kZWdyZWU6IC0yMGRlZyxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG5cbiAgYnRuLW91dGxpbmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWhvdmVyLWZnOiAjZmZmZmZmLFxuICBidG4tb3V0bGluZS1mb2N1cy1mZzogY29sb3ItZmctaGVhZGluZyxcblxuICBidG4tZ3JvdXAtYmc6IGxheW91dC1iZyxcbiAgYnRuLWdyb3VwLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tZ3JvdXAtc2VwYXJhdG9yOiAjZGFkZmU2LFxuXG4gIGZvcm0tY29udHJvbC10ZXh0LXByaW1hcnktY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvcm0tY29udHJvbC1iZzogY29sb3ItYmcsXG4gIGZvcm0tY29udHJvbC1mb2N1cy1iZzogY29sb3ItYmcsXG5cbiAgZm9ybS1jb250cm9sLWJvcmRlci13aWR0aDogMnB4LFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBmb3JtLWNvbnRyb2wtc2VtaS1yb3VuZC1ib3JkZXItcmFkaXVzOiAwLjc1cmVtLFxuICBmb3JtLWNvbnRyb2wtcm91bmQtYm9yZGVyLXJhZGl1czogMS41cmVtLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOiAjZGFkZmU2LFxuICBmb3JtLWNvbnRyb2wtc2VsZWN0ZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuXG4gIGZvcm0tY29udHJvbC1pbmZvLWJvcmRlci1jb2xvcjogY29sb3ItaW5mbyxcbiAgZm9ybS1jb250cm9sLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBmb3JtLWNvbnRyb2wtZGFuZ2VyLWJvcmRlci1jb2xvcjogY29sb3ItZGFuZ2VyLFxuICBmb3JtLWNvbnRyb2wtd2FybmluZy1ib3JkZXItY29sb3I6IGNvbG9yLXdhcm5pbmcsXG5cbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yOiBjb2xvci1mZyxcbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZTogMXJlbSxcblxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplOiAxcmVtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZzogMC43NXJlbSAxLjEyNXJlbSxcbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZy1zbTogMC4zNzVyZW0gMS4xMjVyZW0sXG4gIGZvcm0tY29udHJvbC1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmctbGc6IDEuMTI1cmVtLFxuXG4gIGZvcm0tY29udHJvbC1sYWJlbC1mb250LXdlaWdodDogNDAwLFxuXG4gIGZvcm0tY29udHJvbC1mZWVkYmFjay1mb250LXNpemU6IDAuODc1cmVtLFxuICBmb3JtLWNvbnRyb2wtZmVlZGJhY2stZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcblxuICBjaGVja2JveC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWJvcmRlci1jb2xvcjogZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcixcbiAgY2hlY2tib3gtY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcblxuICBjaGVja2JveC1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBjaGVja2JveC1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBjaGVja2JveC1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWRpc2FibGVkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGVhZGluZyxcbiAgY2hlY2tib3gtZGlzYWJsZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIG1vZGFsLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtb2RhbC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIG1vZGFsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWZnOiBjb2xvci1mZy10ZXh0LFxuICBtb2RhbC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtb2RhbC1iZzogY29sb3ItYmcsXG4gIG1vZGFsLWJvcmRlcjogdHJhbnNwYXJlbnQsXG4gIG1vZGFsLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbW9kYWwtcGFkZGluZzogcGFkZGluZyxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1vZGFsLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgbW9kYWwtYm9keS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBtb2RhbC1ib2R5LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWJvZHktZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1vZGFsLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuXG4gIGJhZGdlLWZnLXRleHQ6IGNvbG9yLXdoaXRlLFxuICBiYWRnZS1wcmltYXJ5LWJnLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBiYWRnZS1zdWNjZXNzLWJnLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBiYWRnZS1pbmZvLWJnLWNvbG9yOiBjb2xvci1pbmZvLFxuICBiYWRnZS13YXJuaW5nLWJnLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuICBiYWRnZS1kYW5nZXItYmctY29sb3I6IGNvbG9yLWRhbmdlcixcblxuICBwcm9ncmVzcy1iYXItaGVpZ2h0LXhsZzogMS43NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1sZzogMS41cmVtLFxuICBwcm9ncmVzcy1iYXItaGVpZ2h0OiAxLjM3NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1zbTogMS4yNXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC14czogMXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXMsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUteGxnOiBmb250LXNpemUteGxnLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXhzOiBmb250LXNpemUteHMsXG4gIHByb2dyZXNzLWJhci1yYWRpdXM6IHJhZGl1cyxcbiAgcHJvZ3Jlc3MtYmFyLWJnOiBsYXlvdXQtYmcsXG4gIHByb2dyZXNzLWJhci1mb250LWNvbG9yOiBjb2xvci13aGl0ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBwcm9ncmVzcy1iYXItZGVmYXVsdC1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHByb2dyZXNzLWJhci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBwcm9ncmVzcy1iYXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHByb2dyZXNzLWJhci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBhbGVydC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWxlcnQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhbGVydC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhbGVydC1mZzogY29sb3Itd2hpdGUsXG4gIGFsZXJ0LW91dGxpbmUtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1iZzogY29sb3ItYmcsXG4gIGFsZXJ0LWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGFsZXJ0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgYWxlcnQtZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBhbGVydC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBhbGVydC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBhbGVydC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBhbGVydC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgYWxlcnQtaGVpZ2h0LXh4c21hbGw6IDUycHgsXG4gIGFsZXJ0LWhlaWdodC14c21hbGw6IDcycHgsXG4gIGFsZXJ0LWhlaWdodC1zbWFsbDogOTJweCxcbiAgYWxlcnQtaGVpZ2h0LW1lZGl1bTogMTEycHgsXG4gIGFsZXJ0LWhlaWdodC1sYXJnZTogMTMycHgsXG4gIGFsZXJ0LWhlaWdodC14bGFyZ2U6IDE1MnB4LFxuICBhbGVydC1oZWlnaHQteHhsYXJnZTogMTcycHgsXG4gIGFsZXJ0LXNoYWRvdzogbm9uZSxcbiAgYWxlcnQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBhbGVydC1wYWRkaW5nOiAxcmVtIDEuMTI1cmVtLFxuICBhbGVydC1jbG9zYWJsZS1wYWRkaW5nOiAzcmVtLFxuICBhbGVydC1idXR0b24tcGFkZGluZzogM3JlbSxcbiAgYWxlcnQtbWFyZ2luOiBtYXJnaW4sXG5cbiAgY2hhdC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2hhdC1mZzogY29sb3Itd2hpdGUsXG4gIGNoYXQtYmc6IGNvbG9yLWJnLFxuICBjaGF0LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2hhdC1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LWhlaWdodC14eHNtYWxsOiA5NnB4LFxuICBjaGF0LWhlaWdodC14c21hbGw6IDIxNnB4LFxuICBjaGF0LWhlaWdodC1zbWFsbDogMzM2cHgsXG4gIGNoYXQtaGVpZ2h0LW1lZGl1bTogNDU2cHgsXG4gIGNoYXQtaGVpZ2h0LWxhcmdlOiA1NzZweCxcbiAgY2hhdC1oZWlnaHQteGxhcmdlOiA2OTZweCxcbiAgY2hhdC1oZWlnaHQteHhsYXJnZTogODE2cHgsXG4gIGNoYXQtYm9yZGVyOiBib3JkZXIsXG4gIGNoYXQtcGFkZGluZzogcGFkZGluZyxcbiAgY2hhdC1zaGFkb3c6IHNoYWRvdyxcbiAgY2hhdC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgY2hhdC1tZXNzYWdlLWZnOiBjb2xvci13aGl0ZSxcbiAgY2hhdC1tZXNzYWdlLWJnOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM0Y2E2ZmYsICM1OWJmZmYpLFxuICBjaGF0LW1lc3NhZ2UtcmVwbHktYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2hhdC1tZXNzYWdlLXJlcGx5LWZnOiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LW1lc3NhZ2UtYXZhdGFyLWJnOiBjb2xvci1mZyxcbiAgY2hhdC1tZXNzYWdlLXNlbmRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjaGF0LW1lc3NhZ2UtZmlsZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1maWxlLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGF0LWZvcm0tYm9yZGVyOiBzZXBhcmF0b3IsXG4gIGNoYXQtZm9ybS1wbGFjZWhvbGRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtZm9ybS1hY3RpdmUtYm9yZGVyOiBjb2xvci1mZyxcbiAgY2hhdC1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBjaGF0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgY2hhdC1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGNoYXQtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2hhdC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjaGF0LXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoYXQtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgY2hhdC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBzcGlubmVyLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODMpLFxuICBzcGlubmVyLWNpcmNsZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBzcGlubmVyLWZnOiBjb2xvci1mZy10ZXh0LFxuICBzcGlubmVyLWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIHNwaW5uZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBzcGlubmVyLWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgc3Bpbm5lci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBzcGlubmVyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHNwaW5uZXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgc3Bpbm5lci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBzcGlubmVyLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICBzcGlubmVyLXh4c21hbGw6IDEuMjVyZW0sXG4gIHNwaW5uZXIteHNtYWxsOiAxLjVyZW0sXG4gIHNwaW5uZXItc21hbGw6IDEuNzVyZW0sXG4gIHNwaW5uZXItbWVkaXVtOiAycmVtLFxuICBzcGlubmVyLWxhcmdlOiAyLjI1cmVtLFxuICBzcGlubmVyLXhsYXJnZTogMi41cmVtLFxuICBzcGlubmVyLXh4bGFyZ2U6IDNyZW0sXG5cbiAgc3RlcHBlci1pbmRleC1zaXplOiAycmVtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtc2l6ZTogZm9udC1zaXplLXNtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIHN0ZXBwZXItYWNjZW50LWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBzdGVwcGVyLWNvbXBsZXRlZC1mZzogY29sb3Itd2hpdGUsXG4gIHN0ZXBwZXItZmc6IGNvbG9yLWZnLFxuICBzdGVwcGVyLWNvbXBsZXRlZC1pY29uLXNpemU6IDEuNXJlbSxcbiAgc3RlcHBlci1jb21wbGV0ZWQtaWNvbi13ZWlnaHQ6IGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQsXG4gIHN0ZXBwZXItc3RlcC1wYWRkaW5nOiBwYWRkaW5nLFxuXG4gIGFjY29yZGlvbi1wYWRkaW5nOiBwYWRkaW5nLFxuICBhY2NvcmRpb24tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjY29yZGlvbi1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFjY29yZGlvbi1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci1jb2xvcjogYWNjb3JkaW9uLXNlcGFyYXRvcixcbiAgYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYWNjb3JkaW9uLWl0ZW0tYmc6IGNvbG9yLWJnLFxuICBhY2NvcmRpb24taXRlbS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgYWNjb3JkaW9uLWl0ZW0tZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgYWNjb3JkaW9uLWl0ZW0tc2hhZG93OiBzaGFkb3csXG5cbiAgbGlzdC1pdGVtLWJvcmRlci1jb2xvcjogdGFicy1zZXBhcmF0b3IsXG4gIGxpc3QtaXRlbS1wYWRkaW5nOiAxcmVtLFxuXG4gIGNhbGVuZGFyLXdpZHRoOiAyMS44NzVyZW0sXG4gIGNhbGVuZGFyLWJvZHktaGVpZ2h0OiAyNS42MjVyZW0sXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZS14bGcsXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtdGhpbixcbiAgY2FsZW5kYXItbmF2aWdhdGlvbi1idXR0b24td2lkdGg6IDEwcmVtLFxuICBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1ob3Zlci1pdGVtLWJnOiBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnLFxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1mZzogY29sb3ItZmctdGV4dCxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtZmc6IGNvbG9yLXdoaXRlLFxuICBjYWxlbmRhci10b2RheS1mZzogY2FsZW5kYXItZmcsXG4gIGNhbGVuZGFyLWRheS1jZWxsLXdpZHRoOiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtaGVpZ2h0OiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aDogNC4yNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQ6IDIuMzc1cmVtLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtd2lkdGg6IGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXllYXItY2VsbC1oZWlnaHQ6IGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0LFxuICBjYWxlbmRhci1pbmFjdGl2ZS1vcGFjaXR5OiAwLjUsXG4gIGNhbGVuZGFyLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgY2FsZW5kYXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjYWxlbmRhci13ZWVrZGF5LXdpZHRoOiBjYWxlbmRhci1kYXktY2VsbC13aWR0aCxcbiAgY2FsZW5kYXItd2Vla2RheS1oZWlnaHQ6IDEuNzVyZW0sXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC1zaXplOiBmb250LXNpemUteHMsXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FsZW5kYXItd2Vla2RheS1mZzogY29sb3ItZmcsXG4gIGNhbGVuZGFyLXdlZWtkYXktaG9saWRheS1mZzogY29sb3ItZGFuZ2VyLFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogI2ViZmJmMixcblxuICBjYWxlbmRhci1sYXJnZS13aWR0aDogMjQuMzc1cmVtLFxuICBjYWxlbmRhci1sYXJnZS1ib2R5LWhlaWdodDogMjcuNzVyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWxhcmdlLXdpZHRoOiAzcmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1sYXJnZS1oZWlnaHQ6IDNyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2Utd2lkdGg6IDQuMjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2UtaGVpZ2h0OiAyLjM3NXJlbSxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWxhcmdlLXdpZHRoOiBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtbGFyZ2UtaGVpZ2h0OiBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodCxcblxuICBvdmVybGF5LWJhY2tkcm9wLWJnOiByZ2JhKDAsIDAsIDAsIDAuMjg4KSxcblxuICB0b29sdGlwLWJnOiBjb2xvci1mZy10ZXh0LFxuICB0b29sdGlwLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHRvb2x0aXAtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgdG9vbHRpcC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICB0b29sdGlwLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHRvb2x0aXAtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIHRvb2x0aXAtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zdGF0dXMtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zaGFkb3c6IHNoYWRvdyxcbiAgdG9vbHRpcC1mb250LXNpemU6IGZvbnQtc2l6ZSxcblxuICBzZWxlY3QtYm9yZGVyLXdpZHRoOiAycHgsXG4gIHNlbGVjdC1tYXgtaGVpZ2h0OiAyMHJlbSxcbiAgc2VsZWN0LWJnOiBjb2xvci1iZyxcblxuICBzZWxlY3QtY2hlY2tib3gtY29sb3I6IGNoZWNrYm94LWJvcmRlci1jb2xvcixcbiAgc2VsZWN0LWNoZWNrbWFyay1jb2xvcjogY2hlY2tib3gtYm9yZGVyLWNvbG9yLFxuXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtYmc6ICNmMmY0ZjcsXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtb3BhY2l0eTogMC4zLFxuICBzZWxlY3Qtb3B0aW9uLXBhZGRpbmc6IDAuNzVyZW0gMS41cmVtLFxuXG4gIGRhdGVwaWNrZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGRhdGVwaWNrZXItYmc6IGNvbG9yLWJnLFxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgZGF0ZXBpY2tlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGRhdGVwaWNrZXItc2hhZG93OiBub25lLFxuICBkYXRlcGlja2VyLWFycm93LXNpemU6IDExcHgsXG5cbiAgcmFkaW8tYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1mZzogY29sb3ItZmctdGV4dCxcbiAgcmFkaW8tc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tYm9yZGVyLWNvbG9yOiBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yLFxuICByYWRpby1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuICByYWRpby1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICByYWRpby1jaGVja2VkLWNoZWNrbWFyazogY29sb3Itc3VjY2VzcyxcbiAgcmFkaW8tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItY29sb3I6IHJhZGlvLWJvcmRlci1jb2xvcixcbiAgcmFkaW8tZGlzYWJsZWQtY2hlY2ttYXJrOiByYWRpby1jaGVja21hcmssXG5cbiAgdHJlZS1ncmlkLWNlbGwtYm9yZGVyLXdpZHRoOiAxcHgsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1zdHlsZTogc29saWQsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICB0cmVlLWdyaWQtcm93LW1pbi1oZWlnaHQ6IDJyZW0sXG4gIHRyZWUtZ3JpZC1jZWxsLXBhZGRpbmc6IDAuODc1cmVtIDEuMjVyZW0sXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYm9yZGVyOiBub25lLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLXBhZGRpbmc6IDAsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tZm9udC13ZWlnaHQ6IGJvbGQsXG4gIHRyZWUtZ3JpZC1oZWFkZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXJvdy1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctYmctZXZlbjogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctaG92ZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWNvbG9yOiBjb2xvci1mZy10ZXh0LFxuICB0cmVlLWdyaWQtaWNvbi1jb2xvcjogY29sb3ItZmctdGV4dCxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBkZWZhdWx0KTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuQGltcG9ydCAnZGVmYXVsdCc7XG5cbi8vIGRlZmF1bHQgdGhlIGJhc2UgdGhlbWVcbiR0aGVtZTogKFxuICByYWRpdXM6IDAuNXJlbSxcblxuICBjb2xvci1iZzogIzNkMzc4MCxcbiAgY29sb3ItYmctYWN0aXZlOiAjNDk0Mjk5LFxuICBjb2xvci1mZzogI2ExYTFlNSxcbiAgY29sb3ItZmctaGVhZGluZzogI2ZmZmZmZixcbiAgY29sb3ItZmctdGV4dDogI2QxZDFmZixcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiAjMDBmOWE2LFxuXG4gIGNvbG9yLWdyYXk6IHJnYmEoODEsIDExMywgMTY1LCAwLjE1KSxcbiAgY29sb3ItbmV1dHJhbDogdHJhbnNwYXJlbnQsXG4gIGNvbG9yLXdoaXRlOiAjZmZmZmZmLFxuICBjb2xvci1kaXNhYmxlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM3NjU5ZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICMwMGQ5NzcsXG4gIGNvbG9yLWluZm86ICMwMDg4ZmYsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmExMDAsXG4gIGNvbG9yLWRhbmdlcjogI2ZmMzg2YSxcblxuICBsaW5rLWNvbG9yOiAjMDBmOWE2LFxuICBsaW5rLWNvbG9yLWhvdmVyOiAjMTRmZmJlLFxuXG4gIHNlcGFyYXRvcjogIzM0MmU3MyxcbiAgc2hhZG93OiAwIDhweCAyMHB4IDAgcmdiYSg0MCwgMzcsIDg5LCAwLjYpLFxuXG4gIGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG5cbiAgbGF5b3V0LWJnOiAjMmYyOTZiLFxuXG4gIHNjcm9sbGJhci1mZzogIzU1NGRiMyxcbiAgc2Nyb2xsYmFyLWJnOiAjMzMyZTczLFxuXG4gIHJhZGlhbC1ncmFkaWVudDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCAjNDIzZjhjLCAjMzAyYzZlKSxcbiAgbGluZWFyLWdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMxNzE3NDksICM0MTM3ODkpLFxuXG4gIHNpZGViYXItZmc6IGNvbG9yLXNlY29uZGFyeSxcbiAgc2lkZWJhci1iZzogY29sb3ItYmcsXG5cbiAgaGVhZGVyLWZnOiBjb2xvci13aGl0ZSxcbiAgaGVhZGVyLWJnOiBjb2xvci1iZyxcblxuICBmb290ZXItZmc6IGNvbG9yLWZnLFxuICBmb290ZXItYmc6IGNvbG9yLWJnLFxuXG4gIGFjdGlvbnMtZmc6IGNvbG9yLWZnLFxuICBhY3Rpb25zLWJnOiBjb2xvci1iZyxcblxuICB1c2VyLWZnOiBjb2xvci1iZyxcbiAgdXNlci1iZzogY29sb3ItZmcsXG4gIHVzZXItZmctaGlnaGxpZ2h0OiBjb2xvci1mZy1oaWdobGlnaHQsXG5cbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4gIHBvcG92ZXItc2hhZG93OiBzaGFkb3csXG5cbiAgY29udGV4dC1tZW51LWFjdGl2ZS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY29udGV4dC1tZW51LWJvcmRlcjogY29sb3ItcHJpbWFyeSxcblxuICBmb290ZXItaGVpZ2h0OiBoZWFkZXItaGVpZ2h0LFxuXG4gIHNpZGViYXItd2lkdGg6IDE2LjI1cmVtLFxuICBzaWRlYmFyLXdpZHRoLWNvbXBhY3Q6IDMuNDVyZW0sXG5cbiAgbWVudS1mZzogY29sb3ItZmcsXG4gIG1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3Itd2hpdGUsXG4gIG1lbnUtZ3JvdXAtZmc6IGNvbG9yLXdoaXRlLFxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1lbnUtYWN0aXZlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtc3VibWVudS1iZzogbGF5b3V0LWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnOiByZ2JhKDAsIDI1NSwgMTcwLCAwLjI1KSxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhpZ2hsaWdodCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1zaGFkb3c6IDAgMnB4IDEycHggMCByZ2JhKDAsIDI1NSwgMTcwLCAwLjI1KSxcbiAgbWVudS1pdGVtLXBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbSxcbiAgbWVudS1pdGVtLXNlcGFyYXRvcjogdHJhbnNwYXJlbnQsXG5cbiAgYnRuLWhlcm8tc2hhZG93OiAwIDRweCAxMHB4IDAgcmdiYSgzMywgNywgNzcsIDAuNSksXG4gIGJ0bi1oZXJvLXRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpLFxuICBidG4taGVyby1iZXZlbC1zaXplOiAwIDNweCAwIDAsXG4gIGJ0bi1oZXJvLWdsb3ctc2l6ZTogMCAycHggOHB4IDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbiAgYnRuLW91dGxpbmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWhvdmVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1mb2N1cy1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLWdyb3VwLWJnOiAjMzczMjczLFxuICBidG4tZ3JvdXAtc2VwYXJhdG9yOiAjMzEyYzY2LFxuXG4gIGZvcm0tY29udHJvbC1iZzogIzM3MzE3YSxcbiAgZm9ybS1jb250cm9sLWZvY3VzLWJnOiBzZXBhcmF0b3IsXG4gIGZvcm0tY29udHJvbC1ib3JkZXItY29sb3I6IHNlcGFyYXRvcixcbiAgZm9ybS1jb250cm9sLXNlbGVjdGVkLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcblxuICBjaGVja2JveC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWJvcmRlci1jb2xvcjogY29sb3ItZmcsXG4gIGNoZWNrYm94LWNoZWNrbWFyazogdHJhbnNwYXJlbnQsXG5cbiAgY2hlY2tib3gtY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgY2hlY2tib3gtY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgY2hlY2tib3gtZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBzZWFyY2gtYmc6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzE3MTc0OSwgIzQxMzc4OSksXG5cbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1iZzogY29sb3ItYmctYWN0aXZlLFxuICBzbWFydC10YWJsZS1iZy1ldmVuOiAjM2EzNDdhLFxuICBzbWFydC10YWJsZS1iZy1hY3RpdmU6IGNvbG9yLWJnLWFjdGl2ZSxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLXdpZHRoOiAycHgsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1mZy1hY3RpdmU6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXByaW1hcnksXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjIpLFxuXG4gIGJhZGdlLWZnLXRleHQ6IGNvbG9yLXdoaXRlLFxuICBiYWRnZS1wcmltYXJ5LWJnLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBiYWRnZS1zdWNjZXNzLWJnLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBiYWRnZS1pbmZvLWJnLWNvbG9yOiBjb2xvci1pbmZvLFxuICBiYWRnZS13YXJuaW5nLWJnLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuICBiYWRnZS1kYW5nZXItYmctY29sb3I6IGNvbG9yLWRhbmdlcixcblxuICBzcGlubmVyLWJnOiByZ2JhKDYxLCA1NSwgMTI4LCAwLjkpLFxuICBzdGVwcGVyLWFjY2VudC1jb2xvcjogY29sb3Itc3VjY2VzcyxcblxuICB0YWJzLXNlbGVjdGVkLXNlY29uZC1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgdGFicy1zZWxlY3RlZC1kZWdyZWVzOiAyMGRlZyxcblxuICBjYWxlbmRhci1hY3RpdmUtaXRlbS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FsZW5kYXItcmFuZ2UtYmctaW4tcmFuZ2U6ICM0ZTQwOTUsXG4gIGNhbGVuZGFyLXRvZGF5LWl0ZW0tYmc6ICMzNTJmNmUsXG5cbiAgc2VsZWN0LW9wdGlvbi1kaXNhYmxlZC1iZzogIzMxMmU3NSxcblxuICB0b2FzdHItY29sb3ItZmc6IGNvbG9yLXdoaXRlLFxuICB0b2FzdHItcGFkZGluZzogMS4yNXJlbSxcbiAgdG9hc3RyLWJvcmRlcjogMCxcbiAgdG9hc3RyLWRlZmF1bHQtYmFja2dyb3VuZDogI2JjYzNjYyxcblxuICB0b29sdGlwLWZnOiBjb2xvci1iZyxcbiAgdG9vbHRpcC1zdGF0dXMtZmc6IGNvbG9yLXdoaXRlLFxuXG4gIGRhdGVwaWNrZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuICBkYXRlcGlja2VyLXNoYWRvdzogc2hhZG93LFxuXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICByYWRpby1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItcHJpbWFyeSxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBjb3NtaWMsIGRlZmF1bHQpO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AaW1wb3J0ICcuLi9jb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICcuLi9jb3JlL21peGlucyc7XG5AaW1wb3J0ICdkZWZhdWx0JztcblxuLy8gZGVmYXVsdCB0aGUgYmFzZSB0aGVtZVxuJHRoZW1lOiAoXG4gIGhlYWRlci1mZzogI2Y3ZmFmYixcbiAgaGVhZGVyLWJnOiAjMTExMjE4LFxuXG4gIGxheW91dC1iZzogI2YxZjVmOCxcblxuICBjb2xvci1mZy1oZWFkaW5nOiAjMTgxODE4LFxuICBjb2xvci1mZy10ZXh0OiAjNGI0YjRiLFxuICBjb2xvci1mZy1oaWdobGlnaHQ6IGNvbG9yLWZnLFxuXG4gIHNlcGFyYXRvcjogI2NkZDVkYyxcblxuICByYWRpdXM6IDAuMTdyZW0sXG5cbiAgc2Nyb2xsYmFyLWJnOiAjZTNlOWVlLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM3M2ExZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICM1ZGNmZTMsXG4gIGNvbG9yLWluZm86ICNiYTdmZWMsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmEzNmIsXG4gIGNvbG9yLWRhbmdlcjogI2ZmNmI4MyxcblxuICBidG4tc2Vjb25kYXJ5LWJnOiAjZWRmMmY1LFxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogI2VkZjJmNSxcblxuICBhY3Rpb25zLWZnOiAjZDNkYmU1LFxuICBhY3Rpb25zLWJnOiBjb2xvci1iZyxcblxuICBzaWRlYmFyLWJnOiAjZTNlOWVlLFxuXG4gIGJvcmRlci1jb2xvcjogI2Q1ZGJlMCxcblxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtYmc6ICNlM2U5ZWUsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LWFjdGl2ZS1iZzogbWVudS1iZyxcblxuICBtZW51LXN1Ym1lbnUtYmc6IG1lbnUtYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogI2NkZDVkYyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1ib3JkZXItY29sb3I6IG1lbnUtc3VibWVudS1hY3RpdmUtYmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiBub25lLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItZmc6IG1lbnUtc3VibWVudS1hY3RpdmUtZmcsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1iZzogbWVudS1iZyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXdpZHRoOiAwLjEyNXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1wYWRkaW5nOiAwLjVyZW0gMXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tY29udGFpbmVyLXBhZGRpbmc6IDAgMS4yNXJlbSxcbiAgbWVudS1zdWJtZW51LXBhZGRpbmc6IDAuNXJlbSxcblxuICBidG4tYm9yZGVyLXJhZGl1czogYnRuLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1cyxcblxuICBidG4taGVyby1kZWdyZWU6IDBkZWcsXG4gIGJ0bi1oZXJvLXByaW1hcnktZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWluZm8tZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWRhbmdlci1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMCAyMHB4IDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogMCAwIDAgMCxcbiAgYnRuLWhlcm8tYm9yZGVyLXJhZGl1czogYnRuLWJvcmRlci1yYWRpdXMsXG5cbiAgY2FyZC1zaGFkb3c6IG5vbmUsXG4gIGNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGNhcmQtYm9yZGVyLWNvbG9yOiBib3JkZXItY29sb3IsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci13aWR0aDogMCxcblxuICBsaW5rLWNvbG9yOiAjNWRjZmUzLFxuICBsaW5rLWNvbG9yLWhvdmVyOiAjN2RjZmUzLFxuICBsaW5rLWNvbG9yLXZpc2l0ZWQ6IGxpbmstY29sb3IsXG5cbiAgYWN0aW9ucy1zZXBhcmF0b3I6ICNmMWY0ZjUsXG5cbiAgbW9kYWwtc2VwYXJhdG9yOiBib3JkZXItY29sb3IsXG5cbiAgdGFicy1zZWxlY3RlZDogY29sb3ItcHJpbWFyeSxcbiAgdGFicy1zZWxlY3RlZC1zZWNvbmQtY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIHRhYnMtc2VwYXJhdG9yOiAjZWJlY2VlLFxuXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXByaW1hcnksXG5cbiAgcm91dGUtdGFicy1zZWxlY3RlZDogY29sb3ItcHJpbWFyeSxcblxuICBwb3BvdmVyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcblxuICBmb290ZXItc2hhZG93OiBub25lLFxuICBmb290ZXItc2VwYXJhdG9yOiBib3JkZXItY29sb3IsXG4gIGZvb3Rlci1mZy1oaWdobGlnaHQ6ICMyYTJhMmEsXG5cbiAgY2FsZW5kYXItdG9kYXktaXRlbS1iZzogI2EyYjJjNyxcbiAgY2FsZW5kYXItYWN0aXZlLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXJhbmdlLWJnLWluLXJhbmdlOiAjZTNlY2ZlLFxuICBjYWxlbmRhci10b2RheS1mZzogY29sb3Itd2hpdGUsXG5cbiAgdG9hc3RyLWljb24tcmFkaXVzOiByYWRpdXMsXG5cbiAgZGF0ZXBpY2tlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgY29ycG9yYXRlLCBkZWZhdWx0KTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQG1peGluIGJ0bi1oZXJvKCkge1xuICAuYnRuLmJ0bi1oZXJvLXByaW1hcnkge1xuICAgIEBpbmNsdWRlIGJ0bi1oZXJvLXByaW1hcnkoKTtcbiAgfVxuXG4gIC5idG4uYnRuLWhlcm8tc3VjY2VzcyB7XG4gICAgQGluY2x1ZGUgYnRuLWhlcm8tc3VjY2VzcygpO1xuICB9XG5cbiAgLmJ0bi5idG4taGVyby13YXJuaW5nIHtcbiAgICBAaW5jbHVkZSBidG4taGVyby13YXJuaW5nKCk7XG4gIH1cblxuICAuYnRuLmJ0bi1oZXJvLWluZm8ge1xuICAgIEBpbmNsdWRlIGJ0bi1oZXJvLWluZm8oKTtcbiAgfVxuXG4gIC5idG4uYnRuLWhlcm8tZGFuZ2VyIHtcbiAgICBAaW5jbHVkZSBidG4taGVyby1kYW5nZXIoKTtcbiAgfVxuXG4gIC5idG4uYnRuLWhlcm8tc2Vjb25kYXJ5IHtcbiAgICBAaW5jbHVkZSBidG4taGVyby1zZWNvbmRhcnkoKTtcbiAgfVxufVxuXG5AbWl4aW4gYnRuLWhlcm8tcHJpbWFyeSgpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tcHJpbWFyeS1ncmFkaWVudCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1wcmltYXJ5LWJldmVsLWdsb3ctc2hhZG93KCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXMoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tdGV4dCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1wcmltYXJ5LWZvY3VzKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLXByaW1hcnktaG92ZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tcHJpbWFyeS1hY3RpdmUoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tcHJpbWFyeS1ib3JkZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGlzYWJsZWQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tbGluZS1oZWlnaHQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tcHJpbWFyeS1wdWxzZSgpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8tc3VjY2VzcygpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tc3VjY2Vzcy1ncmFkaWVudCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1zdWNjZXNzLWJldmVsLWdsb3ctc2hhZG93KCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXMoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tdGV4dCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1zdWNjZXNzLWZvY3VzKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLXN1Y2Nlc3MtaG92ZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tc3VjY2Vzcy1hY3RpdmUoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tc3VjY2Vzcy1ib3JkZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGlzYWJsZWQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tbGluZS1oZWlnaHQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tc3VjY2Vzcy1wdWxzZSgpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8td2FybmluZygpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8td2FybmluZy1ncmFkaWVudCgpO1xuICBAaW5jbHVkZSBidG4taGVyby13YXJuaW5nLWJldmVsLWdsb3ctc2hhZG93KCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXMoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tdGV4dCgpO1xuICBAaW5jbHVkZSBidG4taGVyby13YXJuaW5nLWZvY3VzKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLXdhcm5pbmctaG92ZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8td2FybmluZy1hY3RpdmUoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8td2FybmluZy1ib3JkZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGlzYWJsZWQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tbGluZS1oZWlnaHQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8td2FybmluZy1wdWxzZSgpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8taW5mbygpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8taW5mby1ncmFkaWVudCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1pbmZvLWJldmVsLWdsb3ctc2hhZG93KCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXMoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tdGV4dCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1pbmZvLWZvY3VzKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWluZm8taG92ZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8taW5mby1hY3RpdmUoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8taW5mby1ib3JkZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGlzYWJsZWQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tbGluZS1oZWlnaHQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8taW5mby1wdWxzZSgpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8tZGFuZ2VyKCkge1xuICBAaW5jbHVkZSBidG4taGVyby1kYW5nZXItZ3JhZGllbnQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGFuZ2VyLWJldmVsLWdsb3ctc2hhZG93KCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXMoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tdGV4dCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1kYW5nZXItZm9jdXMoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGFuZ2VyLWhvdmVyKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWRhbmdlci1hY3RpdmUoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGFuZ2VyLWJvcmRlcigpO1xuICBAaW5jbHVkZSBidG4taGVyby1kaXNhYmxlZCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1saW5lLWhlaWdodCgpO1xuICBAaW5jbHVkZSBidG4taGVyby1kYW5nZXItcHVsc2UoKTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLXNlY29uZGFyeSgpIHtcbiAgY29sb3I6IG5iLXRoZW1lKGJ0bi1vdXRsaW5lLWZnKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tc2Vjb25kYXJ5LWJnKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLXNlY29uZGFyeS1iZXZlbC1nbG93LXNoYWRvdygpO1xuICBAaW5jbHVkZSBidG4taGVyby1ib3JkZXItcmFkaXVzKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLXRleHQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tc2Vjb25kYXJ5LWZvY3VzKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLXNlY29uZGFyeS1ob3ZlcigpO1xuICBAaW5jbHVkZSBidG4taGVyby1zZWNvbmRhcnktYWN0aXZlKCk7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLXNlY29uZGFyeS1ib3JkZXIoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZGlzYWJsZWQoKTtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tc2Vjb25kYXJ5LXB1bHNlKCk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1ncmFkaWVudC1sZWZ0KCRjb2xvciwgJGRlZ3JlZXM6IDIwZGVnKSB7XG4gIEByZXR1cm4gYWRqdXN0LWh1ZSgkY29sb3IsICRkZWdyZWVzKTtcbn1cblxuLy8gRnVuY3Rpb25zIGZvciBib3gtc2hhZG93XG5AZnVuY3Rpb24gYnRuLWhlcm8tYmV2ZWwoJGNvbG9yKSB7XG4gIEByZXR1cm4gbmItdGhlbWUoYnRuLWhlcm8tYmV2ZWwtc2l6ZSkgc2hhZGUoJGNvbG9yLCAxNCUpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8tZ2xvdygkaGVyby1nbG93LXNpemUsICRjb2xvcikge1xuICBAcmV0dXJuIG5iLXRoZW1lKCRoZXJvLWdsb3ctc2l6ZSkgJGNvbG9yO1xufVxuXG4vLyBMZWZ0IGNvbG9yc1xuQGZ1bmN0aW9uIGJ0bi1oZXJvLXByaW1hcnktbGVmdC1jb2xvcigpIHtcbiAgQHJldHVybiBidG4taGVyby1ncmFkaWVudC1sZWZ0KG5iLXRoZW1lKGJ0bi1wcmltYXJ5LWJnKSwgbmItdGhlbWUoYnRuLWhlcm8tcHJpbWFyeS1kZWdyZWUpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLXN1Y2Nlc3MtbGVmdC1jb2xvcigpIHtcbiAgQHJldHVybiBidG4taGVyby1ncmFkaWVudC1sZWZ0KG5iLXRoZW1lKGJ0bi1zdWNjZXNzLWJnKSwgbmItdGhlbWUoYnRuLWhlcm8tc3VjY2Vzcy1kZWdyZWUpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLXdhcm5pbmctbGVmdC1jb2xvcigpIHtcbiAgQHJldHVybiBidG4taGVyby1ncmFkaWVudC1sZWZ0KG5iLXRoZW1lKGJ0bi13YXJuaW5nLWJnKSwgbmItdGhlbWUoYnRuLWhlcm8td2FybmluZy1kZWdyZWUpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWluZm8tbGVmdC1jb2xvcigpIHtcbiAgQHJldHVybiBidG4taGVyby1ncmFkaWVudC1sZWZ0KG5iLXRoZW1lKGJ0bi1pbmZvLWJnKSwgbmItdGhlbWUoYnRuLWhlcm8taW5mby1kZWdyZWUpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWRhbmdlci1sZWZ0LWNvbG9yKCkge1xuICBAcmV0dXJuIGJ0bi1oZXJvLWdyYWRpZW50LWxlZnQobmItdGhlbWUoYnRuLWRhbmdlci1iZyksIG5iLXRoZW1lKGJ0bi1oZXJvLWRhbmdlci1kZWdyZWUpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLXNlY29uZGFyeS1sZWZ0LWNvbG9yKCkge1xuICBAcmV0dXJuIGJ0bi1oZXJvLWdyYWRpZW50LWxlZnQobmItdGhlbWUoYnRuLXNlY29uZGFyeS1ib3JkZXIpLCBuYi10aGVtZShidG4taGVyby1zZWNvbmRhcnktZGVncmVlKSk7XG59XG5cbi8vIE1pZGRsZSBjb2xvcnNcbkBmdW5jdGlvbiBidG4taGVyby1wcmltYXJ5LW1pZGRsZS1jb2xvcigpIHtcbiAgQHJldHVybiBtaXgoYnRuLWhlcm8tcHJpbWFyeS1sZWZ0LWNvbG9yKCksIG5iLXRoZW1lKGJ0bi1wcmltYXJ5LWJnKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1zdWNjZXNzLW1pZGRsZS1jb2xvcigpIHtcbiAgQHJldHVybiBtaXgoYnRuLWhlcm8tc3VjY2Vzcy1sZWZ0LWNvbG9yKCksIG5iLXRoZW1lKGJ0bi1zdWNjZXNzLWJnKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby13YXJuaW5nLW1pZGRsZS1jb2xvcigpIHtcbiAgQHJldHVybiBtaXgoYnRuLWhlcm8td2FybmluZy1sZWZ0LWNvbG9yKCksIG5iLXRoZW1lKGJ0bi13YXJuaW5nLWJnKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1pbmZvLW1pZGRsZS1jb2xvcigpIHtcbiAgQHJldHVybiBtaXgoYnRuLWhlcm8taW5mby1sZWZ0LWNvbG9yKCksIG5iLXRoZW1lKGJ0bi1pbmZvLWJnKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1kYW5nZXItbWlkZGxlLWNvbG9yKCkge1xuICBAcmV0dXJuIG1peChidG4taGVyby1kYW5nZXItbGVmdC1jb2xvcigpLCBuYi10aGVtZShidG4tZGFuZ2VyLWJnKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1zZWNvbmRhcnktbWlkZGxlLWNvbG9yKCkge1xuICBAcmV0dXJuIG1peChidG4taGVyby1zZWNvbmRhcnktbGVmdC1jb2xvcigpLCBuYi10aGVtZShidG4tc2Vjb25kYXJ5LWJvcmRlcikpO1xufVxuXG4vLyBsaWdodCBncmFkaWVudHNcblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWxpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpIHtcbiAgJGNvbG9yLWxlZnQ6IHRpbnQoJGNvbG9yLWxlZnQsIDE0JSk7XG4gICRjb2xvci1yaWdodDogdGludCgkY29sb3ItcmlnaHQsIDE0JSk7XG5cbiAgQHJldHVybiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8tcHJpbWFyeS1saWdodC1ncmFkaWVudCgpIHtcbiAgJGNvbG9yLXJpZ2h0OiBuYi10aGVtZShidG4tcHJpbWFyeS1iZyk7XG4gICRjb2xvci1sZWZ0OiBidG4taGVyby1wcmltYXJ5LWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWxpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8tc3VjY2Vzcy1saWdodC1ncmFkaWVudCgpIHtcbiAgJGNvbG9yLXJpZ2h0OiBuYi10aGVtZShidG4tc3VjY2Vzcy1iZyk7XG4gICRjb2xvci1sZWZ0OiBidG4taGVyby1zdWNjZXNzLWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWxpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8td2FybmluZy1saWdodC1ncmFkaWVudCgpIHtcbiAgJGNvbG9yLXJpZ2h0OiBuYi10aGVtZShidG4td2FybmluZy1iZyk7XG4gICRjb2xvci1sZWZ0OiBidG4taGVyby13YXJuaW5nLWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWxpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8taW5mby1saWdodC1ncmFkaWVudCgpIHtcbiAgJGNvbG9yLXJpZ2h0OiBuYi10aGVtZShidG4taW5mby1iZyk7XG4gICRjb2xvci1sZWZ0OiBidG4taGVyby1pbmZvLWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWxpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8tZGFuZ2VyLWxpZ2h0LWdyYWRpZW50KCkge1xuICAkY29sb3ItcmlnaHQ6IG5iLXRoZW1lKGJ0bi1kYW5nZXItYmcpO1xuICAkY29sb3ItbGVmdDogYnRuLWhlcm8tZGFuZ2VyLWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWxpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8tc2Vjb25kYXJ5LWxpZ2h0LWdyYWRpZW50KCkge1xuICAkY29sb3ItcmlnaHQ6IG5iLXRoZW1lKGJ0bi1zZWNvbmRhcnktYmcpO1xuICAkY29sb3ItbGVmdDogYnRuLWhlcm8tc2Vjb25kYXJ5LWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWxpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG4vLyBkYXJrIGdyYWRpZW50c1xuXG5AZnVuY3Rpb24gYnRuLWhlcm8tZGFyay1ncmFkaWVudCgkY29sb3ItbGVmdCwgJGNvbG9yLXJpZ2h0KSB7XG4gICRjb2xvci1sZWZ0OiBzaGFkZSgkY29sb3ItbGVmdCwgMTQlKTtcbiAgJGNvbG9yLXJpZ2h0OiBzaGFkZSgkY29sb3ItcmlnaHQsIDE0JSk7XG5cbiAgQHJldHVybiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8tcHJpbWFyeS1kYXJrLWdyYWRpZW50KCkge1xuICAkY29sb3ItcmlnaHQ6IG5iLXRoZW1lKGJ0bi1wcmltYXJ5LWJnKTtcbiAgJGNvbG9yLWxlZnQ6IGJ0bi1oZXJvLXByaW1hcnktbGVmdC1jb2xvcigpO1xuXG4gIEByZXR1cm4gYnRuLWhlcm8tZGFyay1ncmFkaWVudCgkY29sb3ItbGVmdCwgJGNvbG9yLXJpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLXN1Y2Nlc3MtZGFyay1ncmFkaWVudCgpIHtcbiAgJGNvbG9yLXJpZ2h0OiBuYi10aGVtZShidG4tc3VjY2Vzcy1iZyk7XG4gICRjb2xvci1sZWZ0OiBidG4taGVyby1zdWNjZXNzLWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWRhcmstZ3JhZGllbnQoJGNvbG9yLWxlZnQsICRjb2xvci1yaWdodCk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby13YXJuaW5nLWRhcmstZ3JhZGllbnQoKSB7XG4gICRjb2xvci1yaWdodDogbmItdGhlbWUoYnRuLXdhcm5pbmctYmcpO1xuICAkY29sb3ItbGVmdDogYnRuLWhlcm8td2FybmluZy1sZWZ0LWNvbG9yKCk7XG5cbiAgQHJldHVybiBidG4taGVyby1kYXJrLWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8taW5mby1kYXJrLWdyYWRpZW50KCkge1xuICAkY29sb3ItcmlnaHQ6IG5iLXRoZW1lKGJ0bi1pbmZvLWJnKTtcbiAgJGNvbG9yLWxlZnQ6IGJ0bi1oZXJvLWluZm8tbGVmdC1jb2xvcigpO1xuXG4gIEByZXR1cm4gYnRuLWhlcm8tZGFyay1ncmFkaWVudCgkY29sb3ItbGVmdCwgJGNvbG9yLXJpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWRhbmdlci1kYXJrLWdyYWRpZW50KCkge1xuICAkY29sb3ItcmlnaHQ6IG5iLXRoZW1lKGJ0bi1kYW5nZXItYmcpO1xuICAkY29sb3ItbGVmdDogYnRuLWhlcm8tZGFuZ2VyLWxlZnQtY29sb3IoKTtcblxuICBAcmV0dXJuIGJ0bi1oZXJvLWRhcmstZ3JhZGllbnQoJGNvbG9yLWxlZnQsICRjb2xvci1yaWdodCk7XG59XG4vLyBFbmQgZnVuY3Rpb25zXG5cbi8vIEhlbHAgbWl4aW5zXG5AbWl4aW4gYnRuLWhlcm8tdGV4dCgpIHtcbiAgdGV4dC1zaGFkb3c6IG5iLXRoZW1lKGJ0bi1oZXJvLXRleHQtc2hhZG93KTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLWhvdmVyKCRsaWdodC1ncmFkaWVudCkge1xuICAmOmhvdmVyLFxuICAuaG92ZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRsaWdodC1ncmFkaWVudDtcbiAgfVxufVxuXG5AbWl4aW4gYnRuLWhlcm8tZm9jdXMoJGxpZ2h0LWdyYWRpZW50KSB7XG4gICY6Zm9jdXMsXG4gIC5mb2N1cyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGxpZ2h0LWdyYWRpZW50O1xuICB9XG59XG5cbkBtaXhpbiBidG4taGVyby1hY3RpdmUoJGRhcmstZ3JhZGllbnQpIHtcbiAgJjphY3RpdmUsXG4gIC5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRkYXJrLWdyYWRpZW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG5AbWl4aW4gYnRuLWhlcm8tYm9yZGVyLXJhZGl1cygpIHtcbiAgYm9yZGVyLXJhZGl1czogbmItdGhlbWUoYnRuLWhlcm8tYm9yZGVyLXJhZGl1cyk7XG59XG4vLyBFbmQgaGVscCBtaXhpbnNcblxuXG4vLyBHcmFkaWVudFxuQG1peGluIGJ0bi1oZXJvLXByaW1hcnktZ3JhZGllbnQoKSB7XG4gICRjb2xvci1yaWdodDogbmItdGhlbWUoYnRuLXByaW1hcnktYmcpO1xuICAkY29sb3ItbGVmdDogYnRuLWhlcm8tcHJpbWFyeS1sZWZ0LWNvbG9yKCk7XG5cbiAgQGluY2x1ZGUgbmItcmlnaHQtZ3JhZGllbnQoJGNvbG9yLWxlZnQsICRjb2xvci1yaWdodCk7XG59XG5cbkBtaXhpbiBidG4taGVyby1zdWNjZXNzLWdyYWRpZW50KCkge1xuICAkY29sb3ItcmlnaHQ6IG5iLXRoZW1lKGJ0bi1zdWNjZXNzLWJnKTtcbiAgJGNvbG9yLWxlZnQ6IGJ0bi1oZXJvLXN1Y2Nlc3MtbGVmdC1jb2xvcigpO1xuXG4gIEBpbmNsdWRlIG5iLXJpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8td2FybmluZy1ncmFkaWVudCgpIHtcbiAgJGNvbG9yLXJpZ2h0OiBuYi10aGVtZShidG4td2FybmluZy1iZyk7XG4gICRjb2xvci1sZWZ0OiBidG4taGVyby13YXJuaW5nLWxlZnQtY29sb3IoKTtcblxuICBAaW5jbHVkZSBuYi1yaWdodC1ncmFkaWVudCgkY29sb3ItbGVmdCwgJGNvbG9yLXJpZ2h0KTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLWluZm8tZ3JhZGllbnQoKSB7XG4gICRjb2xvci1yaWdodDogbmItdGhlbWUoYnRuLWluZm8tYmcpO1xuICAkY29sb3ItbGVmdDogYnRuLWhlcm8taW5mby1sZWZ0LWNvbG9yKCk7XG5cbiAgQGluY2x1ZGUgbmItcmlnaHQtZ3JhZGllbnQoJGNvbG9yLWxlZnQsICRjb2xvci1yaWdodCk7XG59XG5cbkBtaXhpbiBidG4taGVyby1kYW5nZXItZ3JhZGllbnQoKSB7XG4gICRjb2xvci1yaWdodDogbmItdGhlbWUoYnRuLWRhbmdlci1iZyk7XG4gICRjb2xvci1sZWZ0OiBidG4taGVyby1kYW5nZXItbGVmdC1jb2xvcigpO1xuXG4gIEBpbmNsdWRlIG5iLXJpZ2h0LWdyYWRpZW50KCRjb2xvci1sZWZ0LCAkY29sb3ItcmlnaHQpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8tc2Vjb25kYXJ5LWJnKCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBuYi10aGVtZShidG4tc2Vjb25kYXJ5LWJnKTtcbn1cblxuXG4vLyBCZXZlbFxuQGZ1bmN0aW9uIGJ0bi1oZXJvLXByaW1hcnktYmV2ZWwoKSB7XG4gIEByZXR1cm4gYnRuLWhlcm8tYmV2ZWwoYnRuLWhlcm8tcHJpbWFyeS1taWRkbGUtY29sb3IoKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1zdWNjZXNzLWJldmVsKCkge1xuICBAcmV0dXJuIGJ0bi1oZXJvLWJldmVsKGJ0bi1oZXJvLXN1Y2Nlc3MtbWlkZGxlLWNvbG9yKCkpO1xufVxuXG5AZnVuY3Rpb24gYnRuLWhlcm8td2FybmluZy1iZXZlbCgpIHtcbiAgQHJldHVybiBidG4taGVyby1iZXZlbChidG4taGVyby13YXJuaW5nLW1pZGRsZS1jb2xvcigpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWluZm8tYmV2ZWwoKSB7XG4gIEByZXR1cm4gYnRuLWhlcm8tYmV2ZWwoYnRuLWhlcm8taW5mby1taWRkbGUtY29sb3IoKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1kYW5nZXItYmV2ZWwoKSB7XG4gIEByZXR1cm4gYnRuLWhlcm8tYmV2ZWwoYnRuLWhlcm8tZGFuZ2VyLW1pZGRsZS1jb2xvcigpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLXNlY29uZGFyeS1iZXZlbCgpIHtcbiAgQHJldHVybiBidG4taGVyby1iZXZlbChidG4taGVyby1zZWNvbmRhcnktbWlkZGxlLWNvbG9yKCkpO1xufVxuXG5cbi8vIEdsb3dcbkBmdW5jdGlvbiBidG4taGVyby1wcmltYXJ5LWdsb3coKSB7XG4gIEByZXR1cm4gYnRuLWhlcm8tZ2xvdyhidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZSwgYnRuLWhlcm8tcHJpbWFyeS1taWRkbGUtY29sb3IoKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1zdWNjZXNzLWdsb3coKSB7XG4gIEByZXR1cm4gYnRuLWhlcm8tZ2xvdyhidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZSwgYnRuLWhlcm8tc3VjY2Vzcy1taWRkbGUtY29sb3IoKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby13YXJuaW5nLWdsb3coKSB7XG4gIEByZXR1cm4gYnRuLWhlcm8tZ2xvdyhidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZSwgYnRuLWhlcm8td2FybmluZy1taWRkbGUtY29sb3IoKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1pbmZvLWdsb3coKSB7XG4gIEByZXR1cm4gYnRuLWhlcm8tZ2xvdyhidG4taGVyby1pbmZvLWdsb3ctc2l6ZSwgYnRuLWhlcm8taW5mby1taWRkbGUtY29sb3IoKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1kYW5nZXItZ2xvdygpIHtcbiAgQHJldHVybiBidG4taGVyby1nbG93KGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemUsIGJ0bi1oZXJvLWRhbmdlci1taWRkbGUtY29sb3IoKSk7XG59XG5cbkBmdW5jdGlvbiBidG4taGVyby1zZWNvbmRhcnktZ2xvdygpIHtcbiAgQHJldHVybiBidG4taGVyby1nbG93KGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemUsIGJ0bi1oZXJvLXNlY29uZGFyeS1taWRkbGUtY29sb3IoKSk7XG59XG5cblxuLy8gQmV2ZWwtZ2xvdy1zaGFkb3dcbkBtaXhpbiBidG4taGVyby1iZXZlbC1nbG93LXNoYWRvdygkYmV2ZWwsICRnbG93LCAkc2hhZG93KSB7XG4gICRib3gtc2hhZG93OiAkYmV2ZWwsICRnbG93O1xuICBAaWYgKCRzaGFkb3cgIT0gJ25vbmUnKSB7XG4gICAgJGJveC1zaGFkb3c6ICRib3gtc2hhZG93LCAkc2hhZG93O1xuICB9XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYnRuLWhlcm8tcHJpbWFyeS1iZXZlbC1nbG93LXNoYWRvdygpIHtcbiAgJGJldmVsOiBidG4taGVyby1wcmltYXJ5LWJldmVsKCk7XG4gICRnbG93OiBidG4taGVyby1wcmltYXJ5LWdsb3coKTtcbiAgJHNoYWRvdzogbmItdGhlbWUoYnRuLWhlcm8tc2hhZG93KTtcblxuICBAaW5jbHVkZSBidG4taGVyby1iZXZlbC1nbG93LXNoYWRvdygkYmV2ZWwsICRnbG93LCAkc2hhZG93KTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLXN1Y2Nlc3MtYmV2ZWwtZ2xvdy1zaGFkb3coKSB7XG4gICRiZXZlbDogYnRuLWhlcm8tc3VjY2Vzcy1iZXZlbCgpO1xuICAkZ2xvdzogYnRuLWhlcm8tc3VjY2Vzcy1nbG93KCk7XG4gICRzaGFkb3c6IG5iLXRoZW1lKGJ0bi1oZXJvLXNoYWRvdyk7XG5cbiAgQGluY2x1ZGUgYnRuLWhlcm8tYmV2ZWwtZ2xvdy1zaGFkb3coJGJldmVsLCAkZ2xvdywgJHNoYWRvdyk7XG59XG5cbkBtaXhpbiBidG4taGVyby13YXJuaW5nLWJldmVsLWdsb3ctc2hhZG93KCkge1xuICAkYmV2ZWw6IGJ0bi1oZXJvLXdhcm5pbmctYmV2ZWwoKTtcbiAgJGdsb3c6IGJ0bi1oZXJvLXdhcm5pbmctZ2xvdygpO1xuICAkc2hhZG93OiBuYi10aGVtZShidG4taGVyby1zaGFkb3cpO1xuXG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWJldmVsLWdsb3ctc2hhZG93KCRiZXZlbCwgJGdsb3csICRzaGFkb3cpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8taW5mby1iZXZlbC1nbG93LXNoYWRvdygpIHtcbiAgJGJldmVsOiBidG4taGVyby1pbmZvLWJldmVsKCk7XG4gICRnbG93OiBidG4taGVyby1pbmZvLWdsb3coKTtcbiAgJHNoYWRvdzogbmItdGhlbWUoYnRuLWhlcm8tc2hhZG93KTtcblxuICBAaW5jbHVkZSBidG4taGVyby1iZXZlbC1nbG93LXNoYWRvdygkYmV2ZWwsICRnbG93LCAkc2hhZG93KTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLWRhbmdlci1iZXZlbC1nbG93LXNoYWRvdygpIHtcbiAgJGJldmVsOiBidG4taGVyby1kYW5nZXItYmV2ZWwoKTtcbiAgJGdsb3c6IGJ0bi1oZXJvLWRhbmdlci1nbG93KCk7XG4gICRzaGFkb3c6IG5iLXRoZW1lKGJ0bi1oZXJvLXNoYWRvdyk7XG5cbiAgQGluY2x1ZGUgYnRuLWhlcm8tYmV2ZWwtZ2xvdy1zaGFkb3coJGJldmVsLCAkZ2xvdywgJHNoYWRvdyk7XG59XG5cbkBtaXhpbiBidG4taGVyby1zZWNvbmRhcnktYmV2ZWwtZ2xvdy1zaGFkb3coKSB7XG4gICRiZXZlbDogYnRuLWhlcm8tc2Vjb25kYXJ5LWJldmVsKCk7XG4gICRnbG93OiBidG4taGVyby1zZWNvbmRhcnktZ2xvdygpO1xuICAkc2hhZG93OiBuYi10aGVtZShidG4taGVyby1zaGFkb3cpO1xuXG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWJldmVsLWdsb3ctc2hhZG93KCRiZXZlbCwgJGdsb3csICRzaGFkb3cpO1xufVxuXG5cbi8vIEJvcmRlclxuQG1peGluIGJ0bi1oZXJvLXByaW1hcnktYm9yZGVyKCkge1xuICBib3JkZXI6IG5vbmU7XG59XG5cbkBtaXhpbiBidG4taGVyby1zdWNjZXNzLWJvcmRlcigpIHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8td2FybmluZy1ib3JkZXIoKSB7XG4gIGJvcmRlcjogbm9uZTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLWluZm8tYm9yZGVyKCkge1xuICBib3JkZXI6IG5vbmU7XG59XG5cbkBtaXhpbiBidG4taGVyby1kYW5nZXItYm9yZGVyKCkge1xuICBib3JkZXI6IG5vbmU7XG59XG5cbkBtaXhpbiBidG4taGVyby1zZWNvbmRhcnktYm9yZGVyKCkge1xuICBib3JkZXI6IDJweCBzb2xpZCBuYi10aGVtZShidG4tc2Vjb25kYXJ5LWJvcmRlcik7XG5cbiAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvcnBvcmF0ZSkge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG5cbi8vIEhvdmVyXG5AbWl4aW4gYnRuLWhlcm8tcHJpbWFyeS1ob3ZlcigpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8taG92ZXIoYnRuLWhlcm8tcHJpbWFyeS1saWdodC1ncmFkaWVudCgpKTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLXN1Y2Nlc3MtaG92ZXIoKSB7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWhvdmVyKGJ0bi1oZXJvLXN1Y2Nlc3MtbGlnaHQtZ3JhZGllbnQoKSk7XG59XG5cbkBtaXhpbiBidG4taGVyby13YXJuaW5nLWhvdmVyKCkge1xuICBAaW5jbHVkZSBidG4taGVyby1ob3ZlcihidG4taGVyby13YXJuaW5nLWxpZ2h0LWdyYWRpZW50KCkpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8taW5mby1ob3ZlcigpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8taG92ZXIoYnRuLWhlcm8taW5mby1saWdodC1ncmFkaWVudCgpKTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLWRhbmdlci1ob3ZlcigpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8taG92ZXIoYnRuLWhlcm8tZGFuZ2VyLWxpZ2h0LWdyYWRpZW50KCkpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8tc2Vjb25kYXJ5LWhvdmVyKCkge1xuICAmOmhvdmVyLFxuICAuaG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEobmItdGhlbWUoYnRuLXNlY29uZGFyeS1ib3JkZXIpLCAwLjIpO1xuICB9XG59XG5cbi8vIEZvY3VzXG5AbWl4aW4gYnRuLWhlcm8tcHJpbWFyeS1mb2N1cygpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZm9jdXMoYnRuLWhlcm8tcHJpbWFyeS1saWdodC1ncmFkaWVudCgpKTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLXN1Y2Nlc3MtZm9jdXMoKSB7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWZvY3VzKGJ0bi1oZXJvLXN1Y2Nlc3MtbGlnaHQtZ3JhZGllbnQoKSk7XG59XG5cbkBtaXhpbiBidG4taGVyby13YXJuaW5nLWZvY3VzKCkge1xuICBAaW5jbHVkZSBidG4taGVyby1mb2N1cyhidG4taGVyby13YXJuaW5nLWxpZ2h0LWdyYWRpZW50KCkpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8taW5mby1mb2N1cygpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZm9jdXMoYnRuLWhlcm8taW5mby1saWdodC1ncmFkaWVudCgpKTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLWRhbmdlci1mb2N1cygpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tZm9jdXMoYnRuLWhlcm8tZGFuZ2VyLWxpZ2h0LWdyYWRpZW50KCkpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8tc2Vjb25kYXJ5LWZvY3VzKCkge1xuICAkY29sb3I6IG5iLXRoZW1lKGJ0bi1zZWNvbmRhcnktYm9yZGVyKTtcblxuICAmOmZvY3VzLFxuICAuZm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdGludCgkY29sb3IsIDE0JSk7XG4gIH1cbn1cblxuLy8gQWN0aXZlXG5AbWl4aW4gYnRuLWhlcm8tcHJpbWFyeS1hY3RpdmUoKSB7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWFjdGl2ZShidG4taGVyby1wcmltYXJ5LWRhcmstZ3JhZGllbnQoKSk7XG59XG5cbkBtaXhpbiBidG4taGVyby1zdWNjZXNzLWFjdGl2ZSgpIHtcbiAgQGluY2x1ZGUgYnRuLWhlcm8tYWN0aXZlKGJ0bi1oZXJvLXN1Y2Nlc3MtZGFyay1ncmFkaWVudCgpKTtcbn1cblxuQG1peGluIGJ0bi1oZXJvLXdhcm5pbmctYWN0aXZlKCkge1xuICBAaW5jbHVkZSBidG4taGVyby1hY3RpdmUoYnRuLWhlcm8td2FybmluZy1kYXJrLWdyYWRpZW50KCkpO1xufVxuXG5AbWl4aW4gYnRuLWhlcm8taW5mby1hY3RpdmUoKSB7XG4gIEBpbmNsdWRlIGJ0bi1oZXJvLWFjdGl2ZShidG4taGVyby1pbmZvLWRhcmstZ3JhZGllbnQoKSk7XG59XG5cbkBtaXhpbiBidG4taGVyby1kYW5nZXItYWN0aXZlKCkge1xuICBAaW5jbHVkZSBidG4taGVyby1hY3RpdmUoYnRuLWhlcm8tZGFuZ2VyLWRhcmstZ3JhZGllbnQoKSk7XG59XG5cbkBtaXhpbiBidG4taGVyby1zZWNvbmRhcnktYWN0aXZlKCkge1xuICAkY29sb3I6IG5iLXRoZW1lKGJ0bi1zZWNvbmRhcnktYm9yZGVyKTtcblxuICAmOmFjdGl2ZSxcbiAgLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiBzaGFkZSgkY29sb3IsIDE0JSk7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cblxuLy8gRGlzYWJsZWRcbkBtaXhpbiBidG4taGVyby1kaXNhYmxlZCgpIHtcbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cblxuLy8gTGluZSBoZWlnaHRcbkBmdW5jdGlvbiBidG4taGVyby1saW5lLWhlaWdodCgkZm9udC1zaXplKSB7XG4gIEByZXR1cm4gY2FsYygoI3skZm9udC1zaXplfSAqIDEuMjUpICsgNHB4KTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0LWxnKCkge1xuICBAcmV0dXJuIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0KG5iLXRoZW1lKGJ0bi1mb250LXNpemUtbGcpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0LW1kKCkge1xuICBAcmV0dXJuIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0KG5iLXRoZW1lKGJ0bi1mb250LXNpemUtbWQpKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0LXNtKCkge1xuICBAcmV0dXJuIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0KG5iLXRoZW1lKGJ0bi1mb250LXNpemUtc20pKTtcbn1cblxuQGZ1bmN0aW9uIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0LXhzKCkge1xuICBAcmV0dXJuIGJ0bi1oZXJvLWxpbmUtaGVpZ2h0KG5iLXRoZW1lKGJ0bi1mb250LXNpemUteHMpKTtcbn1cblxuXG5AbWl4aW4gYnRuLWhlcm8tbGluZS1oZWlnaHQoKSB7XG5cbiAgbGluZS1oZWlnaHQ6IGJ0bi1oZXJvLWxpbmUtaGVpZ2h0LW1kKCk7XG5cbiAgJi5idG4uYnRuLWxnIHtcbiAgICBsaW5lLWhlaWdodDogYnRuLWhlcm8tbGluZS1oZWlnaHQtbGcoKTtcbiAgfVxuXG4gICYuYnRuLmJ0bi1tZCB7XG4gICAgbGluZS1oZWlnaHQ6IGJ0bi1oZXJvLWxpbmUtaGVpZ2h0LW1kKCk7XG4gIH1cblxuICAmLmJ0bi5idG4tc20ge1xuICAgIGxpbmUtaGVpZ2h0OiBidG4taGVyby1saW5lLWhlaWdodC1zbSgpO1xuICB9XG5cbiAgJi5idG4uYnRuLXRuIHtcbiAgICBsaW5lLWhlaWdodDogYnRuLWhlcm8tbGluZS1oZWlnaHQteHMoKTtcbiAgfVxufVxuXG4vLyBQdWxzZVxuQG1peGluIGJ0bi1oZXJvLXByaW1hcnktcHVsc2UoKSB7XG4gIEBpbmNsdWRlIGJ0bi1wdWxzZShoZXJvLXByaW1hcnksIG5iLXRoZW1lKGNvbG9yLXByaW1hcnkpKTtcbn1cbkBtaXhpbiBidG4taGVyby1zdWNjZXNzLXB1bHNlKCkge1xuICBAaW5jbHVkZSBidG4tcHVsc2UoaGVyby1zdWNjZXNzLCBuYi10aGVtZShjb2xvci1zdWNjZXNzKSk7XG59XG5AbWl4aW4gYnRuLWhlcm8tZGFuZ2VyLXB1bHNlKCkge1xuICBAaW5jbHVkZSBidG4tcHVsc2UoaGVyby1kYW5nZXIsIG5iLXRoZW1lKGNvbG9yLWRhbmdlcikpO1xufVxuQG1peGluIGJ0bi1oZXJvLWluZm8tcHVsc2UoKSB7XG4gIEBpbmNsdWRlIGJ0bi1wdWxzZShoZXJvLWluZm8sIG5iLXRoZW1lKGNvbG9yLWluZm8pKTtcbn1cbkBtaXhpbiBidG4taGVyby13YXJuaW5nLXB1bHNlKCkge1xuICBAaW5jbHVkZSBidG4tcHVsc2UoaGVyby13YXJuaW5nLCBuYi10aGVtZShjb2xvci13YXJuaW5nKSk7XG59XG5AbWl4aW4gYnRuLWhlcm8tc2Vjb25kYXJ5LXB1bHNlKCkge1xuICBAaW5jbHVkZSAgYnRuLXB1bHNlKGhlcm8tc2Vjb25kYXJ5LCBuYi10aGVtZShidG4tc2Vjb25kYXJ5LWJvcmRlcikpO1xufVxuIiwiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG4kZ3JpZC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aC1iYXNlOiAyNHB4ICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoczogKFxuICB4czogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIHNtOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgbWQ6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBsZzogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIHhsOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZVxuKSAhZGVmYXVsdDtcblxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgaXM6IDQwMHB4LFxuICBzbTogNTc2cHgsXG4gIG1kOiA3NjhweCxcbiAgbGc6IDk5MnB4LFxuICB4bDogMTIwMHB4LFxuICB4eGw6IDE0MDBweCxcbiAgeHh4bDogMTYwMHB4XG4pO1xuXG4kY29udGFpbmVyLW1heC13aWR0aHM6IChcbiAgaXM6IDM4MHB4LFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4LFxuICB4eGw6IDEzMjBweCxcbiAgeHh4bDogMTUwMHB4XG4pO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIDAuMDJweCwgbnVsbCk7XG59XG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCJAaW1wb3J0ICcuLi8uLi9zdHlsZXMvdGhlbWVzJztcclxuQGltcG9ydCAnfkBuZWJ1bGFyL2Jvb3RzdHJhcC9zdHlsZXMvaGVyby1idXR0b25zJztcclxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucy9icmVha3BvaW50cyc7XHJcbkBpbXBvcnQgJ35AbmVidWxhci90aGVtZS9zdHlsZXMvZ2xvYmFsL2JyZWFrcG9pbnRzJztcclxuXHJcbkBpbmNsdWRlIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xyXG4gIC5zd2l0Y2gtbGFiZWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBtYXJnaW46IDA7XHJcblxyXG4gICAgJi52ZXJ0aWNhbCB7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG5cclxuICAgICAgLmZpcnN0LFxyXG4gICAgICAuc2Vjb25kIHtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuc3dpdGNoIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwLjVlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYgPiBzcGFuIHtcclxuICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcclxuICAgICAgZm9udC13ZWlnaHQ6IG5iLXRoZW1lKGZvbnQtd2VpZ2h0LWJvbGQpO1xyXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcclxuICAgICAgY29sb3I6IG5iLXRoZW1lKGNvbG9yLWZnKTtcclxuXHJcbiAgICAgICYuZmlyc3Qge1xyXG4gICAgICAgIEBpbmNsdWRlIG5iLWx0cihwYWRkaW5nLXJpZ2h0LCAxMHB4KTtcclxuICAgICAgICBAaW5jbHVkZSBuYi1ydGwocGFkZGluZy1sZWZ0LCAxMHB4KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5zZWNvbmQge1xyXG4gICAgICAgIEBpbmNsdWRlIG5iLWx0cihwYWRkaW5nLWxlZnQsIDEwcHgpO1xyXG4gICAgICAgIEBpbmNsdWRlIG5iLXJ0bChwYWRkaW5nLXJpZ2h0LCAxMHB4KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgIGNvbG9yOiBuYi10aGVtZShjb2xvci1mZy10ZXh0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvc21pYykge1xyXG4gICAgICAgIGNvbG9yOiBuYi10aGVtZShjb2xvci1mZyk7XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICAgIGNvbG9yOiBuYi10aGVtZShjb2xvci13aGl0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgb3BhY2l0eTogMC43ODtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnN3aXRjaCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogM3JlbTtcclxuICAgIGhlaWdodDogMS41cmVtO1xyXG4gICAgbWFyZ2luOiAwO1xyXG5cclxuICAgIGlucHV0IHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAgICY6Y2hlY2tlZCArIC5zbGlkZXI6OmJlZm9yZSB7XHJcbiAgICAgICAgQGluY2x1ZGUgbmItbHRyKHRyYW5zZm9ybSwgdHJhbnNsYXRlWCgxLjVyZW0pKTtcclxuICAgICAgICBAaW5jbHVkZSBuYi1ydGwodHJhbnNmb3JtLCB0cmFuc2xhdGVYKC0xLjVyZW0pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zbGlkZXIge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGJvdHRvbTogMDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMS43NXJlbTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbmItdGhlbWUobGF5b3V0LWJnKTtcclxuICAgIH1cclxuXHJcbiAgICAuc2xpZGVyOjpiZWZvcmUge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBoZWlnaHQ6IDEuNXJlbTtcclxuICAgICAgd2lkdGg6IDEuNXJlbTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBuYi10aGVtZShjb2xvci1zdWNjZXNzKTtcclxuICAgICAgdHJhbnNpdGlvbjogMC4ycztcclxuXHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwLjI1cmVtIDAgcmdiYShuYi10aGVtZShjb2xvci1mZyksIDAuNCk7XHJcblxyXG4gICAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoY29zbWljKSB7XHJcbiAgICAgICAgQGluY2x1ZGUgYnRuLWhlcm8tcHJpbWFyeS1ncmFkaWVudCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoY29ycG9yYXRlKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbmItdGhlbWUoY29sb3ItcHJpbWFyeSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bih4cykge1xyXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xyXG4gIH1cclxufVxyXG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgaXMgYSBzdGFydGluZyBwb2ludCB3aGVyZSB3ZSBkZWNsYXJlIHRoZSBtYXBzIG9mIHRoZW1lcyBhbmQgZ2xvYmFsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucy9taXhpbnNcbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4ubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuc3dpdGNoLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbjogMDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuc3dpdGNoLWxhYmVsLnZlcnRpY2FsIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnN3aXRjaC1sYWJlbC52ZXJ0aWNhbCAuZmlyc3QsXG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnN3aXRjaC1sYWJlbC52ZXJ0aWNhbCAuc2Vjb25kIHtcbiAgICAgIHBhZGRpbmc6IDA7IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuc3dpdGNoLWxhYmVsLnZlcnRpY2FsIC5zd2l0Y2gge1xuICAgICAgbWFyZ2luLXRvcDogMC41ZW07IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnN3aXRjaC1sYWJlbCA+IHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgICBjb2xvcjogI2E0YWJiMzsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuc3dpdGNoLWxhYmVsID4gc3Bhbi5maXJzdCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuc3dpdGNoLWxhYmVsID4gc3Bhbi5zZWNvbmQge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuLnNlY29uZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnN3aXRjaC1sYWJlbCA+IHNwYW4uYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAjNGI0YjRiOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnN3aXRjaC1sYWJlbCA+IHNwYW46YWN0aXZlIHtcbiAgICAgIG9wYWNpdHk6IDAuNzg7IH1cblxuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnN3aXRjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIG1hcmdpbjogMDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuc3dpdGNoIGlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5zd2l0Y2ggaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXI6OmJlZm9yZSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMS41cmVtKTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAuc3dpdGNoIGlucHV0OmNoZWNrZWQgKyAuc2xpZGVyOjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xLjVyZW0pOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5zd2l0Y2ggLnNsaWRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBib3JkZXItcmFkaXVzOiAxLjc1cmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlYmVmZjU7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLnN3aXRjaCAuc2xpZGVyOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb250ZW50OiAnJztcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBkYzdlO1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gICAgYm94LXNoYWRvdzogMCAwIDAuMjVyZW0gMCByZ2JhKDE2NCwgMTcxLCAxNzksIDAuNCk7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDM5OS45OHB4KSB7XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH0gfVxuXG4vKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbi5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnN3aXRjaC1sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtYXJnaW46IDA7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoLWxhYmVsLnZlcnRpY2FsIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoLWxhYmVsLnZlcnRpY2FsIC5maXJzdCxcbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IC5zd2l0Y2gtbGFiZWwudmVydGljYWwgLnNlY29uZCB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoLWxhYmVsLnZlcnRpY2FsIC5zd2l0Y2gge1xuICAgICAgbWFyZ2luLXRvcDogMC41ZW07IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoLWxhYmVsID4gc3BhbiB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICAgIGNvbG9yOiAjYTFhMWU1O1xuICAgIGNvbG9yOiAjYTFhMWU1OyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnN3aXRjaC1sYWJlbCA+IHNwYW4uZmlyc3Qge1xuICAgICAgcGFkZGluZy1yaWdodDogMTBweDsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuLmZpcnN0IHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29zbWljIDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuLnNlY29uZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoLWxhYmVsID4gc3Bhbi5zZWNvbmQge1xuICAgICAgcGFkZGluZy1yaWdodDogMTBweDsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnN3aXRjaC1sYWJlbCA+IHNwYW4uYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAjZDFkMWZmOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoLWxhYmVsID4gc3Bhbi5hY3RpdmUge1xuICAgICAgY29sb3I6ICNmZmZmZmY7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuOmFjdGl2ZSB7XG4gICAgICBvcGFjaXR5OiAwLjc4OyB9XG5cbi5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnN3aXRjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIG1hcmdpbjogMDsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IC5zd2l0Y2ggaW5wdXQge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoIGlucHV0OmNoZWNrZWQgKyAuc2xpZGVyOjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEuNXJlbSk7IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAuc3dpdGNoIGlucHV0OmNoZWNrZWQgKyAuc2xpZGVyOjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xLjVyZW0pOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLnN3aXRjaCAuc2xpZGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJmMjk2YjsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IC5zd2l0Y2ggLnNsaWRlcjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29udGVudDogJyc7XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZDk3NztcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwLjI1cmVtIDAgcmdiYSgxNjEsIDE2MSwgMjI5LCAwLjQpO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2FkNTlmZiwgIzc2NTlmZik7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDM5OS45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3Qge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfSB9XG5cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuc3dpdGNoLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbjogMDsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2gtbGFiZWwudmVydGljYWwge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2gtbGFiZWwudmVydGljYWwgLmZpcnN0LFxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnN3aXRjaC1sYWJlbC52ZXJ0aWNhbCAuc2Vjb25kIHtcbiAgICAgIHBhZGRpbmc6IDA7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2gtbGFiZWwudmVydGljYWwgLnN3aXRjaCB7XG4gICAgICBtYXJnaW4tdG9wOiAwLjVlbTsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuIHtcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG4gICAgY29sb3I6ICNhNGFiYjM7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuc3dpdGNoLWxhYmVsID4gc3Bhbi5maXJzdCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnN3aXRjaC1sYWJlbCA+IHNwYW4uZmlyc3Qge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnN3aXRjaC1sYWJlbCA+IHNwYW4uc2Vjb25kIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuLnNlY29uZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuc3dpdGNoLWxhYmVsID4gc3Bhbi5hY3RpdmUge1xuICAgICAgY29sb3I6ICM0YjRiNGI7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2gtbGFiZWwgPiBzcGFuOmFjdGl2ZSB7XG4gICAgICBvcGFjaXR5OiAwLjc4OyB9XG5cbi5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnN3aXRjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogM3JlbTtcbiAgaGVpZ2h0OiAxLjVyZW07XG4gIG1hcmdpbjogMDsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2ggaW5wdXQge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuc3dpdGNoIGlucHV0OmNoZWNrZWQgKyAuc2xpZGVyOjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEuNXJlbSk7IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAuc3dpdGNoIGlucHV0OmNoZWNrZWQgKyAuc2xpZGVyOjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xLjVyZW0pOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLnN3aXRjaCAuc2xpZGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDEuNzVyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjVmODsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5zd2l0Y2ggLnNsaWRlcjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29udGVudDogJyc7XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVkY2ZlMztcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwLjI1cmVtIDAgcmdiYSgxNjQsIDE3MSwgMTc5LCAwLjQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM3M2ExZmY7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDM5OS45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3Qge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfSB9XG4iXX0= */\"","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ngx-switcher',\r\n styleUrls: ['./switcher.component.scss'],\r\n template: `\r\n \r\n `,\r\n})\r\nexport class SwitcherComponent {\r\n @Input() firstValue: any;\r\n @Input() secondValue: any;\r\n\r\n @Input() firstValueLabel: string;\r\n @Input() secondValueLabel: string;\r\n\r\n @Input() vertical: boolean;\r\n\r\n @Input() value: any;\r\n @Output() valueChange = new EventEmitter();\r\n\r\n isFirstValue() {\r\n return this.value === this.firstValue;\r\n }\r\n\r\n isSecondValue() {\r\n return this.value === this.secondValue;\r\n }\r\n\r\n currentValueLabel() {\r\n return this.isFirstValue()\r\n ? this.firstValueLabel\r\n : this.secondValueLabel;\r\n }\r\n\r\n changeValue() {\r\n this.value = this.isFirstValue()\r\n ? this.secondValue\r\n : this.firstValue;\r\n\r\n this.valueChange.emit(this.value);\r\n }\r\n}\r\n","export * from './one-column/one-column.layout';\r\nexport * from './two-columns/two-columns.layout';\r\nexport * from './three-columns/three-columns.layout';\r\nexport * from './sample/sample.layout';\r\n","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #ffffff;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n background: transparent; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important; }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.375rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.375rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-default :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-default :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-cosmic :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #3d3780;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden;\\n background: #2f296b; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n background: transparent; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important; }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.5rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.5rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-cosmic :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-cosmic :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-corporate :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #ffffff;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n margin-top: 0;\\n background: transparent; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important;\\n border: 1px solid #cdd5dc;\\n height: calc(100vh - 4.75rem) !important; }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.17rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable {\\n padding-top: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable .menu-item:first-child {\\n border-top: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n border-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-corporate :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-corporate :host .main-btn {\\n display: none; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2xheW91dHMvb25lLWNvbHVtbi9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcX3RoZW1pbmcuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvb25lLWNvbHVtbi9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcY29yZVxcX21peGlucy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9vbmUtY29sdW1uL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL29uZS1jb2x1bW4vQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2RlZmF1bHQuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvb25lLWNvbHVtbi9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcdGhlbWVzXFxfY29zbWljLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL29uZS1jb2x1bW4vQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2NvcnBvcmF0ZS5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9vbmUtY29sdW1uL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxnbG9iYWxcXF9icmVha3BvaW50cy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9vbmUtY29sdW1uL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9zcmNcXGFwcFxcQHRoZW1lXFxsYXlvdXRzXFxvbmUtY29sdW1uXFxvbmUtY29sdW1uLmxheW91dC5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9vbmUtY29sdW1uL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9zcmNcXGFwcFxcQHRoZW1lXFxzdHlsZXNcXHRoZW1lcy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9vbmUtY29sdW1uL29uZS1jb2x1bW4ubGF5b3V0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdIOztHQUVHO0FDVEg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FDdlRGOzs7O0dBSUc7QUNKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LEVBS2pCO0FBSEM7TUFDRSxjQUFhLEVBQ2Q7QURuRUw7RUN5RUE7SUFDRSw0QkFBMkIsRUFFNUIsRUFBQTtBRDVFRDtFQ2lGQTtJQUVFLGNBQWEsRUFXZDtJQVRDO01BQ0UseUNBQWlGLEVBT2xGO01FeThCRDtRUmx5QkEsMkJNN0s0QyxFTmlML0M7TVFneUJHO1FScHlCQSwwQk01SzJDLEVOZ0w5QztNTTlLSztRQUNFLGVBQWMsRUFDZjtFQUlMO0lBQ0UsY0FBYSxFQUNkLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9vbmUtY29sdW1uL29uZS1jb2x1bW4ubGF5b3V0LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cblxuLyoqXG4gKiBUaGlzIGlzIGEgc3RhcnRpbmcgcG9pbnQgd2hlcmUgd2UgZGVjbGFyZSB0aGUgbWFwcyBvZiB0aGVtZXMgYW5kIGdsb2JhbGx5IGF2YWlsYWJsZSBmdW5jdGlvbnMvbWl4aW5zXG4gKi9cblxuQGltcG9ydCAnY29yZS9taXhpbnMnO1xuQGltcG9ydCAnY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnY29yZS9icmVha2luZy1ub3RpY2UnO1xuXG4kbmItZW5hYmxlZC10aGVtZXM6ICgpICFnbG9iYWw7XG4kbmItZW5hYmxlLWNzcy12YXJpYWJsZXM6IGZhbHNlICFnbG9iYWw7XG5cbiRuYi10aGVtZXM6ICgpICFnbG9iYWw7XG4kbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6ICgpICFnbG9iYWw7XG4kbmItdGhlbWVzLWV4cG9ydDogKCkgIWdsb2JhbDtcblxuQGZ1bmN0aW9uIG5iLXRoZW1lKCRrZXkpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZSwgJGtleSk7XG59XG5cbkBmdW5jdGlvbiBuYi1nZXQtdmFsdWUoJHRoZW1lLCAka2V5LCAkdmFsdWUpIHtcbiAgQGlmICh0eXBlLW9mKCR2YWx1ZSkgPT0gJ3N0cmluZycpIHtcbiAgICAkdG1wOiBtYXAtZ2V0KCR0aGVtZSwgJHZhbHVlKTtcblxuICAgIEBpZiAoJHRtcCAhPSBudWxsKSB7XG4gICAgICBAcmV0dXJuIG5iLWdldC12YWx1ZSgkdGhlbWUsICR2YWx1ZSwgJHRtcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZSwgJGtleSk7XG59XG5cbkBmdW5jdGlvbiBjb252ZXJ0LXRvLWNzcy12YXJpYWJsZXMoJHZhcmlhYmxlcykge1xuICAkcmVzdWx0OiAoKTtcbiAgQGVhY2ggJHZhciwgJHZhbHVlIGluICR2YXJpYWJsZXMge1xuICAgICRyZXN1bHQ6IG1hcC1zZXQoJHJlc3VsdCwgJHZhciwgJy0tdmFyKCN7JHZhcn0pJyk7XG4gIH1cblxuICBAZGVidWcgJHJlc3VsdDtcbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AZnVuY3Rpb24gc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpIHtcbiAgJHRoZW1lOiAkdGhlbWUgIWdsb2JhbDtcbiAgJHRoZW1lLW5hbWU6ICR0aGVtZS1uYW1lICFnbG9iYWw7XG4gIEBpZiAoJG5iLWVuYWJsZS1jc3MtdmFyaWFibGVzKSB7XG4gICAgJHRoZW1lOiBjb252ZXJ0LXRvLWNzcy12YXJpYWJsZXMoJHRoZW1lKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gJHRoZW1lO1xufVxuXG5AZnVuY3Rpb24gbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCAkbmFtZSwgJGRlZmF1bHQ6IG51bGwpIHtcblxuICAkdGhlbWUtZGF0YTogKCk7XG5cblxuICBAaWYgKCRkZWZhdWx0ICE9IG51bGwpIHtcblxuICAgICR0aGVtZTogbWFwLW1lcmdlKG1hcC1nZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkZGVmYXVsdCksICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiBtYXAtc2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJG5hbWUsICR0aGVtZSkgIWdsb2JhbDtcblxuICAgICR0aGVtZS1kYXRhOiBtYXAtc2V0KCR0aGVtZS1kYXRhLCBkYXRhLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtZXhwb3J0OiBtYXAtc2V0KCRuYi10aGVtZXMtZXhwb3J0LCAkbmFtZSwgbWFwLXNldCgkdGhlbWUtZGF0YSwgcGFyZW50LCAkZGVmYXVsdCkpICFnbG9iYWw7XG5cbiAgfSBAZWxzZSB7XG4gICAgJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiBtYXAtc2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJG5hbWUsICR0aGVtZSkgIWdsb2JhbDtcblxuICAgICR0aGVtZS1kYXRhOiBtYXAtc2V0KCR0aGVtZS1kYXRhLCBkYXRhLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtZXhwb3J0OiBtYXAtc2V0KCRuYi10aGVtZXMtZXhwb3J0LCAkbmFtZSwgbWFwLXNldCgkdGhlbWUtZGF0YSwgcGFyZW50LCBudWxsKSkgIWdsb2JhbDtcbiAgfVxuXG4gICR0aGVtZS1wYXJzZWQ6ICgpO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHRoZW1lIHtcbiAgICAkdGhlbWUtcGFyc2VkOiBtYXAtc2V0KCR0aGVtZS1wYXJzZWQsICRrZXksIG5iLWdldC12YWx1ZSgkdGhlbWUsICRrZXksICR2YWx1ZSkpO1xuICB9XG5cbiAgLy8gZW5hYmxlIHJpZ2h0IGF3YXkgd2hlbiBpbnN0YWxsZWRcbiAgJHRoZW1lLXBhcnNlZDogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZS1wYXJzZWQsICRuYW1lKTtcbiAgQHJldHVybiBtYXAtc2V0KCRuYi10aGVtZXMsICRuYW1lLCAkdGhlbWUtcGFyc2VkKTtcbn1cblxuQGZ1bmN0aW9uIGdldC1lbmFibGVkLXRoZW1lcygpIHtcbiAgJHRoZW1lcy10by1pbnN0YWxsOiAoKTtcblxuICBAaWYgKGxlbmd0aCgkbmItZW5hYmxlZC10aGVtZXMpID4gMCkge1xuICAgIEBlYWNoICR0aGVtZS1uYW1lIGluICRuYi1lbmFibGVkLXRoZW1lcyB7XG4gICAgICAkdGhlbWVzLXRvLWluc3RhbGw6IG1hcC1zZXQoJHRoZW1lcy10by1pbnN0YWxsLCAkdGhlbWUtbmFtZSwgbWFwLWdldCgkbmItdGhlbWVzLCAkdGhlbWUtbmFtZSkpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHRoZW1lcy10by1pbnN0YWxsOiAkbmItdGhlbWVzO1xuICB9XG5cbiAgQHJldHVybiAkdGhlbWVzLXRvLWluc3RhbGw7XG59XG5cbkBtaXhpbiBpbnN0YWxsLWNzcy12YXJpYWJsZXMoJHRoZW1lLW5hbWUsICR2YXJpYWJsZXMpIHtcbiAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IHtcbiAgICBAZWFjaCAkdmFyLCAkdmFsdWUgaW4gJHZhcmlhYmxlcyB7XG4gICAgICAtLSN7JHZhcn06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVE9ETzogd2UgaGlkZSA6aG9zdCBpbnNpZGUgb2YgaXQgd2hpY2ggaXMgbm90IG9idmlvdXNcbkBtaXhpbiBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcblxuICAkdGhlbWVzLXRvLWluc3RhbGw6IGdldC1lbmFibGVkLXRoZW1lcygpO1xuXG4gIEBlYWNoICR0aGVtZS1uYW1lLCAkdGhlbWUgaW4gJHRoZW1lcy10by1pbnN0YWxsIHtcbiAgICAvKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbiAgICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0gOmhvc3Qge1xuICAgICAgJHRoZW1lOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSk7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG5iLWZvci10aGVtZSgkbmFtZSkge1xuICBAaWYgKCR0aGVtZS1uYW1lID09ICRuYW1lKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiAgICBcbi8vIEFkZCBjb250ZW50IGZvciB0aGVtZSBpbnRvIGEgbGlzdCBvZiB0aGVtZXNcbkBtaXhpbiBuYi1mb3ItdGhlbWVzKCRuYW1lcy4uLikge1xuICBAZWFjaCAkbmFtZSBpbiAkbmFtZXMge1xuICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZSgkbmFtZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBuYi1leGNlcHQtdGhlbWUoJG5hbWUpIHtcbiAgQGlmICgkdGhlbWUtbmFtZSAhPSAkbmFtZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIEFkZCBjb250ZW50IGV4Y2VwdCBmb3IgdGhlbWUgaW50byBhIGxpc3Qgb2YgdGhlbWVzXG5AbWl4aW4gbmItZXhjZXB0LWZvci10aGVtZXMoJG5hbWVzLi4uKSB7XG4gIEBlYWNoICRuYW1lIGluICRuYW1lcyB7XG4gICAgQGluY2x1ZGUgbmItZXhjZXB0LXRoZW1lKCRuYW1lKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gVE9ETzogYW5vdGhlciBtaXhpbmcgZm9yIHRoZSBhbG1vc3Qgc2FtZSB0aGluZ1xuQG1peGluIG5iLWluc3RhbGwtcm9vdC1jb21wb25lbnQoKSB7XG4gIEB3YXJuICdgbmItaW5zdGFsbC1yb290LWNvbXBvbmVudGAgaXMgZGVwcmljYXRlZCwgcmVwbGFjZSB3aXRoIGBuYi1pbnN0YWxsLWNvbXBvbmVudGAsIGFzIGBib2R5YCBpcyByb290IGVsZW1lbnQgbm93JztcblxuICBAaW5jbHVkZSBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItaW5zdGFsbC1nbG9iYWwoKSB7XG4gICR0aGVtZXMtdG8taW5zdGFsbDogZ2V0LWVuYWJsZWQtdGhlbWVzKCk7XG5cbiAgQGVhY2ggJHRoZW1lLW5hbWUsICR0aGVtZSBpbiAkdGhlbWVzLXRvLWluc3RhbGwge1xuICAgIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSB7XG4gICAgICAkdGhlbWU6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICR0ZW1wOiBuYi1icmVha2luZy1ub3RpY2Utc2hvdygkdGhlbWUpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AbWl4aW4gbmItc2Nyb2xsYmFycygkZmcsICRiZywgJHNpemUsICRib3JkZXItcmFkaXVzOiAkc2l6ZSAvIDIpIHtcbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiAkZmc7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJGJnO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlXG4gIC8vIEZvciBJbnRlcm5ldCBFeHBsb3JlclxuICBzY3JvbGxiYXItZmFjZS1jb2xvcjogJGZnO1xuICBzY3JvbGxiYXItdHJhY2stY29sb3I6ICRiZztcbn1cblxuQG1peGluIG5iLXJhZGlhbC1ncmFkaWVudCgkY29sb3ItMSwgJGNvbG9yLTIsICRjb2xvci0zKSB7XG4gIGJhY2tncm91bmQ6ICRjb2xvci0yOyAvKiBPbGQgYnJvd3NlcnMgKi9cbiAgYmFja2dyb3VuZDogLW1vei1yYWRpYWwtZ3JhZGllbnQoYm90dG9tLCBlbGxpcHNlIGNvdmVyLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIEZGMy42LTE1ICovXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGJvdHRvbSwgZWxsaXBzZSBjb3ZlciwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBDaHJvbWUxMC0yNSxTYWZhcmk1LjEtNiAqL1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBib3R0b20sICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogVzNDLCBJRTEwKywgRkYxNissIENocm9tZTI2KywgT3BlcmExMissIFNhZmFyaTcrICovXG4gIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyRjb2xvci0xJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sb3JzdHI9JyRjb2xvci0zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhZGllbnRUeXBlPTEpOyAvKiBJRTYtOSBmYWxsYmFjayBvbiBob3Jpem9udGFsIGdyYWRpZW50ICovXG59XG5cbkBtaXhpbiBuYi1yaWdodC1ncmFkaWVudCgkbGVmdC1jb2xvciwgJHJpZ2h0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGxlZnQtY29sb3IsICRyaWdodC1jb2xvcik7XG59XG5cbkBtaXhpbiBuYi1oZWFkaW5ncygkZnJvbTogMSwgJHRvOiA2KSB7XG4gIEBmb3IgJGkgZnJvbSAkZnJvbSB0aHJvdWdoICR0byB7XG4gICAgaCN7JGl9IHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhvdmVyLWZvY3VzLWFjdGl2ZSB7XG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlLFxuICAmOmhvdmVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY2VudGVyLWhvcml6b250YWwtYWJzb2x1dGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICBsZWZ0OiA1MCU7XG59XG5cbkBtaXhpbiBpbnN0YWxsLXRodW1iKCkge1xuICAkdGh1bWItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1zbGlkZXItdGh1bWInXG4gICAgJzo6LW1vei1yYW5nZS10aHVtYidcbiAgICAnOjotbXMtdGh1bWInXG4gICk7XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICR0aHVtYi1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbnN0YWxsLXRyYWNrKCkge1xuICAkdGh1bWItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2snXG4gICAgJzo6LW1vei1yYW5nZS10cmFjaydcbiAgICAnOjotbXMtdHJhY2snXG4gICk7XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICR0aHVtYi1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbnN0YWxsLXBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSkge1xuICAkcGxhY2Vob2xkZXItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcidcbiAgICAnOjotbW96LXBsYWNlaG9sZGVyJ1xuICAgICc6LW1vei1wbGFjZWhvbGRlcidcbiAgICAnOi1tcy1pbnB1dC1wbGFjZWhvbGRlcidcbiAgKTtcblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKTtcbiAgfVxuXG4gIEBlYWNoICRzZWxlY3RvciBpbiAkcGxhY2Vob2xkZXItc2VsZWN0b3JzIHtcbiAgICAmI3skc2VsZWN0b3J9IHtcbiAgICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyN7JHNlbGVjdG9yfSB7XG4gICAgICBAaW5jbHVkZSBwbGFjZWhvbGRlci1mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gcGxhY2Vob2xkZXItZm9jdXMoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uKCRhbmltYXRlLi4uKSB7XG4gICRtYXg6IGxlbmd0aCgkYW5pbWF0ZSk7XG4gICRhbmltYXRpb25zOiAnJztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICRhbmltYXRpb25zOiAjeyRhbmltYXRpb25zICsgbnRoKCRhbmltYXRlLCAkaSl9O1xuXG4gICAgQGlmICRpIDwgJG1heCB7XG4gICAgICAkYW5pbWF0aW9uczogI3skYW5pbWF0aW9ucyArICcsICd9O1xuICAgIH1cbiAgfVxuICAtd2Via2l0LWFuaW1hdGlvbjogJGFuaW1hdGlvbnM7XG4gIC1tb3otYW5pbWF0aW9uOiAgICAkYW5pbWF0aW9ucztcbiAgLW8tYW5pbWF0aW9uOiAgICAgICRhbmltYXRpb25zO1xuICBhbmltYXRpb246ICAgICAgICAgJGFuaW1hdGlvbnM7XG59XG5cbkBtaXhpbiBrZXlmcmFtZXMoJGFuaW1hdGlvbk5hbWUpIHtcbiAgQC13ZWJraXQta2V5ZnJhbWVzICN7JGFuaW1hdGlvbk5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtby1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBrZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbkBtaXhpbiBidG4tcHVsc2UoJG5hbWUsICRjb2xvcikge1xuICAmLmJ0bi1wdWxzZSB7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uKGJ0bi0jeyRuYW1lfS1wdWxzZSAxLjVzIGluZmluaXRlKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGtleWZyYW1lcyhidG4tI3skbmFtZX0tcHVsc2UpIHtcbiAgICAwJSB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDFyZW0gMCAkY29sb3I7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIG9wYWNpdHk6IG5iLXRoZW1lKGJ0bi1kaXNhYmxlZC1vcGFjaXR5KTtcbiAgICB9XG4gIH1cbn1cblxuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuXG5AbWl4aW4gX3ByZXBlbmQtd2l0aC1zZWxlY3Rvcigkc2VsZWN0b3IsICRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgI3skc2VsZWN0b3J9ICYge1xuICAgIEBpZiAkcHJvcCAhPSBudWxsIHtcbiAgICAgICN7JHByb3B9OiAkdmFsdWU7XG4gICAgfVxuXG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG5iLWx0cigkcHJvcDogbnVsbCwgJHZhbHVlOiBudWxsKSB7XG4gIEBpbmNsdWRlIF9wcmVwZW5kLXdpdGgtc2VsZWN0b3IoJ1tkaXI9bHRyXScsICRwcm9wLCAkdmFsdWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItcnRsKCRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgQGluY2x1ZGUgX3ByZXBlbmQtd2l0aC1zZWxlY3RvcignW2Rpcj1ydGxdJywgJHByb3AsICR2YWx1ZSkge1xuICAgIEBjb250ZW50O1xuICB9O1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG4vLy8gU2xpZ2h0bHkgbGlnaHRlbiBhIGNvbG9yXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byB0aW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwZXJjZW50YWdlIC0gcGVyY2VudGFnZSBvZiBgJGNvbG9yYCBpbiByZXR1cm5lZCBjb2xvclxuLy8vIEByZXR1cm4ge0NvbG9yfVxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCh3aGl0ZSwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbi8vLyBTbGlnaHRseSBkYXJrZW4gYSBjb2xvclxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gY29sb3IgdG8gc2hhZGVcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBwZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHJldHVybmVkIGNvbG9yXG4vLy8gQHJldHVybiB7Q29sb3J9XG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peChibGFjaywgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiBtYXAtc2V0KCRtYXAsICRrZXksICR2YWx1ZTogbnVsbCkge1xuICAkbmV3OiAoJGtleTogJHZhbHVlKTtcbiAgQHJldHVybiBtYXAtbWVyZ2UoJG1hcCwgJG5ldyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBpbXBvcnQgJy4uL2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJy4uL2NvcmUvbWl4aW5zJztcblxuJHRoZW1lOiAoXG4gIGZvbnQtbWFpbjogdW5xdW90ZSgnXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWYnKSxcbiAgZm9udC1zZWNvbmRhcnk6IGZvbnQtbWFpbixcblxuICBmb250LXdlaWdodC10aGluOiAyMDAsXG4gIGZvbnQtd2VpZ2h0LWxpZ2h0OiAzMDAsXG4gIGZvbnQtd2VpZ2h0LW5vcm1hbDogNDAwLFxuICBmb250LXdlaWdodC1ib2xkZXI6IDUwMCxcbiAgZm9udC13ZWlnaHQtYm9sZDogNjAwLFxuICBmb250LXdlaWdodC11bHRyYS1ib2xkOiA4MDAsXG5cbiAgLy8gVE9ETzogdXNlIGl0IGFzIGEgZGVmYXVsdCBmb250LXNpemVcbiAgYmFzZS1mb250LXNpemU6IDE2cHgsXG5cbiAgZm9udC1zaXplLXhsZzogMS4yNXJlbSxcbiAgZm9udC1zaXplLWxnOiAxLjEyNXJlbSxcbiAgZm9udC1zaXplOiAxcmVtLFxuICBmb250LXNpemUtc206IDAuODc1cmVtLFxuICBmb250LXNpemUteHM6IDAuNzVyZW0sXG5cbiAgcmFkaXVzOiAwLjM3NXJlbSxcbiAgcGFkZGluZzogMS4yNXJlbSxcbiAgbWFyZ2luOiAxLjVyZW0sXG4gIGxpbmUtaGVpZ2h0OiAxLjI1LFxuXG4gIGNvbG9yLWJnOiAjZmZmZmZmLFxuICBjb2xvci1iZy1hY3RpdmU6ICNlOWVkZjIsXG4gIGNvbG9yLWZnOiAjYTRhYmIzLFxuICBjb2xvci1mZy1oZWFkaW5nOiAjMmEyYTJhLFxuICBjb2xvci1mZy10ZXh0OiAjNGI0YjRiLFxuICBjb2xvci1mZy1oaWdobGlnaHQ6ICM0MGRjN2UsXG5cbiAgc2VwYXJhdG9yOiAjZWJlZWYyLFxuXG4gIGNvbG9yLWdyYXk6IHJnYmEoODEsIDExMywgMTY1LCAwLjE1KSxcbiAgY29sb3ItbmV1dHJhbDogdHJhbnNwYXJlbnQsXG4gIGNvbG9yLXdoaXRlOiAjZmZmZmZmLFxuICBjb2xvci1kaXNhYmxlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM4YTdmZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICM0MGRjN2UsXG4gIGNvbG9yLWluZm86ICM0Y2E2ZmYsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmExMDAsXG4gIGNvbG9yLWRhbmdlcjogI2ZmNGM2YSxcblxuICAvLyBUT0RPOiBtb3ZlIHRvIGNvbnN0YW50c1xuICBzb2NpYWwtY29sb3ItZmFjZWJvb2s6ICMzYjU5OTgsXG4gIHNvY2lhbC1jb2xvci10d2l0dGVyOiAjNTVhY2VlLFxuICBzb2NpYWwtY29sb3ItZ29vZ2xlOiAjZGQ0YjM5LFxuICBzb2NpYWwtY29sb3ItbGlua2VkaW46ICMwMTc3YjUsXG4gIHNvY2lhbC1jb2xvci1naXRodWI6ICM2YjZiNmIsXG4gIHNvY2lhbC1jb2xvci1zdGFja292ZXJmbG93OiAjMmY5NmU4LFxuICBzb2NpYWwtY29sb3ItZHJpYmJsZTogI2YyNjc5OCxcbiAgc29jaWFsLWNvbG9yLWJlaGFuY2U6ICMwMDkzZmEsXG5cbiAgYm9yZGVyLWNvbG9yOiBjb2xvci1ncmF5LFxuICBzaGFkb3c6IDAgMnB4IDEycHggMCAjZGZlM2ViLFxuXG4gIGxpbmstY29sb3I6ICMzZGNjNmQsXG4gIGxpbmstY29sb3ItaG92ZXI6ICMyZWU1NmIsXG4gIGxpbmstY29sb3ItdmlzaXRlZDogbGluay1jb2xvcixcblxuICBzY3JvbGxiYXItZmc6ICNkYWRhZGEsXG4gIHNjcm9sbGJhci1iZzogI2YyZjJmMixcbiAgc2Nyb2xsYmFyLXdpZHRoOiA1cHgsXG4gIHNjcm9sbGJhci10aHVtYi1yYWRpdXM6IDIuNXB4LFxuXG4gIHJhZGlhbC1ncmFkaWVudDogbm9uZSxcbiAgbGluZWFyLWdyYWRpZW50OiBub25lLFxuXG4gIGNhcmQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNhcmQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBjYXJkLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGNhcmQtZmc6IGNvbG9yLWZnLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIGNhcmQtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1iZzogY29sb3ItYmcsXG4gIGNhcmQtaGVpZ2h0LXh4c21hbGw6IDk2cHgsXG4gIGNhcmQtaGVpZ2h0LXhzbWFsbDogMjE2cHgsXG4gIGNhcmQtaGVpZ2h0LXNtYWxsOiAzMzZweCxcbiAgY2FyZC1oZWlnaHQtbWVkaXVtOiA0NTZweCxcbiAgY2FyZC1oZWlnaHQtbGFyZ2U6IDU3NnB4LFxuICBjYXJkLWhlaWdodC14bGFyZ2U6IDY5NnB4LFxuICBjYXJkLWhlaWdodC14eGxhcmdlOiA4MTZweCxcbiAgY2FyZC1zaGFkb3c6IHNoYWRvdyxcbiAgY2FyZC1ib3JkZXItd2lkdGg6IDAsXG4gIGNhcmQtYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBjYXJkLWJvcmRlci1jb2xvcjogY29sb3ItYmcsXG4gIGNhcmQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjYXJkLXBhZGRpbmc6IHBhZGRpbmcsXG4gIGNhcmQtbWFyZ2luOiBtYXJnaW4sXG4gIGNhcmQtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgY2FyZC1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBjYXJkLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBjYXJkLWhlYWRlci1mZzogY29sb3ItZmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtaGVhZGVyLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNhcmQtaGVhZGVyLWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGNhcmQtaGVhZGVyLWFjdGl2ZS1mZzogY29sb3ItYmcsXG4gIGNhcmQtaGVhZGVyLWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgY2FyZC1oZWFkZXItcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FyZC1oZWFkZXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgY2FyZC1oZWFkZXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FyZC1oZWFkZXItd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgY2FyZC1oZWFkZXItZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci13aWR0aDogMXB4LFxuICBjYXJkLWhlYWRlci1ib3JkZXItdHlwZTogc29saWQsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci1jb2xvcjogY2FyZC1zZXBhcmF0b3IsXG5cbiAgaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBoZWFkZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBoZWFkZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGhlYWRlci1iZzogY29sb3ItYmcsXG4gIGhlYWRlci1oZWlnaHQ6IDQuNzVyZW0sXG4gIGhlYWRlci1wYWRkaW5nOiAxLjI1cmVtLFxuICBoZWFkZXItc2hhZG93OiBzaGFkb3csXG5cbiAgZm9vdGVyLWhlaWdodDogNC43MjVyZW0sXG4gIGZvb3Rlci1wYWRkaW5nOiAxLjI1cmVtLFxuICBmb290ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvb3Rlci1mZy1oaWdobGlnaHQ6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvb3Rlci1iZzogY29sb3ItYmcsXG4gIGZvb3Rlci1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgZm9vdGVyLXNoYWRvdzogc2hhZG93LFxuXG4gIGxheW91dC1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBsYXlvdXQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGxheW91dC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGxheW91dC1mZzogY29sb3ItZmcsXG4gIGxheW91dC1iZzogI2ViZWZmNSxcbiAgbGF5b3V0LW1pbi1oZWlnaHQ6IDEwMHZoLFxuICBsYXlvdXQtY29udGVudC13aWR0aDogOTAwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1taW4td2lkdGg6IDMwMHB4LFxuICBsYXlvdXQtd2luZG93LW1vZGUtbWF4LXdpZHRoOiAxOTIwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1iZzogbGF5b3V0LWJnLFxuICBsYXlvdXQtd2luZG93LW1vZGUtcGFkZGluZy10b3A6IDQuNzVyZW0sXG4gIGxheW91dC13aW5kb3ctc2hhZG93OiBzaGFkb3csXG4gIGxheW91dC1wYWRkaW5nOiAyLjI1cmVtIDIuMjVyZW0gMC43NXJlbSxcbiAgbGF5b3V0LW1lZGl1bS1wYWRkaW5nOiAxLjVyZW0gMS41cmVtIDAuNXJlbSxcbiAgbGF5b3V0LXNtYWxsLXBhZGRpbmc6IDFyZW0gMXJlbSAwLFxuXG4gIHNpZGViYXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHNpZGViYXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzaWRlYmFyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzaWRlYmFyLWJnOiBjb2xvci1iZyxcbiAgc2lkZWJhci1oZWlnaHQ6IDEwMHZoLFxuICBzaWRlYmFyLXdpZHRoOiAxNnJlbSxcbiAgc2lkZWJhci13aWR0aC1jb21wYWN0OiAzLjVyZW0sXG4gIHNpZGViYXItcGFkZGluZzogcGFkZGluZyxcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiAzLjVyZW0sXG4gIHNpZGViYXItZm9vdGVyLWhlaWdodDogMy41cmVtLFxuICBzaWRlYmFyLXNoYWRvdzogc2hhZG93LFxuXG4gIG1lbnUtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBtZW51LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1hY3RpdmUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcblxuICBtZW51LXN1Ym1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYmc6IGNvbG9yLWJnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGlnaGxpZ2h0LFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLXNoYWRvdzogbm9uZSxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWZnOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItYmc6IG1lbnUtc3VibWVudS1iZyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXdpZHRoOiAwLjEyNXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1wYWRkaW5nOiAwLjVyZW0gMXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tY29udGFpbmVyLXBhZGRpbmc6IDAgMS4yNXJlbSxcbiAgbWVudS1zdWJtZW51LXBhZGRpbmc6IDAuNXJlbSxcblxuICBtZW51LWdyb3VwLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZ3JvdXAtZm9udC1zaXplOiAwLjg3NXJlbSxcbiAgbWVudS1ncm91cC1mZzogY29sb3ItZmcsXG4gIG1lbnUtZ3JvdXAtcGFkZGluZzogMXJlbSAxLjI1cmVtLFxuICBtZW51LWl0ZW0tcGFkZGluZzogMC42NzVyZW0gMC43NXJlbSxcbiAgbWVudS1pdGVtLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBtZW51LWljb24tZm9udC1zaXplOiAyLjVyZW0sXG4gIG1lbnUtaWNvbi1tYXJnaW46IDAgMC4yNXJlbSAwLFxuICBtZW51LWljb24tY29sb3I6IGNvbG9yLWZnLFxuICBtZW51LWljb24tYWN0aXZlLWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIHRhYnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICB0YWJzLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICB0YWJzLWNvbnRlbnQtZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgdGFicy1jb250ZW50LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICB0YWJzLWFjdGl2ZS1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtYWN0aXZlLWZvbnQtd2VpZ2h0OiBjYXJkLWhlYWRlci1mb250LXdlaWdodCxcbiAgdGFicy1wYWRkaW5nOiBwYWRkaW5nLFxuICB0YWJzLWNvbnRlbnQtcGFkZGluZzogMCxcbiAgdGFicy1oZWFkZXItYmc6IHRyYW5zcGFyZW50LFxuICB0YWJzLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICB0YWJzLWZnOiBjb2xvci1mZyxcbiAgdGFicy1mZy1kaXNhYmxlZDogdGFicy1mZyxcbiAgdGFicy1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICB0YWJzLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHRhYnMtYmc6IHRyYW5zcGFyZW50LFxuICB0YWJzLXNlbGVjdGVkOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLXNlY29uZC1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgdGFicy1zZWxlY3RlZC1kZWdyZWVzOiAwLFxuICB0YWJzLWljb24tb25seS1tYXgtd2lkdGg6IDU3NnB4LFxuXG4gIHJvdXRlLXRhYnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICByb3V0ZS10YWJzLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICByb3V0ZS10YWJzLWFjdGl2ZS1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtYWN0aXZlLWZvbnQtd2VpZ2h0OiBjYXJkLWhlYWRlci1mb250LXdlaWdodCxcbiAgcm91dGUtdGFicy1wYWRkaW5nOiBwYWRkaW5nLFxuICByb3V0ZS10YWJzLWhlYWRlci1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHJvdXRlLXRhYnMtZmc6IGNvbG9yLWZnLFxuICByb3V0ZS10YWJzLWZnLWRpc2FibGVkOiByb3V0ZS10YWJzLWZnLFxuICByb3V0ZS10YWJzLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHJvdXRlLXRhYnMtYmc6IHRyYW5zcGFyZW50LFxuICByb3V0ZS10YWJzLXNlbGVjdGVkOiBjb2xvci1zdWNjZXNzLFxuICByb3V0ZS10YWJzLWljb24tb25seS1tYXgtd2lkdGg6IDU3NnB4LFxuXG4gIHVzZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHVzZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICB1c2VyLWJnOiBjb2xvci1iZyxcbiAgdXNlci1mZzogY29sb3ItZmcsXG4gIHVzZXItZmctaGlnaGxpZ2h0OiAjYmNjM2NjLFxuICB1c2VyLWZvbnQtZmFtaWx5LXNlY29uZGFyeTogZm9udC1zZWNvbmRhcnksXG4gIHVzZXItc2l6ZS1zbWFsbDogMS41cmVtLFxuICB1c2VyLXNpemUtbWVkaXVtOiAyLjVyZW0sXG4gIHVzZXItc2l6ZS1sYXJnZTogMy4yNXJlbSxcbiAgdXNlci1zaXplLXhsYXJnZTogNHJlbSxcblxuICBwb3BvdmVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBwb3BvdmVyLWJnOiBjb2xvci1iZyxcbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIHBvcG92ZXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBwb3BvdmVyLXNoYWRvdzogbm9uZSxcbiAgcG9wb3Zlci1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIGNvbnRleHQtbWVudS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgY29udGV4dC1tZW51LWJnOiBjb2xvci1iZyxcbiAgY29udGV4dC1tZW51LWFjdGl2ZS1mZzogY29sb3Itd2hpdGUsXG4gIGNvbnRleHQtbWVudS1hY3RpdmUtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNvbnRleHQtbWVudS1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNvbnRleHQtbWVudS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNvbnRleHQtbWVudS1zaGFkb3c6IG5vbmUsXG4gIGNvbnRleHQtbWVudS1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIGFjdGlvbnMtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFjdGlvbnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBhY3Rpb25zLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYWN0aW9ucy1mZzogY29sb3ItZmcsXG4gIGFjdGlvbnMtYmc6IGNvbG9yLWJnLFxuICBhY3Rpb25zLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBhY3Rpb25zLXBhZGRpbmc6IHBhZGRpbmcsXG4gIGFjdGlvbnMtc2l6ZS1zbWFsbDogMS41cmVtLFxuICBhY3Rpb25zLXNpemUtbWVkaXVtOiAyLjI1cmVtLFxuICBhY3Rpb25zLXNpemUtbGFyZ2U6IDMuNXJlbSxcblxuICBzZWFyY2gtYnRuLW9wZW4tZmc6IGNvbG9yLWZnLFxuICBzZWFyY2gtYnRuLWNsb3NlLWZnOlx0Y29sb3ItZmcsXG4gIHNlYXJjaC1iZzogbGF5b3V0LWJnLFxuICBzZWFyY2gtYmctc2Vjb25kYXJ5OiBjb2xvci1mZyxcbiAgc2VhcmNoLXRleHQ6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNlYXJjaC1pbmZvOiBjb2xvci1mZyxcbiAgc2VhcmNoLWRhc2g6IGNvbG9yLWZnLFxuICBzZWFyY2gtcGxhY2Vob2xkZXI6IGNvbG9yLWZnLFxuXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBzbWFydC10YWJsZS1oZWFkZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzbWFydC10YWJsZS1oZWFkZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1iZzogY29sb3ItYmcsXG5cbiAgc21hcnQtdGFibGUtZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgc21hcnQtdGFibGUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIHNtYXJ0LXRhYmxlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIHNtYXJ0LXRhYmxlLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgc21hcnQtdGFibGUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLWJnOiBjb2xvci1iZyxcblxuICBzbWFydC10YWJsZS1iZy1ldmVuOiAjZjVmN2ZjLFxuICBzbWFydC10YWJsZS1mZy1zZWNvbmRhcnk6IGNvbG9yLWZnLFxuICBzbWFydC10YWJsZS1iZy1hY3RpdmU6ICNlNmYzZmYsXG4gIHNtYXJ0LXRhYmxlLXBhZGRpbmc6IDAuODc1cmVtIDEuMjVyZW0sXG4gIHNtYXJ0LXRhYmxlLWZpbHRlci1wYWRkaW5nOiAwLjM3NXJlbSAwLjVyZW0sXG4gIHNtYXJ0LXRhYmxlLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBzbWFydC10YWJsZS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG5cbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLXdpZHRoOiAxcHgsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1mZy1hY3RpdmU6ICNmZmZmZmYsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXN1Y2Nlc3MsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjA1KSxcblxuICB0b2FzdHItYmc6IGNvbG9yLWJnLFxuICB0b2FzdHItcGFkZGluZzogMS4xMjVyZW0sXG4gIHRvYXN0ci1mZzogY29sb3ItZmctdGV4dCxcbiAgdG9hc3RyLWJvcmRlcjogMC4xMjVyZW0gc29saWQsXG4gIHRvYXN0ci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIHRvYXN0ci1ib3JkZXItY29sb3I6ICNiY2MzY2MsXG4gIHRvYXN0ci1pY29uLXJhZGl1czogMC4yNXJlbSxcbiAgdG9hc3RyLXNoYWRvdzogc2hhZG93LFxuXG4gIGJ0bi1mZzogY29sb3Itd2hpdGUsXG4gIGJ0bi1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGJ0bi1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGJ0bi1kaXNhYmxlZC1vcGFjaXR5OiAwLjMsXG4gIGJ0bi1jdXJzb3I6IGRlZmF1bHQsXG5cbiAgYnRuLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGJ0bi1zZWNvbmRhcnktYmc6IHRyYW5zcGFyZW50LFxuICBidG4taW5mby1iZzogY29sb3ItaW5mbyxcbiAgYnRuLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGJ0bi13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBidG4tZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6ICNkYWRmZTYsXG4gIGJ0bi1zZWNvbmRhcnktYm9yZGVyLXdpZHRoOiAycHgsXG5cbiAgYnRuLXBhZGRpbmcteS1sZzogMC44NzVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtbGc6IDEuNzVyZW0sXG4gIGJ0bi1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcblxuICAvLyBkZWZhdWx0IHNpemVcbiAgYnRuLXBhZGRpbmcteS1tZDogMC43NXJlbSxcbiAgYnRuLXBhZGRpbmcteC1tZDogMS41cmVtLFxuICBidG4tZm9udC1zaXplLW1kOiAxcmVtLFxuXG4gIGJ0bi1wYWRkaW5nLXktc206IDAuNjI1cmVtLFxuICBidG4tcGFkZGluZy14LXNtOiAxLjVyZW0sXG4gIGJ0bi1mb250LXNpemUtc206IDAuODc1cmVtLFxuXG4gIGJ0bi1wYWRkaW5nLXkteHM6IDAuNXJlbSxcbiAgYnRuLXBhZGRpbmcteC14czogMS4yNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS14czogMC43NXJlbSxcblxuICBidG4tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBidG4tcmVjdGFuZ2xlLWJvcmRlci1yYWRpdXM6IDAuMjVyZW0sXG4gIGJ0bi1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXM6IDAuNzVyZW0sXG4gIGJ0bi1yb3VuZC1ib3JkZXItcmFkaXVzOiAxLjVyZW0sXG5cbiAgYnRuLWhlcm8tc2hhZG93OiBub25lLFxuICBidG4taGVyby10ZXh0LXNoYWRvdzogbm9uZSxcbiAgYnRuLWhlcm8tYmV2ZWwtc2l6ZTogMCAwIDAgMCxcbiAgYnRuLWhlcm8tZ2xvdy1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tZGVncmVlOiAyMGRlZyxcbiAgYnRuLWhlcm8tcHJpbWFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tc3VjY2Vzcy1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8td2FybmluZy1kZWdyZWU6IDEwZGVnLFxuICBidG4taGVyby1pbmZvLWRlZ3JlZTogLTEwZGVnLFxuICBidG4taGVyby1kYW5nZXItZGVncmVlOiAtMjBkZWcsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuXG4gIGJ0bi1vdXRsaW5lLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1ob3Zlci1mZzogI2ZmZmZmZixcbiAgYnRuLW91dGxpbmUtZm9jdXMtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgYnRuLWdyb3VwLWJnOiBsYXlvdXQtYmcsXG4gIGJ0bi1ncm91cC1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLWdyb3VwLXNlcGFyYXRvcjogI2RhZGZlNixcblxuICBmb3JtLWNvbnRyb2wtdGV4dC1wcmltYXJ5LWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuICBmb3JtLWNvbnRyb2wtYmc6IGNvbG9yLWJnLFxuICBmb3JtLWNvbnRyb2wtZm9jdXMtYmc6IGNvbG9yLWJnLFxuXG4gIGZvcm0tY29udHJvbC1ib3JkZXItd2lkdGg6IDJweCxcbiAgZm9ybS1jb250cm9sLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgZm9ybS1jb250cm9sLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgZm9ybS1jb250cm9sLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1czogMC43NXJlbSxcbiAgZm9ybS1jb250cm9sLXJvdW5kLWJvcmRlci1yYWRpdXM6IDEuNXJlbSxcbiAgZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcjogI2RhZGZlNixcbiAgZm9ybS1jb250cm9sLXNlbGVjdGVkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcblxuICBmb3JtLWNvbnRyb2wtaW5mby1ib3JkZXItY29sb3I6IGNvbG9yLWluZm8sXG4gIGZvcm0tY29udHJvbC1zdWNjZXNzLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgZm9ybS1jb250cm9sLWRhbmdlci1ib3JkZXItY29sb3I6IGNvbG9yLWRhbmdlcixcbiAgZm9ybS1jb250cm9sLXdhcm5pbmctYm9yZGVyLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuXG4gIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcjogY29sb3ItZmcsXG4gIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1mb250LXNpemU6IDFyZW0sXG5cbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZTogMXJlbSxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmc6IDAuNzVyZW0gMS4xMjVyZW0sXG4gIGZvcm0tY29udHJvbC1mb250LXNpemUtc206IGZvbnQtc2l6ZS1zbSxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmctc206IDAuMzc1cmVtIDEuMTI1cmVtLFxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG4gIGZvcm0tY29udHJvbC1wYWRkaW5nLWxnOiAxLjEyNXJlbSxcblxuICBmb3JtLWNvbnRyb2wtbGFiZWwtZm9udC13ZWlnaHQ6IDQwMCxcblxuICBmb3JtLWNvbnRyb2wtZmVlZGJhY2stZm9udC1zaXplOiAwLjg3NXJlbSxcbiAgZm9ybS1jb250cm9sLWZlZWRiYWNrLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG5cbiAgY2hlY2tib3gtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1ib3JkZXItY29sb3I6IGZvcm0tY29udHJvbC1ib3JkZXItY29sb3IsXG4gIGNoZWNrYm94LWNoZWNrbWFyazogdHJhbnNwYXJlbnQsXG5cbiAgY2hlY2tib3gtY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgY2hlY2tib3gtY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgY2hlY2tib3gtZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBtb2RhbC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbW9kYWwtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBtb2RhbC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtb2RhbC1mZzogY29sb3ItZmctdGV4dCxcbiAgbW9kYWwtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgbW9kYWwtYmc6IGNvbG9yLWJnLFxuICBtb2RhbC1ib3JkZXI6IHRyYW5zcGFyZW50LFxuICBtb2RhbC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1vZGFsLXBhZGRpbmc6IHBhZGRpbmcsXG4gIG1vZGFsLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIG1vZGFsLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtb2RhbC1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIG1vZGFsLWJvZHktZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgbW9kYWwtYm9keS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtb2RhbC1ib2R5LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtb2RhbC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcblxuICBiYWRnZS1mZy10ZXh0OiBjb2xvci13aGl0ZSxcbiAgYmFkZ2UtcHJpbWFyeS1iZy1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgYmFkZ2UtaW5mby1iZy1jb2xvcjogY29sb3ItaW5mbyxcbiAgYmFkZ2Utd2FybmluZy1iZy1jb2xvcjogY29sb3Itd2FybmluZyxcbiAgYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yOiBjb2xvci1kYW5nZXIsXG5cbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC14bGc6IDEuNzVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQtbGc6IDEuNXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodDogMS4zNzVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQtc206IDEuMjVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQteHM6IDFyZW0sXG4gIHByb2dyZXNzLWJhci1hbmltYXRpb24tZHVyYXRpb246IDQwMG1zLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXhsZzogZm9udC1zaXplLXhsZyxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUtc206IGZvbnQtc2l6ZS1zbSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS14czogZm9udC1zaXplLXhzLFxuICBwcm9ncmVzcy1iYXItcmFkaXVzOiByYWRpdXMsXG4gIHByb2dyZXNzLWJhci1iZzogbGF5b3V0LWJnLFxuICBwcm9ncmVzcy1iYXItZm9udC1jb2xvcjogY29sb3Itd2hpdGUsXG4gIHByb2dyZXNzLWJhci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgcHJvZ3Jlc3MtYmFyLWRlZmF1bHQtYmc6IGNvbG9yLWluZm8sXG4gIHByb2dyZXNzLWJhci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBwcm9ncmVzcy1iYXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgcHJvZ3Jlc3MtYmFyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHByb2dyZXNzLWJhci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgYWxlcnQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFsZXJ0LWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYWxlcnQtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWxlcnQtZmc6IGNvbG9yLXdoaXRlLFxuICBhbGVydC1vdXRsaW5lLWZnOiBjb2xvci1mZyxcbiAgYWxlcnQtYmc6IGNvbG9yLWJnLFxuICBhbGVydC1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBhbGVydC1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIGFsZXJ0LWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgYWxlcnQtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgYWxlcnQtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgYWxlcnQtc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgYWxlcnQtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgYWxlcnQtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIGFsZXJ0LWhlaWdodC14eHNtYWxsOiA1MnB4LFxuICBhbGVydC1oZWlnaHQteHNtYWxsOiA3MnB4LFxuICBhbGVydC1oZWlnaHQtc21hbGw6IDkycHgsXG4gIGFsZXJ0LWhlaWdodC1tZWRpdW06IDExMnB4LFxuICBhbGVydC1oZWlnaHQtbGFyZ2U6IDEzMnB4LFxuICBhbGVydC1oZWlnaHQteGxhcmdlOiAxNTJweCxcbiAgYWxlcnQtaGVpZ2h0LXh4bGFyZ2U6IDE3MnB4LFxuICBhbGVydC1zaGFkb3c6IG5vbmUsXG4gIGFsZXJ0LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYWxlcnQtcGFkZGluZzogMXJlbSAxLjEyNXJlbSxcbiAgYWxlcnQtY2xvc2FibGUtcGFkZGluZzogM3JlbSxcbiAgYWxlcnQtYnV0dG9uLXBhZGRpbmc6IDNyZW0sXG4gIGFsZXJ0LW1hcmdpbjogbWFyZ2luLFxuXG4gIGNoYXQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNoYXQtZmc6IGNvbG9yLXdoaXRlLFxuICBjaGF0LWJnOiBjb2xvci1iZyxcbiAgY2hhdC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNoYXQtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgY2hhdC1oZWlnaHQteHhzbWFsbDogOTZweCxcbiAgY2hhdC1oZWlnaHQteHNtYWxsOiAyMTZweCxcbiAgY2hhdC1oZWlnaHQtc21hbGw6IDMzNnB4LFxuICBjaGF0LWhlaWdodC1tZWRpdW06IDQ1NnB4LFxuICBjaGF0LWhlaWdodC1sYXJnZTogNTc2cHgsXG4gIGNoYXQtaGVpZ2h0LXhsYXJnZTogNjk2cHgsXG4gIGNoYXQtaGVpZ2h0LXh4bGFyZ2U6IDgxNnB4LFxuICBjaGF0LWJvcmRlcjogYm9yZGVyLFxuICBjaGF0LXBhZGRpbmc6IHBhZGRpbmcsXG4gIGNoYXQtc2hhZG93OiBzaGFkb3csXG4gIGNoYXQtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGNoYXQtbWVzc2FnZS1mZzogY29sb3Itd2hpdGUsXG4gIGNoYXQtbWVzc2FnZS1iZzogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjNGNhNmZmLCAjNTliZmZmKSxcbiAgY2hhdC1tZXNzYWdlLXJlcGx5LWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNoYXQtbWVzc2FnZS1yZXBseS1mZzogY29sb3ItZmctdGV4dCxcbiAgY2hhdC1tZXNzYWdlLWF2YXRhci1iZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1zZW5kZXItZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtcXVvdGUtZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtcXVvdGUtYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2hhdC1tZXNzYWdlLWZpbGUtZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtZmlsZS1iZzogdHJhbnNwYXJlbnQsXG4gIGNoYXQtZm9ybS1iZzogdHJhbnNwYXJlbnQsXG4gIGNoYXQtZm9ybS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgY2hhdC1mb3JtLWJvcmRlcjogc2VwYXJhdG9yLFxuICBjaGF0LWZvcm0tcGxhY2Vob2xkZXItZmc6IGNvbG9yLWZnLFxuICBjaGF0LWZvcm0tYWN0aXZlLWJvcmRlcjogY29sb3ItZmcsXG4gIGNoYXQtYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgY2hhdC1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIGNoYXQtZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBjaGF0LXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGNoYXQtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgY2hhdC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjaGF0LXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGNoYXQtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgc3Bpbm5lci1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgzKSxcbiAgc3Bpbm5lci1jaXJjbGUtYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgc3Bpbm5lci1mZzogY29sb3ItZmctdGV4dCxcbiAgc3Bpbm5lci1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBzcGlubmVyLWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgc3Bpbm5lci1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIHNwaW5uZXItcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgc3Bpbm5lci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBzcGlubmVyLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIHNwaW5uZXItd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgc3Bpbm5lci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgc3Bpbm5lci14eHNtYWxsOiAxLjI1cmVtLFxuICBzcGlubmVyLXhzbWFsbDogMS41cmVtLFxuICBzcGlubmVyLXNtYWxsOiAxLjc1cmVtLFxuICBzcGlubmVyLW1lZGl1bTogMnJlbSxcbiAgc3Bpbm5lci1sYXJnZTogMi4yNXJlbSxcbiAgc3Bpbm5lci14bGFyZ2U6IDIuNXJlbSxcbiAgc3Bpbm5lci14eGxhcmdlOiAzcmVtLFxuXG4gIHN0ZXBwZXItaW5kZXgtc2l6ZTogMnJlbSxcbiAgc3RlcHBlci1sYWJlbC1mb250LXNpemU6IGZvbnQtc2l6ZS1zbSxcbiAgc3RlcHBlci1sYWJlbC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBzdGVwcGVyLWFjY2VudC1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgc3RlcHBlci1jb21wbGV0ZWQtZmc6IGNvbG9yLXdoaXRlLFxuICBzdGVwcGVyLWZnOiBjb2xvci1mZyxcbiAgc3RlcHBlci1jb21wbGV0ZWQtaWNvbi1zaXplOiAxLjVyZW0sXG4gIHN0ZXBwZXItY29tcGxldGVkLWljb24td2VpZ2h0OiBmb250LXdlaWdodC11bHRyYS1ib2xkLFxuICBzdGVwcGVyLXN0ZXAtcGFkZGluZzogcGFkZGluZyxcblxuICBhY2NvcmRpb24tcGFkZGluZzogcGFkZGluZyxcbiAgYWNjb3JkaW9uLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYWNjb3JkaW9uLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhY2NvcmRpb24taGVhZGVyLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGFjY29yZGlvbi1oZWFkZXItZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci13aWR0aDogMXB4LFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgYWNjb3JkaW9uLWhlYWRlci1ib3JkZXItY29sb3I6IGFjY29yZGlvbi1zZXBhcmF0b3IsXG4gIGFjY29yZGlvbi1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGFjY29yZGlvbi1pdGVtLWJnOiBjb2xvci1iZyxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFjY29yZGlvbi1pdGVtLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFjY29yZGlvbi1pdGVtLWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIGFjY29yZGlvbi1pdGVtLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIGFjY29yZGlvbi1pdGVtLXNoYWRvdzogc2hhZG93LFxuXG4gIGxpc3QtaXRlbS1ib3JkZXItY29sb3I6IHRhYnMtc2VwYXJhdG9yLFxuICBsaXN0LWl0ZW0tcGFkZGluZzogMXJlbSxcblxuICBjYWxlbmRhci13aWR0aDogMjEuODc1cmVtLFxuICBjYWxlbmRhci1ib2R5LWhlaWdodDogMjUuNjI1cmVtLFxuICBjYWxlbmRhci1oZWFkZXItdGl0bGUtZm9udC1zaXplOiBmb250LXNpemUteGxnLFxuICBjYWxlbmRhci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIGNhbGVuZGFyLWhlYWRlci1zdWItdGl0bGUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNhbGVuZGFyLWhlYWRlci1zdWItdGl0bGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LXRoaW4sXG4gIGNhbGVuZGFyLW5hdmlnYXRpb24tYnV0dG9uLXdpZHRoOiAxMHJlbSxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FsZW5kYXItaG92ZXItaXRlbS1iZzogY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZyxcbiAgY2FsZW5kYXItdG9kYXktaXRlbS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjYWxlbmRhci1hY3RpdmUtaXRlbS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FsZW5kYXItZmc6IGNvbG9yLWZnLXRleHQsXG4gIGNhbGVuZGFyLXNlbGVjdGVkLWZnOiBjb2xvci13aGl0ZSxcbiAgY2FsZW5kYXItdG9kYXktZmc6IGNhbGVuZGFyLWZnLFxuICBjYWxlbmRhci1kYXktY2VsbC13aWR0aDogMi42MjVyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWhlaWdodDogMi42MjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGg6IDQuMjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0OiAyLjM3NXJlbSxcbiAgY2FsZW5kYXIteWVhci1jZWxsLXdpZHRoOiBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtaGVpZ2h0OiBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodCxcbiAgY2FsZW5kYXItaW5hY3RpdmUtb3BhY2l0eTogMC41LFxuICBjYWxlbmRhci1kaXNhYmxlZC1vcGFjaXR5OiAwLjMsXG4gIGNhbGVuZGFyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2FsZW5kYXItd2Vla2RheS13aWR0aDogY2FsZW5kYXItZGF5LWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXdlZWtkYXktaGVpZ2h0OiAxLjc1cmVtLFxuICBjYWxlbmRhci13ZWVrZGF5LWZvbnQtc2l6ZTogZm9udC1zaXplLXhzLFxuICBjYWxlbmRhci13ZWVrZGF5LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGNhbGVuZGFyLXdlZWtkYXktZmc6IGNvbG9yLWZnLFxuICBjYWxlbmRhci13ZWVrZGF5LWhvbGlkYXktZmc6IGNvbG9yLWRhbmdlcixcbiAgY2FsZW5kYXItcmFuZ2UtYmctaW4tcmFuZ2U6ICNlYmZiZjIsXG5cbiAgY2FsZW5kYXItbGFyZ2Utd2lkdGg6IDI0LjM3NXJlbSxcbiAgY2FsZW5kYXItbGFyZ2UtYm9keS1oZWlnaHQ6IDI3Ljc1cmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1sYXJnZS13aWR0aDogM3JlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtbGFyZ2UtaGVpZ2h0OiAzcmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLWxhcmdlLXdpZHRoOiA0LjI1cmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLWxhcmdlLWhlaWdodDogMi4zNzVyZW0sXG4gIGNhbGVuZGFyLXllYXItY2VsbC1sYXJnZS13aWR0aDogY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aCxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWxhcmdlLWhlaWdodDogY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQsXG5cbiAgb3ZlcmxheS1iYWNrZHJvcC1iZzogcmdiYSgwLCAwLCAwLCAwLjI4OCksXG5cbiAgdG9vbHRpcC1iZzogY29sb3ItZmctdGV4dCxcbiAgdG9vbHRpcC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICB0b29sdGlwLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHRvb2x0aXAtc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgdG9vbHRpcC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICB0b29sdGlwLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICB0b29sdGlwLWZnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHRvb2x0aXAtc3RhdHVzLWZnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHRvb2x0aXAtc2hhZG93OiBzaGFkb3csXG4gIHRvb2x0aXAtZm9udC1zaXplOiBmb250LXNpemUsXG5cbiAgc2VsZWN0LWJvcmRlci13aWR0aDogMnB4LFxuICBzZWxlY3QtbWF4LWhlaWdodDogMjByZW0sXG4gIHNlbGVjdC1iZzogY29sb3ItYmcsXG5cbiAgc2VsZWN0LWNoZWNrYm94LWNvbG9yOiBjaGVja2JveC1ib3JkZXItY29sb3IsXG4gIHNlbGVjdC1jaGVja21hcmstY29sb3I6IGNoZWNrYm94LWJvcmRlci1jb2xvcixcblxuICBzZWxlY3Qtb3B0aW9uLWRpc2FibGVkLWJnOiAjZjJmNGY3LFxuICBzZWxlY3Qtb3B0aW9uLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgc2VsZWN0LW9wdGlvbi1wYWRkaW5nOiAwLjc1cmVtIDEuNXJlbSxcblxuICBkYXRlcGlja2VyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBkYXRlcGlja2VyLWJnOiBjb2xvci1iZyxcbiAgZGF0ZXBpY2tlci1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIGRhdGVwaWNrZXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBkYXRlcGlja2VyLXNoYWRvdzogbm9uZSxcbiAgZGF0ZXBpY2tlci1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIHJhZGlvLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tZmc6IGNvbG9yLWZnLXRleHQsXG4gIHJhZGlvLXNpemU6IDEuMjVyZW0sXG4gIHJhZGlvLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWJvcmRlci1jb2xvcjogZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcixcbiAgcmFkaW8tY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIHJhZGlvLWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgcmFkaW8tY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJhZGlvLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tZGlzYWJsZWQtc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tZGlzYWJsZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiByYWRpby1ib3JkZXItY29sb3IsXG4gIHJhZGlvLWRpc2FibGVkLWNoZWNrbWFyazogcmFkaW8tY2hlY2ttYXJrLFxuXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci13aWR0aDogMXB4LFxuICB0cmVlLWdyaWQtY2VsbC1ib3JkZXItc3R5bGU6IHNvbGlkLFxuICB0cmVlLWdyaWQtY2VsbC1ib3JkZXItY29sb3I6IHNlcGFyYXRvcixcbiAgdHJlZS1ncmlkLXJvdy1taW4taGVpZ2h0OiAycmVtLFxuICB0cmVlLWdyaWQtY2VsbC1wYWRkaW5nOiAwLjg3NXJlbSAxLjI1cmVtLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50LFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWJvcmRlcjogbm9uZSxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1wYWRkaW5nOiAwLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWZvbnQtd2VpZ2h0OiBib2xkLFxuICB0cmVlLWdyaWQtaGVhZGVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLWZvb3Rlci1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtcm93LWJnLWV2ZW46IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtcm93LWhvdmVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1jb2xvcjogY29sb3ItZmctdGV4dCxcbiAgdHJlZS1ncmlkLWljb24tY29sb3I6IGNvbG9yLWZnLXRleHQsXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgZGVmYXVsdCk7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBpbXBvcnQgJy4uL2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJy4uL2NvcmUvbWl4aW5zJztcbkBpbXBvcnQgJ2RlZmF1bHQnO1xuXG4vLyBkZWZhdWx0IHRoZSBiYXNlIHRoZW1lXG4kdGhlbWU6IChcbiAgcmFkaXVzOiAwLjVyZW0sXG5cbiAgY29sb3ItYmc6ICMzZDM3ODAsXG4gIGNvbG9yLWJnLWFjdGl2ZTogIzQ5NDI5OSxcbiAgY29sb3ItZmc6ICNhMWExZTUsXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICNmZmZmZmYsXG4gIGNvbG9yLWZnLXRleHQ6ICNkMWQxZmYsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogIzAwZjlhNixcblxuICBjb2xvci1ncmF5OiByZ2JhKDgxLCAxMTMsIDE2NSwgMC4xNSksXG4gIGNvbG9yLW5ldXRyYWw6IHRyYW5zcGFyZW50LFxuICBjb2xvci13aGl0ZTogI2ZmZmZmZixcbiAgY29sb3ItZGlzYWJsZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSxcblxuICBjb2xvci1wcmltYXJ5OiAjNzY1OWZmLFxuICBjb2xvci1zdWNjZXNzOiAjMDBkOTc3LFxuICBjb2xvci1pbmZvOiAjMDA4OGZmLFxuICBjb2xvci13YXJuaW5nOiAjZmZhMTAwLFxuICBjb2xvci1kYW5nZXI6ICNmZjM4NmEsXG5cbiAgbGluay1jb2xvcjogIzAwZjlhNixcbiAgbGluay1jb2xvci1ob3ZlcjogIzE0ZmZiZSxcblxuICBzZXBhcmF0b3I6ICMzNDJlNzMsXG4gIHNoYWRvdzogMCA4cHggMjBweCAwIHJnYmEoNDAsIDM3LCA4OSwgMC42KSxcblxuICBjYXJkLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuXG4gIGxheW91dC1iZzogIzJmMjk2YixcblxuICBzY3JvbGxiYXItZmc6ICM1NTRkYjMsXG4gIHNjcm9sbGJhci1iZzogIzMzMmU3MyxcblxuICByYWRpYWwtZ3JhZGllbnQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgIzQyM2Y4YywgIzMwMmM2ZSksXG4gIGxpbmVhci1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMTcxNzQ5LCAjNDEzNzg5KSxcblxuICBzaWRlYmFyLWZnOiBjb2xvci1zZWNvbmRhcnksXG4gIHNpZGViYXItYmc6IGNvbG9yLWJnLFxuXG4gIGhlYWRlci1mZzogY29sb3Itd2hpdGUsXG4gIGhlYWRlci1iZzogY29sb3ItYmcsXG5cbiAgZm9vdGVyLWZnOiBjb2xvci1mZyxcbiAgZm9vdGVyLWJnOiBjb2xvci1iZyxcblxuICBhY3Rpb25zLWZnOiBjb2xvci1mZyxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG5cbiAgdXNlci1mZzogY29sb3ItYmcsXG4gIHVzZXItYmc6IGNvbG9yLWZnLFxuICB1c2VyLWZnLWhpZ2hsaWdodDogY29sb3ItZmctaGlnaGxpZ2h0LFxuXG4gIHBvcG92ZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuICBwb3BvdmVyLXNoYWRvdzogc2hhZG93LFxuXG4gIGNvbnRleHQtbWVudS1hY3RpdmUtYmc6IGNvbG9yLXByaW1hcnksXG4gIGNvbnRleHQtbWVudS1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG5cbiAgZm9vdGVyLWhlaWdodDogaGVhZGVyLWhlaWdodCxcblxuICBzaWRlYmFyLXdpZHRoOiAxNi4yNXJlbSxcbiAgc2lkZWJhci13aWR0aC1jb21wYWN0OiAzLjQ1cmVtLFxuXG4gIG1lbnUtZmc6IGNvbG9yLWZnLFxuICBtZW51LWJnOiBjb2xvci1iZyxcbiAgbWVudS1hY3RpdmUtZmc6IGNvbG9yLXdoaXRlLFxuICBtZW51LWdyb3VwLWZnOiBjb2xvci13aGl0ZSxcbiAgbWVudS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtZW51LWFjdGl2ZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LXN1Ym1lbnUtYmc6IGxheW91dC1iZyxcbiAgbWVudS1zdWJtZW51LWZnOiBjb2xvci1mZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogcmdiYSgwLCAyNTUsIDE3MCwgMC4yNSksXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oaWdobGlnaHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiAwIDJweCAxMnB4IDAgcmdiYSgwLCAyNTUsIDE3MCwgMC4yNSksXG4gIG1lbnUtaXRlbS1wYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW0sXG4gIG1lbnUtaXRlbS1zZXBhcmF0b3I6IHRyYW5zcGFyZW50LFxuXG4gIGJ0bi1oZXJvLXNoYWRvdzogMCA0cHggMTBweCAwIHJnYmEoMzMsIDcsIDc3LCAwLjUpLFxuICBidG4taGVyby10ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKSxcbiAgYnRuLWhlcm8tYmV2ZWwtc2l6ZTogMCAzcHggMCAwLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMnB4IDhweCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4gIGJ0bi1vdXRsaW5lLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1ob3Zlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLW91dGxpbmUtZm9jdXMtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1ncm91cC1iZzogIzM3MzI3MyxcbiAgYnRuLWdyb3VwLXNlcGFyYXRvcjogIzMxMmM2NixcblxuICBmb3JtLWNvbnRyb2wtYmc6ICMzNzMxN2EsXG4gIGZvcm0tY29udHJvbC1mb2N1cy1iZzogc2VwYXJhdG9yLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIGZvcm0tY29udHJvbC1zZWxlY3RlZC1ib3JkZXItY29sb3I6IGNvbG9yLXByaW1hcnksXG5cbiAgY2hlY2tib3gtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLFxuICBjaGVja2JveC1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuXG4gIGNoZWNrYm94LWNoZWNrZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1jaGVja2VkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoZWNrYm94LWNoZWNrZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIGNoZWNrYm94LWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGVja2JveC1kaXNhYmxlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgc2VhcmNoLWJnOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMxNzE3NDksICM0MTM3ODkpLFxuXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBzbWFydC10YWJsZS1oZWFkZXItYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgc21hcnQtdGFibGUtYmctZXZlbjogIzNhMzQ3YSxcbiAgc21hcnQtdGFibGUtYmctYWN0aXZlOiBjb2xvci1iZy1hY3RpdmUsXG5cbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci13aWR0aDogMnB4LFxuICBzbWFydC10YWJsZS1wYWdpbmctZmctYWN0aXZlOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzbWFydC10YWJsZS1wYWdpbmctYmctYWN0aXZlOiBjb2xvci1wcmltYXJ5LFxuICBzbWFydC10YWJsZS1wYWdpbmctaG92ZXI6IHJnYmEoMCwgMCwgMCwgMC4yKSxcblxuICBiYWRnZS1mZy10ZXh0OiBjb2xvci13aGl0ZSxcbiAgYmFkZ2UtcHJpbWFyeS1iZy1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgYmFkZ2UtaW5mby1iZy1jb2xvcjogY29sb3ItaW5mbyxcbiAgYmFkZ2Utd2FybmluZy1iZy1jb2xvcjogY29sb3Itd2FybmluZyxcbiAgYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yOiBjb2xvci1kYW5nZXIsXG5cbiAgc3Bpbm5lci1iZzogcmdiYSg2MSwgNTUsIDEyOCwgMC45KSxcbiAgc3RlcHBlci1hY2NlbnQtY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG5cbiAgdGFicy1zZWxlY3RlZC1zZWNvbmQtY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtZGVncmVlczogMjBkZWcsXG5cbiAgY2FsZW5kYXItYWN0aXZlLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXNlbGVjdGVkLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXJhbmdlLWJnLWluLXJhbmdlOiAjNGU0MDk1LFxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiAjMzUyZjZlLFxuXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtYmc6ICMzMTJlNzUsXG5cbiAgdG9hc3RyLWNvbG9yLWZnOiBjb2xvci13aGl0ZSxcbiAgdG9hc3RyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIHRvYXN0ci1ib3JkZXI6IDAsXG4gIHRvYXN0ci1kZWZhdWx0LWJhY2tncm91bmQ6ICNiY2MzY2MsXG5cbiAgdG9vbHRpcC1mZzogY29sb3ItYmcsXG4gIHRvb2x0aXAtc3RhdHVzLWZnOiBjb2xvci13aGl0ZSxcblxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbiAgZGF0ZXBpY2tlci1zaGFkb3c6IHNoYWRvdyxcblxuICByYWRpby1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgcmFkaW8tY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLXByaW1hcnksXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgY29zbWljLCBkZWZhdWx0KTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuQGltcG9ydCAnZGVmYXVsdCc7XG5cbi8vIGRlZmF1bHQgdGhlIGJhc2UgdGhlbWVcbiR0aGVtZTogKFxuICBoZWFkZXItZmc6ICNmN2ZhZmIsXG4gIGhlYWRlci1iZzogIzExMTIxOCxcblxuICBsYXlvdXQtYmc6ICNmMWY1ZjgsXG5cbiAgY29sb3ItZmctaGVhZGluZzogIzE4MTgxOCxcbiAgY29sb3ItZmctdGV4dDogIzRiNGI0YixcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiBjb2xvci1mZyxcblxuICBzZXBhcmF0b3I6ICNjZGQ1ZGMsXG5cbiAgcmFkaXVzOiAwLjE3cmVtLFxuXG4gIHNjcm9sbGJhci1iZzogI2UzZTllZSxcblxuICBjb2xvci1wcmltYXJ5OiAjNzNhMWZmLFxuICBjb2xvci1zdWNjZXNzOiAjNWRjZmUzLFxuICBjb2xvci1pbmZvOiAjYmE3ZmVjLFxuICBjb2xvci13YXJuaW5nOiAjZmZhMzZiLFxuICBjb2xvci1kYW5nZXI6ICNmZjZiODMsXG5cbiAgYnRuLXNlY29uZGFyeS1iZzogI2VkZjJmNSxcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6ICNlZGYyZjUsXG5cbiAgYWN0aW9ucy1mZzogI2QzZGJlNSxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG5cbiAgc2lkZWJhci1iZzogI2UzZTllZSxcblxuICBib3JkZXItY29sb3I6ICNkNWRiZTAsXG5cbiAgbWVudS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LWZnOiBjb2xvci1mZy10ZXh0LFxuICBtZW51LWJnOiAjZTNlOWVlLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1hY3RpdmUtYmc6IG1lbnUtYmcsXG5cbiAgbWVudS1zdWJtZW51LWJnOiBtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYmc6ICNjZGQ1ZGMsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLXNoYWRvdzogbm9uZSxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWZnOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItYmc6IG1lbnUtYmcsXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci13aWR0aDogMC4xMjVyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tcGFkZGluZzogMC41cmVtIDFyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWNvbnRhaW5lci1wYWRkaW5nOiAwIDEuMjVyZW0sXG4gIG1lbnUtc3VibWVudS1wYWRkaW5nOiAwLjVyZW0sXG5cbiAgYnRuLWJvcmRlci1yYWRpdXM6IGJ0bi1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXMsXG5cbiAgYnRuLWhlcm8tZGVncmVlOiAwZGVnLFxuICBidG4taGVyby1wcmltYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zdWNjZXNzLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby13YXJuaW5nLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1pbmZvLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1kYW5nZXItZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tZ2xvdy1zaXplOiAwIDAgMjBweCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXM6IGJ0bi1ib3JkZXItcmFkaXVzLFxuXG4gIGNhcmQtc2hhZG93OiBub25lLFxuICBjYXJkLWJvcmRlci13aWR0aDogMXB4LFxuICBjYXJkLWJvcmRlci1jb2xvcjogYm9yZGVyLWNvbG9yLFxuICBjYXJkLWhlYWRlci1ib3JkZXItd2lkdGg6IDAsXG5cbiAgbGluay1jb2xvcjogIzVkY2ZlMyxcbiAgbGluay1jb2xvci1ob3ZlcjogIzdkY2ZlMyxcbiAgbGluay1jb2xvci12aXNpdGVkOiBsaW5rLWNvbG9yLFxuXG4gIGFjdGlvbnMtc2VwYXJhdG9yOiAjZjFmNGY1LFxuXG4gIG1vZGFsLXNlcGFyYXRvcjogYm9yZGVyLWNvbG9yLFxuXG4gIHRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXByaW1hcnksXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICB0YWJzLXNlcGFyYXRvcjogI2ViZWNlZSxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYmctYWN0aXZlOiBjb2xvci1wcmltYXJ5LFxuXG4gIHJvdXRlLXRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXByaW1hcnksXG5cbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG5cbiAgZm9vdGVyLXNoYWRvdzogbm9uZSxcbiAgZm9vdGVyLXNlcGFyYXRvcjogYm9yZGVyLWNvbG9yLFxuICBmb290ZXItZmctaGlnaGxpZ2h0OiAjMmEyYTJhLFxuXG4gIGNhbGVuZGFyLXRvZGF5LWl0ZW0tYmc6ICNhMmIyYzcsXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogI2UzZWNmZSxcbiAgY2FsZW5kYXItdG9kYXktZmc6IGNvbG9yLXdoaXRlLFxuXG4gIHRvYXN0ci1pY29uLXJhZGl1czogcmFkaXVzLFxuXG4gIGRhdGVwaWNrZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuKTtcblxuLy8gcmVnaXN0ZXIgdGhlIHRoZW1lXG4kbmItdGhlbWVzOiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsIGNvcnBvcmF0ZSwgZGVmYXVsdCk7XG4iLCIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2U6IDI0cHggIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGhzOiAoXG4gIHhzOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgc206ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBtZDogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIGxnOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgeGw6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlXG4pICFkZWZhdWx0O1xuXG5cbiRncmlkLWJyZWFrcG9pbnRzOiAoXG4gIHhzOiAwLFxuICBpczogNDAwcHgsXG4gIHNtOiA1NzZweCxcbiAgbWQ6IDc2OHB4LFxuICBsZzogOTkycHgsXG4gIHhsOiAxMjAwcHgsXG4gIHh4bDogMTQwMHB4LFxuICB4eHhsOiAxNjAwcHhcbik7XG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBpczogMzgwcHgsXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHgsXG4gIHh4bDogMTMyMHB4LFxuICB4eHhsOiAxNTAwcHhcbik7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gMC4wMnB4LCBudWxsKTtcbn1cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uLy4uL3N0eWxlcy90aGVtZXMnO1xyXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zL2JyZWFrcG9pbnRzJztcclxuQGltcG9ydCAnfkBuZWJ1bGFyL3RoZW1lL3N0eWxlcy9nbG9iYWwvYnJlYWtwb2ludHMnO1xyXG5cclxuQGluY2x1ZGUgbmItaW5zdGFsbC1jb21wb25lbnQoKSB7XHJcbiAgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XHJcbiAgICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xyXG4gICAgJHNpZGViYXItd2lkdGg6IDcuNXJlbTtcclxuXHJcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XHJcbiAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICYuY29sbGFwc2VkIHtcclxuICAgICAgd2lkdGg6IDA7XHJcblxyXG4gICAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgICB3aWR0aDogMDtcclxuXHJcbiAgICAgICAgLnNjcm9sbGFibGUge1xyXG4gICAgICAgICAgd2lkdGg6ICRzaWRlYmFyLXdpZHRoO1xyXG4gICAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgd2lkdGg6ICRzaWRlYmFyLXdpZHRoO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBuYi10aGVtZShjb2xvci1iZyk7XHJcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAgIC5zY3JvbGxhYmxlIHtcclxuICAgICAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZShjb3NtaWMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBuYi10aGVtZShsYXlvdXQtYmcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XHJcblxyXG4gICAgbWFyZ2luLXRvcDogbmItdGhlbWUoc2lkZWJhci1oZWFkZXItZ2FwKTtcclxuXHJcbiAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoY29ycG9yYXRlKSB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XHJcbiAgICAgIGhlaWdodDpcclxuICAgICAgICBjYWxjKCN7bmItdGhlbWUoc2lkZWJhci1oZWlnaHQpfSAtICN7bmItdGhlbWUoaGVhZGVyLWhlaWdodCl9IC0gI3tuYi10aGVtZShzaWRlYmFyLWhlYWRlci1nYXApfSkgIWltcG9ydGFudDtcclxuICAgICAgQGluY2x1ZGUgbmItbHRyKGJvcmRlci10b3AtcmlnaHQtcmFkaXVzLCBuYi10aGVtZShyYWRpdXMpKTtcclxuICAgICAgQGluY2x1ZGUgbmItcnRsKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsIG5iLXRoZW1lKHJhZGl1cykpO1xyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvcnBvcmF0ZSkge1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIG5iLXRoZW1lKHNlcGFyYXRvcik7XHJcbiAgICAgICAgaGVpZ2h0OlxyXG4gICAgICAgICAgY2FsYygje25iLXRoZW1lKHNpZGViYXItaGVpZ2h0KX0gLSAje25iLXRoZW1lKGhlYWRlci1oZWlnaHQpfSkgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC9kZWVwLyAuc2Nyb2xsYWJsZSB7XHJcbiAgICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZShjb3Jwb3JhdGUpIHtcclxuICAgICAgICBwYWRkaW5nLXRvcDogMDtcclxuXHJcbiAgICAgICAgLm1lbnUtaXRlbTpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICBib3JkZXItdG9wOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAubWFpbi1idG4ge1xyXG4gICAgICBwYWRkaW5nOiAwLjc1cmVtIDIuNXJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogLTJyZW07XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuMzIsIDEuNDgpO1xyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvcnBvcmF0ZSkge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IG5iLXRoZW1lKHJhZGl1cyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuICAgICAgfVxyXG4gICAgICBzcGFuIHtcclxuICAgICAgICBAaW5jbHVkZSBuYi1sdHIocGFkZGluZy1sZWZ0LCAwLjI1cmVtKTtcclxuICAgICAgICBAaW5jbHVkZSBuYi1ydGwocGFkZGluZy1yaWdodCwgMC4yNXJlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGksIHNwYW4ge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvbXBhY3RlZCB7XHJcblxyXG4gICAgICAvZGVlcC8gbmItc2lkZWJhci1oZWFkZXIge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubWFpbi1idG4ge1xyXG4gICAgICAgIHdpZHRoOiA0NnB4O1xyXG4gICAgICAgIGhlaWdodDogNDRweDtcclxuICAgICAgICBwYWRkaW5nOiAwLjM3NXJlbTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcclxuXHJcbiAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhzKSB7XHJcbiAgICAubWFpbi1jb250ZW50IHtcclxuICAgICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50O1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xyXG5cclxuICAgIG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcclxuXHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcblxyXG4gICAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoI3tuYi10aGVtZShzaWRlYmFyLWhlaWdodCl9IC0gI3tuYi10aGVtZShoZWFkZXItaGVpZ2h0KX0pICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgQGluY2x1ZGUgbmItbHRyKGJvcmRlci10b3AtcmlnaHQtcmFkaXVzLCAwKTtcclxuICAgICAgICBAaW5jbHVkZSBuYi1ydGwoYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cywgMCk7XHJcblxyXG4gICAgICAgIC5zY3JvbGxhYmxlIHtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5tYWluLWJ0biB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEBuZWJ1bGFyIHRoZW1pbmcgZnJhbWV3b3JrXHJcbkBpbXBvcnQgJ35AbmVidWxhci90aGVtZS9zdHlsZXMvdGhlbWluZyc7XHJcbi8vIEBuZWJ1bGFyIG91dCBvZiB0aGUgYm94IHRoZW1lc1xyXG5AaW1wb3J0ICd+QG5lYnVsYXIvdGhlbWUvc3R5bGVzL3RoZW1lcyc7XHJcblxyXG4vLyB3aGljaCB0aGVtZXMgeW91IHdoYXQgdG8gZW5hYmxlIChlbXB0eSB0byBlbmFibGUgYWxsKVxyXG4kbmItZW5hYmxlZC10aGVtZXM6IChkZWZhdWx0LCBjb3NtaWMsIGNvcnBvcmF0ZSk7XHJcblxyXG4kbmItdGhlbWVzOiBuYi1yZWdpc3Rlci10aGVtZSgoXHJcbiAvLyBhcHAgd2lzZSB2YXJpYWJsZXMgZm9yIGVhY2ggdGhlbWVcclxuICBzaWRlYmFyLWhlYWRlci1nYXA6IDJyZW0sXHJcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiBpbml0aWFsLFxyXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiAxNDAwcHgsXHJcblxyXG4gIGZvbnQtbWFpbjogUmFqZGhhbmksXHJcbiAgZm9udC1zZWNvbmRhcnk6IFJvYm90byxcclxuXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZDogI2ViZWZmNSxcclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kLXBlcmNlbnRhZ2U6IDUwJSxcclxuICBkcm9wcy1pY29uLWxpbmUtZ2FkaWVudDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzAxZGJiNSwgIzBiYmI3OSksXHJcblxyXG4gIGxpc3QtaXRlbS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgc2xpZGUtb3V0LWNvbnRhaW5lci13aWR0aDogMzAlLFxyXG4gIHNsaWRlLW91dC1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCAjZjdmYWZiIDAlLCAjZWNmMmY1IDEwMCUpLFxyXG4gIHNsaWRlLW91dC1zaGFkb3ctY29sb3I6IDAgNHB4IDE0cHggMCAjYTJkMmM4LFxyXG4gIHNsaWRlLW91dC1zaGFkb3ctY29sb3ItcnRsOiAwIDRweCAxNHB4IDAgI2EyZDJjOCxcclxuXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3gtc2hhZG93OiBub25lLFxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYmFja2dyb3VuZC1jb2xvcjogI2VjZjJmNSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci1jb2xvcjogI2ViZWZmMSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBlY29tbWVyY2UtY2FyZC1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzNlZGQ4MSAwJSwgIzNiZGRhZiAxMDAlKSxcclxuXHJcbiAgY29sb3ItcHJpbWFyeTogIzMxMTc3YSxcclxuICBjb2xvci1mZy1oaWdobGlnaHQ6ICMzMTE3N2EsXHJcbiksIGRlZmF1bHQsIGRlZmF1bHQpO1xyXG5cclxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoKFxyXG4gIC8vIGFwcCB3aXNlIHZhcmlhYmxlcyBmb3IgZWFjaCB0aGVtZVxyXG4gIHNpZGViYXItaGVhZGVyLWdhcDogMnJlbSxcclxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IGluaXRpYWwsXHJcbiAgbGF5b3V0LWNvbnRlbnQtd2lkdGg6IDE0MDBweCxcclxuXHJcbiAgZm9udC1tYWluOiBSYWpkaGFuaSxcclxuICBmb250LXNlY29uZGFyeTogUm9ib3RvLFxyXG5cclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kOiAjNGU0MWE1LFxyXG4gIHN3aXRjaGVyLWJhY2tncm91bmQtcGVyY2VudGFnZTogMTQlLFxyXG4gIGRyb3BzLWljb24tbGluZS1nYWRpZW50OiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjYTI1OGZlLCAjNzk1OGZhKSxcclxuXHJcbiAgbGlzdC1pdGVtLWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBzbGlkZS1vdXQtY29udGFpbmVyLXdpZHRoOiAzMCUsXHJcbiAgc2xpZGUtb3V0LWJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICMzMDJjNmUgMCUsICM0MjNmOGMgMTAwJSksXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvcjogMnB4IDAgM3B4IHJnYmEoMTksIDE5LCA5NCwgMC45KSxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yLXJ0bDogLTJweCAwIDNweCByZ2JhKDE5LCAxOSwgOTQsIDAuOSksXHJcblxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm94LXNoYWRvdzogbm9uZSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci1jb2xvcjogIzMzMmU3MyxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBlY29tbWVyY2UtY2FyZC1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzAwYzdjNyAwJSwgIzAwZDk3NyAxMDAlKSxcclxuKSwgY29zbWljLCBjb3NtaWMpO1xyXG5cclxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoKFxyXG4gIC8vIGFwcCB3aXNlIHZhcmlhYmxlcyBmb3IgZWFjaCB0aGVtZVxyXG4gIHNpZGViYXItaGVhZGVyLWdhcDogMnJlbSxcclxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IGluaXRpYWwsXHJcbiAgbGF5b3V0LWNvbnRlbnQtd2lkdGg6IDE0MDBweCxcclxuXHJcbiAgZm9udC1tYWluOiBSYWpkaGFuaSxcclxuICBmb250LXNlY29uZGFyeTogUm9ib3RvLFxyXG5cclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kOiAjMmIyZDM0LFxyXG4gIHN3aXRjaGVyLWJhY2tncm91bmQtcGVyY2VudGFnZTogMTQlLFxyXG4gIGRyb3BzLWljb24tbGluZS1nYWRpZW50OiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjZTllOGViLCAjYTdhMmJlKSxcclxuXHJcbiAgbGlzdC1pdGVtLWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBzbGlkZS1vdXQtY29udGFpbmVyLXdpZHRoOiAzMCUsXHJcbiAgc2xpZGUtb3V0LWJhY2tncm91bmQ6IFx0bGluZWFyLWdyYWRpZW50KDI3MGRlZywgI2Y3ZmFmYiAwJSwgI2VjZjJmNSAxMDAlKSxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yOiAwIDRweCAxNHB4IDAgI2EyZDJjOCxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yLXJ0bDogMCA0cHggMTRweCAwICNhMmQyYzgsXHJcblxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm94LXNoYWRvdzogbm9uZSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJhY2tncm91bmQtY29sb3I6ICNmN2ZhZmIsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItY29sb3I6ICNlYmVmZjEsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgZWNvbW1lcmNlLWNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHByb2dyZXNzLWJhci1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmZjlmNmYgMCUsICNmZjhiOTcgMTAwJSksXHJcbiksIGNvcnBvcmF0ZSwgY29ycG9yYXRlKTtcclxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIGlzIGEgc3RhcnRpbmcgcG9pbnQgd2hlcmUgd2UgZGVjbGFyZSB0aGUgbWFwcyBvZiB0aGVtZXMgYW5kIGdsb2JhbGx5IGF2YWlsYWJsZSBmdW5jdGlvbnMvbWl4aW5zXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XG4gIGZsZXg6IDAuMTUgIWltcG9ydGFudDsgfVxuXG4ubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gIHdpZHRoOiA3LjVyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCB7XG4gICAgd2lkdGg6IDA7IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgd2lkdGg6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHdpZHRoOiA3LjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIHdpZHRoOiA3LjVyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgIHdpZHRoOiA3LjVyZW07IH1cblxuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICBtYXJnaW4tdG9wOiAycmVtO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtIC0gMnJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjM3NXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMzc1cmVtOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDIuNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAtMnJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuMzIsIDEuNDgpOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGkge1xuICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSwgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgcGFkZGluZzogMC4zNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHRyYW5zaXRpb246IG5vbmU7IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogMzk5Ljk4cHgpIHtcbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLm1haW4tY29udGVudCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtKSAhaW1wb3J0YW50OyB9XG4gICAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG4gICAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAubWFpbi1idG4ge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbi5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XG4gIGZsZXg6IDAuMTUgIWltcG9ydGFudDsgfVxuXG4ubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciB7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcbiAgd2lkdGg6IDcuNXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQge1xuICAgIHdpZHRoOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgd2lkdGg6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgICAgd2lkdGg6IDcuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICB3aWR0aDogNy41cmVtO1xuICAgIGJhY2tncm91bmQ6ICMzZDM3ODA7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogIzJmMjk2YjsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgd2lkdGg6IDcuNXJlbTsgfVxuXG4ubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtIC0gMnJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuNXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41cmVtOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biB7XG4gICAgcGFkZGluZzogMC43NXJlbSAyLjVyZW07XG4gICAgbWFyZ2luLXRvcDogLTJyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAwLjNzIGN1YmljLWJlemllcigwLjE4LCAwLjg5LCAwLjMyLCAxLjQ4KTsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGkge1xuICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSwgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgcGFkZGluZzogMC4zNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHRyYW5zaXRpb246IG5vbmU7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4gc3BhbiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzOTkuOThweCkge1xuICAubmItdGhlbWUtY29zbWljIDpob3N0IC5tYWluLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0pICFpbXBvcnRhbnQ7IH1cbiAgICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLm1haW4tYnRuIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4ubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLWxheW91dC1jb2x1bW4uc21hbGwge1xuICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7IH1cblxuLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gIHdpZHRoOiA3LjVyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIHtcbiAgICB3aWR0aDogMDsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAwOyB9XG4gICAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHdpZHRoOiA3LjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDcuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICB3aWR0aDogNy41cmVtOyB9XG5cbi5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICBtYXJnaW4tdG9wOiAycmVtO1xuICBtYXJnaW4tdG9wOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0gLSAycmVtKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjZGQ1ZGM7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMTdyZW07IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMTdyZW07IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLnNjcm9sbGFibGUge1xuICAgIHBhZGRpbmctdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLnNjcm9sbGFibGUgLm1lbnUtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wOiBub25lOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biB7XG4gICAgcGFkZGluZzogMC43NXJlbSAyLjVyZW07XG4gICAgbWFyZ2luLXRvcDogLTJyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAwLjNzIGN1YmljLWJlemllcigwLjE4LCAwLjg5LCAwLjMyLCAxLjQ4KTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjE3cmVtOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSB7XG4gICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBpLCAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4ge1xuICAgIHdpZHRoOiA0NnB4O1xuICAgIGhlaWdodDogNDRweDtcbiAgICBwYWRkaW5nOiAwLjM3NXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgdHJhbnNpdGlvbjogbm9uZTsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDM5OS45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLm1haW4tY29udGVudCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSkgIWltcG9ydGFudDsgfVxuICAgICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG4gICAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgfVxuICAgICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAubWFpbi1idG4ge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuIl19 */\"","import { Component, OnDestroy } from '@angular/core';\r\nimport { NbThemeService } from '@nebular/theme';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n// TODO: move layouts into the framework\r\n@Component({\r\n selector: 'ngx-one-column-layout',\r\n styleUrls: ['./one-column.layout.scss'],\r\n template: `\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Support Us\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n `,\r\n})\r\nexport class OneColumnLayoutComponent implements OnDestroy {\r\n\r\n private alive = true;\r\n\r\n currentTheme: string;\r\n\r\n constructor(protected themeService: NbThemeService) {\r\n this.themeService.getJsTheme()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe(theme => {\r\n this.currentTheme = theme.name;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.alive = false;\r\n }\r\n}\r\n","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar {\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: -webkit-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n transition: transform 0.3s ease, -webkit-transform 0.3s ease;\\n width: 19rem;\\n overflow: hidden; }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.settings-sidebar {\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0); }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.settings-sidebar {\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0); }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.settings-sidebar.start {\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0); }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.settings-sidebar.start {\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0); }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.expanded, .nb-theme-default :host nb-sidebar.settings-sidebar.expanded.start {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0); }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .scrollable {\\n width: 19rem;\\n padding: 3.4rem 0.25rem; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 19rem;\\n background: #ffffff;\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: -webkit-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n transition: transform 0.3s ease, -webkit-transform 0.3s ease;\\n overflow: hidden;\\n position: relative; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 19rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 0;\\n background: transparent; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important;\\n border: 1px solid #ebeef2;\\n height: calc(100vh - 4.75rem) !important; }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.375rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.375rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .scrollable {\\n padding-top: 0; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .scrollable .menu-item:first-child {\\n border-top: none; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ nb-menu > .menu-items > .menu-item:first-child .menu-title::after {\\n content: 'new';\\n color: #ffffff;\\n margin-left: 1rem;\\n background: #ff4c6a;\\n padding: 0 0.5rem;\\n border-radius: 0.375rem;\\n font-size: 0.875rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ nb-menu .nb-e-commerce {\\n font-size: 2rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-default :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh) !important; }\\n [dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-default :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-cosmic :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar {\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: -webkit-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n transition: transform 0.3s ease, -webkit-transform 0.3s ease;\\n width: 19rem;\\n overflow: hidden; }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.settings-sidebar {\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0); }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.settings-sidebar {\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0); }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.settings-sidebar.start {\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0); }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.settings-sidebar.start {\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0); }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.expanded, .nb-theme-cosmic :host nb-sidebar.settings-sidebar.expanded.start {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0); }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .scrollable {\\n width: 19rem;\\n padding: 3.4rem 0.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 19rem;\\n background: #3d3780;\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: -webkit-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n transition: transform 0.3s ease, -webkit-transform 0.3s ease;\\n overflow: hidden;\\n position: relative;\\n background: #2f296b; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 19rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 0;\\n background: transparent; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important;\\n border: 1px solid #342e73;\\n height: calc(100vh - 4.75rem) !important; }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.5rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.5rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .scrollable {\\n padding-top: 0; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .scrollable .menu-item:first-child {\\n border-top: none; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ nb-menu > .menu-items > .menu-item:first-child .menu-title::after {\\n content: 'new';\\n color: #ffffff;\\n margin-left: 1rem;\\n background: #ff386a;\\n padding: 0 0.5rem;\\n border-radius: 0.5rem;\\n font-size: 0.875rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ nb-menu .nb-e-commerce {\\n font-size: 2rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-cosmic :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh) !important; }\\n [dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-cosmic :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-corporate :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar {\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: -webkit-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n transition: transform 0.3s ease, -webkit-transform 0.3s ease;\\n width: 19rem;\\n overflow: hidden; }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.settings-sidebar {\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0); }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.settings-sidebar {\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0); }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.settings-sidebar.start {\\n -webkit-transform: translate3d(-100%, 0, 0);\\n transform: translate3d(-100%, 0, 0); }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.settings-sidebar.start {\\n -webkit-transform: translate3d(100%, 0, 0);\\n transform: translate3d(100%, 0, 0); }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.expanded, .nb-theme-corporate :host nb-sidebar.settings-sidebar.expanded.start {\\n -webkit-transform: translate3d(0, 0, 0);\\n transform: translate3d(0, 0, 0); }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .scrollable {\\n width: 19rem;\\n padding: 3.4rem 0.25rem; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 19rem;\\n background: #ffffff;\\n -webkit-transition: -webkit-transform 0.3s ease;\\n transition: -webkit-transform 0.3s ease;\\n transition: transform 0.3s ease;\\n transition: transform 0.3s ease, -webkit-transform 0.3s ease;\\n overflow: hidden;\\n position: relative; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 19rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 0;\\n background: transparent; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important;\\n border: 1px solid #cdd5dc;\\n height: calc(100vh - 4.75rem) !important; }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.17rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable {\\n padding-top: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable .menu-item:first-child {\\n border-top: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n border-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ nb-menu > .menu-items > .menu-item:first-child .menu-title::after {\\n content: 'new';\\n color: #ffffff;\\n margin-left: 1rem;\\n background: #ff6b83;\\n padding: 0 0.5rem;\\n border-radius: 0.17rem;\\n font-size: 0.875rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ nb-menu .nb-e-commerce {\\n font-size: 2rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-corporate :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh) !important; }\\n [dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-corporate :host .main-btn {\\n display: none; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2xheW91dHMvc2FtcGxlL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxfdGhlbWluZy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9zYW1wbGUvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGNvcmVcXF9taXhpbnMuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvc2FtcGxlL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3NhbXBsZS9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcdGhlbWVzXFxfZGVmYXVsdC5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9zYW1wbGUvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2Nvc21pYy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9zYW1wbGUvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2NvcnBvcmF0ZS5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy9zYW1wbGUvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGdsb2JhbFxcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3NhbXBsZS9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvc3JjXFxhcHBcXEB0aGVtZVxcbGF5b3V0c1xcc2FtcGxlXFxzYW1wbGUubGF5b3V0LnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3NhbXBsZS9zYW1wbGUubGF5b3V0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdIOztHQUVHO0FDVEg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FDdlRGOzs7O0dBSUc7QUNKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBR3ZURjs7OztHQUlHO0FGSkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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aEI7QUFLRDtJQUNFLGdCQUFlO0lBQ2YsaUJBQWdCLEVBQ2pCO0FBRUQ7SUFDRSxZQUFXO0lBQ1gsYUFBWTtJQUNaLGtCQUFpQjtJQUNqQixtQkFBa0I7SUFDbEIseUJBQWdCO0lBQWhCLGlCQUFnQixFQUtqQjtBQUhDO01BQ0UsY0FBYSxFQUNkO0FEcEZMO0VDMEZBO0lBQ0UsNEJBQTJCLEVBRTVCLEVBQUE7QUQ3RkQ7RUNrR0E7SUFFRSxjQUFhLEVBV2Q7SUFUQztNQUNFLCtCQUFvRCxFQU9yRDtNQ3MvQkQ7UVBoMkJBLDJCTTVKNEMsRU5nSy9DO01PODFCRztRUGwyQkEsMEJNM0oyQyxFTitKOUM7TU03Sks7UUFDRSxlQUFjLEVBQ2Y7RUFJTDtJQUNFLGNBQWEsRUFDZCxFQUFBIiwiZmlsZSI6InNyYy9hcHAvQHRoZW1lL2xheW91dHMvc2FtcGxlL3NhbXBsZS5sYXlvdXQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuXG4vKipcbiAqIFRoaXMgaXMgYSBzdGFydGluZyBwb2ludCB3aGVyZSB3ZSBkZWNsYXJlIHRoZSBtYXBzIG9mIHRoZW1lcyBhbmQgZ2xvYmFsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucy9taXhpbnNcbiAqL1xuXG5AaW1wb3J0ICdjb3JlL21peGlucyc7XG5AaW1wb3J0ICdjb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICdjb3JlL2JyZWFraW5nLW5vdGljZSc7XG5cbiRuYi1lbmFibGVkLXRoZW1lczogKCkgIWdsb2JhbDtcbiRuYi1lbmFibGUtY3NzLXZhcmlhYmxlczogZmFsc2UgIWdsb2JhbDtcblxuJG5iLXRoZW1lczogKCkgIWdsb2JhbDtcbiRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZDogKCkgIWdsb2JhbDtcbiRuYi10aGVtZXMtZXhwb3J0OiAoKSAhZ2xvYmFsO1xuXG5AZnVuY3Rpb24gbmItdGhlbWUoJGtleSkge1xuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIG5iLWdldC12YWx1ZSgkdGhlbWUsICRrZXksICR2YWx1ZSkge1xuICBAaWYgKHR5cGUtb2YoJHZhbHVlKSA9PSAnc3RyaW5nJykge1xuICAgICR0bXA6IG1hcC1nZXQoJHRoZW1lLCAkdmFsdWUpO1xuXG4gICAgQGlmICgkdG1wICE9IG51bGwpIHtcbiAgICAgIEByZXR1cm4gbmItZ2V0LXZhbHVlKCR0aGVtZSwgJHZhbHVlLCAkdG1wKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIG1hcC1nZXQoJHRoZW1lLCAka2V5KTtcbn1cblxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tY3NzLXZhcmlhYmxlcygkdmFyaWFibGVzKSB7XG4gICRyZXN1bHQ6ICgpO1xuICBAZWFjaCAkdmFyLCAkdmFsdWUgaW4gJHZhcmlhYmxlcyB7XG4gICAgJHJlc3VsdDogbWFwLXNldCgkcmVzdWx0LCAkdmFyLCAnLS12YXIoI3skdmFyfSknKTtcbiAgfVxuXG4gIEBkZWJ1ZyAkcmVzdWx0O1xuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBmdW5jdGlvbiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSkge1xuICAkdGhlbWU6ICR0aGVtZSAhZ2xvYmFsO1xuICAkdGhlbWUtbmFtZTogJHRoZW1lLW5hbWUgIWdsb2JhbDtcbiAgQGlmICgkbmItZW5hYmxlLWNzcy12YXJpYWJsZXMpIHtcbiAgICAkdGhlbWU6IGNvbnZlcnQtdG8tY3NzLXZhcmlhYmxlcygkdGhlbWUpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiAkdGhlbWU7XG59XG5cbkBmdW5jdGlvbiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsICRuYW1lLCAkZGVmYXVsdDogbnVsbCkge1xuXG4gICR0aGVtZS1kYXRhOiAoKTtcblxuXG4gIEBpZiAoJGRlZmF1bHQgIT0gbnVsbCkge1xuXG4gICAgJHRoZW1lOiBtYXAtbWVyZ2UobWFwLWdldCgkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQsICRkZWZhdWx0KSwgJHRoZW1lKTtcbiAgICAkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkbmFtZSwgJHRoZW1lKSAhZ2xvYmFsO1xuXG4gICAgJHRoZW1lLWRhdGE6IG1hcC1zZXQoJHRoZW1lLWRhdGEsIGRhdGEsICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1leHBvcnQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1leHBvcnQsICRuYW1lLCBtYXAtc2V0KCR0aGVtZS1kYXRhLCBwYXJlbnQsICRkZWZhdWx0KSkgIWdsb2JhbDtcblxuICB9IEBlbHNlIHtcbiAgICAkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkbmFtZSwgJHRoZW1lKSAhZ2xvYmFsO1xuXG4gICAgJHRoZW1lLWRhdGE6IG1hcC1zZXQoJHRoZW1lLWRhdGEsIGRhdGEsICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1leHBvcnQ6IG1hcC1zZXQoJG5iLXRoZW1lcy1leHBvcnQsICRuYW1lLCBtYXAtc2V0KCR0aGVtZS1kYXRhLCBwYXJlbnQsIG51bGwpKSAhZ2xvYmFsO1xuICB9XG5cbiAgJHRoZW1lLXBhcnNlZDogKCk7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkdGhlbWUge1xuICAgICR0aGVtZS1wYXJzZWQ6IG1hcC1zZXQoJHRoZW1lLXBhcnNlZCwgJGtleSwgbmItZ2V0LXZhbHVlKCR0aGVtZSwgJGtleSwgJHZhbHVlKSk7XG4gIH1cblxuICAvLyBlbmFibGUgcmlnaHQgYXdheSB3aGVuIGluc3RhbGxlZFxuICAkdGhlbWUtcGFyc2VkOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLXBhcnNlZCwgJG5hbWUpO1xuICBAcmV0dXJuIG1hcC1zZXQoJG5iLXRoZW1lcywgJG5hbWUsICR0aGVtZS1wYXJzZWQpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LWVuYWJsZWQtdGhlbWVzKCkge1xuICAkdGhlbWVzLXRvLWluc3RhbGw6ICgpO1xuXG4gIEBpZiAobGVuZ3RoKCRuYi1lbmFibGVkLXRoZW1lcykgPiAwKSB7XG4gICAgQGVhY2ggJHRoZW1lLW5hbWUgaW4gJG5iLWVuYWJsZWQtdGhlbWVzIHtcbiAgICAgICR0aGVtZXMtdG8taW5zdGFsbDogbWFwLXNldCgkdGhlbWVzLXRvLWluc3RhbGwsICR0aGVtZS1uYW1lLCBtYXAtZ2V0KCRuYi10aGVtZXMsICR0aGVtZS1uYW1lKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkdGhlbWVzLXRvLWluc3RhbGw6ICRuYi10aGVtZXM7XG4gIH1cblxuICBAcmV0dXJuICR0aGVtZXMtdG8taW5zdGFsbDtcbn1cblxuQG1peGluIGluc3RhbGwtY3NzLXZhcmlhYmxlcygkdGhlbWUtbmFtZSwgJHZhcmlhYmxlcykge1xuICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0ge1xuICAgIEBlYWNoICR2YXIsICR2YWx1ZSBpbiAkdmFyaWFibGVzIHtcbiAgICAgIC0tI3skdmFyfTogJHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPOiB3ZSBoaWRlIDpob3N0IGluc2lkZSBvZiBpdCB3aGljaCBpcyBub3Qgb2J2aW91c1xuQG1peGluIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xuXG4gICR0aGVtZXMtdG8taW5zdGFsbDogZ2V0LWVuYWJsZWQtdGhlbWVzKCk7XG5cbiAgQGVhY2ggJHRoZW1lLW5hbWUsICR0aGVtZSBpbiAkdGhlbWVzLXRvLWluc3RhbGwge1xuICAgIC8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuICAgIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSA6aG9zdCB7XG4gICAgICAkdGhlbWU6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbmItZm9yLXRoZW1lKCRuYW1lKSB7XG4gIEBpZiAoJHRoZW1lLW5hbWUgPT0gJG5hbWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuICAgIFxuLy8gQWRkIGNvbnRlbnQgZm9yIHRoZW1lIGludG8gYSBsaXN0IG9mIHRoZW1lc1xuQG1peGluIG5iLWZvci10aGVtZXMoJG5hbWVzLi4uKSB7XG4gIEBlYWNoICRuYW1lIGluICRuYW1lcyB7XG4gICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKCRuYW1lKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG5iLWV4Y2VwdC10aGVtZSgkbmFtZSkge1xuICBAaWYgKCR0aGVtZS1uYW1lICE9ICRuYW1lKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gQWRkIGNvbnRlbnQgZXhjZXB0IGZvciB0aGVtZSBpbnRvIGEgbGlzdCBvZiB0aGVtZXNcbkBtaXhpbiBuYi1leGNlcHQtZm9yLXRoZW1lcygkbmFtZXMuLi4pIHtcbiAgQGVhY2ggJG5hbWUgaW4gJG5hbWVzIHtcbiAgICBAaW5jbHVkZSBuYi1leGNlcHQtdGhlbWUoJG5hbWUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBUT0RPOiBhbm90aGVyIG1peGluZyBmb3IgdGhlIGFsbW9zdCBzYW1lIHRoaW5nXG5AbWl4aW4gbmItaW5zdGFsbC1yb290LWNvbXBvbmVudCgpIHtcbiAgQHdhcm4gJ2BuYi1pbnN0YWxsLXJvb3QtY29tcG9uZW50YCBpcyBkZXByaWNhdGVkLCByZXBsYWNlIHdpdGggYG5iLWluc3RhbGwtY29tcG9uZW50YCwgYXMgYGJvZHlgIGlzIHJvb3QgZWxlbWVudCBub3cnO1xuXG4gIEBpbmNsdWRlIG5iLWluc3RhbGwtY29tcG9uZW50KCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1pbnN0YWxsLWdsb2JhbCgpIHtcbiAgJHRoZW1lcy10by1pbnN0YWxsOiBnZXQtZW5hYmxlZC10aGVtZXMoKTtcblxuICBAZWFjaCAkdGhlbWUtbmFtZSwgJHRoZW1lIGluICR0aGVtZXMtdG8taW5zdGFsbCB7XG4gICAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IHtcbiAgICAgICR0aGVtZTogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgJHRlbXA6IG5iLWJyZWFraW5nLW5vdGljZS1zaG93KCR0aGVtZSk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBtaXhpbiBuYi1zY3JvbGxiYXJzKCRmZywgJGJnLCAkc2l6ZSwgJGJvcmRlci1yYWRpdXM6ICRzaXplIC8gMikge1xuICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICRmZztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkYmc7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmVcbiAgLy8gRm9yIEludGVybmV0IEV4cGxvcmVyXG4gIHNjcm9sbGJhci1mYWNlLWNvbG9yOiAkZmc7XG4gIHNjcm9sbGJhci10cmFjay1jb2xvcjogJGJnO1xufVxuXG5AbWl4aW4gbmItcmFkaWFsLWdyYWRpZW50KCRjb2xvci0xLCAkY29sb3ItMiwgJGNvbG9yLTMpIHtcbiAgYmFja2dyb3VuZDogJGNvbG9yLTI7IC8qIE9sZCBicm93c2VycyAqL1xuICBiYWNrZ3JvdW5kOiAtbW96LXJhZGlhbC1ncmFkaWVudChib3R0b20sIGVsbGlwc2UgY292ZXIsICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogRkYzLjYtMTUgKi9cbiAgYmFja2dyb3VuZDogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoYm90dG9tLCBlbGxpcHNlIGNvdmVyLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIENocm9tZTEwLTI1LFNhZmFyaTUuMS02ICovXG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGJvdHRvbSwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBXM0MsIElFMTArLCBGRjE2KywgQ2hyb21lMjYrLCBPcGVyYTEyKywgU2FmYXJpNysgKi9cbiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJGNvbG9yLTEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRDb2xvcnN0cj0nJGNvbG9yLTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFkaWVudFR5cGU9MSk7IC8qIElFNi05IGZhbGxiYWNrIG9uIGhvcml6b250YWwgZ3JhZGllbnQgKi9cbn1cblxuQG1peGluIG5iLXJpZ2h0LWdyYWRpZW50KCRsZWZ0LWNvbG9yLCAkcmlnaHQtY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbGVmdC1jb2xvciwgJHJpZ2h0LWNvbG9yKTtcbn1cblxuQG1peGluIG5iLWhlYWRpbmdzKCRmcm9tOiAxLCAkdG86IDYpIHtcbiAgQGZvciAkaSBmcm9tICRmcm9tIHRocm91Z2ggJHRvIHtcbiAgICBoI3skaX0ge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMtYWN0aXZlIHtcbiAgJjpmb2N1cyxcbiAgJjphY3RpdmUsXG4gICY6aG92ZXIge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBjZW50ZXItaG9yaXpvbnRhbC1hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gIGxlZnQ6IDUwJTtcbn1cblxuQG1peGluIGluc3RhbGwtdGh1bWIoKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci10aHVtYidcbiAgICAnOjotbW96LXJhbmdlLXRodW1iJ1xuICAgICc6Oi1tcy10aHVtYidcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtdHJhY2soKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjaydcbiAgICAnOjotbW96LXJhbmdlLXRyYWNrJ1xuICAgICc6Oi1tcy10cmFjaydcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKSB7XG4gICRwbGFjZWhvbGRlci1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyJ1xuICAgICc6Oi1tb3otcGxhY2Vob2xkZXInXG4gICAgJzotbW96LXBsYWNlaG9sZGVyJ1xuICAgICc6LW1zLWlucHV0LXBsYWNlaG9sZGVyJ1xuICApO1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpO1xuICB9XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICRwbGFjZWhvbGRlci1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzI3skc2VsZWN0b3J9IHtcbiAgICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyLWZvY3VzKCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpIHtcbiAgY29sb3I6ICRjb2xvcjtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlci1mb2N1cygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG59XG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGUuLi4pIHtcbiAgJG1heDogbGVuZ3RoKCRhbmltYXRlKTtcbiAgJGFuaW1hdGlvbnM6ICcnO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XG4gICAgJGFuaW1hdGlvbnM6ICN7JGFuaW1hdGlvbnMgKyBudGgoJGFuaW1hdGUsICRpKX07XG5cbiAgICBAaWYgJGkgPCAkbWF4IHtcbiAgICAgICRhbmltYXRpb25zOiAjeyRhbmltYXRpb25zICsgJywgJ307XG4gICAgfVxuICB9XG4gIC13ZWJraXQtYW5pbWF0aW9uOiAkYW5pbWF0aW9ucztcbiAgLW1vei1hbmltYXRpb246ICAgICRhbmltYXRpb25zO1xuICAtby1hbmltYXRpb246ICAgICAgJGFuaW1hdGlvbnM7XG4gIGFuaW1hdGlvbjogICAgICAgICAkYW5pbWF0aW9ucztcbn1cblxuQG1peGluIGtleWZyYW1lcygkYW5pbWF0aW9uTmFtZSkge1xuICBALXdlYmtpdC1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1vLWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuQG1peGluIGJ0bi1wdWxzZSgkbmFtZSwgJGNvbG9yKSB7XG4gICYuYnRuLXB1bHNlIHtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24oYnRuLSN7JG5hbWV9LXB1bHNlIDEuNXMgaW5maW5pdGUpO1xuICB9XG5cbiAgQGluY2x1ZGUga2V5ZnJhbWVzKGJ0bi0jeyRuYW1lfS1wdWxzZSkge1xuICAgIDAlIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBvcGFjaXR5OiBuYi10aGVtZShidG4tZGlzYWJsZWQtb3BhY2l0eSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMXJlbSAwICRjb2xvcjtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIH1cbiAgfVxufVxuXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG5cbkBtaXhpbiBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCRzZWxlY3RvciwgJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICAjeyRzZWxlY3Rvcn0gJiB7XG4gICAgQGlmICRwcm9wICE9IG51bGwge1xuICAgICAgI3skcHJvcH06ICR2YWx1ZTtcbiAgICB9XG5cbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItbHRyKCRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgQGluY2x1ZGUgX3ByZXBlbmQtd2l0aC1zZWxlY3RvcignW2Rpcj1sdHJdJywgJHByb3AsICR2YWx1ZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1ydGwoJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICBAaW5jbHVkZSBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCdbZGlyPXJ0bF0nLCAkcHJvcCwgJHZhbHVlKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH07XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbi8vLyBTbGlnaHRseSBsaWdodGVuIGEgY29sb3Jcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGNvbG9yIHRvIHRpbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBwZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHJldHVybmVkIGNvbG9yXG4vLy8gQHJldHVybiB7Q29sb3J9XG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KHdoaXRlLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbiBhIGNvbG9yXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byBzaGFkZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIHBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gcmV0dXJuZWQgY29sb3Jcbi8vLyBAcmV0dXJuIHtDb2xvcn1cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KGJsYWNrLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIG1hcC1zZXQoJG1hcCwgJGtleSwgJHZhbHVlOiBudWxsKSB7XG4gICRuZXc6ICgka2V5OiAkdmFsdWUpO1xuICBAcmV0dXJuIG1hcC1tZXJnZSgkbWFwLCAkbmV3KTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuXG4kdGhlbWU6IChcbiAgZm9udC1tYWluOiB1bnF1b3RlKCdcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZicpLFxuICBmb250LXNlY29uZGFyeTogZm9udC1tYWluLFxuXG4gIGZvbnQtd2VpZ2h0LXRoaW46IDIwMCxcbiAgZm9udC13ZWlnaHQtbGlnaHQ6IDMwMCxcbiAgZm9udC13ZWlnaHQtbm9ybWFsOiA0MDAsXG4gIGZvbnQtd2VpZ2h0LWJvbGRlcjogNTAwLFxuICBmb250LXdlaWdodC1ib2xkOiA2MDAsXG4gIGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQ6IDgwMCxcblxuICAvLyBUT0RPOiB1c2UgaXQgYXMgYSBkZWZhdWx0IGZvbnQtc2l6ZVxuICBiYXNlLWZvbnQtc2l6ZTogMTZweCxcblxuICBmb250LXNpemUteGxnOiAxLjI1cmVtLFxuICBmb250LXNpemUtbGc6IDEuMTI1cmVtLFxuICBmb250LXNpemU6IDFyZW0sXG4gIGZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG4gIGZvbnQtc2l6ZS14czogMC43NXJlbSxcblxuICByYWRpdXM6IDAuMzc1cmVtLFxuICBwYWRkaW5nOiAxLjI1cmVtLFxuICBtYXJnaW46IDEuNXJlbSxcbiAgbGluZS1oZWlnaHQ6IDEuMjUsXG5cbiAgY29sb3ItYmc6ICNmZmZmZmYsXG4gIGNvbG9yLWJnLWFjdGl2ZTogI2U5ZWRmMixcbiAgY29sb3ItZmc6ICNhNGFiYjMsXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICMyYTJhMmEsXG4gIGNvbG9yLWZnLXRleHQ6ICM0YjRiNGIsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogIzQwZGM3ZSxcblxuICBzZXBhcmF0b3I6ICNlYmVlZjIsXG5cbiAgY29sb3ItZ3JheTogcmdiYSg4MSwgMTEzLCAxNjUsIDAuMTUpLFxuICBjb2xvci1uZXV0cmFsOiB0cmFuc3BhcmVudCxcbiAgY29sb3Itd2hpdGU6ICNmZmZmZmYsXG4gIGNvbG9yLWRpc2FibGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCksXG5cbiAgY29sb3ItcHJpbWFyeTogIzhhN2ZmZixcbiAgY29sb3Itc3VjY2VzczogIzQwZGM3ZSxcbiAgY29sb3ItaW5mbzogIzRjYTZmZixcbiAgY29sb3Itd2FybmluZzogI2ZmYTEwMCxcbiAgY29sb3ItZGFuZ2VyOiAjZmY0YzZhLFxuXG4gIC8vIFRPRE86IG1vdmUgdG8gY29uc3RhbnRzXG4gIHNvY2lhbC1jb2xvci1mYWNlYm9vazogIzNiNTk5OCxcbiAgc29jaWFsLWNvbG9yLXR3aXR0ZXI6ICM1NWFjZWUsXG4gIHNvY2lhbC1jb2xvci1nb29nbGU6ICNkZDRiMzksXG4gIHNvY2lhbC1jb2xvci1saW5rZWRpbjogIzAxNzdiNSxcbiAgc29jaWFsLWNvbG9yLWdpdGh1YjogIzZiNmI2YixcbiAgc29jaWFsLWNvbG9yLXN0YWNrb3ZlcmZsb3c6ICMyZjk2ZTgsXG4gIHNvY2lhbC1jb2xvci1kcmliYmxlOiAjZjI2Nzk4LFxuICBzb2NpYWwtY29sb3ItYmVoYW5jZTogIzAwOTNmYSxcblxuICBib3JkZXItY29sb3I6IGNvbG9yLWdyYXksXG4gIHNoYWRvdzogMCAycHggMTJweCAwICNkZmUzZWIsXG5cbiAgbGluay1jb2xvcjogIzNkY2M2ZCxcbiAgbGluay1jb2xvci1ob3ZlcjogIzJlZTU2YixcbiAgbGluay1jb2xvci12aXNpdGVkOiBsaW5rLWNvbG9yLFxuXG4gIHNjcm9sbGJhci1mZzogI2RhZGFkYSxcbiAgc2Nyb2xsYmFyLWJnOiAjZjJmMmYyLFxuICBzY3JvbGxiYXItd2lkdGg6IDVweCxcbiAgc2Nyb2xsYmFyLXRodW1iLXJhZGl1czogMi41cHgsXG5cbiAgcmFkaWFsLWdyYWRpZW50OiBub25lLFxuICBsaW5lYXItZ3JhZGllbnQ6IG5vbmUsXG5cbiAgY2FyZC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FyZC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGNhcmQtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FyZC1mZzogY29sb3ItZmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgY2FyZC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWJnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWlnaHQteHhzbWFsbDogOTZweCxcbiAgY2FyZC1oZWlnaHQteHNtYWxsOiAyMTZweCxcbiAgY2FyZC1oZWlnaHQtc21hbGw6IDMzNnB4LFxuICBjYXJkLWhlaWdodC1tZWRpdW06IDQ1NnB4LFxuICBjYXJkLWhlaWdodC1sYXJnZTogNTc2cHgsXG4gIGNhcmQtaGVpZ2h0LXhsYXJnZTogNjk2cHgsXG4gIGNhcmQtaGVpZ2h0LXh4bGFyZ2U6IDgxNnB4LFxuICBjYXJkLXNoYWRvdzogc2hhZG93LFxuICBjYXJkLWJvcmRlci13aWR0aDogMCxcbiAgY2FyZC1ib3JkZXItdHlwZTogc29saWQsXG4gIGNhcmQtYm9yZGVyLWNvbG9yOiBjb2xvci1iZyxcbiAgY2FyZC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNhcmQtcGFkZGluZzogcGFkZGluZyxcbiAgY2FyZC1tYXJnaW46IG1hcmdpbixcbiAgY2FyZC1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBjYXJkLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgY2FyZC1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIGNhcmQtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGNhcmQtaGVhZGVyLWZnOiBjb2xvci1mZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWZnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWFkZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBjYXJkLWhlYWRlci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYXJkLWhlYWRlci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjYXJkLWhlYWRlci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYXJkLWhlYWRlci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBjYXJkLWhlYWRlci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgY2FyZC1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgY2FyZC1oZWFkZXItYm9yZGVyLWNvbG9yOiBjYXJkLXNlcGFyYXRvcixcblxuICBoZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBoZWFkZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIGhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgaGVhZGVyLWJnOiBjb2xvci1iZyxcbiAgaGVhZGVyLWhlaWdodDogNC43NXJlbSxcbiAgaGVhZGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGhlYWRlci1zaGFkb3c6IHNoYWRvdyxcblxuICBmb290ZXItaGVpZ2h0OiA0LjcyNXJlbSxcbiAgZm9vdGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGZvb3Rlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWZnLWhpZ2hsaWdodDogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgZm9vdGVyLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBmb290ZXItc2hhZG93OiBzaGFkb3csXG5cbiAgbGF5b3V0LWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIGxheW91dC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbGF5b3V0LWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgbGF5b3V0LWZnOiBjb2xvci1mZyxcbiAgbGF5b3V0LWJnOiAjZWJlZmY1LFxuICBsYXlvdXQtbWluLWhlaWdodDogMTAwdmgsXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiA5MDBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLW1pbi13aWR0aDogMzAwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1tYXgtd2lkdGg6IDE5MjBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLWJnOiBsYXlvdXQtYmcsXG4gIGxheW91dC13aW5kb3ctbW9kZS1wYWRkaW5nLXRvcDogNC43NXJlbSxcbiAgbGF5b3V0LXdpbmRvdy1zaGFkb3c6IHNoYWRvdyxcbiAgbGF5b3V0LXBhZGRpbmc6IDIuMjVyZW0gMi4yNXJlbSAwLjc1cmVtLFxuICBsYXlvdXQtbWVkaXVtLXBhZGRpbmc6IDEuNXJlbSAxLjVyZW0gMC41cmVtLFxuICBsYXlvdXQtc21hbGwtcGFkZGluZzogMXJlbSAxcmVtIDAsXG5cbiAgc2lkZWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc2lkZWJhci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNpZGViYXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNpZGViYXItYmc6IGNvbG9yLWJnLFxuICBzaWRlYmFyLWhlaWdodDogMTAwdmgsXG4gIHNpZGViYXItd2lkdGg6IDE2cmVtLFxuICBzaWRlYmFyLXdpZHRoLWNvbXBhY3Q6IDMuNXJlbSxcbiAgc2lkZWJhci1wYWRkaW5nOiBwYWRkaW5nLFxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IDMuNXJlbSxcbiAgc2lkZWJhci1mb290ZXItaGVpZ2h0OiAzLjVyZW0sXG4gIHNpZGViYXItc2hhZG93OiBzaGFkb3csXG5cbiAgbWVudS1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIG1lbnUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1lbnUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuXG4gIG1lbnUtc3VibWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oaWdobGlnaHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiBub25lLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItZmc6IG1lbnUtc3VibWVudS1hY3RpdmUtZmcsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1iZzogbWVudS1zdWJtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItd2lkdGg6IDAuMTI1cmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1lbnUtc3VibWVudS1pdGVtLXBhZGRpbmc6IDAuNXJlbSAxcmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1jb250YWluZXItcGFkZGluZzogMCAxLjI1cmVtLFxuICBtZW51LXN1Ym1lbnUtcGFkZGluZzogMC41cmVtLFxuXG4gIG1lbnUtZ3JvdXAtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1ncm91cC1mb250LXNpemU6IDAuODc1cmVtLFxuICBtZW51LWdyb3VwLWZnOiBjb2xvci1mZyxcbiAgbWVudS1ncm91cC1wYWRkaW5nOiAxcmVtIDEuMjVyZW0sXG4gIG1lbnUtaXRlbS1wYWRkaW5nOiAwLjY3NXJlbSAwLjc1cmVtLFxuICBtZW51LWl0ZW0tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIG1lbnUtaWNvbi1mb250LXNpemU6IDIuNXJlbSxcbiAgbWVudS1pY29uLW1hcmdpbjogMCAwLjI1cmVtIDAsXG4gIG1lbnUtaWNvbi1jb2xvcjogY29sb3ItZmcsXG4gIG1lbnUtaWNvbi1hY3RpdmUtY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHRhYnMtY29udGVudC1mb250LWZhbWlseTogZm9udC1tYWluLFxuICB0YWJzLWNvbnRlbnQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIHRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICB0YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHRhYnMtY29udGVudC1wYWRkaW5nOiAwLFxuICB0YWJzLWhlYWRlci1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHRhYnMtZmc6IGNvbG9yLWZnLFxuICB0YWJzLWZnLWRpc2FibGVkOiB0YWJzLWZnLFxuICB0YWJzLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIHRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLWRlZ3JlZXM6IDAsXG4gIHRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgcm91dGUtdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHJvdXRlLXRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHJvdXRlLXRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICByb3V0ZS10YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHJvdXRlLXRhYnMtaGVhZGVyLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgcm91dGUtdGFicy1mZzogY29sb3ItZmcsXG4gIHJvdXRlLXRhYnMtZmctZGlzYWJsZWQ6IHJvdXRlLXRhYnMtZmcsXG4gIHJvdXRlLXRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgcm91dGUtdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJvdXRlLXRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgdXNlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgdXNlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHVzZXItYmc6IGNvbG9yLWJnLFxuICB1c2VyLWZnOiBjb2xvci1mZyxcbiAgdXNlci1mZy1oaWdobGlnaHQ6ICNiY2MzY2MsXG4gIHVzZXItZm9udC1mYW1pbHktc2Vjb25kYXJ5OiBmb250LXNlY29uZGFyeSxcbiAgdXNlci1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIHVzZXItc2l6ZS1tZWRpdW06IDIuNXJlbSxcbiAgdXNlci1zaXplLWxhcmdlOiAzLjI1cmVtLFxuICB1c2VyLXNpemUteGxhcmdlOiA0cmVtLFxuXG4gIHBvcG92ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHBvcG92ZXItYmc6IGNvbG9yLWJnLFxuICBwb3BvdmVyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgcG9wb3Zlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIHBvcG92ZXItc2hhZG93OiBub25lLFxuICBwb3BvdmVyLWFycm93LXNpemU6IDExcHgsXG5cbiAgY29udGV4dC1tZW51LWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjb250ZXh0LW1lbnUtYmc6IGNvbG9yLWJnLFxuICBjb250ZXh0LW1lbnUtYWN0aXZlLWZnOiBjb2xvci13aGl0ZSxcbiAgY29udGV4dC1tZW51LWFjdGl2ZS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY29udGV4dC1tZW51LXNoYWRvdzogbm9uZSxcbiAgY29udGV4dC1tZW51LWFycm93LXNpemU6IDExcHgsXG5cbiAgYWN0aW9ucy1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWN0aW9ucy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGFjdGlvbnMtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhY3Rpb25zLWZnOiBjb2xvci1mZyxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG4gIGFjdGlvbnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjdGlvbnMtcGFkZGluZzogcGFkZGluZyxcbiAgYWN0aW9ucy1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1tZWRpdW06IDIuMjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1sYXJnZTogMy41cmVtLFxuXG4gIHNlYXJjaC1idG4tb3Blbi1mZzogY29sb3ItZmcsXG4gIHNlYXJjaC1idG4tY2xvc2UtZmc6XHRjb2xvci1mZyxcbiAgc2VhcmNoLWJnOiBsYXlvdXQtYmcsXG4gIHNlYXJjaC1iZy1zZWNvbmRhcnk6IGNvbG9yLWZnLFxuICBzZWFyY2gtdGV4dDogY29sb3ItZmctaGVhZGluZyxcbiAgc2VhcmNoLWluZm86IGNvbG9yLWZnLFxuICBzZWFyY2gtZGFzaDogY29sb3ItZmcsXG4gIHNlYXJjaC1wbGFjZWhvbGRlcjogY29sb3ItZmcsXG5cbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBzbWFydC10YWJsZS1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWJnOiBjb2xvci1iZyxcblxuICBzbWFydC10YWJsZS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBzbWFydC10YWJsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc21hcnQtdGFibGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgc21hcnQtdGFibGUtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzbWFydC10YWJsZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtYmc6IGNvbG9yLWJnLFxuXG4gIHNtYXJ0LXRhYmxlLWJnLWV2ZW46ICNmNWY3ZmMsXG4gIHNtYXJ0LXRhYmxlLWZnLXNlY29uZGFyeTogY29sb3ItZmcsXG4gIHNtYXJ0LXRhYmxlLWJnLWFjdGl2ZTogI2U2ZjNmZixcbiAgc21hcnQtdGFibGUtcGFkZGluZzogMC44NzVyZW0gMS4yNXJlbSxcbiAgc21hcnQtdGFibGUtZmlsdGVyLXBhZGRpbmc6IDAuMzc1cmVtIDAuNXJlbSxcbiAgc21hcnQtdGFibGUtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ib3JkZXItd2lkdGg6IDFweCxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWZnLWFjdGl2ZTogI2ZmZmZmZixcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJnLWFjdGl2ZTogY29sb3Itc3VjY2VzcyxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWhvdmVyOiByZ2JhKDAsIDAsIDAsIDAuMDUpLFxuXG4gIHRvYXN0ci1iZzogY29sb3ItYmcsXG4gIHRvYXN0ci1wYWRkaW5nOiAxLjEyNXJlbSxcbiAgdG9hc3RyLWZnOiBjb2xvci1mZy10ZXh0LFxuICB0b2FzdHItYm9yZGVyOiAwLjEyNXJlbSBzb2xpZCxcbiAgdG9hc3RyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgdG9hc3RyLWJvcmRlci1jb2xvcjogI2JjYzNjYyxcbiAgdG9hc3RyLWljb24tcmFkaXVzOiAwLjI1cmVtLFxuICB0b2FzdHItc2hhZG93OiBzaGFkb3csXG5cbiAgYnRuLWZnOiBjb2xvci13aGl0ZSxcbiAgYnRuLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYnRuLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYnRuLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgYnRuLWN1cnNvcjogZGVmYXVsdCxcblxuICBidG4tcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgYnRuLXNlY29uZGFyeS1iZzogdHJhbnNwYXJlbnQsXG4gIGJ0bi1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBidG4tc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgYnRuLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGJ0bi1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogI2RhZGZlNixcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXItd2lkdGg6IDJweCxcblxuICBidG4tcGFkZGluZy15LWxnOiAwLjg3NXJlbSxcbiAgYnRuLXBhZGRpbmcteC1sZzogMS43NXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuXG4gIC8vIGRlZmF1bHQgc2l6ZVxuICBidG4tcGFkZGluZy15LW1kOiAwLjc1cmVtLFxuICBidG4tcGFkZGluZy14LW1kOiAxLjVyZW0sXG4gIGJ0bi1mb250LXNpemUtbWQ6IDFyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS1zbTogMC42MjVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtc206IDEuNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS14czogMC41cmVtLFxuICBidG4tcGFkZGluZy14LXhzOiAxLjI1cmVtLFxuICBidG4tZm9udC1zaXplLXhzOiAwLjc1cmVtLFxuXG4gIGJ0bi1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGJ0bi1yZWN0YW5nbGUtYm9yZGVyLXJhZGl1czogMC4yNXJlbSxcbiAgYnRuLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1czogMC43NXJlbSxcbiAgYnRuLXJvdW5kLWJvcmRlci1yYWRpdXM6IDEuNXJlbSxcblxuICBidG4taGVyby1zaGFkb3c6IG5vbmUsXG4gIGJ0bi1oZXJvLXRleHQtc2hhZG93OiBub25lLFxuICBidG4taGVyby1iZXZlbC1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kZWdyZWU6IDIwZGVnLFxuICBidG4taGVyby1wcmltYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zdWNjZXNzLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby13YXJuaW5nLWRlZ3JlZTogMTBkZWcsXG4gIGJ0bi1oZXJvLWluZm8tZGVncmVlOiAtMTBkZWcsXG4gIGJ0bi1oZXJvLWRhbmdlci1kZWdyZWU6IC0yMGRlZyxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG5cbiAgYnRuLW91dGxpbmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWhvdmVyLWZnOiAjZmZmZmZmLFxuICBidG4tb3V0bGluZS1mb2N1cy1mZzogY29sb3ItZmctaGVhZGluZyxcblxuICBidG4tZ3JvdXAtYmc6IGxheW91dC1iZyxcbiAgYnRuLWdyb3VwLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tZ3JvdXAtc2VwYXJhdG9yOiAjZGFkZmU2LFxuXG4gIGZvcm0tY29udHJvbC10ZXh0LXByaW1hcnktY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvcm0tY29udHJvbC1iZzogY29sb3ItYmcsXG4gIGZvcm0tY29udHJvbC1mb2N1cy1iZzogY29sb3ItYmcsXG5cbiAgZm9ybS1jb250cm9sLWJvcmRlci13aWR0aDogMnB4LFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBmb3JtLWNvbnRyb2wtc2VtaS1yb3VuZC1ib3JkZXItcmFkaXVzOiAwLjc1cmVtLFxuICBmb3JtLWNvbnRyb2wtcm91bmQtYm9yZGVyLXJhZGl1czogMS41cmVtLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOiAjZGFkZmU2LFxuICBmb3JtLWNvbnRyb2wtc2VsZWN0ZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuXG4gIGZvcm0tY29udHJvbC1pbmZvLWJvcmRlci1jb2xvcjogY29sb3ItaW5mbyxcbiAgZm9ybS1jb250cm9sLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBmb3JtLWNvbnRyb2wtZGFuZ2VyLWJvcmRlci1jb2xvcjogY29sb3ItZGFuZ2VyLFxuICBmb3JtLWNvbnRyb2wtd2FybmluZy1ib3JkZXItY29sb3I6IGNvbG9yLXdhcm5pbmcsXG5cbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yOiBjb2xvci1mZyxcbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZTogMXJlbSxcblxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplOiAxcmVtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZzogMC43NXJlbSAxLjEyNXJlbSxcbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZy1zbTogMC4zNzVyZW0gMS4xMjVyZW0sXG4gIGZvcm0tY29udHJvbC1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmctbGc6IDEuMTI1cmVtLFxuXG4gIGZvcm0tY29udHJvbC1sYWJlbC1mb250LXdlaWdodDogNDAwLFxuXG4gIGZvcm0tY29udHJvbC1mZWVkYmFjay1mb250LXNpemU6IDAuODc1cmVtLFxuICBmb3JtLWNvbnRyb2wtZmVlZGJhY2stZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcblxuICBjaGVja2JveC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWJvcmRlci1jb2xvcjogZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcixcbiAgY2hlY2tib3gtY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcblxuICBjaGVja2JveC1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBjaGVja2JveC1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBjaGVja2JveC1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWRpc2FibGVkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGVhZGluZyxcbiAgY2hlY2tib3gtZGlzYWJsZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIG1vZGFsLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtb2RhbC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIG1vZGFsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWZnOiBjb2xvci1mZy10ZXh0LFxuICBtb2RhbC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtb2RhbC1iZzogY29sb3ItYmcsXG4gIG1vZGFsLWJvcmRlcjogdHJhbnNwYXJlbnQsXG4gIG1vZGFsLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbW9kYWwtcGFkZGluZzogcGFkZGluZyxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1vZGFsLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgbW9kYWwtYm9keS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBtb2RhbC1ib2R5LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWJvZHktZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1vZGFsLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuXG4gIGJhZGdlLWZnLXRleHQ6IGNvbG9yLXdoaXRlLFxuICBiYWRnZS1wcmltYXJ5LWJnLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBiYWRnZS1zdWNjZXNzLWJnLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBiYWRnZS1pbmZvLWJnLWNvbG9yOiBjb2xvci1pbmZvLFxuICBiYWRnZS13YXJuaW5nLWJnLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuICBiYWRnZS1kYW5nZXItYmctY29sb3I6IGNvbG9yLWRhbmdlcixcblxuICBwcm9ncmVzcy1iYXItaGVpZ2h0LXhsZzogMS43NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1sZzogMS41cmVtLFxuICBwcm9ncmVzcy1iYXItaGVpZ2h0OiAxLjM3NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1zbTogMS4yNXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC14czogMXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXMsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUteGxnOiBmb250LXNpemUteGxnLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXhzOiBmb250LXNpemUteHMsXG4gIHByb2dyZXNzLWJhci1yYWRpdXM6IHJhZGl1cyxcbiAgcHJvZ3Jlc3MtYmFyLWJnOiBsYXlvdXQtYmcsXG4gIHByb2dyZXNzLWJhci1mb250LWNvbG9yOiBjb2xvci13aGl0ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBwcm9ncmVzcy1iYXItZGVmYXVsdC1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHByb2dyZXNzLWJhci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBwcm9ncmVzcy1iYXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHByb2dyZXNzLWJhci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBhbGVydC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWxlcnQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhbGVydC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhbGVydC1mZzogY29sb3Itd2hpdGUsXG4gIGFsZXJ0LW91dGxpbmUtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1iZzogY29sb3ItYmcsXG4gIGFsZXJ0LWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGFsZXJ0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgYWxlcnQtZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBhbGVydC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBhbGVydC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBhbGVydC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBhbGVydC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgYWxlcnQtaGVpZ2h0LXh4c21hbGw6IDUycHgsXG4gIGFsZXJ0LWhlaWdodC14c21hbGw6IDcycHgsXG4gIGFsZXJ0LWhlaWdodC1zbWFsbDogOTJweCxcbiAgYWxlcnQtaGVpZ2h0LW1lZGl1bTogMTEycHgsXG4gIGFsZXJ0LWhlaWdodC1sYXJnZTogMTMycHgsXG4gIGFsZXJ0LWhlaWdodC14bGFyZ2U6IDE1MnB4LFxuICBhbGVydC1oZWlnaHQteHhsYXJnZTogMTcycHgsXG4gIGFsZXJ0LXNoYWRvdzogbm9uZSxcbiAgYWxlcnQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBhbGVydC1wYWRkaW5nOiAxcmVtIDEuMTI1cmVtLFxuICBhbGVydC1jbG9zYWJsZS1wYWRkaW5nOiAzcmVtLFxuICBhbGVydC1idXR0b24tcGFkZGluZzogM3JlbSxcbiAgYWxlcnQtbWFyZ2luOiBtYXJnaW4sXG5cbiAgY2hhdC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2hhdC1mZzogY29sb3Itd2hpdGUsXG4gIGNoYXQtYmc6IGNvbG9yLWJnLFxuICBjaGF0LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2hhdC1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LWhlaWdodC14eHNtYWxsOiA5NnB4LFxuICBjaGF0LWhlaWdodC14c21hbGw6IDIxNnB4LFxuICBjaGF0LWhlaWdodC1zbWFsbDogMzM2cHgsXG4gIGNoYXQtaGVpZ2h0LW1lZGl1bTogNDU2cHgsXG4gIGNoYXQtaGVpZ2h0LWxhcmdlOiA1NzZweCxcbiAgY2hhdC1oZWlnaHQteGxhcmdlOiA2OTZweCxcbiAgY2hhdC1oZWlnaHQteHhsYXJnZTogODE2cHgsXG4gIGNoYXQtYm9yZGVyOiBib3JkZXIsXG4gIGNoYXQtcGFkZGluZzogcGFkZGluZyxcbiAgY2hhdC1zaGFkb3c6IHNoYWRvdyxcbiAgY2hhdC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgY2hhdC1tZXNzYWdlLWZnOiBjb2xvci13aGl0ZSxcbiAgY2hhdC1tZXNzYWdlLWJnOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM0Y2E2ZmYsICM1OWJmZmYpLFxuICBjaGF0LW1lc3NhZ2UtcmVwbHktYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2hhdC1tZXNzYWdlLXJlcGx5LWZnOiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LW1lc3NhZ2UtYXZhdGFyLWJnOiBjb2xvci1mZyxcbiAgY2hhdC1tZXNzYWdlLXNlbmRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjaGF0LW1lc3NhZ2UtZmlsZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1maWxlLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGF0LWZvcm0tYm9yZGVyOiBzZXBhcmF0b3IsXG4gIGNoYXQtZm9ybS1wbGFjZWhvbGRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtZm9ybS1hY3RpdmUtYm9yZGVyOiBjb2xvci1mZyxcbiAgY2hhdC1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBjaGF0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgY2hhdC1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGNoYXQtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2hhdC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjaGF0LXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoYXQtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgY2hhdC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBzcGlubmVyLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODMpLFxuICBzcGlubmVyLWNpcmNsZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBzcGlubmVyLWZnOiBjb2xvci1mZy10ZXh0LFxuICBzcGlubmVyLWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIHNwaW5uZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBzcGlubmVyLWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgc3Bpbm5lci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBzcGlubmVyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHNwaW5uZXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgc3Bpbm5lci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBzcGlubmVyLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICBzcGlubmVyLXh4c21hbGw6IDEuMjVyZW0sXG4gIHNwaW5uZXIteHNtYWxsOiAxLjVyZW0sXG4gIHNwaW5uZXItc21hbGw6IDEuNzVyZW0sXG4gIHNwaW5uZXItbWVkaXVtOiAycmVtLFxuICBzcGlubmVyLWxhcmdlOiAyLjI1cmVtLFxuICBzcGlubmVyLXhsYXJnZTogMi41cmVtLFxuICBzcGlubmVyLXh4bGFyZ2U6IDNyZW0sXG5cbiAgc3RlcHBlci1pbmRleC1zaXplOiAycmVtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtc2l6ZTogZm9udC1zaXplLXNtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIHN0ZXBwZXItYWNjZW50LWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBzdGVwcGVyLWNvbXBsZXRlZC1mZzogY29sb3Itd2hpdGUsXG4gIHN0ZXBwZXItZmc6IGNvbG9yLWZnLFxuICBzdGVwcGVyLWNvbXBsZXRlZC1pY29uLXNpemU6IDEuNXJlbSxcbiAgc3RlcHBlci1jb21wbGV0ZWQtaWNvbi13ZWlnaHQ6IGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQsXG4gIHN0ZXBwZXItc3RlcC1wYWRkaW5nOiBwYWRkaW5nLFxuXG4gIGFjY29yZGlvbi1wYWRkaW5nOiBwYWRkaW5nLFxuICBhY2NvcmRpb24tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjY29yZGlvbi1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFjY29yZGlvbi1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci1jb2xvcjogYWNjb3JkaW9uLXNlcGFyYXRvcixcbiAgYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYWNjb3JkaW9uLWl0ZW0tYmc6IGNvbG9yLWJnLFxuICBhY2NvcmRpb24taXRlbS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgYWNjb3JkaW9uLWl0ZW0tZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgYWNjb3JkaW9uLWl0ZW0tc2hhZG93OiBzaGFkb3csXG5cbiAgbGlzdC1pdGVtLWJvcmRlci1jb2xvcjogdGFicy1zZXBhcmF0b3IsXG4gIGxpc3QtaXRlbS1wYWRkaW5nOiAxcmVtLFxuXG4gIGNhbGVuZGFyLXdpZHRoOiAyMS44NzVyZW0sXG4gIGNhbGVuZGFyLWJvZHktaGVpZ2h0OiAyNS42MjVyZW0sXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZS14bGcsXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtdGhpbixcbiAgY2FsZW5kYXItbmF2aWdhdGlvbi1idXR0b24td2lkdGg6IDEwcmVtLFxuICBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1ob3Zlci1pdGVtLWJnOiBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnLFxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1mZzogY29sb3ItZmctdGV4dCxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtZmc6IGNvbG9yLXdoaXRlLFxuICBjYWxlbmRhci10b2RheS1mZzogY2FsZW5kYXItZmcsXG4gIGNhbGVuZGFyLWRheS1jZWxsLXdpZHRoOiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtaGVpZ2h0OiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aDogNC4yNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQ6IDIuMzc1cmVtLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtd2lkdGg6IGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXllYXItY2VsbC1oZWlnaHQ6IGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0LFxuICBjYWxlbmRhci1pbmFjdGl2ZS1vcGFjaXR5OiAwLjUsXG4gIGNhbGVuZGFyLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgY2FsZW5kYXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjYWxlbmRhci13ZWVrZGF5LXdpZHRoOiBjYWxlbmRhci1kYXktY2VsbC13aWR0aCxcbiAgY2FsZW5kYXItd2Vla2RheS1oZWlnaHQ6IDEuNzVyZW0sXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC1zaXplOiBmb250LXNpemUteHMsXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FsZW5kYXItd2Vla2RheS1mZzogY29sb3ItZmcsXG4gIGNhbGVuZGFyLXdlZWtkYXktaG9saWRheS1mZzogY29sb3ItZGFuZ2VyLFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogI2ViZmJmMixcblxuICBjYWxlbmRhci1sYXJnZS13aWR0aDogMjQuMzc1cmVtLFxuICBjYWxlbmRhci1sYXJnZS1ib2R5LWhlaWdodDogMjcuNzVyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWxhcmdlLXdpZHRoOiAzcmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1sYXJnZS1oZWlnaHQ6IDNyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2Utd2lkdGg6IDQuMjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2UtaGVpZ2h0OiAyLjM3NXJlbSxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWxhcmdlLXdpZHRoOiBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtbGFyZ2UtaGVpZ2h0OiBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodCxcblxuICBvdmVybGF5LWJhY2tkcm9wLWJnOiByZ2JhKDAsIDAsIDAsIDAuMjg4KSxcblxuICB0b29sdGlwLWJnOiBjb2xvci1mZy10ZXh0LFxuICB0b29sdGlwLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHRvb2x0aXAtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgdG9vbHRpcC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICB0b29sdGlwLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHRvb2x0aXAtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIHRvb2x0aXAtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zdGF0dXMtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zaGFkb3c6IHNoYWRvdyxcbiAgdG9vbHRpcC1mb250LXNpemU6IGZvbnQtc2l6ZSxcblxuICBzZWxlY3QtYm9yZGVyLXdpZHRoOiAycHgsXG4gIHNlbGVjdC1tYXgtaGVpZ2h0OiAyMHJlbSxcbiAgc2VsZWN0LWJnOiBjb2xvci1iZyxcblxuICBzZWxlY3QtY2hlY2tib3gtY29sb3I6IGNoZWNrYm94LWJvcmRlci1jb2xvcixcbiAgc2VsZWN0LWNoZWNrbWFyay1jb2xvcjogY2hlY2tib3gtYm9yZGVyLWNvbG9yLFxuXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtYmc6ICNmMmY0ZjcsXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtb3BhY2l0eTogMC4zLFxuICBzZWxlY3Qtb3B0aW9uLXBhZGRpbmc6IDAuNzVyZW0gMS41cmVtLFxuXG4gIGRhdGVwaWNrZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGRhdGVwaWNrZXItYmc6IGNvbG9yLWJnLFxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgZGF0ZXBpY2tlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGRhdGVwaWNrZXItc2hhZG93OiBub25lLFxuICBkYXRlcGlja2VyLWFycm93LXNpemU6IDExcHgsXG5cbiAgcmFkaW8tYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1mZzogY29sb3ItZmctdGV4dCxcbiAgcmFkaW8tc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tYm9yZGVyLWNvbG9yOiBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yLFxuICByYWRpby1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuICByYWRpby1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICByYWRpby1jaGVja2VkLWNoZWNrbWFyazogY29sb3Itc3VjY2VzcyxcbiAgcmFkaW8tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItY29sb3I6IHJhZGlvLWJvcmRlci1jb2xvcixcbiAgcmFkaW8tZGlzYWJsZWQtY2hlY2ttYXJrOiByYWRpby1jaGVja21hcmssXG5cbiAgdHJlZS1ncmlkLWNlbGwtYm9yZGVyLXdpZHRoOiAxcHgsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1zdHlsZTogc29saWQsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICB0cmVlLWdyaWQtcm93LW1pbi1oZWlnaHQ6IDJyZW0sXG4gIHRyZWUtZ3JpZC1jZWxsLXBhZGRpbmc6IDAuODc1cmVtIDEuMjVyZW0sXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYm9yZGVyOiBub25lLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLXBhZGRpbmc6IDAsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tZm9udC13ZWlnaHQ6IGJvbGQsXG4gIHRyZWUtZ3JpZC1oZWFkZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXJvdy1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctYmctZXZlbjogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctaG92ZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWNvbG9yOiBjb2xvci1mZy10ZXh0LFxuICB0cmVlLWdyaWQtaWNvbi1jb2xvcjogY29sb3ItZmctdGV4dCxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBkZWZhdWx0KTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuQGltcG9ydCAnZGVmYXVsdCc7XG5cbi8vIGRlZmF1bHQgdGhlIGJhc2UgdGhlbWVcbiR0aGVtZTogKFxuICByYWRpdXM6IDAuNXJlbSxcblxuICBjb2xvci1iZzogIzNkMzc4MCxcbiAgY29sb3ItYmctYWN0aXZlOiAjNDk0Mjk5LFxuICBjb2xvci1mZzogI2ExYTFlNSxcbiAgY29sb3ItZmctaGVhZGluZzogI2ZmZmZmZixcbiAgY29sb3ItZmctdGV4dDogI2QxZDFmZixcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiAjMDBmOWE2LFxuXG4gIGNvbG9yLWdyYXk6IHJnYmEoODEsIDExMywgMTY1LCAwLjE1KSxcbiAgY29sb3ItbmV1dHJhbDogdHJhbnNwYXJlbnQsXG4gIGNvbG9yLXdoaXRlOiAjZmZmZmZmLFxuICBjb2xvci1kaXNhYmxlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM3NjU5ZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICMwMGQ5NzcsXG4gIGNvbG9yLWluZm86ICMwMDg4ZmYsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmExMDAsXG4gIGNvbG9yLWRhbmdlcjogI2ZmMzg2YSxcblxuICBsaW5rLWNvbG9yOiAjMDBmOWE2LFxuICBsaW5rLWNvbG9yLWhvdmVyOiAjMTRmZmJlLFxuXG4gIHNlcGFyYXRvcjogIzM0MmU3MyxcbiAgc2hhZG93OiAwIDhweCAyMHB4IDAgcmdiYSg0MCwgMzcsIDg5LCAwLjYpLFxuXG4gIGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG5cbiAgbGF5b3V0LWJnOiAjMmYyOTZiLFxuXG4gIHNjcm9sbGJhci1mZzogIzU1NGRiMyxcbiAgc2Nyb2xsYmFyLWJnOiAjMzMyZTczLFxuXG4gIHJhZGlhbC1ncmFkaWVudDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgNTAlLCAjNDIzZjhjLCAjMzAyYzZlKSxcbiAgbGluZWFyLWdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMxNzE3NDksICM0MTM3ODkpLFxuXG4gIHNpZGViYXItZmc6IGNvbG9yLXNlY29uZGFyeSxcbiAgc2lkZWJhci1iZzogY29sb3ItYmcsXG5cbiAgaGVhZGVyLWZnOiBjb2xvci13aGl0ZSxcbiAgaGVhZGVyLWJnOiBjb2xvci1iZyxcblxuICBmb290ZXItZmc6IGNvbG9yLWZnLFxuICBmb290ZXItYmc6IGNvbG9yLWJnLFxuXG4gIGFjdGlvbnMtZmc6IGNvbG9yLWZnLFxuICBhY3Rpb25zLWJnOiBjb2xvci1iZyxcblxuICB1c2VyLWZnOiBjb2xvci1iZyxcbiAgdXNlci1iZzogY29sb3ItZmcsXG4gIHVzZXItZmctaGlnaGxpZ2h0OiBjb2xvci1mZy1oaWdobGlnaHQsXG5cbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4gIHBvcG92ZXItc2hhZG93OiBzaGFkb3csXG5cbiAgY29udGV4dC1tZW51LWFjdGl2ZS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY29udGV4dC1tZW51LWJvcmRlcjogY29sb3ItcHJpbWFyeSxcblxuICBmb290ZXItaGVpZ2h0OiBoZWFkZXItaGVpZ2h0LFxuXG4gIHNpZGViYXItd2lkdGg6IDE2LjI1cmVtLFxuICBzaWRlYmFyLXdpZHRoLWNvbXBhY3Q6IDMuNDVyZW0sXG5cbiAgbWVudS1mZzogY29sb3ItZmcsXG4gIG1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3Itd2hpdGUsXG4gIG1lbnUtZ3JvdXAtZmc6IGNvbG9yLXdoaXRlLFxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1lbnUtYWN0aXZlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtc3VibWVudS1iZzogbGF5b3V0LWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnOiByZ2JhKDAsIDI1NSwgMTcwLCAwLjI1KSxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhpZ2hsaWdodCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1zaGFkb3c6IDAgMnB4IDEycHggMCByZ2JhKDAsIDI1NSwgMTcwLCAwLjI1KSxcbiAgbWVudS1pdGVtLXBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbSxcbiAgbWVudS1pdGVtLXNlcGFyYXRvcjogdHJhbnNwYXJlbnQsXG5cbiAgYnRuLWhlcm8tc2hhZG93OiAwIDRweCAxMHB4IDAgcmdiYSgzMywgNywgNzcsIDAuNSksXG4gIGJ0bi1oZXJvLXRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpLFxuICBidG4taGVyby1iZXZlbC1zaXplOiAwIDNweCAwIDAsXG4gIGJ0bi1oZXJvLWdsb3ctc2l6ZTogMCAycHggOHB4IDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbiAgYnRuLW91dGxpbmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWhvdmVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1mb2N1cy1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLWdyb3VwLWJnOiAjMzczMjczLFxuICBidG4tZ3JvdXAtc2VwYXJhdG9yOiAjMzEyYzY2LFxuXG4gIGZvcm0tY29udHJvbC1iZzogIzM3MzE3YSxcbiAgZm9ybS1jb250cm9sLWZvY3VzLWJnOiBzZXBhcmF0b3IsXG4gIGZvcm0tY29udHJvbC1ib3JkZXItY29sb3I6IHNlcGFyYXRvcixcbiAgZm9ybS1jb250cm9sLXNlbGVjdGVkLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcblxuICBjaGVja2JveC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWJvcmRlci1jb2xvcjogY29sb3ItZmcsXG4gIGNoZWNrYm94LWNoZWNrbWFyazogdHJhbnNwYXJlbnQsXG5cbiAgY2hlY2tib3gtY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgY2hlY2tib3gtY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgY2hlY2tib3gtZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBzZWFyY2gtYmc6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzE3MTc0OSwgIzQxMzc4OSksXG5cbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1iZzogY29sb3ItYmctYWN0aXZlLFxuICBzbWFydC10YWJsZS1iZy1ldmVuOiAjM2EzNDdhLFxuICBzbWFydC10YWJsZS1iZy1hY3RpdmU6IGNvbG9yLWJnLWFjdGl2ZSxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLXdpZHRoOiAycHgsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1mZy1hY3RpdmU6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXByaW1hcnksXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjIpLFxuXG4gIGJhZGdlLWZnLXRleHQ6IGNvbG9yLXdoaXRlLFxuICBiYWRnZS1wcmltYXJ5LWJnLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBiYWRnZS1zdWNjZXNzLWJnLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBiYWRnZS1pbmZvLWJnLWNvbG9yOiBjb2xvci1pbmZvLFxuICBiYWRnZS13YXJuaW5nLWJnLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuICBiYWRnZS1kYW5nZXItYmctY29sb3I6IGNvbG9yLWRhbmdlcixcblxuICBzcGlubmVyLWJnOiByZ2JhKDYxLCA1NSwgMTI4LCAwLjkpLFxuICBzdGVwcGVyLWFjY2VudC1jb2xvcjogY29sb3Itc3VjY2VzcyxcblxuICB0YWJzLXNlbGVjdGVkLXNlY29uZC1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgdGFicy1zZWxlY3RlZC1kZWdyZWVzOiAyMGRlZyxcblxuICBjYWxlbmRhci1hY3RpdmUtaXRlbS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FsZW5kYXItcmFuZ2UtYmctaW4tcmFuZ2U6ICM0ZTQwOTUsXG4gIGNhbGVuZGFyLXRvZGF5LWl0ZW0tYmc6ICMzNTJmNmUsXG5cbiAgc2VsZWN0LW9wdGlvbi1kaXNhYmxlZC1iZzogIzMxMmU3NSxcblxuICB0b2FzdHItY29sb3ItZmc6IGNvbG9yLXdoaXRlLFxuICB0b2FzdHItcGFkZGluZzogMS4yNXJlbSxcbiAgdG9hc3RyLWJvcmRlcjogMCxcbiAgdG9hc3RyLWRlZmF1bHQtYmFja2dyb3VuZDogI2JjYzNjYyxcblxuICB0b29sdGlwLWZnOiBjb2xvci1iZyxcbiAgdG9vbHRpcC1zdGF0dXMtZmc6IGNvbG9yLXdoaXRlLFxuXG4gIGRhdGVwaWNrZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuICBkYXRlcGlja2VyLXNoYWRvdzogc2hhZG93LFxuXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICByYWRpby1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItcHJpbWFyeSxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBjb3NtaWMsIGRlZmF1bHQpO1xuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AaW1wb3J0ICcuLi9jb3JlL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICcuLi9jb3JlL21peGlucyc7XG5AaW1wb3J0ICdkZWZhdWx0JztcblxuLy8gZGVmYXVsdCB0aGUgYmFzZSB0aGVtZVxuJHRoZW1lOiAoXG4gIGhlYWRlci1mZzogI2Y3ZmFmYixcbiAgaGVhZGVyLWJnOiAjMTExMjE4LFxuXG4gIGxheW91dC1iZzogI2YxZjVmOCxcblxuICBjb2xvci1mZy1oZWFkaW5nOiAjMTgxODE4LFxuICBjb2xvci1mZy10ZXh0OiAjNGI0YjRiLFxuICBjb2xvci1mZy1oaWdobGlnaHQ6IGNvbG9yLWZnLFxuXG4gIHNlcGFyYXRvcjogI2NkZDVkYyxcblxuICByYWRpdXM6IDAuMTdyZW0sXG5cbiAgc2Nyb2xsYmFyLWJnOiAjZTNlOWVlLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM3M2ExZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICM1ZGNmZTMsXG4gIGNvbG9yLWluZm86ICNiYTdmZWMsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmEzNmIsXG4gIGNvbG9yLWRhbmdlcjogI2ZmNmI4MyxcblxuICBidG4tc2Vjb25kYXJ5LWJnOiAjZWRmMmY1LFxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogI2VkZjJmNSxcblxuICBhY3Rpb25zLWZnOiAjZDNkYmU1LFxuICBhY3Rpb25zLWJnOiBjb2xvci1iZyxcblxuICBzaWRlYmFyLWJnOiAjZTNlOWVlLFxuXG4gIGJvcmRlci1jb2xvcjogI2Q1ZGJlMCxcblxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtYmc6ICNlM2U5ZWUsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LWFjdGl2ZS1iZzogbWVudS1iZyxcblxuICBtZW51LXN1Ym1lbnUtYmc6IG1lbnUtYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogI2NkZDVkYyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1ib3JkZXItY29sb3I6IG1lbnUtc3VibWVudS1hY3RpdmUtYmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiBub25lLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItZmc6IG1lbnUtc3VibWVudS1hY3RpdmUtZmcsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1iZzogbWVudS1iZyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXdpZHRoOiAwLjEyNXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1wYWRkaW5nOiAwLjVyZW0gMXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tY29udGFpbmVyLXBhZGRpbmc6IDAgMS4yNXJlbSxcbiAgbWVudS1zdWJtZW51LXBhZGRpbmc6IDAuNXJlbSxcblxuICBidG4tYm9yZGVyLXJhZGl1czogYnRuLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1cyxcblxuICBidG4taGVyby1kZWdyZWU6IDBkZWcsXG4gIGJ0bi1oZXJvLXByaW1hcnktZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWluZm8tZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLWRhbmdlci1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMCAyMHB4IDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogMCAwIDAgMCxcbiAgYnRuLWhlcm8tYm9yZGVyLXJhZGl1czogYnRuLWJvcmRlci1yYWRpdXMsXG5cbiAgY2FyZC1zaGFkb3c6IG5vbmUsXG4gIGNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGNhcmQtYm9yZGVyLWNvbG9yOiBib3JkZXItY29sb3IsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci13aWR0aDogMCxcblxuICBsaW5rLWNvbG9yOiAjNWRjZmUzLFxuICBsaW5rLWNvbG9yLWhvdmVyOiAjN2RjZmUzLFxuICBsaW5rLWNvbG9yLXZpc2l0ZWQ6IGxpbmstY29sb3IsXG5cbiAgYWN0aW9ucy1zZXBhcmF0b3I6ICNmMWY0ZjUsXG5cbiAgbW9kYWwtc2VwYXJhdG9yOiBib3JkZXItY29sb3IsXG5cbiAgdGFicy1zZWxlY3RlZDogY29sb3ItcHJpbWFyeSxcbiAgdGFicy1zZWxlY3RlZC1zZWNvbmQtY29sb3I6IGNvbG9yLXByaW1hcnksXG4gIHRhYnMtc2VwYXJhdG9yOiAjZWJlY2VlLFxuXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXByaW1hcnksXG5cbiAgcm91dGUtdGFicy1zZWxlY3RlZDogY29sb3ItcHJpbWFyeSxcblxuICBwb3BvdmVyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcblxuICBmb290ZXItc2hhZG93OiBub25lLFxuICBmb290ZXItc2VwYXJhdG9yOiBib3JkZXItY29sb3IsXG4gIGZvb3Rlci1mZy1oaWdobGlnaHQ6ICMyYTJhMmEsXG5cbiAgY2FsZW5kYXItdG9kYXktaXRlbS1iZzogI2EyYjJjNyxcbiAgY2FsZW5kYXItYWN0aXZlLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXJhbmdlLWJnLWluLXJhbmdlOiAjZTNlY2ZlLFxuICBjYWxlbmRhci10b2RheS1mZzogY29sb3Itd2hpdGUsXG5cbiAgdG9hc3RyLWljb24tcmFkaXVzOiByYWRpdXMsXG5cbiAgZGF0ZXBpY2tlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgY29ycG9yYXRlLCBkZWZhdWx0KTtcbiIsIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZTogMjRweCAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aHM6IChcbiAgeHM6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBzbTogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIG1kOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgbGc6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICB4bDogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2VcbikgIWRlZmF1bHQ7XG5cblxuJGdyaWQtYnJlYWtwb2ludHM6IChcbiAgeHM6IDAsXG4gIGlzOiA0MDBweCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweCxcbiAgeHhsOiAxNDAwcHgsXG4gIHh4eGw6IDE2MDBweFxuKTtcblxuJGNvbnRhaW5lci1tYXgtd2lkdGhzOiAoXG4gIGlzOiAzODBweCxcbiAgc206IDU0MHB4LFxuICBtZDogNzIwcHgsXG4gIGxnOiA5NjBweCxcbiAgeGw6IDExNDBweCxcbiAgeHhsOiAxMzIwcHgsXG4gIHh4eGw6IDE1MDBweFxuKTtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAwLjAycHgsIG51bGwpO1xufVxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiQGltcG9ydCAnLi4vLi4vc3R5bGVzL3RoZW1lcyc7XHJcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMvYnJlYWtwb2ludHMnO1xyXG5AaW1wb3J0ICd+QG5lYnVsYXIvdGhlbWUvc3R5bGVzL2dsb2JhbC9icmVha3BvaW50cyc7XHJcblxyXG5AaW5jbHVkZSBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcclxuICBuYi1sYXlvdXQtY29sdW1uLnNtYWxsIHtcclxuICAgIGZsZXg6IDAuMTUgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciB7XHJcbiAgICAkc2lkZWJhci13aWR0aDogMTlyZW07XHJcblxyXG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcclxuICAgIHdpZHRoOiAkc2lkZWJhci13aWR0aDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBAaW5jbHVkZSBuYi1sdHIodHJhbnNmb3JtLCB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSk7XHJcbiAgICBAaW5jbHVkZSBuYi1ydGwodHJhbnNmb3JtLCB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkpO1xyXG4gICAgJi5zdGFydCB7XHJcbiAgICAgIEBpbmNsdWRlIG5iLWx0cih0cmFuc2Zvcm0sIHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKSk7XHJcbiAgICAgIEBpbmNsdWRlIG5iLXJ0bCh0cmFuc2Zvcm0sIHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApKTtcclxuICAgIH1cclxuXHJcbiAgICAmLmV4cGFuZGVkLCAmLmV4cGFuZGVkLnN0YXJ0IHtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gLnNjcm9sbGFibGUge1xyXG4gICAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICAgIHBhZGRpbmc6IDMuNHJlbSAwLjI1cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xyXG4gICAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5iLXRoZW1lKGNvbG9yLWJnKTtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgICAgLnNjcm9sbGFibGUge1xyXG4gICAgICAgIHdpZHRoOiAkc2lkZWJhci13aWR0aDtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvc21pYykge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IG5iLXRoZW1lKGxheW91dC1iZyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcclxuICAgICAgbWFyZ2luLXRvcDogMDtcclxuXHJcbiAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgaGVpZ2h0OlxyXG4gICAgICAgIGNhbGMoI3tuYi10aGVtZShzaWRlYmFyLWhlaWdodCl9IC0gI3tuYi10aGVtZShoZWFkZXItaGVpZ2h0KX0gLSAje25iLXRoZW1lKHNpZGViYXItaGVhZGVyLWdhcCl9KSAhaW1wb3J0YW50O1xyXG4gICAgICBAaW5jbHVkZSBuYi1sdHIoYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsIG5iLXRoZW1lKHJhZGl1cykpO1xyXG4gICAgICBAaW5jbHVkZSBuYi1ydGwoYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cywgbmItdGhlbWUocmFkaXVzKSk7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIG5iLXRoZW1lKHNlcGFyYXRvcik7XHJcbiAgICAgIGhlaWdodDpcclxuICAgICAgICBjYWxjKCN7bmItdGhlbWUoc2lkZWJhci1oZWlnaHQpfSAtICN7bmItdGhlbWUoaGVhZGVyLWhlaWdodCl9KSAhaW1wb3J0YW50O1xyXG4gICAgXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC9kZWVwLyAuc2Nyb2xsYWJsZSB7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG5cclxuICAgICAgLm1lbnUtaXRlbTpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAubWFpbi1idG4ge1xyXG4gICAgICBwYWRkaW5nOiAwLjc1cmVtIDIuNXJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogLTJyZW07XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuMzIsIDEuNDgpO1xyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvcnBvcmF0ZSkge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IG5iLXRoZW1lKHJhZGl1cyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuICAgICAgfVxyXG4gICAgICBzcGFuIHtcclxuICAgICAgICBAaW5jbHVkZSBuYi1sdHIocGFkZGluZy1sZWZ0LCAwLjI1cmVtKTtcclxuICAgICAgICBAaW5jbHVkZSBuYi1ydGwocGFkZGluZy1yaWdodCwgMC4yNXJlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGksIHNwYW4ge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gbmItbWVudSB7XHJcbiAgICAgICYgPiAubWVudS1pdGVtcyB7XHJcbiAgICAgICAgJiA+IC5tZW51LWl0ZW06Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgLm1lbnUtdGl0bGUge1xyXG4gICAgICAgICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgICAgICAgY29udGVudDogJ25ldyc7XHJcbiAgICAgICAgICAgICAgY29sb3I6IG5iLXRoZW1lKGNvbG9yLXdoaXRlKTtcclxuICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBuYi10aGVtZShjb2xvci1kYW5nZXIpO1xyXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtO1xyXG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IG5iLXRoZW1lKHJhZGl1cyk7XHJcbiAgICAgICAgICAgICAgZm9udC1zaXplOiBuYi10aGVtZShmb250LXNpemUtc20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAubmItZS1jb21tZXJjZSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5jb21wYWN0ZWQge1xyXG5cclxuICAgICAgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1haW4tYnRuIHtcclxuICAgICAgICB3aWR0aDogNDZweDtcclxuICAgICAgICBoZWlnaHQ6IDQ0cHg7XHJcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW07XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XHJcblxyXG4gICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bih4cykge1xyXG4gICAgLm1haW4tY29udGVudCB7XHJcbiAgICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcclxuXHJcbiAgICBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XHJcblxyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG5cclxuICAgICAgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XHJcbiAgICAgICAgaGVpZ2h0OiBjYWxjKCN7bmItdGhlbWUoc2lkZWJhci1oZWlnaHQpfSkgIWltcG9ydGFudDtcclxuICAgICAgICBAaW5jbHVkZSBuYi1sdHIoYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsIDApO1xyXG4gICAgICAgIEBpbmNsdWRlIG5iLXJ0bChib3JkZXItdG9wLWxlZnQtcmFkaXVzLCAwKTtcclxuXHJcbiAgICAgICAgLnNjcm9sbGFibGUge1xyXG4gICAgICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm1haW4tYnRuIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIGlzIGEgc3RhcnRpbmcgcG9pbnQgd2hlcmUgd2UgZGVjbGFyZSB0aGUgbWFwcyBvZiB0aGVtZXMgYW5kIGdsb2JhbGx5IGF2YWlsYWJsZSBmdW5jdGlvbnMvbWl4aW5zXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XG4gIGZsZXg6IDAuMTUgIWltcG9ydGFudDsgfVxuXG4ubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuICB3aWR0aDogMTlyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgW2Rpcj1sdHJdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsgfVxuICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsgfVxuICBbZGlyPWx0cl0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLnN0YXJ0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsgfVxuICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLnN0YXJ0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5leHBhbmRlZCwgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmV4cGFuZGVkLnN0YXJ0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLnNjcm9sbGFibGUge1xuICAgIHdpZHRoOiAxOXJlbTtcbiAgICBwYWRkaW5nOiAzLjRyZW0gMC4yNXJlbTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDE5cmVtO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgIHdpZHRoOiAxOXJlbTsgfVxuXG4ubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0gLSAycmVtKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlYmVlZjI7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjM3NXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMzc1cmVtOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAuc2Nyb2xsYWJsZSB7XG4gICAgcGFkZGluZy10b3A6IDA7IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLnNjcm9sbGFibGUgLm1lbnUtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wOiBub25lOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDIuNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAtMnJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuMzIsIDEuNDgpOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGkge1xuICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSwgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gbmItbWVudSA+IC5tZW51LWl0ZW1zID4gLm1lbnUtaXRlbTpmaXJzdC1jaGlsZCAubWVudS10aXRsZTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICduZXcnO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgIGJhY2tncm91bmQ6ICNmZjRjNmE7XG4gICAgcGFkZGluZzogMCAwLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gbmItbWVudSAubmItZS1jb21tZXJjZSB7XG4gICAgZm9udC1zaXplOiAycmVtOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAvZGVlcC8gbmItc2lkZWJhci1oZWFkZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4ge1xuICAgIHdpZHRoOiA0NnB4O1xuICAgIGhlaWdodDogNDRweDtcbiAgICBwYWRkaW5nOiAwLjM3NXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgdHJhbnNpdGlvbjogbm9uZTsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4gc3BhbiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzOTkuOThweCkge1xuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAubWFpbi1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogY2FsYygxMDB2aCkgIWltcG9ydGFudDsgfVxuICAgICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyB9XG4gICAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLm1haW4tYnRuIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4ubmItdGhlbWUtY29zbWljIDpob3N0IG5iLWxheW91dC1jb2x1bW4uc21hbGwge1xuICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7IH1cblxuLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuICB3aWR0aDogMTlyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOyB9XG4gIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7IH1cbiAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLnN0YXJ0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsgfVxuICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuc3RhcnQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuZXhwYW5kZWQsIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmV4cGFuZGVkLnN0YXJ0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAuc2Nyb2xsYWJsZSB7XG4gICAgd2lkdGg6IDE5cmVtO1xuICAgIHBhZGRpbmc6IDMuNHJlbSAwLjI1cmVtOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIHdpZHRoOiAxOXJlbTtcbiAgICBiYWNrZ3JvdW5kOiAjM2QzNzgwO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZDogIzJmMjk2YjsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgd2lkdGg6IDE5cmVtOyB9XG5cbi5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICBtYXJnaW4tdG9wOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0gLSAycmVtKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMzNDJlNzM7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuNXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41cmVtOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5zY3JvbGxhYmxlIHtcbiAgICBwYWRkaW5nLXRvcDogMDsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5zY3JvbGxhYmxlIC5tZW51LWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcDogbm9uZTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4ge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMi41cmVtO1xuICAgIG1hcmdpbi10b3A6IC0ycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRyYW5zaXRpb246IHBhZGRpbmcgMC4zcyBjdWJpYy1iZXppZXIoMC4xOCwgMC44OSwgMC4zMiwgMS40OCk7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBpIHtcbiAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGksIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1tZW51ID4gLm1lbnUtaXRlbXMgPiAubWVudS1pdGVtOmZpcnN0LWNoaWxkIC5tZW51LXRpdGxlOjphZnRlciB7XG4gICAgY29udGVudDogJ25ldyc7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmMzg2YTtcbiAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1tZW51IC5uYi1lLWNvbW1lcmNlIHtcbiAgICBmb250LXNpemU6IDJyZW07IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4ge1xuICAgIHdpZHRoOiA0NnB4O1xuICAgIGhlaWdodDogNDRweDtcbiAgICBwYWRkaW5nOiAwLjM3NXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgdHJhbnNpdGlvbjogbm9uZTsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDM5OS45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLm1haW4tY29udGVudCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoKSAhaW1wb3J0YW50OyB9XG4gICAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyB9XG4gICAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IC5tYWluLWJ0biB7XG4gICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1sYXlvdXQtY29sdW1uLnNtYWxsIHtcbiAgZmxleDogMC4xNSAhaW1wb3J0YW50OyB9XG5cbi5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbiAgd2lkdGg6IDE5cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsgfVxuICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApOyB9XG4gIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5zdGFydCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7IH1cbiAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLnN0YXJ0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmV4cGFuZGVkLCAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5leHBhbmRlZC5zdGFydCB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLnNjcm9sbGFibGUge1xuICAgIHdpZHRoOiAxOXJlbTtcbiAgICBwYWRkaW5nOiAzLjRyZW0gMC4yNXJlbTsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTlyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICB3aWR0aDogMTlyZW07IH1cblxuLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSAtIDJyZW0pICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NkZDVkYztcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtKSAhaW1wb3J0YW50OyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4xN3JlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4xN3JlbTsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAuc2Nyb2xsYWJsZSB7XG4gICAgcGFkZGluZy10b3A6IDA7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAuc2Nyb2xsYWJsZSAubWVudS1pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3A6IG5vbmU7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gbmItc2lkZWJhci1oZWFkZXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDIuNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAtMnJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuMzIsIDEuNDgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMTdyZW07IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBpIHtcbiAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGksIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1tZW51ID4gLm1lbnUtaXRlbXMgPiAubWVudS1pdGVtOmZpcnN0LWNoaWxkIC5tZW51LXRpdGxlOjphZnRlciB7XG4gICAgY29udGVudDogJ25ldyc7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmNmI4MztcbiAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjE3cmVtO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gbmItbWVudSAubmItZS1jb21tZXJjZSB7XG4gICAgZm9udC1zaXplOiAycmVtOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgcGFkZGluZzogMC4zNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHRyYW5zaXRpb246IG5vbmU7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4gc3BhbiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzOTkuOThweCkge1xuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5tYWluLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogY2FsYygxMDB2aCkgIWltcG9ydGFudDsgfVxuICAgICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG4gICAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgfVxuICAgICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAubWFpbi1idG4ge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuIl19 */\"","import { Component, OnDestroy } from '@angular/core';\r\nimport { delay, withLatestFrom, takeWhile } from 'rxjs/operators';\r\nimport {\r\n NbMediaBreakpoint,\r\n NbMediaBreakpointsService,\r\n NbMenuItem,\r\n NbMenuService,\r\n NbSidebarService,\r\n NbThemeService,\r\n} from '@nebular/theme';\r\n\r\nimport { StateService } from '../../../@core/utils';\r\n\r\n// TODO: move layouts into the framework\r\n@Component({\r\n selector: 'ngx-sample-layout',\r\n styleUrls: ['./sample.layout.scss'],\r\n template: `\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n `,\r\n})\r\nexport class SampleLayoutComponent implements OnDestroy {\r\n\r\n subMenu: NbMenuItem[] = [\r\n {\r\n title: 'PAGE LEVEL MENU',\r\n },\r\n ];\r\n layout: any = {};\r\n sidebar: any = {};\r\n\r\n private alive = true;\r\n\r\n currentTheme: string;\r\n\r\n constructor(protected stateService: StateService,\r\n protected menuService: NbMenuService,\r\n protected themeService: NbThemeService,\r\n protected bpService: NbMediaBreakpointsService,\r\n protected sidebarService: NbSidebarService) {\r\n this.stateService.onLayoutState()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe((layout: string) => this.layout = layout);\r\n\r\n this.stateService.onSidebarState()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe((sidebar: string) => {\r\n this.sidebar = sidebar;\r\n });\r\n\r\n const isBp = this.bpService.getByName('is');\r\n this.menuService.onItemSelect()\r\n .pipe(\r\n takeWhile(() => this.alive),\r\n withLatestFrom(this.themeService.onMediaQueryChange()),\r\n delay(20),\r\n )\r\n .subscribe(([item, [bpFrom, bpTo]]: [any, [NbMediaBreakpoint, NbMediaBreakpoint]]) => {\r\n\r\n if (bpTo.width <= isBp.width) {\r\n this.sidebarService.collapse('menu-sidebar');\r\n }\r\n });\r\n\r\n this.themeService.getJsTheme()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe(theme => {\r\n this.currentTheme = theme.name;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.alive = false;\r\n }\r\n}\r\n","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #ffffff;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n background: transparent; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important; }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.375rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.375rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-default :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-default :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-cosmic :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #3d3780;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden;\\n background: #2f296b; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n background: transparent; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important; }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.5rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.5rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-cosmic :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-cosmic :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-corporate :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #ffffff;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n margin-top: 0;\\n background: transparent; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important;\\n border: 1px solid #cdd5dc;\\n height: calc(100vh - 4.75rem) !important; }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.17rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable {\\n padding-top: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable .menu-item:first-child {\\n border-top: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n border-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-corporate :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-corporate :host .main-btn {\\n display: none; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2xheW91dHMvdGhyZWUtY29sdW1ucy9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcX3RoZW1pbmcuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvdGhyZWUtY29sdW1ucy9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcY29yZVxcX21peGlucy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy90aHJlZS1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3RocmVlLWNvbHVtbnMvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2RlZmF1bHQuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvdGhyZWUtY29sdW1ucy9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcdGhlbWVzXFxfY29zbWljLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3RocmVlLWNvbHVtbnMvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2NvcnBvcmF0ZS5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy90aHJlZS1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxnbG9iYWxcXF9icmVha3BvaW50cy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy90aHJlZS1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9zcmNcXGFwcFxcQHRoZW1lXFxsYXlvdXRzXFx0aHJlZS1jb2x1bW5zXFx0aHJlZS1jb2x1bW5zLmxheW91dC5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy90aHJlZS1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9zcmNcXGFwcFxcQHRoZW1lXFxzdHlsZXNcXHRoZW1lcy5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy90aHJlZS1jb2x1bW5zL3RocmVlLWNvbHVtbnMubGF5b3V0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdIOztHQUVHO0FDVEg7Ozs7R0FJRztBQXNLSDs7OztHQUlHO0FBc0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbUhFO0FDdlRGOzs7O0dBSUc7QUNKSDs7OztHQUlHO0FESkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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O0lBQ2pCLG1CQUFrQjtJQUNsQix5QkFBZ0I7SUFBaEIsaUJBQWdCLEVBS2pCO0FBSEM7TUFDRSxjQUFhLEVBQ2Q7QURuRUw7RUN5RUE7SUFDRSw0QkFBMkIsRUFFNUIsRUFBQTtBRDVFRDtFQ2lGQTtJQUVFLGNBQWEsRUFXZDtJQVRDO01BQ0UseUNBQWlGLEVBT2xGO01FeThCRDtRUmx5QkEsMkJNN0s0QyxFTmlML0M7TVFneUJHO1FScHlCQSwwQk01SzJDLEVOZ0w5QztNTTlLSztRQUNFLGVBQWMsRUFDZjtFQUlMO0lBQ0UsY0FBYSxFQUNkLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy90aHJlZS1jb2x1bW5zL3RocmVlLWNvbHVtbnMubGF5b3V0LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cblxuLyoqXG4gKiBUaGlzIGlzIGEgc3RhcnRpbmcgcG9pbnQgd2hlcmUgd2UgZGVjbGFyZSB0aGUgbWFwcyBvZiB0aGVtZXMgYW5kIGdsb2JhbGx5IGF2YWlsYWJsZSBmdW5jdGlvbnMvbWl4aW5zXG4gKi9cblxuQGltcG9ydCAnY29yZS9taXhpbnMnO1xuQGltcG9ydCAnY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnY29yZS9icmVha2luZy1ub3RpY2UnO1xuXG4kbmItZW5hYmxlZC10aGVtZXM6ICgpICFnbG9iYWw7XG4kbmItZW5hYmxlLWNzcy12YXJpYWJsZXM6IGZhbHNlICFnbG9iYWw7XG5cbiRuYi10aGVtZXM6ICgpICFnbG9iYWw7XG4kbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6ICgpICFnbG9iYWw7XG4kbmItdGhlbWVzLWV4cG9ydDogKCkgIWdsb2JhbDtcblxuQGZ1bmN0aW9uIG5iLXRoZW1lKCRrZXkpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZSwgJGtleSk7XG59XG5cbkBmdW5jdGlvbiBuYi1nZXQtdmFsdWUoJHRoZW1lLCAka2V5LCAkdmFsdWUpIHtcbiAgQGlmICh0eXBlLW9mKCR2YWx1ZSkgPT0gJ3N0cmluZycpIHtcbiAgICAkdG1wOiBtYXAtZ2V0KCR0aGVtZSwgJHZhbHVlKTtcblxuICAgIEBpZiAoJHRtcCAhPSBudWxsKSB7XG4gICAgICBAcmV0dXJuIG5iLWdldC12YWx1ZSgkdGhlbWUsICR2YWx1ZSwgJHRtcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZSwgJGtleSk7XG59XG5cbkBmdW5jdGlvbiBjb252ZXJ0LXRvLWNzcy12YXJpYWJsZXMoJHZhcmlhYmxlcykge1xuICAkcmVzdWx0OiAoKTtcbiAgQGVhY2ggJHZhciwgJHZhbHVlIGluICR2YXJpYWJsZXMge1xuICAgICRyZXN1bHQ6IG1hcC1zZXQoJHJlc3VsdCwgJHZhciwgJy0tdmFyKCN7JHZhcn0pJyk7XG4gIH1cblxuICBAZGVidWcgJHJlc3VsdDtcbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AZnVuY3Rpb24gc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpIHtcbiAgJHRoZW1lOiAkdGhlbWUgIWdsb2JhbDtcbiAgJHRoZW1lLW5hbWU6ICR0aGVtZS1uYW1lICFnbG9iYWw7XG4gIEBpZiAoJG5iLWVuYWJsZS1jc3MtdmFyaWFibGVzKSB7XG4gICAgJHRoZW1lOiBjb252ZXJ0LXRvLWNzcy12YXJpYWJsZXMoJHRoZW1lKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gJHRoZW1lO1xufVxuXG5AZnVuY3Rpb24gbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCAkbmFtZSwgJGRlZmF1bHQ6IG51bGwpIHtcblxuICAkdGhlbWUtZGF0YTogKCk7XG5cblxuICBAaWYgKCRkZWZhdWx0ICE9IG51bGwpIHtcblxuICAgICR0aGVtZTogbWFwLW1lcmdlKG1hcC1nZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkZGVmYXVsdCksICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiBtYXAtc2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJG5hbWUsICR0aGVtZSkgIWdsb2JhbDtcblxuICAgICR0aGVtZS1kYXRhOiBtYXAtc2V0KCR0aGVtZS1kYXRhLCBkYXRhLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtZXhwb3J0OiBtYXAtc2V0KCRuYi10aGVtZXMtZXhwb3J0LCAkbmFtZSwgbWFwLXNldCgkdGhlbWUtZGF0YSwgcGFyZW50LCAkZGVmYXVsdCkpICFnbG9iYWw7XG5cbiAgfSBAZWxzZSB7XG4gICAgJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiBtYXAtc2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJG5hbWUsICR0aGVtZSkgIWdsb2JhbDtcblxuICAgICR0aGVtZS1kYXRhOiBtYXAtc2V0KCR0aGVtZS1kYXRhLCBkYXRhLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtZXhwb3J0OiBtYXAtc2V0KCRuYi10aGVtZXMtZXhwb3J0LCAkbmFtZSwgbWFwLXNldCgkdGhlbWUtZGF0YSwgcGFyZW50LCBudWxsKSkgIWdsb2JhbDtcbiAgfVxuXG4gICR0aGVtZS1wYXJzZWQ6ICgpO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHRoZW1lIHtcbiAgICAkdGhlbWUtcGFyc2VkOiBtYXAtc2V0KCR0aGVtZS1wYXJzZWQsICRrZXksIG5iLWdldC12YWx1ZSgkdGhlbWUsICRrZXksICR2YWx1ZSkpO1xuICB9XG5cbiAgLy8gZW5hYmxlIHJpZ2h0IGF3YXkgd2hlbiBpbnN0YWxsZWRcbiAgJHRoZW1lLXBhcnNlZDogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZS1wYXJzZWQsICRuYW1lKTtcbiAgQHJldHVybiBtYXAtc2V0KCRuYi10aGVtZXMsICRuYW1lLCAkdGhlbWUtcGFyc2VkKTtcbn1cblxuQGZ1bmN0aW9uIGdldC1lbmFibGVkLXRoZW1lcygpIHtcbiAgJHRoZW1lcy10by1pbnN0YWxsOiAoKTtcblxuICBAaWYgKGxlbmd0aCgkbmItZW5hYmxlZC10aGVtZXMpID4gMCkge1xuICAgIEBlYWNoICR0aGVtZS1uYW1lIGluICRuYi1lbmFibGVkLXRoZW1lcyB7XG4gICAgICAkdGhlbWVzLXRvLWluc3RhbGw6IG1hcC1zZXQoJHRoZW1lcy10by1pbnN0YWxsLCAkdGhlbWUtbmFtZSwgbWFwLWdldCgkbmItdGhlbWVzLCAkdGhlbWUtbmFtZSkpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHRoZW1lcy10by1pbnN0YWxsOiAkbmItdGhlbWVzO1xuICB9XG5cbiAgQHJldHVybiAkdGhlbWVzLXRvLWluc3RhbGw7XG59XG5cbkBtaXhpbiBpbnN0YWxsLWNzcy12YXJpYWJsZXMoJHRoZW1lLW5hbWUsICR2YXJpYWJsZXMpIHtcbiAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IHtcbiAgICBAZWFjaCAkdmFyLCAkdmFsdWUgaW4gJHZhcmlhYmxlcyB7XG4gICAgICAtLSN7JHZhcn06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVE9ETzogd2UgaGlkZSA6aG9zdCBpbnNpZGUgb2YgaXQgd2hpY2ggaXMgbm90IG9idmlvdXNcbkBtaXhpbiBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcblxuICAkdGhlbWVzLXRvLWluc3RhbGw6IGdldC1lbmFibGVkLXRoZW1lcygpO1xuXG4gIEBlYWNoICR0aGVtZS1uYW1lLCAkdGhlbWUgaW4gJHRoZW1lcy10by1pbnN0YWxsIHtcbiAgICAvKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbiAgICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0gOmhvc3Qge1xuICAgICAgJHRoZW1lOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSk7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG5iLWZvci10aGVtZSgkbmFtZSkge1xuICBAaWYgKCR0aGVtZS1uYW1lID09ICRuYW1lKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiAgICBcbi8vIEFkZCBjb250ZW50IGZvciB0aGVtZSBpbnRvIGEgbGlzdCBvZiB0aGVtZXNcbkBtaXhpbiBuYi1mb3ItdGhlbWVzKCRuYW1lcy4uLikge1xuICBAZWFjaCAkbmFtZSBpbiAkbmFtZXMge1xuICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZSgkbmFtZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBuYi1leGNlcHQtdGhlbWUoJG5hbWUpIHtcbiAgQGlmICgkdGhlbWUtbmFtZSAhPSAkbmFtZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIEFkZCBjb250ZW50IGV4Y2VwdCBmb3IgdGhlbWUgaW50byBhIGxpc3Qgb2YgdGhlbWVzXG5AbWl4aW4gbmItZXhjZXB0LWZvci10aGVtZXMoJG5hbWVzLi4uKSB7XG4gIEBlYWNoICRuYW1lIGluICRuYW1lcyB7XG4gICAgQGluY2x1ZGUgbmItZXhjZXB0LXRoZW1lKCRuYW1lKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gVE9ETzogYW5vdGhlciBtaXhpbmcgZm9yIHRoZSBhbG1vc3Qgc2FtZSB0aGluZ1xuQG1peGluIG5iLWluc3RhbGwtcm9vdC1jb21wb25lbnQoKSB7XG4gIEB3YXJuICdgbmItaW5zdGFsbC1yb290LWNvbXBvbmVudGAgaXMgZGVwcmljYXRlZCwgcmVwbGFjZSB3aXRoIGBuYi1pbnN0YWxsLWNvbXBvbmVudGAsIGFzIGBib2R5YCBpcyByb290IGVsZW1lbnQgbm93JztcblxuICBAaW5jbHVkZSBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItaW5zdGFsbC1nbG9iYWwoKSB7XG4gICR0aGVtZXMtdG8taW5zdGFsbDogZ2V0LWVuYWJsZWQtdGhlbWVzKCk7XG5cbiAgQGVhY2ggJHRoZW1lLW5hbWUsICR0aGVtZSBpbiAkdGhlbWVzLXRvLWluc3RhbGwge1xuICAgIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSB7XG4gICAgICAkdGhlbWU6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICR0ZW1wOiBuYi1icmVha2luZy1ub3RpY2Utc2hvdygkdGhlbWUpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AbWl4aW4gbmItc2Nyb2xsYmFycygkZmcsICRiZywgJHNpemUsICRib3JkZXItcmFkaXVzOiAkc2l6ZSAvIDIpIHtcbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiAkZmc7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJGJnO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlXG4gIC8vIEZvciBJbnRlcm5ldCBFeHBsb3JlclxuICBzY3JvbGxiYXItZmFjZS1jb2xvcjogJGZnO1xuICBzY3JvbGxiYXItdHJhY2stY29sb3I6ICRiZztcbn1cblxuQG1peGluIG5iLXJhZGlhbC1ncmFkaWVudCgkY29sb3ItMSwgJGNvbG9yLTIsICRjb2xvci0zKSB7XG4gIGJhY2tncm91bmQ6ICRjb2xvci0yOyAvKiBPbGQgYnJvd3NlcnMgKi9cbiAgYmFja2dyb3VuZDogLW1vei1yYWRpYWwtZ3JhZGllbnQoYm90dG9tLCBlbGxpcHNlIGNvdmVyLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIEZGMy42LTE1ICovXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGJvdHRvbSwgZWxsaXBzZSBjb3ZlciwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBDaHJvbWUxMC0yNSxTYWZhcmk1LjEtNiAqL1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBib3R0b20sICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogVzNDLCBJRTEwKywgRkYxNissIENocm9tZTI2KywgT3BlcmExMissIFNhZmFyaTcrICovXG4gIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyRjb2xvci0xJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sb3JzdHI9JyRjb2xvci0zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhZGllbnRUeXBlPTEpOyAvKiBJRTYtOSBmYWxsYmFjayBvbiBob3Jpem9udGFsIGdyYWRpZW50ICovXG59XG5cbkBtaXhpbiBuYi1yaWdodC1ncmFkaWVudCgkbGVmdC1jb2xvciwgJHJpZ2h0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGxlZnQtY29sb3IsICRyaWdodC1jb2xvcik7XG59XG5cbkBtaXhpbiBuYi1oZWFkaW5ncygkZnJvbTogMSwgJHRvOiA2KSB7XG4gIEBmb3IgJGkgZnJvbSAkZnJvbSB0aHJvdWdoICR0byB7XG4gICAgaCN7JGl9IHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhvdmVyLWZvY3VzLWFjdGl2ZSB7XG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlLFxuICAmOmhvdmVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY2VudGVyLWhvcml6b250YWwtYWJzb2x1dGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICBsZWZ0OiA1MCU7XG59XG5cbkBtaXhpbiBpbnN0YWxsLXRodW1iKCkge1xuICAkdGh1bWItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1zbGlkZXItdGh1bWInXG4gICAgJzo6LW1vei1yYW5nZS10aHVtYidcbiAgICAnOjotbXMtdGh1bWInXG4gICk7XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICR0aHVtYi1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbnN0YWxsLXRyYWNrKCkge1xuICAkdGh1bWItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2snXG4gICAgJzo6LW1vei1yYW5nZS10cmFjaydcbiAgICAnOjotbXMtdHJhY2snXG4gICk7XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICR0aHVtYi1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbnN0YWxsLXBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSkge1xuICAkcGxhY2Vob2xkZXItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcidcbiAgICAnOjotbW96LXBsYWNlaG9sZGVyJ1xuICAgICc6LW1vei1wbGFjZWhvbGRlcidcbiAgICAnOi1tcy1pbnB1dC1wbGFjZWhvbGRlcidcbiAgKTtcblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKTtcbiAgfVxuXG4gIEBlYWNoICRzZWxlY3RvciBpbiAkcGxhY2Vob2xkZXItc2VsZWN0b3JzIHtcbiAgICAmI3skc2VsZWN0b3J9IHtcbiAgICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyN7JHNlbGVjdG9yfSB7XG4gICAgICBAaW5jbHVkZSBwbGFjZWhvbGRlci1mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gcGxhY2Vob2xkZXItZm9jdXMoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uKCRhbmltYXRlLi4uKSB7XG4gICRtYXg6IGxlbmd0aCgkYW5pbWF0ZSk7XG4gICRhbmltYXRpb25zOiAnJztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICRhbmltYXRpb25zOiAjeyRhbmltYXRpb25zICsgbnRoKCRhbmltYXRlLCAkaSl9O1xuXG4gICAgQGlmICRpIDwgJG1heCB7XG4gICAgICAkYW5pbWF0aW9uczogI3skYW5pbWF0aW9ucyArICcsICd9O1xuICAgIH1cbiAgfVxuICAtd2Via2l0LWFuaW1hdGlvbjogJGFuaW1hdGlvbnM7XG4gIC1tb3otYW5pbWF0aW9uOiAgICAkYW5pbWF0aW9ucztcbiAgLW8tYW5pbWF0aW9uOiAgICAgICRhbmltYXRpb25zO1xuICBhbmltYXRpb246ICAgICAgICAgJGFuaW1hdGlvbnM7XG59XG5cbkBtaXhpbiBrZXlmcmFtZXMoJGFuaW1hdGlvbk5hbWUpIHtcbiAgQC13ZWJraXQta2V5ZnJhbWVzICN7JGFuaW1hdGlvbk5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtby1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBrZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbkBtaXhpbiBidG4tcHVsc2UoJG5hbWUsICRjb2xvcikge1xuICAmLmJ0bi1wdWxzZSB7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uKGJ0bi0jeyRuYW1lfS1wdWxzZSAxLjVzIGluZmluaXRlKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGtleWZyYW1lcyhidG4tI3skbmFtZX0tcHVsc2UpIHtcbiAgICAwJSB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDFyZW0gMCAkY29sb3I7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIG9wYWNpdHk6IG5iLXRoZW1lKGJ0bi1kaXNhYmxlZC1vcGFjaXR5KTtcbiAgICB9XG4gIH1cbn1cblxuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuXG5AbWl4aW4gX3ByZXBlbmQtd2l0aC1zZWxlY3Rvcigkc2VsZWN0b3IsICRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgI3skc2VsZWN0b3J9ICYge1xuICAgIEBpZiAkcHJvcCAhPSBudWxsIHtcbiAgICAgICN7JHByb3B9OiAkdmFsdWU7XG4gICAgfVxuXG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG5iLWx0cigkcHJvcDogbnVsbCwgJHZhbHVlOiBudWxsKSB7XG4gIEBpbmNsdWRlIF9wcmVwZW5kLXdpdGgtc2VsZWN0b3IoJ1tkaXI9bHRyXScsICRwcm9wLCAkdmFsdWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItcnRsKCRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgQGluY2x1ZGUgX3ByZXBlbmQtd2l0aC1zZWxlY3RvcignW2Rpcj1ydGxdJywgJHByb3AsICR2YWx1ZSkge1xuICAgIEBjb250ZW50O1xuICB9O1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG4vLy8gU2xpZ2h0bHkgbGlnaHRlbiBhIGNvbG9yXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byB0aW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwZXJjZW50YWdlIC0gcGVyY2VudGFnZSBvZiBgJGNvbG9yYCBpbiByZXR1cm5lZCBjb2xvclxuLy8vIEByZXR1cm4ge0NvbG9yfVxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCh3aGl0ZSwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbi8vLyBTbGlnaHRseSBkYXJrZW4gYSBjb2xvclxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gY29sb3IgdG8gc2hhZGVcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBwZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHJldHVybmVkIGNvbG9yXG4vLy8gQHJldHVybiB7Q29sb3J9XG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peChibGFjaywgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiBtYXAtc2V0KCRtYXAsICRrZXksICR2YWx1ZTogbnVsbCkge1xuICAkbmV3OiAoJGtleTogJHZhbHVlKTtcbiAgQHJldHVybiBtYXAtbWVyZ2UoJG1hcCwgJG5ldyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBpbXBvcnQgJy4uL2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJy4uL2NvcmUvbWl4aW5zJztcblxuJHRoZW1lOiAoXG4gIGZvbnQtbWFpbjogdW5xdW90ZSgnXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWYnKSxcbiAgZm9udC1zZWNvbmRhcnk6IGZvbnQtbWFpbixcblxuICBmb250LXdlaWdodC10aGluOiAyMDAsXG4gIGZvbnQtd2VpZ2h0LWxpZ2h0OiAzMDAsXG4gIGZvbnQtd2VpZ2h0LW5vcm1hbDogNDAwLFxuICBmb250LXdlaWdodC1ib2xkZXI6IDUwMCxcbiAgZm9udC13ZWlnaHQtYm9sZDogNjAwLFxuICBmb250LXdlaWdodC11bHRyYS1ib2xkOiA4MDAsXG5cbiAgLy8gVE9ETzogdXNlIGl0IGFzIGEgZGVmYXVsdCBmb250LXNpemVcbiAgYmFzZS1mb250LXNpemU6IDE2cHgsXG5cbiAgZm9udC1zaXplLXhsZzogMS4yNXJlbSxcbiAgZm9udC1zaXplLWxnOiAxLjEyNXJlbSxcbiAgZm9udC1zaXplOiAxcmVtLFxuICBmb250LXNpemUtc206IDAuODc1cmVtLFxuICBmb250LXNpemUteHM6IDAuNzVyZW0sXG5cbiAgcmFkaXVzOiAwLjM3NXJlbSxcbiAgcGFkZGluZzogMS4yNXJlbSxcbiAgbWFyZ2luOiAxLjVyZW0sXG4gIGxpbmUtaGVpZ2h0OiAxLjI1LFxuXG4gIGNvbG9yLWJnOiAjZmZmZmZmLFxuICBjb2xvci1iZy1hY3RpdmU6ICNlOWVkZjIsXG4gIGNvbG9yLWZnOiAjYTRhYmIzLFxuICBjb2xvci1mZy1oZWFkaW5nOiAjMmEyYTJhLFxuICBjb2xvci1mZy10ZXh0OiAjNGI0YjRiLFxuICBjb2xvci1mZy1oaWdobGlnaHQ6ICM0MGRjN2UsXG5cbiAgc2VwYXJhdG9yOiAjZWJlZWYyLFxuXG4gIGNvbG9yLWdyYXk6IHJnYmEoODEsIDExMywgMTY1LCAwLjE1KSxcbiAgY29sb3ItbmV1dHJhbDogdHJhbnNwYXJlbnQsXG4gIGNvbG9yLXdoaXRlOiAjZmZmZmZmLFxuICBjb2xvci1kaXNhYmxlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM4YTdmZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICM0MGRjN2UsXG4gIGNvbG9yLWluZm86ICM0Y2E2ZmYsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmExMDAsXG4gIGNvbG9yLWRhbmdlcjogI2ZmNGM2YSxcblxuICAvLyBUT0RPOiBtb3ZlIHRvIGNvbnN0YW50c1xuICBzb2NpYWwtY29sb3ItZmFjZWJvb2s6ICMzYjU5OTgsXG4gIHNvY2lhbC1jb2xvci10d2l0dGVyOiAjNTVhY2VlLFxuICBzb2NpYWwtY29sb3ItZ29vZ2xlOiAjZGQ0YjM5LFxuICBzb2NpYWwtY29sb3ItbGlua2VkaW46ICMwMTc3YjUsXG4gIHNvY2lhbC1jb2xvci1naXRodWI6ICM2YjZiNmIsXG4gIHNvY2lhbC1jb2xvci1zdGFja292ZXJmbG93OiAjMmY5NmU4LFxuICBzb2NpYWwtY29sb3ItZHJpYmJsZTogI2YyNjc5OCxcbiAgc29jaWFsLWNvbG9yLWJlaGFuY2U6ICMwMDkzZmEsXG5cbiAgYm9yZGVyLWNvbG9yOiBjb2xvci1ncmF5LFxuICBzaGFkb3c6IDAgMnB4IDEycHggMCAjZGZlM2ViLFxuXG4gIGxpbmstY29sb3I6ICMzZGNjNmQsXG4gIGxpbmstY29sb3ItaG92ZXI6ICMyZWU1NmIsXG4gIGxpbmstY29sb3ItdmlzaXRlZDogbGluay1jb2xvcixcblxuICBzY3JvbGxiYXItZmc6ICNkYWRhZGEsXG4gIHNjcm9sbGJhci1iZzogI2YyZjJmMixcbiAgc2Nyb2xsYmFyLXdpZHRoOiA1cHgsXG4gIHNjcm9sbGJhci10aHVtYi1yYWRpdXM6IDIuNXB4LFxuXG4gIHJhZGlhbC1ncmFkaWVudDogbm9uZSxcbiAgbGluZWFyLWdyYWRpZW50OiBub25lLFxuXG4gIGNhcmQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNhcmQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBjYXJkLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGNhcmQtZmc6IGNvbG9yLWZnLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIGNhcmQtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1iZzogY29sb3ItYmcsXG4gIGNhcmQtaGVpZ2h0LXh4c21hbGw6IDk2cHgsXG4gIGNhcmQtaGVpZ2h0LXhzbWFsbDogMjE2cHgsXG4gIGNhcmQtaGVpZ2h0LXNtYWxsOiAzMzZweCxcbiAgY2FyZC1oZWlnaHQtbWVkaXVtOiA0NTZweCxcbiAgY2FyZC1oZWlnaHQtbGFyZ2U6IDU3NnB4LFxuICBjYXJkLWhlaWdodC14bGFyZ2U6IDY5NnB4LFxuICBjYXJkLWhlaWdodC14eGxhcmdlOiA4MTZweCxcbiAgY2FyZC1zaGFkb3c6IHNoYWRvdyxcbiAgY2FyZC1ib3JkZXItd2lkdGg6IDAsXG4gIGNhcmQtYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBjYXJkLWJvcmRlci1jb2xvcjogY29sb3ItYmcsXG4gIGNhcmQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjYXJkLXBhZGRpbmc6IHBhZGRpbmcsXG4gIGNhcmQtbWFyZ2luOiBtYXJnaW4sXG4gIGNhcmQtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgY2FyZC1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBjYXJkLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBjYXJkLWhlYWRlci1mZzogY29sb3ItZmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtaGVhZGVyLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNhcmQtaGVhZGVyLWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGNhcmQtaGVhZGVyLWFjdGl2ZS1mZzogY29sb3ItYmcsXG4gIGNhcmQtaGVhZGVyLWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgY2FyZC1oZWFkZXItcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FyZC1oZWFkZXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgY2FyZC1oZWFkZXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FyZC1oZWFkZXItd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgY2FyZC1oZWFkZXItZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci13aWR0aDogMXB4LFxuICBjYXJkLWhlYWRlci1ib3JkZXItdHlwZTogc29saWQsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci1jb2xvcjogY2FyZC1zZXBhcmF0b3IsXG5cbiAgaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBoZWFkZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBoZWFkZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGhlYWRlci1iZzogY29sb3ItYmcsXG4gIGhlYWRlci1oZWlnaHQ6IDQuNzVyZW0sXG4gIGhlYWRlci1wYWRkaW5nOiAxLjI1cmVtLFxuICBoZWFkZXItc2hhZG93OiBzaGFkb3csXG5cbiAgZm9vdGVyLWhlaWdodDogNC43MjVyZW0sXG4gIGZvb3Rlci1wYWRkaW5nOiAxLjI1cmVtLFxuICBmb290ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvb3Rlci1mZy1oaWdobGlnaHQ6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvb3Rlci1iZzogY29sb3ItYmcsXG4gIGZvb3Rlci1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgZm9vdGVyLXNoYWRvdzogc2hhZG93LFxuXG4gIGxheW91dC1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBsYXlvdXQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGxheW91dC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGxheW91dC1mZzogY29sb3ItZmcsXG4gIGxheW91dC1iZzogI2ViZWZmNSxcbiAgbGF5b3V0LW1pbi1oZWlnaHQ6IDEwMHZoLFxuICBsYXlvdXQtY29udGVudC13aWR0aDogOTAwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1taW4td2lkdGg6IDMwMHB4LFxuICBsYXlvdXQtd2luZG93LW1vZGUtbWF4LXdpZHRoOiAxOTIwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1iZzogbGF5b3V0LWJnLFxuICBsYXlvdXQtd2luZG93LW1vZGUtcGFkZGluZy10b3A6IDQuNzVyZW0sXG4gIGxheW91dC13aW5kb3ctc2hhZG93OiBzaGFkb3csXG4gIGxheW91dC1wYWRkaW5nOiAyLjI1cmVtIDIuMjVyZW0gMC43NXJlbSxcbiAgbGF5b3V0LW1lZGl1bS1wYWRkaW5nOiAxLjVyZW0gMS41cmVtIDAuNXJlbSxcbiAgbGF5b3V0LXNtYWxsLXBhZGRpbmc6IDFyZW0gMXJlbSAwLFxuXG4gIHNpZGViYXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHNpZGViYXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzaWRlYmFyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzaWRlYmFyLWJnOiBjb2xvci1iZyxcbiAgc2lkZWJhci1oZWlnaHQ6IDEwMHZoLFxuICBzaWRlYmFyLXdpZHRoOiAxNnJlbSxcbiAgc2lkZWJhci13aWR0aC1jb21wYWN0OiAzLjVyZW0sXG4gIHNpZGViYXItcGFkZGluZzogcGFkZGluZyxcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiAzLjVyZW0sXG4gIHNpZGViYXItZm9vdGVyLWhlaWdodDogMy41cmVtLFxuICBzaWRlYmFyLXNoYWRvdzogc2hhZG93LFxuXG4gIG1lbnUtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBtZW51LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1hY3RpdmUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcblxuICBtZW51LXN1Ym1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYmc6IGNvbG9yLWJnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGlnaGxpZ2h0LFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLXNoYWRvdzogbm9uZSxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWZnOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItYmc6IG1lbnUtc3VibWVudS1iZyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXdpZHRoOiAwLjEyNXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1wYWRkaW5nOiAwLjVyZW0gMXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tY29udGFpbmVyLXBhZGRpbmc6IDAgMS4yNXJlbSxcbiAgbWVudS1zdWJtZW51LXBhZGRpbmc6IDAuNXJlbSxcblxuICBtZW51LWdyb3VwLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZ3JvdXAtZm9udC1zaXplOiAwLjg3NXJlbSxcbiAgbWVudS1ncm91cC1mZzogY29sb3ItZmcsXG4gIG1lbnUtZ3JvdXAtcGFkZGluZzogMXJlbSAxLjI1cmVtLFxuICBtZW51LWl0ZW0tcGFkZGluZzogMC42NzVyZW0gMC43NXJlbSxcbiAgbWVudS1pdGVtLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBtZW51LWljb24tZm9udC1zaXplOiAyLjVyZW0sXG4gIG1lbnUtaWNvbi1tYXJnaW46IDAgMC4yNXJlbSAwLFxuICBtZW51LWljb24tY29sb3I6IGNvbG9yLWZnLFxuICBtZW51LWljb24tYWN0aXZlLWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIHRhYnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICB0YWJzLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICB0YWJzLWNvbnRlbnQtZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgdGFicy1jb250ZW50LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICB0YWJzLWFjdGl2ZS1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtYWN0aXZlLWZvbnQtd2VpZ2h0OiBjYXJkLWhlYWRlci1mb250LXdlaWdodCxcbiAgdGFicy1wYWRkaW5nOiBwYWRkaW5nLFxuICB0YWJzLWNvbnRlbnQtcGFkZGluZzogMCxcbiAgdGFicy1oZWFkZXItYmc6IHRyYW5zcGFyZW50LFxuICB0YWJzLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICB0YWJzLWZnOiBjb2xvci1mZyxcbiAgdGFicy1mZy1kaXNhYmxlZDogdGFicy1mZyxcbiAgdGFicy1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICB0YWJzLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHRhYnMtYmc6IHRyYW5zcGFyZW50LFxuICB0YWJzLXNlbGVjdGVkOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLXNlY29uZC1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgdGFicy1zZWxlY3RlZC1kZWdyZWVzOiAwLFxuICB0YWJzLWljb24tb25seS1tYXgtd2lkdGg6IDU3NnB4LFxuXG4gIHJvdXRlLXRhYnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICByb3V0ZS10YWJzLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICByb3V0ZS10YWJzLWFjdGl2ZS1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtYWN0aXZlLWZvbnQtd2VpZ2h0OiBjYXJkLWhlYWRlci1mb250LXdlaWdodCxcbiAgcm91dGUtdGFicy1wYWRkaW5nOiBwYWRkaW5nLFxuICByb3V0ZS10YWJzLWhlYWRlci1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHJvdXRlLXRhYnMtZmc6IGNvbG9yLWZnLFxuICByb3V0ZS10YWJzLWZnLWRpc2FibGVkOiByb3V0ZS10YWJzLWZnLFxuICByb3V0ZS10YWJzLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHJvdXRlLXRhYnMtYmc6IHRyYW5zcGFyZW50LFxuICByb3V0ZS10YWJzLXNlbGVjdGVkOiBjb2xvci1zdWNjZXNzLFxuICByb3V0ZS10YWJzLWljb24tb25seS1tYXgtd2lkdGg6IDU3NnB4LFxuXG4gIHVzZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHVzZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICB1c2VyLWJnOiBjb2xvci1iZyxcbiAgdXNlci1mZzogY29sb3ItZmcsXG4gIHVzZXItZmctaGlnaGxpZ2h0OiAjYmNjM2NjLFxuICB1c2VyLWZvbnQtZmFtaWx5LXNlY29uZGFyeTogZm9udC1zZWNvbmRhcnksXG4gIHVzZXItc2l6ZS1zbWFsbDogMS41cmVtLFxuICB1c2VyLXNpemUtbWVkaXVtOiAyLjVyZW0sXG4gIHVzZXItc2l6ZS1sYXJnZTogMy4yNXJlbSxcbiAgdXNlci1zaXplLXhsYXJnZTogNHJlbSxcblxuICBwb3BvdmVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBwb3BvdmVyLWJnOiBjb2xvci1iZyxcbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIHBvcG92ZXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBwb3BvdmVyLXNoYWRvdzogbm9uZSxcbiAgcG9wb3Zlci1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIGNvbnRleHQtbWVudS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgY29udGV4dC1tZW51LWJnOiBjb2xvci1iZyxcbiAgY29udGV4dC1tZW51LWFjdGl2ZS1mZzogY29sb3Itd2hpdGUsXG4gIGNvbnRleHQtbWVudS1hY3RpdmUtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNvbnRleHQtbWVudS1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNvbnRleHQtbWVudS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNvbnRleHQtbWVudS1zaGFkb3c6IG5vbmUsXG4gIGNvbnRleHQtbWVudS1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIGFjdGlvbnMtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFjdGlvbnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBhY3Rpb25zLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYWN0aW9ucy1mZzogY29sb3ItZmcsXG4gIGFjdGlvbnMtYmc6IGNvbG9yLWJnLFxuICBhY3Rpb25zLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBhY3Rpb25zLXBhZGRpbmc6IHBhZGRpbmcsXG4gIGFjdGlvbnMtc2l6ZS1zbWFsbDogMS41cmVtLFxuICBhY3Rpb25zLXNpemUtbWVkaXVtOiAyLjI1cmVtLFxuICBhY3Rpb25zLXNpemUtbGFyZ2U6IDMuNXJlbSxcblxuICBzZWFyY2gtYnRuLW9wZW4tZmc6IGNvbG9yLWZnLFxuICBzZWFyY2gtYnRuLWNsb3NlLWZnOlx0Y29sb3ItZmcsXG4gIHNlYXJjaC1iZzogbGF5b3V0LWJnLFxuICBzZWFyY2gtYmctc2Vjb25kYXJ5OiBjb2xvci1mZyxcbiAgc2VhcmNoLXRleHQ6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNlYXJjaC1pbmZvOiBjb2xvci1mZyxcbiAgc2VhcmNoLWRhc2g6IGNvbG9yLWZnLFxuICBzZWFyY2gtcGxhY2Vob2xkZXI6IGNvbG9yLWZnLFxuXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBzbWFydC10YWJsZS1oZWFkZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzbWFydC10YWJsZS1oZWFkZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1iZzogY29sb3ItYmcsXG5cbiAgc21hcnQtdGFibGUtZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgc21hcnQtdGFibGUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIHNtYXJ0LXRhYmxlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIHNtYXJ0LXRhYmxlLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgc21hcnQtdGFibGUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLWJnOiBjb2xvci1iZyxcblxuICBzbWFydC10YWJsZS1iZy1ldmVuOiAjZjVmN2ZjLFxuICBzbWFydC10YWJsZS1mZy1zZWNvbmRhcnk6IGNvbG9yLWZnLFxuICBzbWFydC10YWJsZS1iZy1hY3RpdmU6ICNlNmYzZmYsXG4gIHNtYXJ0LXRhYmxlLXBhZGRpbmc6IDAuODc1cmVtIDEuMjVyZW0sXG4gIHNtYXJ0LXRhYmxlLWZpbHRlci1wYWRkaW5nOiAwLjM3NXJlbSAwLjVyZW0sXG4gIHNtYXJ0LXRhYmxlLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBzbWFydC10YWJsZS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG5cbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLXdpZHRoOiAxcHgsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1mZy1hY3RpdmU6ICNmZmZmZmYsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXN1Y2Nlc3MsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjA1KSxcblxuICB0b2FzdHItYmc6IGNvbG9yLWJnLFxuICB0b2FzdHItcGFkZGluZzogMS4xMjVyZW0sXG4gIHRvYXN0ci1mZzogY29sb3ItZmctdGV4dCxcbiAgdG9hc3RyLWJvcmRlcjogMC4xMjVyZW0gc29saWQsXG4gIHRvYXN0ci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIHRvYXN0ci1ib3JkZXItY29sb3I6ICNiY2MzY2MsXG4gIHRvYXN0ci1pY29uLXJhZGl1czogMC4yNXJlbSxcbiAgdG9hc3RyLXNoYWRvdzogc2hhZG93LFxuXG4gIGJ0bi1mZzogY29sb3Itd2hpdGUsXG4gIGJ0bi1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGJ0bi1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGJ0bi1kaXNhYmxlZC1vcGFjaXR5OiAwLjMsXG4gIGJ0bi1jdXJzb3I6IGRlZmF1bHQsXG5cbiAgYnRuLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGJ0bi1zZWNvbmRhcnktYmc6IHRyYW5zcGFyZW50LFxuICBidG4taW5mby1iZzogY29sb3ItaW5mbyxcbiAgYnRuLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGJ0bi13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBidG4tZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6ICNkYWRmZTYsXG4gIGJ0bi1zZWNvbmRhcnktYm9yZGVyLXdpZHRoOiAycHgsXG5cbiAgYnRuLXBhZGRpbmcteS1sZzogMC44NzVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtbGc6IDEuNzVyZW0sXG4gIGJ0bi1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcblxuICAvLyBkZWZhdWx0IHNpemVcbiAgYnRuLXBhZGRpbmcteS1tZDogMC43NXJlbSxcbiAgYnRuLXBhZGRpbmcteC1tZDogMS41cmVtLFxuICBidG4tZm9udC1zaXplLW1kOiAxcmVtLFxuXG4gIGJ0bi1wYWRkaW5nLXktc206IDAuNjI1cmVtLFxuICBidG4tcGFkZGluZy14LXNtOiAxLjVyZW0sXG4gIGJ0bi1mb250LXNpemUtc206IDAuODc1cmVtLFxuXG4gIGJ0bi1wYWRkaW5nLXkteHM6IDAuNXJlbSxcbiAgYnRuLXBhZGRpbmcteC14czogMS4yNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS14czogMC43NXJlbSxcblxuICBidG4tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBidG4tcmVjdGFuZ2xlLWJvcmRlci1yYWRpdXM6IDAuMjVyZW0sXG4gIGJ0bi1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXM6IDAuNzVyZW0sXG4gIGJ0bi1yb3VuZC1ib3JkZXItcmFkaXVzOiAxLjVyZW0sXG5cbiAgYnRuLWhlcm8tc2hhZG93OiBub25lLFxuICBidG4taGVyby10ZXh0LXNoYWRvdzogbm9uZSxcbiAgYnRuLWhlcm8tYmV2ZWwtc2l6ZTogMCAwIDAgMCxcbiAgYnRuLWhlcm8tZ2xvdy1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tZGVncmVlOiAyMGRlZyxcbiAgYnRuLWhlcm8tcHJpbWFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tc3VjY2Vzcy1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8td2FybmluZy1kZWdyZWU6IDEwZGVnLFxuICBidG4taGVyby1pbmZvLWRlZ3JlZTogLTEwZGVnLFxuICBidG4taGVyby1kYW5nZXItZGVncmVlOiAtMjBkZWcsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuXG4gIGJ0bi1vdXRsaW5lLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1ob3Zlci1mZzogI2ZmZmZmZixcbiAgYnRuLW91dGxpbmUtZm9jdXMtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgYnRuLWdyb3VwLWJnOiBsYXlvdXQtYmcsXG4gIGJ0bi1ncm91cC1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLWdyb3VwLXNlcGFyYXRvcjogI2RhZGZlNixcblxuICBmb3JtLWNvbnRyb2wtdGV4dC1wcmltYXJ5LWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuICBmb3JtLWNvbnRyb2wtYmc6IGNvbG9yLWJnLFxuICBmb3JtLWNvbnRyb2wtZm9jdXMtYmc6IGNvbG9yLWJnLFxuXG4gIGZvcm0tY29udHJvbC1ib3JkZXItd2lkdGg6IDJweCxcbiAgZm9ybS1jb250cm9sLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgZm9ybS1jb250cm9sLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgZm9ybS1jb250cm9sLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1czogMC43NXJlbSxcbiAgZm9ybS1jb250cm9sLXJvdW5kLWJvcmRlci1yYWRpdXM6IDEuNXJlbSxcbiAgZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcjogI2RhZGZlNixcbiAgZm9ybS1jb250cm9sLXNlbGVjdGVkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcblxuICBmb3JtLWNvbnRyb2wtaW5mby1ib3JkZXItY29sb3I6IGNvbG9yLWluZm8sXG4gIGZvcm0tY29udHJvbC1zdWNjZXNzLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgZm9ybS1jb250cm9sLWRhbmdlci1ib3JkZXItY29sb3I6IGNvbG9yLWRhbmdlcixcbiAgZm9ybS1jb250cm9sLXdhcm5pbmctYm9yZGVyLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuXG4gIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcjogY29sb3ItZmcsXG4gIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1mb250LXNpemU6IDFyZW0sXG5cbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZTogMXJlbSxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmc6IDAuNzVyZW0gMS4xMjVyZW0sXG4gIGZvcm0tY29udHJvbC1mb250LXNpemUtc206IGZvbnQtc2l6ZS1zbSxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmctc206IDAuMzc1cmVtIDEuMTI1cmVtLFxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG4gIGZvcm0tY29udHJvbC1wYWRkaW5nLWxnOiAxLjEyNXJlbSxcblxuICBmb3JtLWNvbnRyb2wtbGFiZWwtZm9udC13ZWlnaHQ6IDQwMCxcblxuICBmb3JtLWNvbnRyb2wtZmVlZGJhY2stZm9udC1zaXplOiAwLjg3NXJlbSxcbiAgZm9ybS1jb250cm9sLWZlZWRiYWNrLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG5cbiAgY2hlY2tib3gtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1ib3JkZXItY29sb3I6IGZvcm0tY29udHJvbC1ib3JkZXItY29sb3IsXG4gIGNoZWNrYm94LWNoZWNrbWFyazogdHJhbnNwYXJlbnQsXG5cbiAgY2hlY2tib3gtY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgY2hlY2tib3gtY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgY2hlY2tib3gtZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBtb2RhbC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbW9kYWwtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBtb2RhbC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtb2RhbC1mZzogY29sb3ItZmctdGV4dCxcbiAgbW9kYWwtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgbW9kYWwtYmc6IGNvbG9yLWJnLFxuICBtb2RhbC1ib3JkZXI6IHRyYW5zcGFyZW50LFxuICBtb2RhbC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1vZGFsLXBhZGRpbmc6IHBhZGRpbmcsXG4gIG1vZGFsLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIG1vZGFsLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtb2RhbC1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIG1vZGFsLWJvZHktZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgbW9kYWwtYm9keS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtb2RhbC1ib2R5LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtb2RhbC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcblxuICBiYWRnZS1mZy10ZXh0OiBjb2xvci13aGl0ZSxcbiAgYmFkZ2UtcHJpbWFyeS1iZy1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgYmFkZ2UtaW5mby1iZy1jb2xvcjogY29sb3ItaW5mbyxcbiAgYmFkZ2Utd2FybmluZy1iZy1jb2xvcjogY29sb3Itd2FybmluZyxcbiAgYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yOiBjb2xvci1kYW5nZXIsXG5cbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC14bGc6IDEuNzVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQtbGc6IDEuNXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodDogMS4zNzVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQtc206IDEuMjVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQteHM6IDFyZW0sXG4gIHByb2dyZXNzLWJhci1hbmltYXRpb24tZHVyYXRpb246IDQwMG1zLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXhsZzogZm9udC1zaXplLXhsZyxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUtc206IGZvbnQtc2l6ZS1zbSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS14czogZm9udC1zaXplLXhzLFxuICBwcm9ncmVzcy1iYXItcmFkaXVzOiByYWRpdXMsXG4gIHByb2dyZXNzLWJhci1iZzogbGF5b3V0LWJnLFxuICBwcm9ncmVzcy1iYXItZm9udC1jb2xvcjogY29sb3Itd2hpdGUsXG4gIHByb2dyZXNzLWJhci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgcHJvZ3Jlc3MtYmFyLWRlZmF1bHQtYmc6IGNvbG9yLWluZm8sXG4gIHByb2dyZXNzLWJhci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBwcm9ncmVzcy1iYXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgcHJvZ3Jlc3MtYmFyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHByb2dyZXNzLWJhci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgYWxlcnQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFsZXJ0LWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYWxlcnQtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWxlcnQtZmc6IGNvbG9yLXdoaXRlLFxuICBhbGVydC1vdXRsaW5lLWZnOiBjb2xvci1mZyxcbiAgYWxlcnQtYmc6IGNvbG9yLWJnLFxuICBhbGVydC1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBhbGVydC1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIGFsZXJ0LWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgYWxlcnQtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgYWxlcnQtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgYWxlcnQtc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgYWxlcnQtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgYWxlcnQtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIGFsZXJ0LWhlaWdodC14eHNtYWxsOiA1MnB4LFxuICBhbGVydC1oZWlnaHQteHNtYWxsOiA3MnB4LFxuICBhbGVydC1oZWlnaHQtc21hbGw6IDkycHgsXG4gIGFsZXJ0LWhlaWdodC1tZWRpdW06IDExMnB4LFxuICBhbGVydC1oZWlnaHQtbGFyZ2U6IDEzMnB4LFxuICBhbGVydC1oZWlnaHQteGxhcmdlOiAxNTJweCxcbiAgYWxlcnQtaGVpZ2h0LXh4bGFyZ2U6IDE3MnB4LFxuICBhbGVydC1zaGFkb3c6IG5vbmUsXG4gIGFsZXJ0LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYWxlcnQtcGFkZGluZzogMXJlbSAxLjEyNXJlbSxcbiAgYWxlcnQtY2xvc2FibGUtcGFkZGluZzogM3JlbSxcbiAgYWxlcnQtYnV0dG9uLXBhZGRpbmc6IDNyZW0sXG4gIGFsZXJ0LW1hcmdpbjogbWFyZ2luLFxuXG4gIGNoYXQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNoYXQtZmc6IGNvbG9yLXdoaXRlLFxuICBjaGF0LWJnOiBjb2xvci1iZyxcbiAgY2hhdC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNoYXQtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgY2hhdC1oZWlnaHQteHhzbWFsbDogOTZweCxcbiAgY2hhdC1oZWlnaHQteHNtYWxsOiAyMTZweCxcbiAgY2hhdC1oZWlnaHQtc21hbGw6IDMzNnB4LFxuICBjaGF0LWhlaWdodC1tZWRpdW06IDQ1NnB4LFxuICBjaGF0LWhlaWdodC1sYXJnZTogNTc2cHgsXG4gIGNoYXQtaGVpZ2h0LXhsYXJnZTogNjk2cHgsXG4gIGNoYXQtaGVpZ2h0LXh4bGFyZ2U6IDgxNnB4LFxuICBjaGF0LWJvcmRlcjogYm9yZGVyLFxuICBjaGF0LXBhZGRpbmc6IHBhZGRpbmcsXG4gIGNoYXQtc2hhZG93OiBzaGFkb3csXG4gIGNoYXQtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGNoYXQtbWVzc2FnZS1mZzogY29sb3Itd2hpdGUsXG4gIGNoYXQtbWVzc2FnZS1iZzogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjNGNhNmZmLCAjNTliZmZmKSxcbiAgY2hhdC1tZXNzYWdlLXJlcGx5LWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNoYXQtbWVzc2FnZS1yZXBseS1mZzogY29sb3ItZmctdGV4dCxcbiAgY2hhdC1tZXNzYWdlLWF2YXRhci1iZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1zZW5kZXItZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtcXVvdGUtZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtcXVvdGUtYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2hhdC1tZXNzYWdlLWZpbGUtZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtZmlsZS1iZzogdHJhbnNwYXJlbnQsXG4gIGNoYXQtZm9ybS1iZzogdHJhbnNwYXJlbnQsXG4gIGNoYXQtZm9ybS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgY2hhdC1mb3JtLWJvcmRlcjogc2VwYXJhdG9yLFxuICBjaGF0LWZvcm0tcGxhY2Vob2xkZXItZmc6IGNvbG9yLWZnLFxuICBjaGF0LWZvcm0tYWN0aXZlLWJvcmRlcjogY29sb3ItZmcsXG4gIGNoYXQtYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgY2hhdC1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIGNoYXQtZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBjaGF0LXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGNoYXQtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgY2hhdC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjaGF0LXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGNoYXQtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgc3Bpbm5lci1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgzKSxcbiAgc3Bpbm5lci1jaXJjbGUtYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgc3Bpbm5lci1mZzogY29sb3ItZmctdGV4dCxcbiAgc3Bpbm5lci1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBzcGlubmVyLWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgc3Bpbm5lci1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIHNwaW5uZXItcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgc3Bpbm5lci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBzcGlubmVyLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIHNwaW5uZXItd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgc3Bpbm5lci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgc3Bpbm5lci14eHNtYWxsOiAxLjI1cmVtLFxuICBzcGlubmVyLXhzbWFsbDogMS41cmVtLFxuICBzcGlubmVyLXNtYWxsOiAxLjc1cmVtLFxuICBzcGlubmVyLW1lZGl1bTogMnJlbSxcbiAgc3Bpbm5lci1sYXJnZTogMi4yNXJlbSxcbiAgc3Bpbm5lci14bGFyZ2U6IDIuNXJlbSxcbiAgc3Bpbm5lci14eGxhcmdlOiAzcmVtLFxuXG4gIHN0ZXBwZXItaW5kZXgtc2l6ZTogMnJlbSxcbiAgc3RlcHBlci1sYWJlbC1mb250LXNpemU6IGZvbnQtc2l6ZS1zbSxcbiAgc3RlcHBlci1sYWJlbC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBzdGVwcGVyLWFjY2VudC1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgc3RlcHBlci1jb21wbGV0ZWQtZmc6IGNvbG9yLXdoaXRlLFxuICBzdGVwcGVyLWZnOiBjb2xvci1mZyxcbiAgc3RlcHBlci1jb21wbGV0ZWQtaWNvbi1zaXplOiAxLjVyZW0sXG4gIHN0ZXBwZXItY29tcGxldGVkLWljb24td2VpZ2h0OiBmb250LXdlaWdodC11bHRyYS1ib2xkLFxuICBzdGVwcGVyLXN0ZXAtcGFkZGluZzogcGFkZGluZyxcblxuICBhY2NvcmRpb24tcGFkZGluZzogcGFkZGluZyxcbiAgYWNjb3JkaW9uLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYWNjb3JkaW9uLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhY2NvcmRpb24taGVhZGVyLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGFjY29yZGlvbi1oZWFkZXItZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci13aWR0aDogMXB4LFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgYWNjb3JkaW9uLWhlYWRlci1ib3JkZXItY29sb3I6IGFjY29yZGlvbi1zZXBhcmF0b3IsXG4gIGFjY29yZGlvbi1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGFjY29yZGlvbi1pdGVtLWJnOiBjb2xvci1iZyxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFjY29yZGlvbi1pdGVtLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFjY29yZGlvbi1pdGVtLWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIGFjY29yZGlvbi1pdGVtLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIGFjY29yZGlvbi1pdGVtLXNoYWRvdzogc2hhZG93LFxuXG4gIGxpc3QtaXRlbS1ib3JkZXItY29sb3I6IHRhYnMtc2VwYXJhdG9yLFxuICBsaXN0LWl0ZW0tcGFkZGluZzogMXJlbSxcblxuICBjYWxlbmRhci13aWR0aDogMjEuODc1cmVtLFxuICBjYWxlbmRhci1ib2R5LWhlaWdodDogMjUuNjI1cmVtLFxuICBjYWxlbmRhci1oZWFkZXItdGl0bGUtZm9udC1zaXplOiBmb250LXNpemUteGxnLFxuICBjYWxlbmRhci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIGNhbGVuZGFyLWhlYWRlci1zdWItdGl0bGUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNhbGVuZGFyLWhlYWRlci1zdWItdGl0bGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LXRoaW4sXG4gIGNhbGVuZGFyLW5hdmlnYXRpb24tYnV0dG9uLXdpZHRoOiAxMHJlbSxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FsZW5kYXItaG92ZXItaXRlbS1iZzogY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZyxcbiAgY2FsZW5kYXItdG9kYXktaXRlbS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjYWxlbmRhci1hY3RpdmUtaXRlbS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FsZW5kYXItZmc6IGNvbG9yLWZnLXRleHQsXG4gIGNhbGVuZGFyLXNlbGVjdGVkLWZnOiBjb2xvci13aGl0ZSxcbiAgY2FsZW5kYXItdG9kYXktZmc6IGNhbGVuZGFyLWZnLFxuICBjYWxlbmRhci1kYXktY2VsbC13aWR0aDogMi42MjVyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWhlaWdodDogMi42MjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGg6IDQuMjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0OiAyLjM3NXJlbSxcbiAgY2FsZW5kYXIteWVhci1jZWxsLXdpZHRoOiBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtaGVpZ2h0OiBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodCxcbiAgY2FsZW5kYXItaW5hY3RpdmUtb3BhY2l0eTogMC41LFxuICBjYWxlbmRhci1kaXNhYmxlZC1vcGFjaXR5OiAwLjMsXG4gIGNhbGVuZGFyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2FsZW5kYXItd2Vla2RheS13aWR0aDogY2FsZW5kYXItZGF5LWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXdlZWtkYXktaGVpZ2h0OiAxLjc1cmVtLFxuICBjYWxlbmRhci13ZWVrZGF5LWZvbnQtc2l6ZTogZm9udC1zaXplLXhzLFxuICBjYWxlbmRhci13ZWVrZGF5LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGNhbGVuZGFyLXdlZWtkYXktZmc6IGNvbG9yLWZnLFxuICBjYWxlbmRhci13ZWVrZGF5LWhvbGlkYXktZmc6IGNvbG9yLWRhbmdlcixcbiAgY2FsZW5kYXItcmFuZ2UtYmctaW4tcmFuZ2U6ICNlYmZiZjIsXG5cbiAgY2FsZW5kYXItbGFyZ2Utd2lkdGg6IDI0LjM3NXJlbSxcbiAgY2FsZW5kYXItbGFyZ2UtYm9keS1oZWlnaHQ6IDI3Ljc1cmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1sYXJnZS13aWR0aDogM3JlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtbGFyZ2UtaGVpZ2h0OiAzcmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLWxhcmdlLXdpZHRoOiA0LjI1cmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLWxhcmdlLWhlaWdodDogMi4zNzVyZW0sXG4gIGNhbGVuZGFyLXllYXItY2VsbC1sYXJnZS13aWR0aDogY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aCxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWxhcmdlLWhlaWdodDogY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQsXG5cbiAgb3ZlcmxheS1iYWNrZHJvcC1iZzogcmdiYSgwLCAwLCAwLCAwLjI4OCksXG5cbiAgdG9vbHRpcC1iZzogY29sb3ItZmctdGV4dCxcbiAgdG9vbHRpcC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICB0b29sdGlwLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHRvb2x0aXAtc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgdG9vbHRpcC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICB0b29sdGlwLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICB0b29sdGlwLWZnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHRvb2x0aXAtc3RhdHVzLWZnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHRvb2x0aXAtc2hhZG93OiBzaGFkb3csXG4gIHRvb2x0aXAtZm9udC1zaXplOiBmb250LXNpemUsXG5cbiAgc2VsZWN0LWJvcmRlci13aWR0aDogMnB4LFxuICBzZWxlY3QtbWF4LWhlaWdodDogMjByZW0sXG4gIHNlbGVjdC1iZzogY29sb3ItYmcsXG5cbiAgc2VsZWN0LWNoZWNrYm94LWNvbG9yOiBjaGVja2JveC1ib3JkZXItY29sb3IsXG4gIHNlbGVjdC1jaGVja21hcmstY29sb3I6IGNoZWNrYm94LWJvcmRlci1jb2xvcixcblxuICBzZWxlY3Qtb3B0aW9uLWRpc2FibGVkLWJnOiAjZjJmNGY3LFxuICBzZWxlY3Qtb3B0aW9uLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgc2VsZWN0LW9wdGlvbi1wYWRkaW5nOiAwLjc1cmVtIDEuNXJlbSxcblxuICBkYXRlcGlja2VyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBkYXRlcGlja2VyLWJnOiBjb2xvci1iZyxcbiAgZGF0ZXBpY2tlci1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIGRhdGVwaWNrZXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBkYXRlcGlja2VyLXNoYWRvdzogbm9uZSxcbiAgZGF0ZXBpY2tlci1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIHJhZGlvLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tZmc6IGNvbG9yLWZnLXRleHQsXG4gIHJhZGlvLXNpemU6IDEuMjVyZW0sXG4gIHJhZGlvLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWJvcmRlci1jb2xvcjogZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcixcbiAgcmFkaW8tY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIHJhZGlvLWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgcmFkaW8tY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJhZGlvLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tZGlzYWJsZWQtc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tZGlzYWJsZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiByYWRpby1ib3JkZXItY29sb3IsXG4gIHJhZGlvLWRpc2FibGVkLWNoZWNrbWFyazogcmFkaW8tY2hlY2ttYXJrLFxuXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci13aWR0aDogMXB4LFxuICB0cmVlLWdyaWQtY2VsbC1ib3JkZXItc3R5bGU6IHNvbGlkLFxuICB0cmVlLWdyaWQtY2VsbC1ib3JkZXItY29sb3I6IHNlcGFyYXRvcixcbiAgdHJlZS1ncmlkLXJvdy1taW4taGVpZ2h0OiAycmVtLFxuICB0cmVlLWdyaWQtY2VsbC1wYWRkaW5nOiAwLjg3NXJlbSAxLjI1cmVtLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50LFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWJvcmRlcjogbm9uZSxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1wYWRkaW5nOiAwLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWZvbnQtd2VpZ2h0OiBib2xkLFxuICB0cmVlLWdyaWQtaGVhZGVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLWZvb3Rlci1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtcm93LWJnLWV2ZW46IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtcm93LWhvdmVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1jb2xvcjogY29sb3ItZmctdGV4dCxcbiAgdHJlZS1ncmlkLWljb24tY29sb3I6IGNvbG9yLWZnLXRleHQsXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgZGVmYXVsdCk7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBpbXBvcnQgJy4uL2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJy4uL2NvcmUvbWl4aW5zJztcbkBpbXBvcnQgJ2RlZmF1bHQnO1xuXG4vLyBkZWZhdWx0IHRoZSBiYXNlIHRoZW1lXG4kdGhlbWU6IChcbiAgcmFkaXVzOiAwLjVyZW0sXG5cbiAgY29sb3ItYmc6ICMzZDM3ODAsXG4gIGNvbG9yLWJnLWFjdGl2ZTogIzQ5NDI5OSxcbiAgY29sb3ItZmc6ICNhMWExZTUsXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICNmZmZmZmYsXG4gIGNvbG9yLWZnLXRleHQ6ICNkMWQxZmYsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogIzAwZjlhNixcblxuICBjb2xvci1ncmF5OiByZ2JhKDgxLCAxMTMsIDE2NSwgMC4xNSksXG4gIGNvbG9yLW5ldXRyYWw6IHRyYW5zcGFyZW50LFxuICBjb2xvci13aGl0ZTogI2ZmZmZmZixcbiAgY29sb3ItZGlzYWJsZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSxcblxuICBjb2xvci1wcmltYXJ5OiAjNzY1OWZmLFxuICBjb2xvci1zdWNjZXNzOiAjMDBkOTc3LFxuICBjb2xvci1pbmZvOiAjMDA4OGZmLFxuICBjb2xvci13YXJuaW5nOiAjZmZhMTAwLFxuICBjb2xvci1kYW5nZXI6ICNmZjM4NmEsXG5cbiAgbGluay1jb2xvcjogIzAwZjlhNixcbiAgbGluay1jb2xvci1ob3ZlcjogIzE0ZmZiZSxcblxuICBzZXBhcmF0b3I6ICMzNDJlNzMsXG4gIHNoYWRvdzogMCA4cHggMjBweCAwIHJnYmEoNDAsIDM3LCA4OSwgMC42KSxcblxuICBjYXJkLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuXG4gIGxheW91dC1iZzogIzJmMjk2YixcblxuICBzY3JvbGxiYXItZmc6ICM1NTRkYjMsXG4gIHNjcm9sbGJhci1iZzogIzMzMmU3MyxcblxuICByYWRpYWwtZ3JhZGllbnQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgIzQyM2Y4YywgIzMwMmM2ZSksXG4gIGxpbmVhci1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMTcxNzQ5LCAjNDEzNzg5KSxcblxuICBzaWRlYmFyLWZnOiBjb2xvci1zZWNvbmRhcnksXG4gIHNpZGViYXItYmc6IGNvbG9yLWJnLFxuXG4gIGhlYWRlci1mZzogY29sb3Itd2hpdGUsXG4gIGhlYWRlci1iZzogY29sb3ItYmcsXG5cbiAgZm9vdGVyLWZnOiBjb2xvci1mZyxcbiAgZm9vdGVyLWJnOiBjb2xvci1iZyxcblxuICBhY3Rpb25zLWZnOiBjb2xvci1mZyxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG5cbiAgdXNlci1mZzogY29sb3ItYmcsXG4gIHVzZXItYmc6IGNvbG9yLWZnLFxuICB1c2VyLWZnLWhpZ2hsaWdodDogY29sb3ItZmctaGlnaGxpZ2h0LFxuXG4gIHBvcG92ZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuICBwb3BvdmVyLXNoYWRvdzogc2hhZG93LFxuXG4gIGNvbnRleHQtbWVudS1hY3RpdmUtYmc6IGNvbG9yLXByaW1hcnksXG4gIGNvbnRleHQtbWVudS1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG5cbiAgZm9vdGVyLWhlaWdodDogaGVhZGVyLWhlaWdodCxcblxuICBzaWRlYmFyLXdpZHRoOiAxNi4yNXJlbSxcbiAgc2lkZWJhci13aWR0aC1jb21wYWN0OiAzLjQ1cmVtLFxuXG4gIG1lbnUtZmc6IGNvbG9yLWZnLFxuICBtZW51LWJnOiBjb2xvci1iZyxcbiAgbWVudS1hY3RpdmUtZmc6IGNvbG9yLXdoaXRlLFxuICBtZW51LWdyb3VwLWZnOiBjb2xvci13aGl0ZSxcbiAgbWVudS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtZW51LWFjdGl2ZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LXN1Ym1lbnUtYmc6IGxheW91dC1iZyxcbiAgbWVudS1zdWJtZW51LWZnOiBjb2xvci1mZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogcmdiYSgwLCAyNTUsIDE3MCwgMC4yNSksXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oaWdobGlnaHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiAwIDJweCAxMnB4IDAgcmdiYSgwLCAyNTUsIDE3MCwgMC4yNSksXG4gIG1lbnUtaXRlbS1wYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW0sXG4gIG1lbnUtaXRlbS1zZXBhcmF0b3I6IHRyYW5zcGFyZW50LFxuXG4gIGJ0bi1oZXJvLXNoYWRvdzogMCA0cHggMTBweCAwIHJnYmEoMzMsIDcsIDc3LCAwLjUpLFxuICBidG4taGVyby10ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKSxcbiAgYnRuLWhlcm8tYmV2ZWwtc2l6ZTogMCAzcHggMCAwLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMnB4IDhweCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4gIGJ0bi1vdXRsaW5lLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1ob3Zlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLW91dGxpbmUtZm9jdXMtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1ncm91cC1iZzogIzM3MzI3MyxcbiAgYnRuLWdyb3VwLXNlcGFyYXRvcjogIzMxMmM2NixcblxuICBmb3JtLWNvbnRyb2wtYmc6ICMzNzMxN2EsXG4gIGZvcm0tY29udHJvbC1mb2N1cy1iZzogc2VwYXJhdG9yLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIGZvcm0tY29udHJvbC1zZWxlY3RlZC1ib3JkZXItY29sb3I6IGNvbG9yLXByaW1hcnksXG5cbiAgY2hlY2tib3gtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLFxuICBjaGVja2JveC1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuXG4gIGNoZWNrYm94LWNoZWNrZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1jaGVja2VkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoZWNrYm94LWNoZWNrZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIGNoZWNrYm94LWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGVja2JveC1kaXNhYmxlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgc2VhcmNoLWJnOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMxNzE3NDksICM0MTM3ODkpLFxuXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBzbWFydC10YWJsZS1oZWFkZXItYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgc21hcnQtdGFibGUtYmctZXZlbjogIzNhMzQ3YSxcbiAgc21hcnQtdGFibGUtYmctYWN0aXZlOiBjb2xvci1iZy1hY3RpdmUsXG5cbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci13aWR0aDogMnB4LFxuICBzbWFydC10YWJsZS1wYWdpbmctZmctYWN0aXZlOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzbWFydC10YWJsZS1wYWdpbmctYmctYWN0aXZlOiBjb2xvci1wcmltYXJ5LFxuICBzbWFydC10YWJsZS1wYWdpbmctaG92ZXI6IHJnYmEoMCwgMCwgMCwgMC4yKSxcblxuICBiYWRnZS1mZy10ZXh0OiBjb2xvci13aGl0ZSxcbiAgYmFkZ2UtcHJpbWFyeS1iZy1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgYmFkZ2UtaW5mby1iZy1jb2xvcjogY29sb3ItaW5mbyxcbiAgYmFkZ2Utd2FybmluZy1iZy1jb2xvcjogY29sb3Itd2FybmluZyxcbiAgYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yOiBjb2xvci1kYW5nZXIsXG5cbiAgc3Bpbm5lci1iZzogcmdiYSg2MSwgNTUsIDEyOCwgMC45KSxcbiAgc3RlcHBlci1hY2NlbnQtY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG5cbiAgdGFicy1zZWxlY3RlZC1zZWNvbmQtY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtZGVncmVlczogMjBkZWcsXG5cbiAgY2FsZW5kYXItYWN0aXZlLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXNlbGVjdGVkLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXJhbmdlLWJnLWluLXJhbmdlOiAjNGU0MDk1LFxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiAjMzUyZjZlLFxuXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtYmc6ICMzMTJlNzUsXG5cbiAgdG9hc3RyLWNvbG9yLWZnOiBjb2xvci13aGl0ZSxcbiAgdG9hc3RyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIHRvYXN0ci1ib3JkZXI6IDAsXG4gIHRvYXN0ci1kZWZhdWx0LWJhY2tncm91bmQ6ICNiY2MzY2MsXG5cbiAgdG9vbHRpcC1mZzogY29sb3ItYmcsXG4gIHRvb2x0aXAtc3RhdHVzLWZnOiBjb2xvci13aGl0ZSxcblxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbiAgZGF0ZXBpY2tlci1zaGFkb3c6IHNoYWRvdyxcblxuICByYWRpby1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgcmFkaW8tY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLXByaW1hcnksXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgY29zbWljLCBkZWZhdWx0KTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuQGltcG9ydCAnZGVmYXVsdCc7XG5cbi8vIGRlZmF1bHQgdGhlIGJhc2UgdGhlbWVcbiR0aGVtZTogKFxuICBoZWFkZXItZmc6ICNmN2ZhZmIsXG4gIGhlYWRlci1iZzogIzExMTIxOCxcblxuICBsYXlvdXQtYmc6ICNmMWY1ZjgsXG5cbiAgY29sb3ItZmctaGVhZGluZzogIzE4MTgxOCxcbiAgY29sb3ItZmctdGV4dDogIzRiNGI0YixcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiBjb2xvci1mZyxcblxuICBzZXBhcmF0b3I6ICNjZGQ1ZGMsXG5cbiAgcmFkaXVzOiAwLjE3cmVtLFxuXG4gIHNjcm9sbGJhci1iZzogI2UzZTllZSxcblxuICBjb2xvci1wcmltYXJ5OiAjNzNhMWZmLFxuICBjb2xvci1zdWNjZXNzOiAjNWRjZmUzLFxuICBjb2xvci1pbmZvOiAjYmE3ZmVjLFxuICBjb2xvci13YXJuaW5nOiAjZmZhMzZiLFxuICBjb2xvci1kYW5nZXI6ICNmZjZiODMsXG5cbiAgYnRuLXNlY29uZGFyeS1iZzogI2VkZjJmNSxcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6ICNlZGYyZjUsXG5cbiAgYWN0aW9ucy1mZzogI2QzZGJlNSxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG5cbiAgc2lkZWJhci1iZzogI2UzZTllZSxcblxuICBib3JkZXItY29sb3I6ICNkNWRiZTAsXG5cbiAgbWVudS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LWZnOiBjb2xvci1mZy10ZXh0LFxuICBtZW51LWJnOiAjZTNlOWVlLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1hY3RpdmUtYmc6IG1lbnUtYmcsXG5cbiAgbWVudS1zdWJtZW51LWJnOiBtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYmc6ICNjZGQ1ZGMsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLXNoYWRvdzogbm9uZSxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWZnOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItYmc6IG1lbnUtYmcsXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci13aWR0aDogMC4xMjVyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tcGFkZGluZzogMC41cmVtIDFyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWNvbnRhaW5lci1wYWRkaW5nOiAwIDEuMjVyZW0sXG4gIG1lbnUtc3VibWVudS1wYWRkaW5nOiAwLjVyZW0sXG5cbiAgYnRuLWJvcmRlci1yYWRpdXM6IGJ0bi1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXMsXG5cbiAgYnRuLWhlcm8tZGVncmVlOiAwZGVnLFxuICBidG4taGVyby1wcmltYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zdWNjZXNzLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby13YXJuaW5nLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1pbmZvLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1kYW5nZXItZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tZ2xvdy1zaXplOiAwIDAgMjBweCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXM6IGJ0bi1ib3JkZXItcmFkaXVzLFxuXG4gIGNhcmQtc2hhZG93OiBub25lLFxuICBjYXJkLWJvcmRlci13aWR0aDogMXB4LFxuICBjYXJkLWJvcmRlci1jb2xvcjogYm9yZGVyLWNvbG9yLFxuICBjYXJkLWhlYWRlci1ib3JkZXItd2lkdGg6IDAsXG5cbiAgbGluay1jb2xvcjogIzVkY2ZlMyxcbiAgbGluay1jb2xvci1ob3ZlcjogIzdkY2ZlMyxcbiAgbGluay1jb2xvci12aXNpdGVkOiBsaW5rLWNvbG9yLFxuXG4gIGFjdGlvbnMtc2VwYXJhdG9yOiAjZjFmNGY1LFxuXG4gIG1vZGFsLXNlcGFyYXRvcjogYm9yZGVyLWNvbG9yLFxuXG4gIHRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXByaW1hcnksXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICB0YWJzLXNlcGFyYXRvcjogI2ViZWNlZSxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYmctYWN0aXZlOiBjb2xvci1wcmltYXJ5LFxuXG4gIHJvdXRlLXRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXByaW1hcnksXG5cbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG5cbiAgZm9vdGVyLXNoYWRvdzogbm9uZSxcbiAgZm9vdGVyLXNlcGFyYXRvcjogYm9yZGVyLWNvbG9yLFxuICBmb290ZXItZmctaGlnaGxpZ2h0OiAjMmEyYTJhLFxuXG4gIGNhbGVuZGFyLXRvZGF5LWl0ZW0tYmc6ICNhMmIyYzcsXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogI2UzZWNmZSxcbiAgY2FsZW5kYXItdG9kYXktZmc6IGNvbG9yLXdoaXRlLFxuXG4gIHRvYXN0ci1pY29uLXJhZGl1czogcmFkaXVzLFxuXG4gIGRhdGVwaWNrZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuKTtcblxuLy8gcmVnaXN0ZXIgdGhlIHRoZW1lXG4kbmItdGhlbWVzOiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsIGNvcnBvcmF0ZSwgZGVmYXVsdCk7XG4iLCIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2U6IDI0cHggIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGhzOiAoXG4gIHhzOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgc206ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBtZDogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIGxnOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgeGw6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlXG4pICFkZWZhdWx0O1xuXG5cbiRncmlkLWJyZWFrcG9pbnRzOiAoXG4gIHhzOiAwLFxuICBpczogNDAwcHgsXG4gIHNtOiA1NzZweCxcbiAgbWQ6IDc2OHB4LFxuICBsZzogOTkycHgsXG4gIHhsOiAxMjAwcHgsXG4gIHh4bDogMTQwMHB4LFxuICB4eHhsOiAxNjAwcHhcbik7XG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBpczogMzgwcHgsXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHgsXG4gIHh4bDogMTMyMHB4LFxuICB4eHhsOiAxNTAwcHhcbik7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gMC4wMnB4LCBudWxsKTtcbn1cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uLy4uL3N0eWxlcy90aGVtZXMnO1xyXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zL2JyZWFrcG9pbnRzJztcclxuQGltcG9ydCAnfkBuZWJ1bGFyL3RoZW1lL3N0eWxlcy9nbG9iYWwvYnJlYWtwb2ludHMnO1xyXG5cclxuQGluY2x1ZGUgbmItaW5zdGFsbC1jb21wb25lbnQoKSB7XHJcbiAgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XHJcbiAgICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xyXG4gICAgJHNpZGViYXItd2lkdGg6IDcuNXJlbTtcclxuXHJcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XHJcbiAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICYuY29sbGFwc2VkIHtcclxuICAgICAgd2lkdGg6IDA7XHJcblxyXG4gICAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgICB3aWR0aDogMDtcclxuXHJcbiAgICAgICAgLnNjcm9sbGFibGUge1xyXG4gICAgICAgICAgd2lkdGg6ICRzaWRlYmFyLXdpZHRoO1xyXG4gICAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgd2lkdGg6ICRzaWRlYmFyLXdpZHRoO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBuYi10aGVtZShjb2xvci1iZyk7XHJcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAgIC5zY3JvbGxhYmxlIHtcclxuICAgICAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZShjb3NtaWMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBuYi10aGVtZShsYXlvdXQtYmcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XHJcblxyXG4gICAgbWFyZ2luLXRvcDogbmItdGhlbWUoc2lkZWJhci1oZWFkZXItZ2FwKTtcclxuXHJcbiAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoY29ycG9yYXRlKSB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XHJcbiAgICAgIGhlaWdodDpcclxuICAgICAgICBjYWxjKCN7bmItdGhlbWUoc2lkZWJhci1oZWlnaHQpfSAtICN7bmItdGhlbWUoaGVhZGVyLWhlaWdodCl9IC0gI3tuYi10aGVtZShzaWRlYmFyLWhlYWRlci1nYXApfSkgIWltcG9ydGFudDtcclxuICAgICAgQGluY2x1ZGUgbmItbHRyKGJvcmRlci10b3AtcmlnaHQtcmFkaXVzLCBuYi10aGVtZShyYWRpdXMpKTtcclxuICAgICAgQGluY2x1ZGUgbmItcnRsKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsIG5iLXRoZW1lKHJhZGl1cykpO1xyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvcnBvcmF0ZSkge1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIG5iLXRoZW1lKHNlcGFyYXRvcik7XHJcbiAgICAgICAgaGVpZ2h0OlxyXG4gICAgICAgICAgY2FsYygje25iLXRoZW1lKHNpZGViYXItaGVpZ2h0KX0gLSAje25iLXRoZW1lKGhlYWRlci1oZWlnaHQpfSkgIWltcG9ydGFudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC9kZWVwLyAuc2Nyb2xsYWJsZSB7XHJcbiAgICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZShjb3Jwb3JhdGUpIHtcclxuICAgICAgICBwYWRkaW5nLXRvcDogMDtcclxuXHJcbiAgICAgICAgLm1lbnUtaXRlbTpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICBib3JkZXItdG9wOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAubWFpbi1idG4ge1xyXG4gICAgICBwYWRkaW5nOiAwLjc1cmVtIDIuNXJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogLTJyZW07XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuMzIsIDEuNDgpO1xyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvcnBvcmF0ZSkge1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IG5iLXRoZW1lKHJhZGl1cyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuICAgICAgfVxyXG4gICAgICBzcGFuIHtcclxuICAgICAgICBAaW5jbHVkZSBuYi1sdHIocGFkZGluZy1sZWZ0LCAwLjI1cmVtKTtcclxuICAgICAgICBAaW5jbHVkZSBuYi1ydGwocGFkZGluZy1yaWdodCwgMC4yNXJlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGksIHNwYW4ge1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvbXBhY3RlZCB7XHJcblxyXG4gICAgICAvZGVlcC8gbmItc2lkZWJhci1oZWFkZXIge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubWFpbi1idG4ge1xyXG4gICAgICAgIHdpZHRoOiA0NnB4O1xyXG4gICAgICAgIGhlaWdodDogNDRweDtcclxuICAgICAgICBwYWRkaW5nOiAwLjM3NXJlbTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcclxuXHJcbiAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKHhzKSB7XHJcbiAgICAubWFpbi1jb250ZW50IHtcclxuICAgICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50O1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xyXG5cclxuICAgIG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcclxuXHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcblxyXG4gICAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgICBoZWlnaHQ6IGNhbGMoI3tuYi10aGVtZShzaWRlYmFyLWhlaWdodCl9IC0gI3tuYi10aGVtZShoZWFkZXItaGVpZ2h0KX0pICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgQGluY2x1ZGUgbmItbHRyKGJvcmRlci10b3AtcmlnaHQtcmFkaXVzLCAwKTtcclxuICAgICAgICBAaW5jbHVkZSBuYi1ydGwoYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cywgMCk7XHJcblxyXG4gICAgICAgIC5zY3JvbGxhYmxlIHtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5tYWluLWJ0biB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEBuZWJ1bGFyIHRoZW1pbmcgZnJhbWV3b3JrXHJcbkBpbXBvcnQgJ35AbmVidWxhci90aGVtZS9zdHlsZXMvdGhlbWluZyc7XHJcbi8vIEBuZWJ1bGFyIG91dCBvZiB0aGUgYm94IHRoZW1lc1xyXG5AaW1wb3J0ICd+QG5lYnVsYXIvdGhlbWUvc3R5bGVzL3RoZW1lcyc7XHJcblxyXG4vLyB3aGljaCB0aGVtZXMgeW91IHdoYXQgdG8gZW5hYmxlIChlbXB0eSB0byBlbmFibGUgYWxsKVxyXG4kbmItZW5hYmxlZC10aGVtZXM6IChkZWZhdWx0LCBjb3NtaWMsIGNvcnBvcmF0ZSk7XHJcblxyXG4kbmItdGhlbWVzOiBuYi1yZWdpc3Rlci10aGVtZSgoXHJcbiAvLyBhcHAgd2lzZSB2YXJpYWJsZXMgZm9yIGVhY2ggdGhlbWVcclxuICBzaWRlYmFyLWhlYWRlci1nYXA6IDJyZW0sXHJcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiBpbml0aWFsLFxyXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiAxNDAwcHgsXHJcblxyXG4gIGZvbnQtbWFpbjogUmFqZGhhbmksXHJcbiAgZm9udC1zZWNvbmRhcnk6IFJvYm90byxcclxuXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZDogI2ViZWZmNSxcclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kLXBlcmNlbnRhZ2U6IDUwJSxcclxuICBkcm9wcy1pY29uLWxpbmUtZ2FkaWVudDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzAxZGJiNSwgIzBiYmI3OSksXHJcblxyXG4gIGxpc3QtaXRlbS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgc2xpZGUtb3V0LWNvbnRhaW5lci13aWR0aDogMzAlLFxyXG4gIHNsaWRlLW91dC1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCAjZjdmYWZiIDAlLCAjZWNmMmY1IDEwMCUpLFxyXG4gIHNsaWRlLW91dC1zaGFkb3ctY29sb3I6IDAgNHB4IDE0cHggMCAjYTJkMmM4LFxyXG4gIHNsaWRlLW91dC1zaGFkb3ctY29sb3ItcnRsOiAwIDRweCAxNHB4IDAgI2EyZDJjOCxcclxuXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3gtc2hhZG93OiBub25lLFxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYmFja2dyb3VuZC1jb2xvcjogI2VjZjJmNSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci1jb2xvcjogI2ViZWZmMSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBlY29tbWVyY2UtY2FyZC1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzNlZGQ4MSAwJSwgIzNiZGRhZiAxMDAlKSxcclxuXHJcbiAgY29sb3ItcHJpbWFyeTogIzMxMTc3YSxcclxuICBjb2xvci1mZy1oaWdobGlnaHQ6ICMzMTE3N2EsXHJcbiksIGRlZmF1bHQsIGRlZmF1bHQpO1xyXG5cclxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoKFxyXG4gIC8vIGFwcCB3aXNlIHZhcmlhYmxlcyBmb3IgZWFjaCB0aGVtZVxyXG4gIHNpZGViYXItaGVhZGVyLWdhcDogMnJlbSxcclxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IGluaXRpYWwsXHJcbiAgbGF5b3V0LWNvbnRlbnQtd2lkdGg6IDE0MDBweCxcclxuXHJcbiAgZm9udC1tYWluOiBSYWpkaGFuaSxcclxuICBmb250LXNlY29uZGFyeTogUm9ib3RvLFxyXG5cclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kOiAjNGU0MWE1LFxyXG4gIHN3aXRjaGVyLWJhY2tncm91bmQtcGVyY2VudGFnZTogMTQlLFxyXG4gIGRyb3BzLWljb24tbGluZS1nYWRpZW50OiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjYTI1OGZlLCAjNzk1OGZhKSxcclxuXHJcbiAgbGlzdC1pdGVtLWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBzbGlkZS1vdXQtY29udGFpbmVyLXdpZHRoOiAzMCUsXHJcbiAgc2xpZGUtb3V0LWJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICMzMDJjNmUgMCUsICM0MjNmOGMgMTAwJSksXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvcjogMnB4IDAgM3B4IHJnYmEoMTksIDE5LCA5NCwgMC45KSxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yLXJ0bDogLTJweCAwIDNweCByZ2JhKDE5LCAxOSwgOTQsIDAuOSksXHJcblxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm94LXNoYWRvdzogbm9uZSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci1jb2xvcjogIzMzMmU3MyxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBlY29tbWVyY2UtY2FyZC1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzAwYzdjNyAwJSwgIzAwZDk3NyAxMDAlKSxcclxuKSwgY29zbWljLCBjb3NtaWMpO1xyXG5cclxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoKFxyXG4gIC8vIGFwcCB3aXNlIHZhcmlhYmxlcyBmb3IgZWFjaCB0aGVtZVxyXG4gIHNpZGViYXItaGVhZGVyLWdhcDogMnJlbSxcclxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IGluaXRpYWwsXHJcbiAgbGF5b3V0LWNvbnRlbnQtd2lkdGg6IDE0MDBweCxcclxuXHJcbiAgZm9udC1tYWluOiBSYWpkaGFuaSxcclxuICBmb250LXNlY29uZGFyeTogUm9ib3RvLFxyXG5cclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kOiAjMmIyZDM0LFxyXG4gIHN3aXRjaGVyLWJhY2tncm91bmQtcGVyY2VudGFnZTogMTQlLFxyXG4gIGRyb3BzLWljb24tbGluZS1nYWRpZW50OiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjZTllOGViLCAjYTdhMmJlKSxcclxuXHJcbiAgbGlzdC1pdGVtLWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBzbGlkZS1vdXQtY29udGFpbmVyLXdpZHRoOiAzMCUsXHJcbiAgc2xpZGUtb3V0LWJhY2tncm91bmQ6IFx0bGluZWFyLWdyYWRpZW50KDI3MGRlZywgI2Y3ZmFmYiAwJSwgI2VjZjJmNSAxMDAlKSxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yOiAwIDRweCAxNHB4IDAgI2EyZDJjOCxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yLXJ0bDogMCA0cHggMTRweCAwICNhMmQyYzgsXHJcblxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm94LXNoYWRvdzogbm9uZSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJhY2tncm91bmQtY29sb3I6ICNmN2ZhZmIsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItY29sb3I6ICNlYmVmZjEsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgZWNvbW1lcmNlLWNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHByb2dyZXNzLWJhci1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmZjlmNmYgMCUsICNmZjhiOTcgMTAwJSksXHJcbiksIGNvcnBvcmF0ZSwgY29ycG9yYXRlKTtcclxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuLyoqXG4gKiBUaGlzIGlzIGEgc3RhcnRpbmcgcG9pbnQgd2hlcmUgd2UgZGVjbGFyZSB0aGUgbWFwcyBvZiB0aGVtZXMgYW5kIGdsb2JhbGx5IGF2YWlsYWJsZSBmdW5jdGlvbnMvbWl4aW5zXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbi8qXG5cbkFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbiAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI2hvc3Qtc2VsZWN0b3IpXG46aG9zdCBhbmQgOmhvc3QtY29udGV4dCBhcmUgcHNldWRvLWNsYXNzZXMuIFNvIHdlIGFzc3VtZSB0aGV5IGNvdWxkIGJlIGNvbWJpbmVkLFxubGlrZSBvdGhlciBwc2V1ZG8tY2xhc3NlcywgZXZlbiBzYW1lIG9uZXMuXG5Gb3IgZXhhbXBsZTogJzpudGgtb2YtdHlwZSgybik6bnRoLW9mLXR5cGUoZXZlbiknLlxuXG5JZGVhbCBzb2x1dGlvbiB3b3VsZCBiZSB0byBwcmVwZW5kIGFueSBzZWxlY3RvciB3aXRoIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKS5cblRoZW4gbmVidWxhciBjb21wb25lbnRzIHdpbGwgYmVoYXZlIGFzIGFuIGh0bWwgZWxlbWVudCBhbmQgcmVzcG9uZCB0byBbZGlyXSBhdHRyaWJ1dGUgb24gYW55IGxldmVsLFxuc28gZGlyZWN0aW9uIGNvdWxkIGJlIG92ZXJyaWRkZW4gb24gYW55IGNvbXBvbmVudCBsZXZlbC5cblxuSW1wbGVtZW50YXRpb24gY29kZTpcblxuQG1peGluIG5iLXJ0bCgpIHtcbiAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gIEBhdC1yb290IHtzZWxlY3Rvci1hcHBlbmQoJzpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKScsICYpfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQW5kIHdoZW4gd2UgY2FsbCBpdCBzb21ld2hlcmU6XG5cbjpob3N0IHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuOmhvc3QtY29udGV4dCguLi4pIHtcbiAgLnNvbWUtY2xhc3Mge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHtcbiAgICAgIC4uLlxuICAgIH1cbiAgfVxufVxuXG5SZXN1bHQgd2lsbCBsb29rIGxpa2U6XG5cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0IC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cblxuKlxuICBTaWRlIG5vdGU6XG4gIDpob3N0LWNvbnRleHQoKTpob3N0IHNlbGVjdG9yIGFyZSB2YWxpZC4gaHR0cHM6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDE1RmViLzAzMDUuaHRtbFxuXG4gIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSBzaG91bGQgbWF0Y2ggYW55IHBlcm11dGF0aW9uLFxuICBzbyBvcmRlciBpcyBub3QgaW1wb3J0YW50LlxuKlxuXG5cbkN1cnJlbnRseSwgdGhlcmUncmUgdHdvIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaDpcblxuRmlyc3QsIGlzIHRoYXQgd2UgY2FuJ3QgY29tYmluZSA6aG9zdCwgOmhvc3QtY29udGV4dC4gQW5ndWxhciBidWdzICMxNDM0OSwgIzE5MTk5LlxuRm9yIHRoZSBtb21lbnQgb2Ygd3JpdGluZywgdGhlIG9ubHkgcG9zc2libGUgd2F5IGlzOlxuOmhvc3Qge1xuICA6aG9zdC1jb250ZXh0KC4uLikge1xuICAgIC4uLlxuICB9XG59XG5JdCBkb2Vzbid0IHdvcmsgZm9yIHVzIGJlY2F1c2UgbWl4aW4gY291bGQgYmUgY2FsbGVkIHNvbWV3aGVyZSBkZWVwZXIsIGxpa2U6XG46aG9zdCB7XG4gIHAge1xuICAgIEBpbmNsdWRlIG5iLXJ0bCgpIHsgLi4uIH1cbiAgfVxufVxuV2UgYXJlIG5vdCBhYmxlIHRvIGdvIHVwIHRvIDpob3N0IGxldmVsIHRvIHBsYWNlIGNvbnRlbnQgcGFzc2VkIHRvIG1peGluLlxuXG5UaGUgc2Vjb25kIHByb2JsZW0gaXMgdGhhdCB3ZSBvbmx5IGNhbiBiZSBzdXJlIHRoYXQgd2UgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byBhbm90aGVyXG46aG9zdC86aG9zdC1jb250ZXh0IHBzZXVkby1jbGFzcyB3aGVuIGNhbGxlZCBpbiB0aGVtZSBmaWxlcyAoKi50aGVtZS5zY3NzKS5cbiAgKlxuICAgIFNpZGUgbm90ZTpcbiAgICBDdXJyZW50bHksIG5iLWluc3RhbGwtY29tcG9uZW50IHVzZXMgYW5vdGhlciBhcHByb2FjaCB3aGVyZSA6aG9zdCBwcmVwZW5kZWQgd2l0aCB0aGUgdGhlbWUgbmFtZVxuICAgIChodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvNWI5NjA3ODYyNGIwYTQ3NjBmMmRiY2Y2ZmRmMGJkNjI3OTFiZTViYi9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxKSxcbiAgICBidXQgaXQgd2FzIG1hZGUgdG8gYmUgYWJsZSB0byB1c2UgY3VycmVudCByZWFsaXphdGlvbiBvZiBydGwgYW5kIGl0IGNhbiBiZSByZXdyaXR0ZW4gYmFjayB0b1xuICAgIDpob3N0LWNvbnRleHQoJHRoZW1lKSBvbmNlIHdlIHdpbGwgYmUgYWJsZSB0byB1c2UgbXVsdGlwbGUgc2hhZG93IHNlbGVjdG9ycy5cbiAgKlxuQnV0IHdoZW4gaXQncyBjYWxsZWQgaW4gKi5jb21wb25lbnQuc2NzcyB3ZSBjYW4ndCBiZSBzdXJlLCB0aGF0IHNlbGVjdG9yIHN0YXJ0cyB3aXRoIDpob3N0Lzpob3N0LWNvbnRleHQsXG5iZWNhdXNlIGFuZ3VsYXIgYWxsb3dzIG9taXR0aW5nIHBzZXVkby1jbGFzc2VzIGlmIHdlIGRvbid0IG5lZWQgdG8gc3R5bGUgOmhvc3QgY29tcG9uZW50IGl0c2VsZi5cbldlIGNhbiBicmVhayBzdWNoIHNlbGVjdG9ycywgYnkganVzdCBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIHRoZW0uXG4gICoqKlxuICAgIFBvc3NpYmxlIHNvbHV0aW9uXG4gICAgY2hlY2sgaWYgd2UgaW4gdGhlbWUgYnkgc29tZSB0aGVtZSB2YXJpYWJsZXMgYW5kIGlmIHNvIGFwcGVuZCwgb3RoZXJ3aXNlIG5lc3QgbGlrZVxuICAgIEBhdC1yb290IDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB7XG4gICAgICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAgICAgLy8gaXQgd29ya3MgaW4gY29tbWVudHMgYW5kIHdlIGNhbid0IHVzZSBpdCBoZXJlXG4gICAgICB7Jn0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgV2hhdCBpZiA6aG9zdCBzcGVjaWZpZWQ/IENhbiB3ZSBhZGQgc3BhY2UgaW4gOmhvc3QtY29udGV4dCguLi4pIDpob3N0P1xuICAgIE9yIG1heWJlIGFkZCA6aG9zdCBzZWxlY3RvciBhbnl3YXk/IElmIG11bHRpcGxlIDpob3N0IHNlbGVjdG9ycyBhcmUgYWxsb3dlZFxuICAqKipcblxuXG5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IGFwcHJvYWNoLlxuXG4xLiBEaXJlY3Rpb24gY2FuIGJlIGFwcGxpZWQgb25seSBvbiBkb2N1bWVudCBsZXZlbCwgYmVjYXVzZSBtaXhpbiBwcmVwZW5kcyB0aGVtZSBjbGFzcyxcbndoaWNoIHBsYWNlZCBvbiB0aGUgYm9keS5cbjIuICouY29tcG9uZW50LnNjc3Mgc3R5bGVzIHNob3VsZCBiZSBpbiA6aG9zdCBzZWxlY3Rvci4gT3RoZXJ3aXNlIGFuZ3VsYXIgd2lsbCBhZGQgaG9zdFxuYXR0cmlidXRlIHRvIFtkaXI9cnRsXSBhdHRyaWJ1dGUgYXMgd2VsbC5cblxuXG5HZW5lcmFsIHByb2JsZW1zLlxuXG5MdHIgaXMgZGVmYXVsdCBkb2N1bWVudCBkaXJlY3Rpb24sIGJ1dCBmb3IgcHJvcGVyIHdvcmsgb2YgbmItbHRyIChtZWFucyBsdHIgb25seSksXG5bZGlyPWx0cl0gc2hvdWxkIGJlIHNwZWNpZmllZCBhdCBsZWFzdCBzb21ld2hlcmUuICc6bm90KFtkaXI9cnRsXScgbm90IGFwcGxpY2FibGUgaGVyZSxcbmJlY2F1c2UgaXQncyBzYXRpc2Z5IGFueSBwYXJlbnQsIHRoYXQgZG9uJ3QgaGF2ZSBbZGlyPXJ0bF0gYXR0cmlidXRlLlxuUHJldmlvdXMgYXBwcm9hY2ggd2FzIHRvIHVzZSBzaW5nbGUgcnRsIG1peGluIGFuZCByZXNldCBsdHIgcHJvcGVydGllcyB0byBpbml0aWFsIHZhbHVlLlxuQnV0IHNvbWV0aW1lcyBpdCdzIGhhcmQgdG8gZmluZCwgd2hhdCB0aGUgcHJldmlvdXMgdmFsdWUgc2hvdWxkIGJlLiBBbmQgc3VjaCBtaXhpbiBjYWxsIGxvb2tzIHRvbyB2ZXJib3NlLlxuKi9cbi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XG4gIGZsZXg6IDAuMTUgIWltcG9ydGFudDsgfVxuXG4ubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gIHdpZHRoOiA3LjVyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCB7XG4gICAgd2lkdGg6IDA7IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgd2lkdGg6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHdpZHRoOiA3LjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIHdpZHRoOiA3LjVyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgIHdpZHRoOiA3LjVyZW07IH1cblxuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICBtYXJnaW4tdG9wOiAycmVtO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtIC0gMnJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjM3NXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMzc1cmVtOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDIuNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAtMnJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTgsIDAuODksIDAuMzIsIDEuNDgpOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGkge1xuICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSwgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgcGFkZGluZzogMC4zNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHRyYW5zaXRpb246IG5vbmU7IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogMzk5Ljk4cHgpIHtcbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLm1haW4tY29udGVudCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtKSAhaW1wb3J0YW50OyB9XG4gICAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG4gICAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCAubWFpbi1idG4ge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbi5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XG4gIGZsZXg6IDAuMTUgIWltcG9ydGFudDsgfVxuXG4ubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciB7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcbiAgd2lkdGg6IDcuNXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQge1xuICAgIHdpZHRoOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgd2lkdGg6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgICAgd2lkdGg6IDcuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMS4yNXJlbTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICB3aWR0aDogNy41cmVtO1xuICAgIGJhY2tncm91bmQ6ICMzZDM3ODA7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogIzJmMjk2YjsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgd2lkdGg6IDcuNXJlbTsgfVxuXG4ubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtIC0gMnJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuNXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC41cmVtOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biB7XG4gICAgcGFkZGluZzogMC43NXJlbSAyLjVyZW07XG4gICAgbWFyZ2luLXRvcDogLTJyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAwLjNzIGN1YmljLWJlemllcigwLjE4LCAwLjg5LCAwLjMyLCAxLjQ4KTsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGkge1xuICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSwgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgcGFkZGluZzogMC4zNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHRyYW5zaXRpb246IG5vbmU7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4gc3BhbiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzOTkuOThweCkge1xuICAubmItdGhlbWUtY29zbWljIDpob3N0IC5tYWluLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0pICFpbXBvcnRhbnQ7IH1cbiAgICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgLm1haW4tYnRuIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4ubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLWxheW91dC1jb2x1bW4uc21hbGwge1xuICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7IH1cblxuLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gIHdpZHRoOiA3LjVyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIHtcbiAgICB3aWR0aDogMDsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAwOyB9XG4gICAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHdpZHRoOiA3LjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDcuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICB3aWR0aDogNy41cmVtOyB9XG5cbi5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICBtYXJnaW4tdG9wOiAycmVtO1xuICBtYXJnaW4tdG9wOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0gLSAycmVtKSAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjZGQ1ZGM7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSkgIWltcG9ydGFudDsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMTdyZW07IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMTdyZW07IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLnNjcm9sbGFibGUge1xuICAgIHBhZGRpbmctdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLnNjcm9sbGFibGUgLm1lbnUtaXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wOiBub25lOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biB7XG4gICAgcGFkZGluZzogMC43NXJlbSAyLjVyZW07XG4gICAgbWFyZ2luLXRvcDogLTJyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAwLjNzIGN1YmljLWJlemllcigwLjE4LCAwLjg5LCAwLjMyLCAxLjQ4KTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjE3cmVtOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSB7XG4gICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgfVxuICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBpLCAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4ge1xuICAgIHdpZHRoOiA0NnB4O1xuICAgIGhlaWdodDogNDRweDtcbiAgICBwYWRkaW5nOiAwLjM3NXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgdHJhbnNpdGlvbjogbm9uZTsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDM5OS45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLm1haW4tY29udGVudCB7XG4gICAgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIge1xuICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSkgIWltcG9ydGFudDsgfVxuICAgICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9XG4gICAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgfVxuICAgICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCAubWFpbi1idG4ge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuIl19 */\"","import { Component, OnDestroy } from '@angular/core';\r\nimport { NbThemeService } from '@nebular/theme';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n// TODO: move layouts into the framework\r\n@Component({\r\n selector: 'ngx-three-columns-layout',\r\n styleUrls: ['./three-columns.layout.scss'],\r\n template: `\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Support Us\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n `,\r\n})\r\nexport class ThreeColumnsLayoutComponent implements OnDestroy {\r\n\r\n private alive = true;\r\n\r\n currentTheme: string;\r\n\r\n constructor(protected themeService: NbThemeService) {\r\n this.themeService.getJsTheme()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe(theme => {\r\n this.currentTheme = theme.name;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.alive = false;\r\n }\r\n}\r\n","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #ffffff;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden; }\\n.nb-theme-default :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n background: transparent; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important; }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.375rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.375rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-default :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-default :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-default :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-default :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-default :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-default :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-cosmic :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #3d3780;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden;\\n background: #2f296b; }\\n.nb-theme-cosmic :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n background: transparent; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important; }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.5rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.5rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48); }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-cosmic :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-cosmic :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-cosmic :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-cosmic :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-cosmic :host .main-btn {\\n display: none; } }\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-corporate :host nb-layout-column.small {\\n -webkit-box-flex: 0.15 !important;\\n -ms-flex: 0.15 !important;\\n flex: 0.15 !important; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar {\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n width: 7.5rem;\\n overflow: hidden; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed {\\n width: 0; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container {\\n width: 0; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar.collapsed /deep/ .main-container .scrollable {\\n width: 7.5rem;\\n padding: 1.25rem; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container {\\n width: 7.5rem;\\n background: #ffffff;\\n -webkit-transition: width 0.3s ease;\\n transition: width 0.3s ease;\\n overflow: hidden; }\\n.nb-theme-corporate :host nb-sidebar.settings-sidebar /deep/ .main-container .scrollable {\\n width: 7.5rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 2rem;\\n margin-top: 0;\\n background: transparent; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem - 2rem) !important;\\n border: 1px solid #cdd5dc;\\n height: calc(100vh - 4.75rem) !important; }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0.17rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable {\\n padding-top: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .scrollable .menu-item:first-child {\\n border-top: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ nb-sidebar-header {\\n padding-bottom: 0.5rem;\\n text-align: center; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn {\\n padding: 0.75rem 2.5rem;\\n margin-top: -2rem;\\n font-weight: bold;\\n -webkit-transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n transition: padding 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.48);\\n border-radius: 0.17rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i {\\n font-size: 2rem;\\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); }\\n[dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-left: 0.25rem; }\\n[dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n padding-right: 0.25rem; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn i, .nb-theme-corporate :host nb-sidebar.menu-sidebar .main-btn span {\\n vertical-align: middle; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted /deep/ nb-sidebar-header {\\n padding-left: 0;\\n padding-right: 0; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn {\\n width: 46px;\\n height: 44px;\\n padding: 0.375rem;\\n border-radius: 5px;\\n -webkit-transition: none;\\n transition: none; }\\n.nb-theme-corporate :host nb-sidebar.menu-sidebar.compacted .main-btn span {\\n display: none; }\\n@media (max-width: 399.98px) {\\n .nb-theme-corporate :host .main-content {\\n padding: 0.75rem !important; } }\\n@media (max-width: 767.98px) {\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar {\\n margin-top: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n height: calc(100vh - 4.75rem) !important; }\\n [dir=ltr] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-right-radius: 0; }\\n [dir=rtl] .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container {\\n border-top-left-radius: 0; }\\n .nb-theme-corporate :host nb-sidebar.menu-sidebar /deep/ .main-container .scrollable {\\n padding-top: 0; }\\n .nb-theme-corporate :host .main-btn {\\n display: none; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQHRoZW1lL2xheW91dHMvdHdvLWNvbHVtbnMvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXF90aGVtaW5nLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3R3by1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfbWl4aW5zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3R3by1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3R3by1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFx0aGVtZXNcXF9kZWZhdWx0LnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3R3by1jb2x1bW5zL0M6XFxTZWJhc3RpYW5EYXRhXFxhcHBzXFx2b2lkY29yZVxcVm9pZENvcmVFc3RpbWF0ZXNOZy9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFx0aGVtZXNcXF9jb3NtaWMuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvdHdvLWNvbHVtbnMvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2NvcnBvcmF0ZS5zY3NzIiwic3JjL2FwcC9AdGhlbWUvbGF5b3V0cy90d28tY29sdW1ucy9DOlxcU2ViYXN0aWFuRGF0YVxcYXBwc1xcdm9pZGNvcmVcXFZvaWRDb3JlRXN0aW1hdGVzTmcvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcZ2xvYmFsXFxfYnJlYWtwb2ludHMuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvdHdvLWNvbHVtbnMvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL3NyY1xcYXBwXFxAdGhlbWVcXGxheW91dHNcXHR3by1jb2x1bW5zXFx0d28tY29sdW1ucy5sYXlvdXQuc2NzcyIsInNyYy9hcHAvQHRoZW1lL2xheW91dHMvdHdvLWNvbHVtbnMvQzpcXFNlYmFzdGlhbkRhdGFcXGFwcHNcXHZvaWRjb3JlXFxWb2lkQ29yZUVzdGltYXRlc05nL3NyY1xcYXBwXFxAdGhlbWVcXHN0eWxlc1xcdGhlbWVzLnNjc3MiLCJzcmMvYXBwL0B0aGVtZS9sYXlvdXRzL3R3by1jb2x1bW5zL3R3by1jb2x1bW5zLmxheW91dC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFHSDs7R0FFRztBQ1RIOzs7O0dBSUc7QUFzS0g7Ozs7R0FJRztBQXNCSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1IRTtBQ3ZURjs7OztHQUlHO0FDSkg7Ozs7R0FJRztBREpIOzs7O0dBSUc7QURKSDs7OztHQUlHO0FBc0tIOzs7O0dBSUc7QUFzQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSEU7QUd2VEY7Ozs7R0FJRztBRkpIOzs7O0dBSUc7QURKSDs7OztHQUlHO0FBc0tIOzs7O0dBSUc7QUFzQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSEU7QUV2VEY7Ozs7R0FJRztBREpIOzs7O0dBSUc7QURKSDs7OztHQUlHO0FBc0tIOzs7O0dBSUc7QUFzQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSEU7QUl2VEY7Ozs7R0FJRztBSEpIOzs7O0dBSUc7QURKSDs7OztHQUlHO0FBc0tIOzs7O0dBSUc7QUFzQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSEU7QUV2VEY7Ozs7R0FJRztBREpIOzs7O0dBSUc7QURKSDs7OztHQUlHO0FBc0tIOzs7O0dBSUc7QUFzQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSEU7QUt2VEY7Ozs7R0FJRztBTitHQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1CRTtBT2pJSjtFQUNFLGtDQUFxQjtNQUFyQiwwQkFBcUI7VUFBckIsc0JBQXFCLEVBQ3RCO0FBRUQ7RUFHRSxvQ0FBMkI7RUFBM0IsNEJBQTJCO0VBQzNCLGNBSHNCO0VBSXRCLGlCQUFnQixFQTZCakI7QUEzQkM7SUFDRSxTQUFRLEVBVVQ7QUFSQztNQUNFLFNBQVEsRUFNVDtBQUpDO1FBQ0UsY0FiZ0I7UUFjaEIsaUJBQWdCLEVBQ2pCO0FBSUw7SUFDRSxjQXBCb0I7SUFxQnBCLG9CSkdhO0lJRmIsb0NBQTJCO0lBQTNCLDRCQUEyQjtJQUMzQixpQkFBZ0IsRUFTakI7QUFQQztNQUNFLGNBMUJrQixFQTJCbkI7QUFRTDtFQUVFLGlCQ3JDc0I7RUR3RXRCLHdCQUF1QixFQTZDeEI7QUExRUM7SUFDRSxnREFDNkcsRUFVOUc7QUVzeUJEO01SM2lCRSxrQ0UvUlksRUZtU2Y7QVF5aUJDO01SN2lCRSxpQ0UvUlksRUZtU2Y7QU1uUEM7SUFDRSx1QkFBc0I7SUFDdEIsbUJBQWtCLEVBQ25CO0FBSUQ7SUFDRSx3QkFBdUI7SUFDdkIsa0JBQWlCO0lBQ2pCLGtCQUFpQjtJQUNqQixzRUFBNkQ7SUFBN0QsOERBQTZELEVBa0I5RDtBQVpDO01BQ0UsZ0JBQWU7TUFDZiwwQ0FBeUMsRUFDMUM7QUVxeEJIO01SMWpCRSxzQk16TnVDLEVONk4xQztBUXdqQkM7TVI1akJFLHVCTXhOd0MsRU40TjNDO0FNek5HO01BQ0UsdUJBQXNCLEVBQ3ZCO0FBS0Q7SUFDRSxnQkFBZTtJQUNmLGlCQUFnQixFQUNqQjtBQUVEO0lBQ0UsWUFBVztJQUNYLGFBQVk7SUFDWixrQkFBaUI7SUFDakIsbUJBQWtCO0lBQ2xCLHlCQUFnQjtJQUFoQixpQkFBZ0IsRUFLakI7QUFIQztNQUNFLGNBQWEsRUFDZDtBRHBFTDtFQzBFQTtJQUNFLDRCQUEyQixFQUU1QixFQUFBO0FEN0VEO0VDa0ZBO0lBRUUsY0FBYSxFQVdkO0lBVEM7TUFDRSx5Q0FBaUYsRUFPbEY7TUUydkJEO1FScmxCQSwyQk01SzRDLEVOZ0wvQztNUW1sQkc7UVJ2bEJBLDBCTTNLMkMsRU4rSzlDO01NN0tLO1FBQ0UsZUFBYyxFQUNmO0VBSUw7SUFDRSxjQUFhLEVBQ2QsRUFBQTtBUHhDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQW1CRTtBT2pJSjtFQUNFLGtDQUFxQjtNQUFyQiwwQkFBcUI7VUFBckIsc0JBQXFCLEVBQ3RCO0FBRUQ7RUFHRSxvQ0FBMkI7RUFBM0IsNEJBQTJCO0VBQzNCLGNBSHNCO0VBSXRCLGlCQUFnQixFQTZCakI7QUEzQkM7SUFDRSxTQUFRLEVBVVQ7QUFSQztNQUNFLFNBQVEsRUFNVDtBQUpDO1FBQ0UsY0FiZ0I7UUFjaEIsaUJBQWdCLEVBQ2pCO0FBSUw7SUFDRSxjQXBCb0I7SUFxQnBCLG9CSGpCYTtJR2tCYixvQ0FBMkI7SUFBM0IsNEJBQTJCO0lBQzNCLGlCQUFnQjtJQU9kLG9CSEFZLEVHRWY7QUFQQztNQUNFLGNBMUJrQixFQTJCbkI7QUFRTDtFQUVFLGlCQ0pzQjtFRHVDdEIsd0JBQXVCLEVBNkN4QjtBQTFFQztJQUNFLGdEQUM2RyxFQVU5RztBRXk0QkQ7TVI5b0JFLGdDR2hUVSxFSG9UYjtBUTRvQkM7TVJocEJFLCtCR2hUVSxFSG9UYjtBTW5QQztJQUNFLHVCQUFzQjtJQUN0QixtQkFBa0IsRUFDbkI7QUFJRDtJQUNFLHdCQUF1QjtJQUN2QixrQkFBaUI7SUFDakIsa0JBQWlCO0lBQ2pCLHNFQUE2RDtJQUE3RCw4REFBNkQsRUFrQjlEO0FBWkM7TUFDRSxnQkFBZTtNQUNmLDBDQUF5QyxFQUMxQztBRXczQkg7TVI3cEJFLHNCTXpOdUMsRU42TjFDO0FRMnBCQztNUi9wQkUsdUJNeE53QyxFTjROM0M7QU16Tkc7TUFDRSx1QkFBc0IsRUFDdkI7QUFLRDtJQUNFLGdCQUFlO0lBQ2YsaUJBQWdCLEVBQ2pCO0FBRUQ7SUFDRSxZQUFXO0lBQ1gsYUFBWTtJQUNaLGtCQUFpQjtJQUNqQixtQkFBa0I7SUFDbEIseUJBQWdCO0lBQWhCLGlCQUFnQixFQUtqQjtBQUhDO01BQ0UsY0FBYSxFQUNkO0FEcEVMO0VDMEVBO0lBQ0UsNEJBQTJCLEVBRTVCLEVBQUE7QUQ3RUQ7RUNrRkE7SUFFRSxjQUFhLEVBV2Q7SUFUQztNQUNFLHlDQUFpRixFQU9sRjtNRTgxQkQ7UVJ4ckJBLDJCTTVLNEMsRU5nTC9DO01Rc3JCRztRUjFyQkEsMEJNM0syQyxFTitLOUM7TU03S0s7UUFDRSxlQUFjLEVBQ2Y7RUFJTDtJQUNFLGNBQWEsRUFDZCxFQUFBO0FQeENEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUJFO0FPaklKO0VBQ0Usa0NBQXFCO01BQXJCLDBCQUFxQjtVQUFyQixzQkFBcUIsRUFDdEI7QUFFRDtFQUdFLG9DQUEyQjtFQUEzQiw0QkFBMkI7RUFDM0IsY0FIc0I7RUFJdEIsaUJBQWdCLEVBNkJqQjtBQTNCQztJQUNFLFNBQVEsRUFVVDtBQVJDO01BQ0UsU0FBUSxFQU1UO0FBSkM7UUFDRSxjQWJnQjtRQWNoQixpQkFBZ0IsRUFDakI7QUFJTDtJQUNFLGNBcEJvQjtJQXFCcEIsb0JKR2E7SUlGYixvQ0FBMkI7SUFBM0IsNEJBQTJCO0lBQzNCLGlCQUFnQixFQVNqQjtBQVBDO01BQ0UsY0ExQmtCLEVBMkJuQjtBQVFMO0VBRUUsaUJDMEJzQjtFRHZCcEIsY0FBYTtFQWdDZix3QkFBdUIsRUE2Q3hCO0FBMUVDO0lBQ0UsZ0RBQzZHO0lBSzNHLDBCRnZDWTtJRXdDWix5Q0FDMkUsRUFHOUU7QUU4K0JEO01SbnZCRSxpQ0lyU1csRUp5U2Q7QVFpdkJDO01ScnZCRSxnQ0lyU1csRUp5U2Q7QU03UEM7SUFFSSxlQUFjLEVBTWpCO0FBSkc7TUFDRSxpQkFBZ0IsRUFDakI7QUFJTDtJQUNFLHVCQUFzQjtJQUN0QixtQkFBa0IsRUFDbkI7QUFJRDtJQUNFLHdCQUF1QjtJQUN2QixrQkFBaUI7SUFDakIsa0JBQWlCO0lBQ2pCLHNFQUE2RDtJQUE3RCw4REFBNkQ7SUFHM0QsdUJGcEVTLEVFbUZaO0FBWkM7TUFDRSxnQkFBZTtNQUNmLDBDQUF5QyxFQUMxQztBRWsrQkg7TVJ2d0JFLHNCTXpOdUMsRU42TjFDO0FRcXdCQztNUnp3QkUsdUJNeE53QyxFTjROM0M7QU16Tkc7TUFDRSx1QkFBc0IsRUFDdkI7QUFLRDtJQUNFLGdCQUFlO0lBQ2YsaUJBQWdCLEVBQ2pCO0FBRUQ7SUFDRSxZQUFXO0lBQ1gsYUFBWTtJQUNaLGtCQUFpQjtJQUNqQixtQkFBa0I7SUFDbEIseUJBQWdCO0lBQWhCLGlCQUFnQixFQUtqQjtBQUhDO01BQ0UsY0FBYSxFQUNkO0FEcEVMO0VDMEVBO0lBQ0UsNEJBQTJCLEVBRTVCLEVBQUE7QUQ3RUQ7RUNrRkE7SUFFRSxjQUFhLEVBV2Q7SUFUQztNQUNFLHlDQUFpRixFQU9sRjtNRXc4QkQ7UVJseUJBLDJCTTVLNEMsRU5nTC9DO01RZ3lCRztRUnB5QkEsMEJNM0syQyxFTitLOUM7TU03S0s7UUFDRSxlQUFjLEVBQ2Y7RUFJTDtJQUNFLGNBQWEsRUFDZCxFQUFBIiwiZmlsZSI6InNyYy9hcHAvQHRoZW1lL2xheW91dHMvdHdvLWNvbHVtbnMvdHdvLWNvbHVtbnMubGF5b3V0LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cblxuLyoqXG4gKiBUaGlzIGlzIGEgc3RhcnRpbmcgcG9pbnQgd2hlcmUgd2UgZGVjbGFyZSB0aGUgbWFwcyBvZiB0aGVtZXMgYW5kIGdsb2JhbGx5IGF2YWlsYWJsZSBmdW5jdGlvbnMvbWl4aW5zXG4gKi9cblxuQGltcG9ydCAnY29yZS9taXhpbnMnO1xuQGltcG9ydCAnY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnY29yZS9icmVha2luZy1ub3RpY2UnO1xuXG4kbmItZW5hYmxlZC10aGVtZXM6ICgpICFnbG9iYWw7XG4kbmItZW5hYmxlLWNzcy12YXJpYWJsZXM6IGZhbHNlICFnbG9iYWw7XG5cbiRuYi10aGVtZXM6ICgpICFnbG9iYWw7XG4kbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQ6ICgpICFnbG9iYWw7XG4kbmItdGhlbWVzLWV4cG9ydDogKCkgIWdsb2JhbDtcblxuQGZ1bmN0aW9uIG5iLXRoZW1lKCRrZXkpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZSwgJGtleSk7XG59XG5cbkBmdW5jdGlvbiBuYi1nZXQtdmFsdWUoJHRoZW1lLCAka2V5LCAkdmFsdWUpIHtcbiAgQGlmICh0eXBlLW9mKCR2YWx1ZSkgPT0gJ3N0cmluZycpIHtcbiAgICAkdG1wOiBtYXAtZ2V0KCR0aGVtZSwgJHZhbHVlKTtcblxuICAgIEBpZiAoJHRtcCAhPSBudWxsKSB7XG4gICAgICBAcmV0dXJuIG5iLWdldC12YWx1ZSgkdGhlbWUsICR2YWx1ZSwgJHRtcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZSwgJGtleSk7XG59XG5cbkBmdW5jdGlvbiBjb252ZXJ0LXRvLWNzcy12YXJpYWJsZXMoJHZhcmlhYmxlcykge1xuICAkcmVzdWx0OiAoKTtcbiAgQGVhY2ggJHZhciwgJHZhbHVlIGluICR2YXJpYWJsZXMge1xuICAgICRyZXN1bHQ6IG1hcC1zZXQoJHJlc3VsdCwgJHZhciwgJy0tdmFyKCN7JHZhcn0pJyk7XG4gIH1cblxuICBAZGVidWcgJHJlc3VsdDtcbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AZnVuY3Rpb24gc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpIHtcbiAgJHRoZW1lOiAkdGhlbWUgIWdsb2JhbDtcbiAgJHRoZW1lLW5hbWU6ICR0aGVtZS1uYW1lICFnbG9iYWw7XG4gIEBpZiAoJG5iLWVuYWJsZS1jc3MtdmFyaWFibGVzKSB7XG4gICAgJHRoZW1lOiBjb252ZXJ0LXRvLWNzcy12YXJpYWJsZXMoJHRoZW1lKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gJHRoZW1lO1xufVxuXG5AZnVuY3Rpb24gbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCAkbmFtZSwgJGRlZmF1bHQ6IG51bGwpIHtcblxuICAkdGhlbWUtZGF0YTogKCk7XG5cblxuICBAaWYgKCRkZWZhdWx0ICE9IG51bGwpIHtcblxuICAgICR0aGVtZTogbWFwLW1lcmdlKG1hcC1nZXQoJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkLCAkZGVmYXVsdCksICR0aGVtZSk7XG4gICAgJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiBtYXAtc2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJG5hbWUsICR0aGVtZSkgIWdsb2JhbDtcblxuICAgICR0aGVtZS1kYXRhOiBtYXAtc2V0KCR0aGVtZS1kYXRhLCBkYXRhLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtZXhwb3J0OiBtYXAtc2V0KCRuYi10aGVtZXMtZXhwb3J0LCAkbmFtZSwgbWFwLXNldCgkdGhlbWUtZGF0YSwgcGFyZW50LCAkZGVmYXVsdCkpICFnbG9iYWw7XG5cbiAgfSBAZWxzZSB7XG4gICAgJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiBtYXAtc2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJG5hbWUsICR0aGVtZSkgIWdsb2JhbDtcblxuICAgICR0aGVtZS1kYXRhOiBtYXAtc2V0KCR0aGVtZS1kYXRhLCBkYXRhLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtZXhwb3J0OiBtYXAtc2V0KCRuYi10aGVtZXMtZXhwb3J0LCAkbmFtZSwgbWFwLXNldCgkdGhlbWUtZGF0YSwgcGFyZW50LCBudWxsKSkgIWdsb2JhbDtcbiAgfVxuXG4gICR0aGVtZS1wYXJzZWQ6ICgpO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHRoZW1lIHtcbiAgICAkdGhlbWUtcGFyc2VkOiBtYXAtc2V0KCR0aGVtZS1wYXJzZWQsICRrZXksIG5iLWdldC12YWx1ZSgkdGhlbWUsICRrZXksICR2YWx1ZSkpO1xuICB9XG5cbiAgLy8gZW5hYmxlIHJpZ2h0IGF3YXkgd2hlbiBpbnN0YWxsZWRcbiAgJHRoZW1lLXBhcnNlZDogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZS1wYXJzZWQsICRuYW1lKTtcbiAgQHJldHVybiBtYXAtc2V0KCRuYi10aGVtZXMsICRuYW1lLCAkdGhlbWUtcGFyc2VkKTtcbn1cblxuQGZ1bmN0aW9uIGdldC1lbmFibGVkLXRoZW1lcygpIHtcbiAgJHRoZW1lcy10by1pbnN0YWxsOiAoKTtcblxuICBAaWYgKGxlbmd0aCgkbmItZW5hYmxlZC10aGVtZXMpID4gMCkge1xuICAgIEBlYWNoICR0aGVtZS1uYW1lIGluICRuYi1lbmFibGVkLXRoZW1lcyB7XG4gICAgICAkdGhlbWVzLXRvLWluc3RhbGw6IG1hcC1zZXQoJHRoZW1lcy10by1pbnN0YWxsLCAkdGhlbWUtbmFtZSwgbWFwLWdldCgkbmItdGhlbWVzLCAkdGhlbWUtbmFtZSkpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHRoZW1lcy10by1pbnN0YWxsOiAkbmItdGhlbWVzO1xuICB9XG5cbiAgQHJldHVybiAkdGhlbWVzLXRvLWluc3RhbGw7XG59XG5cbkBtaXhpbiBpbnN0YWxsLWNzcy12YXJpYWJsZXMoJHRoZW1lLW5hbWUsICR2YXJpYWJsZXMpIHtcbiAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IHtcbiAgICBAZWFjaCAkdmFyLCAkdmFsdWUgaW4gJHZhcmlhYmxlcyB7XG4gICAgICAtLSN7JHZhcn06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVE9ETzogd2UgaGlkZSA6aG9zdCBpbnNpZGUgb2YgaXQgd2hpY2ggaXMgbm90IG9idmlvdXNcbkBtaXhpbiBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcblxuICAkdGhlbWVzLXRvLWluc3RhbGw6IGdldC1lbmFibGVkLXRoZW1lcygpO1xuXG4gIEBlYWNoICR0aGVtZS1uYW1lLCAkdGhlbWUgaW4gJHRoZW1lcy10by1pbnN0YWxsIHtcbiAgICAvKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbiAgICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0gOmhvc3Qge1xuICAgICAgJHRoZW1lOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSk7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG5iLWZvci10aGVtZSgkbmFtZSkge1xuICBAaWYgKCR0aGVtZS1uYW1lID09ICRuYW1lKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiAgICBcbi8vIEFkZCBjb250ZW50IGZvciB0aGVtZSBpbnRvIGEgbGlzdCBvZiB0aGVtZXNcbkBtaXhpbiBuYi1mb3ItdGhlbWVzKCRuYW1lcy4uLikge1xuICBAZWFjaCAkbmFtZSBpbiAkbmFtZXMge1xuICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZSgkbmFtZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBuYi1leGNlcHQtdGhlbWUoJG5hbWUpIHtcbiAgQGlmICgkdGhlbWUtbmFtZSAhPSAkbmFtZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIEFkZCBjb250ZW50IGV4Y2VwdCBmb3IgdGhlbWUgaW50byBhIGxpc3Qgb2YgdGhlbWVzXG5AbWl4aW4gbmItZXhjZXB0LWZvci10aGVtZXMoJG5hbWVzLi4uKSB7XG4gIEBlYWNoICRuYW1lIGluICRuYW1lcyB7XG4gICAgQGluY2x1ZGUgbmItZXhjZXB0LXRoZW1lKCRuYW1lKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gVE9ETzogYW5vdGhlciBtaXhpbmcgZm9yIHRoZSBhbG1vc3Qgc2FtZSB0aGluZ1xuQG1peGluIG5iLWluc3RhbGwtcm9vdC1jb21wb25lbnQoKSB7XG4gIEB3YXJuICdgbmItaW5zdGFsbC1yb290LWNvbXBvbmVudGAgaXMgZGVwcmljYXRlZCwgcmVwbGFjZSB3aXRoIGBuYi1pbnN0YWxsLWNvbXBvbmVudGAsIGFzIGBib2R5YCBpcyByb290IGVsZW1lbnQgbm93JztcblxuICBAaW5jbHVkZSBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItaW5zdGFsbC1nbG9iYWwoKSB7XG4gICR0aGVtZXMtdG8taW5zdGFsbDogZ2V0LWVuYWJsZWQtdGhlbWVzKCk7XG5cbiAgQGVhY2ggJHRoZW1lLW5hbWUsICR0aGVtZSBpbiAkdGhlbWVzLXRvLWluc3RhbGwge1xuICAgIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSB7XG4gICAgICAkdGhlbWU6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICR0ZW1wOiBuYi1icmVha2luZy1ub3RpY2Utc2hvdygkdGhlbWUpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5AbWl4aW4gbmItc2Nyb2xsYmFycygkZmcsICRiZywgJHNpemUsICRib3JkZXItcmFkaXVzOiAkc2l6ZSAvIDIpIHtcbiAgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiAkZmc7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogJGJnO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlXG4gIC8vIEZvciBJbnRlcm5ldCBFeHBsb3JlclxuICBzY3JvbGxiYXItZmFjZS1jb2xvcjogJGZnO1xuICBzY3JvbGxiYXItdHJhY2stY29sb3I6ICRiZztcbn1cblxuQG1peGluIG5iLXJhZGlhbC1ncmFkaWVudCgkY29sb3ItMSwgJGNvbG9yLTIsICRjb2xvci0zKSB7XG4gIGJhY2tncm91bmQ6ICRjb2xvci0yOyAvKiBPbGQgYnJvd3NlcnMgKi9cbiAgYmFja2dyb3VuZDogLW1vei1yYWRpYWwtZ3JhZGllbnQoYm90dG9tLCBlbGxpcHNlIGNvdmVyLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIEZGMy42LTE1ICovXG4gIGJhY2tncm91bmQ6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGJvdHRvbSwgZWxsaXBzZSBjb3ZlciwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBDaHJvbWUxMC0yNSxTYWZhcmk1LjEtNiAqL1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBib3R0b20sICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogVzNDLCBJRTEwKywgRkYxNissIENocm9tZTI2KywgT3BlcmExMissIFNhZmFyaTcrICovXG4gIGZpbHRlcjogcHJvZ2lkOmR4aW1hZ2V0cmFuc2Zvcm0ubWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyRjb2xvci0xJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ29sb3JzdHI9JyRjb2xvci0zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhZGllbnRUeXBlPTEpOyAvKiBJRTYtOSBmYWxsYmFjayBvbiBob3Jpem9udGFsIGdyYWRpZW50ICovXG59XG5cbkBtaXhpbiBuYi1yaWdodC1ncmFkaWVudCgkbGVmdC1jb2xvciwgJHJpZ2h0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGxlZnQtY29sb3IsICRyaWdodC1jb2xvcik7XG59XG5cbkBtaXhpbiBuYi1oZWFkaW5ncygkZnJvbTogMSwgJHRvOiA2KSB7XG4gIEBmb3IgJGkgZnJvbSAkZnJvbSB0aHJvdWdoICR0byB7XG4gICAgaCN7JGl9IHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhvdmVyLWZvY3VzLWFjdGl2ZSB7XG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlLFxuICAmOmhvdmVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY2VudGVyLWhvcml6b250YWwtYWJzb2x1dGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICBsZWZ0OiA1MCU7XG59XG5cbkBtaXhpbiBpbnN0YWxsLXRodW1iKCkge1xuICAkdGh1bWItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1zbGlkZXItdGh1bWInXG4gICAgJzo6LW1vei1yYW5nZS10aHVtYidcbiAgICAnOjotbXMtdGh1bWInXG4gICk7XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICR0aHVtYi1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbnN0YWxsLXRyYWNrKCkge1xuICAkdGh1bWItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2snXG4gICAgJzo6LW1vei1yYW5nZS10cmFjaydcbiAgICAnOjotbXMtdHJhY2snXG4gICk7XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICR0aHVtYi1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbnN0YWxsLXBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSkge1xuICAkcGxhY2Vob2xkZXItc2VsZWN0b3JzOiAoXG4gICAgJzo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcidcbiAgICAnOjotbW96LXBsYWNlaG9sZGVyJ1xuICAgICc6LW1vei1wbGFjZWhvbGRlcidcbiAgICAnOi1tcy1pbnB1dC1wbGFjZWhvbGRlcidcbiAgKTtcblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKTtcbiAgfVxuXG4gIEBlYWNoICRzZWxlY3RvciBpbiAkcGxhY2Vob2xkZXItc2VsZWN0b3JzIHtcbiAgICAmI3skc2VsZWN0b3J9IHtcbiAgICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyKCRjb2xvciwgJGZvbnQtc2l6ZSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyN7JHNlbGVjdG9yfSB7XG4gICAgICBAaW5jbHVkZSBwbGFjZWhvbGRlci1mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKSB7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gcGxhY2Vob2xkZXItZm9jdXMoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uKCRhbmltYXRlLi4uKSB7XG4gICRtYXg6IGxlbmd0aCgkYW5pbWF0ZSk7XG4gICRhbmltYXRpb25zOiAnJztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICRhbmltYXRpb25zOiAjeyRhbmltYXRpb25zICsgbnRoKCRhbmltYXRlLCAkaSl9O1xuXG4gICAgQGlmICRpIDwgJG1heCB7XG4gICAgICAkYW5pbWF0aW9uczogI3skYW5pbWF0aW9ucyArICcsICd9O1xuICAgIH1cbiAgfVxuICAtd2Via2l0LWFuaW1hdGlvbjogJGFuaW1hdGlvbnM7XG4gIC1tb3otYW5pbWF0aW9uOiAgICAkYW5pbWF0aW9ucztcbiAgLW8tYW5pbWF0aW9uOiAgICAgICRhbmltYXRpb25zO1xuICBhbmltYXRpb246ICAgICAgICAgJGFuaW1hdGlvbnM7XG59XG5cbkBtaXhpbiBrZXlmcmFtZXMoJGFuaW1hdGlvbk5hbWUpIHtcbiAgQC13ZWJraXQta2V5ZnJhbWVzICN7JGFuaW1hdGlvbk5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtby1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBrZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBtaXhpbiBnZW5lcmF0ZXMga2V5ZmFtZXMuXG4gKiBCZWNhdXNlIG9mIGFsbCBrZXlmcmFtZXMgY2FuJ3QgYmUgc2NvcGVkLFxuICogd2UgbmVlZCB0byBwdXRzIHVuaXF1ZSBuYW1lIGluIGVhY2ggYnRuLXB1bHNlIGNhbGwuXG4gKi9cbkBtaXhpbiBidG4tcHVsc2UoJG5hbWUsICRjb2xvcikge1xuICAmLmJ0bi1wdWxzZSB7XG4gICAgQGluY2x1ZGUgYW5pbWF0aW9uKGJ0bi0jeyRuYW1lfS1wdWxzZSAxLjVzIGluZmluaXRlKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGtleWZyYW1lcyhidG4tI3skbmFtZX0tcHVsc2UpIHtcbiAgICAwJSB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDFyZW0gMCAkY29sb3I7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIG9wYWNpdHk6IG5iLXRoZW1lKGJ0bi1kaXNhYmxlZC1vcGFjaXR5KTtcbiAgICB9XG4gIH1cbn1cblxuLypcblxuQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jaG9zdC1zZWxlY3Rvcilcbjpob3N0IGFuZCA6aG9zdC1jb250ZXh0IGFyZSBwc2V1ZG8tY2xhc3Nlcy4gU28gd2UgYXNzdW1lIHRoZXkgY291bGQgYmUgY29tYmluZWQsXG5saWtlIG90aGVyIHBzZXVkby1jbGFzc2VzLCBldmVuIHNhbWUgb25lcy5cbkZvciBleGFtcGxlOiAnOm50aC1vZi10eXBlKDJuKTpudGgtb2YtdHlwZShldmVuKScuXG5cbklkZWFsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHByZXBlbmQgYW55IHNlbGVjdG9yIHdpdGggOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pLlxuVGhlbiBuZWJ1bGFyIGNvbXBvbmVudHMgd2lsbCBiZWhhdmUgYXMgYW4gaHRtbCBlbGVtZW50IGFuZCByZXNwb25kIHRvIFtkaXJdIGF0dHJpYnV0ZSBvbiBhbnkgbGV2ZWwsXG5zbyBkaXJlY3Rpb24gY291bGQgYmUgb3ZlcnJpZGRlbiBvbiBhbnkgY29tcG9uZW50IGxldmVsLlxuXG5JbXBsZW1lbnRhdGlvbiBjb2RlOlxuXG5AbWl4aW4gbmItcnRsKCkge1xuICAvLyBhZGQgIyB0byBzY3NzIGludGVycG9sYXRpb24gc3RhdGVtZW50LlxuICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgQGF0LXJvb3Qge3NlbGVjdG9yLWFwcGVuZCgnOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pJywgJil9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5BbmQgd2hlbiB3ZSBjYWxsIGl0IHNvbWV3aGVyZTpcblxuOmhvc3Qge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG46aG9zdC1jb250ZXh0KC4uLikge1xuICAuc29tZS1jbGFzcyB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkge1xuICAgICAgLi4uXG4gICAgfVxuICB9XG59XG5cblJlc3VsdCB3aWxsIGxvb2sgbGlrZTpcblxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QgLnNvbWUtY2xhc3Mge1xuICAuLi5cbn1cbjpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKTpob3N0LWNvbnRleHQoLi4uKSAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuXG4qXG4gIFNpZGUgbm90ZTpcbiAgOmhvc3QtY29udGV4dCgpOmhvc3Qgc2VsZWN0b3IgYXJlIHZhbGlkLiBodHRwczovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTVGZWIvMDMwNS5odG1sXG5cbiAgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIHNob3VsZCBtYXRjaCBhbnkgcGVybXV0YXRpb24sXG4gIHNvIG9yZGVyIGlzIG5vdCBpbXBvcnRhbnQuXG4qXG5cblxuQ3VycmVudGx5LCB0aGVyZSdyZSB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoOlxuXG5GaXJzdCwgaXMgdGhhdCB3ZSBjYW4ndCBjb21iaW5lIDpob3N0LCA6aG9zdC1jb250ZXh0LiBBbmd1bGFyIGJ1Z3MgIzE0MzQ5LCAjMTkxOTkuXG5Gb3IgdGhlIG1vbWVudCBvZiB3cml0aW5nLCB0aGUgb25seSBwb3NzaWJsZSB3YXkgaXM6XG46aG9zdCB7XG4gIDpob3N0LWNvbnRleHQoLi4uKSB7XG4gICAgLi4uXG4gIH1cbn1cbkl0IGRvZXNuJ3Qgd29yayBmb3IgdXMgYmVjYXVzZSBtaXhpbiBjb3VsZCBiZSBjYWxsZWQgc29tZXdoZXJlIGRlZXBlciwgbGlrZTpcbjpob3N0IHtcbiAgcCB7XG4gICAgQGluY2x1ZGUgbmItcnRsKCkgeyAuLi4gfVxuICB9XG59XG5XZSBhcmUgbm90IGFibGUgdG8gZ28gdXAgdG8gOmhvc3QgbGV2ZWwgdG8gcGxhY2UgY29udGVudCBwYXNzZWQgdG8gbWl4aW4uXG5cblRoZSBzZWNvbmQgcHJvYmxlbSBpcyB0aGF0IHdlIG9ubHkgY2FuIGJlIHN1cmUgdGhhdCB3ZSBhcHBlbmRpbmcgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHRvIGFub3RoZXJcbjpob3N0Lzpob3N0LWNvbnRleHQgcHNldWRvLWNsYXNzIHdoZW4gY2FsbGVkIGluIHRoZW1lIGZpbGVzICgqLnRoZW1lLnNjc3MpLlxuICAqXG4gICAgU2lkZSBub3RlOlxuICAgIEN1cnJlbnRseSwgbmItaW5zdGFsbC1jb21wb25lbnQgdXNlcyBhbm90aGVyIGFwcHJvYWNoIHdoZXJlIDpob3N0IHByZXBlbmRlZCB3aXRoIHRoZSB0aGVtZSBuYW1lXG4gICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi81Yjk2MDc4NjI0YjBhNDc2MGYyZGJjZjZmZGYwYmQ2Mjc5MWJlNWJiL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDEpLFxuICAgIGJ1dCBpdCB3YXMgbWFkZSB0byBiZSBhYmxlIHRvIHVzZSBjdXJyZW50IHJlYWxpemF0aW9uIG9mIHJ0bCBhbmQgaXQgY2FuIGJlIHJld3JpdHRlbiBiYWNrIHRvXG4gICAgOmhvc3QtY29udGV4dCgkdGhlbWUpIG9uY2Ugd2Ugd2lsbCBiZSBhYmxlIHRvIHVzZSBtdWx0aXBsZSBzaGFkb3cgc2VsZWN0b3JzLlxuICAqXG5CdXQgd2hlbiBpdCdzIGNhbGxlZCBpbiAqLmNvbXBvbmVudC5zY3NzIHdlIGNhbid0IGJlIHN1cmUsIHRoYXQgc2VsZWN0b3Igc3RhcnRzIHdpdGggOmhvc3QvOmhvc3QtY29udGV4dCxcbmJlY2F1c2UgYW5ndWxhciBhbGxvd3Mgb21pdHRpbmcgcHNldWRvLWNsYXNzZXMgaWYgd2UgZG9uJ3QgbmVlZCB0byBzdHlsZSA6aG9zdCBjb21wb25lbnQgaXRzZWxmLlxuV2UgY2FuIGJyZWFrIHN1Y2ggc2VsZWN0b3JzLCBieSBqdXN0IGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gdGhlbS5cbiAgKioqXG4gICAgUG9zc2libGUgc29sdXRpb25cbiAgICBjaGVjayBpZiB3ZSBpbiB0aGVtZSBieSBzb21lIHRoZW1lIHZhcmlhYmxlcyBhbmQgaWYgc28gYXBwZW5kLCBvdGhlcndpc2UgbmVzdCBsaWtlXG4gICAgQGF0LXJvb3QgOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pIHtcbiAgICAgIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gICAgICAvLyBpdCB3b3JrcyBpbiBjb21tZW50cyBhbmQgd2UgY2FuJ3QgdXNlIGl0IGhlcmVcbiAgICAgIHsmfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBXaGF0IGlmIDpob3N0IHNwZWNpZmllZD8gQ2FuIHdlIGFkZCBzcGFjZSBpbiA6aG9zdC1jb250ZXh0KC4uLikgOmhvc3Q/XG4gICAgT3IgbWF5YmUgYWRkIDpob3N0IHNlbGVjdG9yIGFueXdheT8gSWYgbXVsdGlwbGUgOmhvc3Qgc2VsZWN0b3JzIGFyZSBhbGxvd2VkXG4gICoqKlxuXG5cblByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgYXBwcm9hY2guXG5cbjEuIERpcmVjdGlvbiBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGRvY3VtZW50IGxldmVsLCBiZWNhdXNlIG1peGluIHByZXBlbmRzIHRoZW1lIGNsYXNzLFxud2hpY2ggcGxhY2VkIG9uIHRoZSBib2R5LlxuMi4gKi5jb21wb25lbnQuc2NzcyBzdHlsZXMgc2hvdWxkIGJlIGluIDpob3N0IHNlbGVjdG9yLiBPdGhlcndpc2UgYW5ndWxhciB3aWxsIGFkZCBob3N0XG5hdHRyaWJ1dGUgdG8gW2Rpcj1ydGxdIGF0dHJpYnV0ZSBhcyB3ZWxsLlxuXG5cbkdlbmVyYWwgcHJvYmxlbXMuXG5cbkx0ciBpcyBkZWZhdWx0IGRvY3VtZW50IGRpcmVjdGlvbiwgYnV0IGZvciBwcm9wZXIgd29yayBvZiBuYi1sdHIgKG1lYW5zIGx0ciBvbmx5KSxcbltkaXI9bHRyXSBzaG91bGQgYmUgc3BlY2lmaWVkIGF0IGxlYXN0IHNvbWV3aGVyZS4gJzpub3QoW2Rpcj1ydGxdJyBub3QgYXBwbGljYWJsZSBoZXJlLFxuYmVjYXVzZSBpdCdzIHNhdGlzZnkgYW55IHBhcmVudCwgdGhhdCBkb24ndCBoYXZlIFtkaXI9cnRsXSBhdHRyaWJ1dGUuXG5QcmV2aW91cyBhcHByb2FjaCB3YXMgdG8gdXNlIHNpbmdsZSBydGwgbWl4aW4gYW5kIHJlc2V0IGx0ciBwcm9wZXJ0aWVzIHRvIGluaXRpYWwgdmFsdWUuXG5CdXQgc29tZXRpbWVzIGl0J3MgaGFyZCB0byBmaW5kLCB3aGF0IHRoZSBwcmV2aW91cyB2YWx1ZSBzaG91bGQgYmUuIEFuZCBzdWNoIG1peGluIGNhbGwgbG9va3MgdG9vIHZlcmJvc2UuXG4qL1xuXG5AbWl4aW4gX3ByZXBlbmQtd2l0aC1zZWxlY3Rvcigkc2VsZWN0b3IsICRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgI3skc2VsZWN0b3J9ICYge1xuICAgIEBpZiAkcHJvcCAhPSBudWxsIHtcbiAgICAgICN7JHByb3B9OiAkdmFsdWU7XG4gICAgfVxuXG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG5iLWx0cigkcHJvcDogbnVsbCwgJHZhbHVlOiBudWxsKSB7XG4gIEBpbmNsdWRlIF9wcmVwZW5kLXdpdGgtc2VsZWN0b3IoJ1tkaXI9bHRyXScsICRwcm9wLCAkdmFsdWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItcnRsKCRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgQGluY2x1ZGUgX3ByZXBlbmQtd2l0aC1zZWxlY3RvcignW2Rpcj1ydGxdJywgJHByb3AsICR2YWx1ZSkge1xuICAgIEBjb250ZW50O1xuICB9O1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG4vLy8gU2xpZ2h0bHkgbGlnaHRlbiBhIGNvbG9yXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byB0aW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwZXJjZW50YWdlIC0gcGVyY2VudGFnZSBvZiBgJGNvbG9yYCBpbiByZXR1cm5lZCBjb2xvclxuLy8vIEByZXR1cm4ge0NvbG9yfVxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peCh3aGl0ZSwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbi8vLyBTbGlnaHRseSBkYXJrZW4gYSBjb2xvclxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gY29sb3IgdG8gc2hhZGVcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBwZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHJldHVybmVkIGNvbG9yXG4vLy8gQHJldHVybiB7Q29sb3J9XG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peChibGFjaywgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiBtYXAtc2V0KCRtYXAsICRrZXksICR2YWx1ZTogbnVsbCkge1xuICAkbmV3OiAoJGtleTogJHZhbHVlKTtcbiAgQHJldHVybiBtYXAtbWVyZ2UoJG1hcCwgJG5ldyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBpbXBvcnQgJy4uL2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJy4uL2NvcmUvbWl4aW5zJztcblxuJHRoZW1lOiAoXG4gIGZvbnQtbWFpbjogdW5xdW90ZSgnXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWYnKSxcbiAgZm9udC1zZWNvbmRhcnk6IGZvbnQtbWFpbixcblxuICBmb250LXdlaWdodC10aGluOiAyMDAsXG4gIGZvbnQtd2VpZ2h0LWxpZ2h0OiAzMDAsXG4gIGZvbnQtd2VpZ2h0LW5vcm1hbDogNDAwLFxuICBmb250LXdlaWdodC1ib2xkZXI6IDUwMCxcbiAgZm9udC13ZWlnaHQtYm9sZDogNjAwLFxuICBmb250LXdlaWdodC11bHRyYS1ib2xkOiA4MDAsXG5cbiAgLy8gVE9ETzogdXNlIGl0IGFzIGEgZGVmYXVsdCBmb250LXNpemVcbiAgYmFzZS1mb250LXNpemU6IDE2cHgsXG5cbiAgZm9udC1zaXplLXhsZzogMS4yNXJlbSxcbiAgZm9udC1zaXplLWxnOiAxLjEyNXJlbSxcbiAgZm9udC1zaXplOiAxcmVtLFxuICBmb250LXNpemUtc206IDAuODc1cmVtLFxuICBmb250LXNpemUteHM6IDAuNzVyZW0sXG5cbiAgcmFkaXVzOiAwLjM3NXJlbSxcbiAgcGFkZGluZzogMS4yNXJlbSxcbiAgbWFyZ2luOiAxLjVyZW0sXG4gIGxpbmUtaGVpZ2h0OiAxLjI1LFxuXG4gIGNvbG9yLWJnOiAjZmZmZmZmLFxuICBjb2xvci1iZy1hY3RpdmU6ICNlOWVkZjIsXG4gIGNvbG9yLWZnOiAjYTRhYmIzLFxuICBjb2xvci1mZy1oZWFkaW5nOiAjMmEyYTJhLFxuICBjb2xvci1mZy10ZXh0OiAjNGI0YjRiLFxuICBjb2xvci1mZy1oaWdobGlnaHQ6ICM0MGRjN2UsXG5cbiAgc2VwYXJhdG9yOiAjZWJlZWYyLFxuXG4gIGNvbG9yLWdyYXk6IHJnYmEoODEsIDExMywgMTY1LCAwLjE1KSxcbiAgY29sb3ItbmV1dHJhbDogdHJhbnNwYXJlbnQsXG4gIGNvbG9yLXdoaXRlOiAjZmZmZmZmLFxuICBjb2xvci1kaXNhYmxlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpLFxuXG4gIGNvbG9yLXByaW1hcnk6ICM4YTdmZmYsXG4gIGNvbG9yLXN1Y2Nlc3M6ICM0MGRjN2UsXG4gIGNvbG9yLWluZm86ICM0Y2E2ZmYsXG4gIGNvbG9yLXdhcm5pbmc6ICNmZmExMDAsXG4gIGNvbG9yLWRhbmdlcjogI2ZmNGM2YSxcblxuICAvLyBUT0RPOiBtb3ZlIHRvIGNvbnN0YW50c1xuICBzb2NpYWwtY29sb3ItZmFjZWJvb2s6ICMzYjU5OTgsXG4gIHNvY2lhbC1jb2xvci10d2l0dGVyOiAjNTVhY2VlLFxuICBzb2NpYWwtY29sb3ItZ29vZ2xlOiAjZGQ0YjM5LFxuICBzb2NpYWwtY29sb3ItbGlua2VkaW46ICMwMTc3YjUsXG4gIHNvY2lhbC1jb2xvci1naXRodWI6ICM2YjZiNmIsXG4gIHNvY2lhbC1jb2xvci1zdGFja292ZXJmbG93OiAjMmY5NmU4LFxuICBzb2NpYWwtY29sb3ItZHJpYmJsZTogI2YyNjc5OCxcbiAgc29jaWFsLWNvbG9yLWJlaGFuY2U6ICMwMDkzZmEsXG5cbiAgYm9yZGVyLWNvbG9yOiBjb2xvci1ncmF5LFxuICBzaGFkb3c6IDAgMnB4IDEycHggMCAjZGZlM2ViLFxuXG4gIGxpbmstY29sb3I6ICMzZGNjNmQsXG4gIGxpbmstY29sb3ItaG92ZXI6ICMyZWU1NmIsXG4gIGxpbmstY29sb3ItdmlzaXRlZDogbGluay1jb2xvcixcblxuICBzY3JvbGxiYXItZmc6ICNkYWRhZGEsXG4gIHNjcm9sbGJhci1iZzogI2YyZjJmMixcbiAgc2Nyb2xsYmFyLXdpZHRoOiA1cHgsXG4gIHNjcm9sbGJhci10aHVtYi1yYWRpdXM6IDIuNXB4LFxuXG4gIHJhZGlhbC1ncmFkaWVudDogbm9uZSxcbiAgbGluZWFyLWdyYWRpZW50OiBub25lLFxuXG4gIGNhcmQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNhcmQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBjYXJkLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGNhcmQtZmc6IGNvbG9yLWZnLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIGNhcmQtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1iZzogY29sb3ItYmcsXG4gIGNhcmQtaGVpZ2h0LXh4c21hbGw6IDk2cHgsXG4gIGNhcmQtaGVpZ2h0LXhzbWFsbDogMjE2cHgsXG4gIGNhcmQtaGVpZ2h0LXNtYWxsOiAzMzZweCxcbiAgY2FyZC1oZWlnaHQtbWVkaXVtOiA0NTZweCxcbiAgY2FyZC1oZWlnaHQtbGFyZ2U6IDU3NnB4LFxuICBjYXJkLWhlaWdodC14bGFyZ2U6IDY5NnB4LFxuICBjYXJkLWhlaWdodC14eGxhcmdlOiA4MTZweCxcbiAgY2FyZC1zaGFkb3c6IHNoYWRvdyxcbiAgY2FyZC1ib3JkZXItd2lkdGg6IDAsXG4gIGNhcmQtYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBjYXJkLWJvcmRlci1jb2xvcjogY29sb3ItYmcsXG4gIGNhcmQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjYXJkLXBhZGRpbmc6IHBhZGRpbmcsXG4gIGNhcmQtbWFyZ2luOiBtYXJnaW4sXG4gIGNhcmQtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgY2FyZC1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBjYXJkLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBjYXJkLWhlYWRlci1mZzogY29sb3ItZmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtaGVhZGVyLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNhcmQtaGVhZGVyLWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGNhcmQtaGVhZGVyLWFjdGl2ZS1mZzogY29sb3ItYmcsXG4gIGNhcmQtaGVhZGVyLWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgY2FyZC1oZWFkZXItcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2FyZC1oZWFkZXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgY2FyZC1oZWFkZXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FyZC1oZWFkZXItd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgY2FyZC1oZWFkZXItZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci13aWR0aDogMXB4LFxuICBjYXJkLWhlYWRlci1ib3JkZXItdHlwZTogc29saWQsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci1jb2xvcjogY2FyZC1zZXBhcmF0b3IsXG5cbiAgaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBoZWFkZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBoZWFkZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGhlYWRlci1iZzogY29sb3ItYmcsXG4gIGhlYWRlci1oZWlnaHQ6IDQuNzVyZW0sXG4gIGhlYWRlci1wYWRkaW5nOiAxLjI1cmVtLFxuICBoZWFkZXItc2hhZG93OiBzaGFkb3csXG5cbiAgZm9vdGVyLWhlaWdodDogNC43MjVyZW0sXG4gIGZvb3Rlci1wYWRkaW5nOiAxLjI1cmVtLFxuICBmb290ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvb3Rlci1mZy1oaWdobGlnaHQ6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvb3Rlci1iZzogY29sb3ItYmcsXG4gIGZvb3Rlci1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgZm9vdGVyLXNoYWRvdzogc2hhZG93LFxuXG4gIGxheW91dC1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBsYXlvdXQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGxheW91dC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGxheW91dC1mZzogY29sb3ItZmcsXG4gIGxheW91dC1iZzogI2ViZWZmNSxcbiAgbGF5b3V0LW1pbi1oZWlnaHQ6IDEwMHZoLFxuICBsYXlvdXQtY29udGVudC13aWR0aDogOTAwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1taW4td2lkdGg6IDMwMHB4LFxuICBsYXlvdXQtd2luZG93LW1vZGUtbWF4LXdpZHRoOiAxOTIwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1iZzogbGF5b3V0LWJnLFxuICBsYXlvdXQtd2luZG93LW1vZGUtcGFkZGluZy10b3A6IDQuNzVyZW0sXG4gIGxheW91dC13aW5kb3ctc2hhZG93OiBzaGFkb3csXG4gIGxheW91dC1wYWRkaW5nOiAyLjI1cmVtIDIuMjVyZW0gMC43NXJlbSxcbiAgbGF5b3V0LW1lZGl1bS1wYWRkaW5nOiAxLjVyZW0gMS41cmVtIDAuNXJlbSxcbiAgbGF5b3V0LXNtYWxsLXBhZGRpbmc6IDFyZW0gMXJlbSAwLFxuXG4gIHNpZGViYXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHNpZGViYXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzaWRlYmFyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzaWRlYmFyLWJnOiBjb2xvci1iZyxcbiAgc2lkZWJhci1oZWlnaHQ6IDEwMHZoLFxuICBzaWRlYmFyLXdpZHRoOiAxNnJlbSxcbiAgc2lkZWJhci13aWR0aC1jb21wYWN0OiAzLjVyZW0sXG4gIHNpZGViYXItcGFkZGluZzogcGFkZGluZyxcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiAzLjVyZW0sXG4gIHNpZGViYXItZm9vdGVyLWhlaWdodDogMy41cmVtLFxuICBzaWRlYmFyLXNoYWRvdzogc2hhZG93LFxuXG4gIG1lbnUtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBtZW51LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtZW51LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1hY3RpdmUtYmc6IGNvbG9yLWJnLFxuICBtZW51LWFjdGl2ZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcblxuICBtZW51LXN1Ym1lbnUtYmc6IGNvbG9yLWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYmc6IGNvbG9yLWJnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGlnaGxpZ2h0LFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLXNoYWRvdzogbm9uZSxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWZnOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItYmc6IG1lbnUtc3VibWVudS1iZyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXdpZHRoOiAwLjEyNXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1wYWRkaW5nOiAwLjVyZW0gMXJlbSxcbiAgbWVudS1zdWJtZW51LWl0ZW0tY29udGFpbmVyLXBhZGRpbmc6IDAgMS4yNXJlbSxcbiAgbWVudS1zdWJtZW51LXBhZGRpbmc6IDAuNXJlbSxcblxuICBtZW51LWdyb3VwLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1lbnUtZ3JvdXAtZm9udC1zaXplOiAwLjg3NXJlbSxcbiAgbWVudS1ncm91cC1mZzogY29sb3ItZmcsXG4gIG1lbnUtZ3JvdXAtcGFkZGluZzogMXJlbSAxLjI1cmVtLFxuICBtZW51LWl0ZW0tcGFkZGluZzogMC42NzVyZW0gMC43NXJlbSxcbiAgbWVudS1pdGVtLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBtZW51LWljb24tZm9udC1zaXplOiAyLjVyZW0sXG4gIG1lbnUtaWNvbi1tYXJnaW46IDAgMC4yNXJlbSAwLFxuICBtZW51LWljb24tY29sb3I6IGNvbG9yLWZnLFxuICBtZW51LWljb24tYWN0aXZlLWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIHRhYnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICB0YWJzLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICB0YWJzLWNvbnRlbnQtZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgdGFicy1jb250ZW50LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICB0YWJzLWFjdGl2ZS1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtYWN0aXZlLWZvbnQtd2VpZ2h0OiBjYXJkLWhlYWRlci1mb250LXdlaWdodCxcbiAgdGFicy1wYWRkaW5nOiBwYWRkaW5nLFxuICB0YWJzLWNvbnRlbnQtcGFkZGluZzogMCxcbiAgdGFicy1oZWFkZXItYmc6IHRyYW5zcGFyZW50LFxuICB0YWJzLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICB0YWJzLWZnOiBjb2xvci1mZyxcbiAgdGFicy1mZy1kaXNhYmxlZDogdGFicy1mZyxcbiAgdGFicy1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICB0YWJzLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHRhYnMtYmc6IHRyYW5zcGFyZW50LFxuICB0YWJzLXNlbGVjdGVkOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLXNlY29uZC1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgdGFicy1zZWxlY3RlZC1kZWdyZWVzOiAwLFxuICB0YWJzLWljb24tb25seS1tYXgtd2lkdGg6IDU3NnB4LFxuXG4gIHJvdXRlLXRhYnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICByb3V0ZS10YWJzLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICByb3V0ZS10YWJzLWFjdGl2ZS1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtYWN0aXZlLWZvbnQtd2VpZ2h0OiBjYXJkLWhlYWRlci1mb250LXdlaWdodCxcbiAgcm91dGUtdGFicy1wYWRkaW5nOiBwYWRkaW5nLFxuICByb3V0ZS10YWJzLWhlYWRlci1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHJvdXRlLXRhYnMtZmc6IGNvbG9yLWZnLFxuICByb3V0ZS10YWJzLWZnLWRpc2FibGVkOiByb3V0ZS10YWJzLWZnLFxuICByb3V0ZS10YWJzLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHJvdXRlLXRhYnMtYmc6IHRyYW5zcGFyZW50LFxuICByb3V0ZS10YWJzLXNlbGVjdGVkOiBjb2xvci1zdWNjZXNzLFxuICByb3V0ZS10YWJzLWljb24tb25seS1tYXgtd2lkdGg6IDU3NnB4LFxuXG4gIHVzZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHVzZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICB1c2VyLWJnOiBjb2xvci1iZyxcbiAgdXNlci1mZzogY29sb3ItZmcsXG4gIHVzZXItZmctaGlnaGxpZ2h0OiAjYmNjM2NjLFxuICB1c2VyLWZvbnQtZmFtaWx5LXNlY29uZGFyeTogZm9udC1zZWNvbmRhcnksXG4gIHVzZXItc2l6ZS1zbWFsbDogMS41cmVtLFxuICB1c2VyLXNpemUtbWVkaXVtOiAyLjVyZW0sXG4gIHVzZXItc2l6ZS1sYXJnZTogMy4yNXJlbSxcbiAgdXNlci1zaXplLXhsYXJnZTogNHJlbSxcblxuICBwb3BvdmVyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBwb3BvdmVyLWJnOiBjb2xvci1iZyxcbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIHBvcG92ZXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBwb3BvdmVyLXNoYWRvdzogbm9uZSxcbiAgcG9wb3Zlci1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIGNvbnRleHQtbWVudS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgY29udGV4dC1tZW51LWJnOiBjb2xvci1iZyxcbiAgY29udGV4dC1tZW51LWFjdGl2ZS1mZzogY29sb3Itd2hpdGUsXG4gIGNvbnRleHQtbWVudS1hY3RpdmUtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNvbnRleHQtbWVudS1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNvbnRleHQtbWVudS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNvbnRleHQtbWVudS1zaGFkb3c6IG5vbmUsXG4gIGNvbnRleHQtbWVudS1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIGFjdGlvbnMtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFjdGlvbnMtZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBhY3Rpb25zLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYWN0aW9ucy1mZzogY29sb3ItZmcsXG4gIGFjdGlvbnMtYmc6IGNvbG9yLWJnLFxuICBhY3Rpb25zLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBhY3Rpb25zLXBhZGRpbmc6IHBhZGRpbmcsXG4gIGFjdGlvbnMtc2l6ZS1zbWFsbDogMS41cmVtLFxuICBhY3Rpb25zLXNpemUtbWVkaXVtOiAyLjI1cmVtLFxuICBhY3Rpb25zLXNpemUtbGFyZ2U6IDMuNXJlbSxcblxuICBzZWFyY2gtYnRuLW9wZW4tZmc6IGNvbG9yLWZnLFxuICBzZWFyY2gtYnRuLWNsb3NlLWZnOlx0Y29sb3ItZmcsXG4gIHNlYXJjaC1iZzogbGF5b3V0LWJnLFxuICBzZWFyY2gtYmctc2Vjb25kYXJ5OiBjb2xvci1mZyxcbiAgc2VhcmNoLXRleHQ6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNlYXJjaC1pbmZvOiBjb2xvci1mZyxcbiAgc2VhcmNoLWRhc2g6IGNvbG9yLWZnLFxuICBzZWFyY2gtcGxhY2Vob2xkZXI6IGNvbG9yLWZnLFxuXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBzbWFydC10YWJsZS1oZWFkZXItbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzbWFydC10YWJsZS1oZWFkZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1iZzogY29sb3ItYmcsXG5cbiAgc21hcnQtdGFibGUtZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgc21hcnQtdGFibGUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIHNtYXJ0LXRhYmxlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIHNtYXJ0LXRhYmxlLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgc21hcnQtdGFibGUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNtYXJ0LXRhYmxlLWJnOiBjb2xvci1iZyxcblxuICBzbWFydC10YWJsZS1iZy1ldmVuOiAjZjVmN2ZjLFxuICBzbWFydC10YWJsZS1mZy1zZWNvbmRhcnk6IGNvbG9yLWZnLFxuICBzbWFydC10YWJsZS1iZy1hY3RpdmU6ICNlNmYzZmYsXG4gIHNtYXJ0LXRhYmxlLXBhZGRpbmc6IDAuODc1cmVtIDEuMjVyZW0sXG4gIHNtYXJ0LXRhYmxlLWZpbHRlci1wYWRkaW5nOiAwLjM3NXJlbSAwLjVyZW0sXG4gIHNtYXJ0LXRhYmxlLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBzbWFydC10YWJsZS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG5cbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLXdpZHRoOiAxcHgsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1mZy1hY3RpdmU6ICNmZmZmZmYsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1iZy1hY3RpdmU6IGNvbG9yLXN1Y2Nlc3MsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ob3ZlcjogcmdiYSgwLCAwLCAwLCAwLjA1KSxcblxuICB0b2FzdHItYmc6IGNvbG9yLWJnLFxuICB0b2FzdHItcGFkZGluZzogMS4xMjVyZW0sXG4gIHRvYXN0ci1mZzogY29sb3ItZmctdGV4dCxcbiAgdG9hc3RyLWJvcmRlcjogMC4xMjVyZW0gc29saWQsXG4gIHRvYXN0ci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIHRvYXN0ci1ib3JkZXItY29sb3I6ICNiY2MzY2MsXG4gIHRvYXN0ci1pY29uLXJhZGl1czogMC4yNXJlbSxcbiAgdG9hc3RyLXNoYWRvdzogc2hhZG93LFxuXG4gIGJ0bi1mZzogY29sb3Itd2hpdGUsXG4gIGJ0bi1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGJ0bi1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGJ0bi1kaXNhYmxlZC1vcGFjaXR5OiAwLjMsXG4gIGJ0bi1jdXJzb3I6IGRlZmF1bHQsXG5cbiAgYnRuLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGJ0bi1zZWNvbmRhcnktYmc6IHRyYW5zcGFyZW50LFxuICBidG4taW5mby1iZzogY29sb3ItaW5mbyxcbiAgYnRuLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGJ0bi13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBidG4tZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6ICNkYWRmZTYsXG4gIGJ0bi1zZWNvbmRhcnktYm9yZGVyLXdpZHRoOiAycHgsXG5cbiAgYnRuLXBhZGRpbmcteS1sZzogMC44NzVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtbGc6IDEuNzVyZW0sXG4gIGJ0bi1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcblxuICAvLyBkZWZhdWx0IHNpemVcbiAgYnRuLXBhZGRpbmcteS1tZDogMC43NXJlbSxcbiAgYnRuLXBhZGRpbmcteC1tZDogMS41cmVtLFxuICBidG4tZm9udC1zaXplLW1kOiAxcmVtLFxuXG4gIGJ0bi1wYWRkaW5nLXktc206IDAuNjI1cmVtLFxuICBidG4tcGFkZGluZy14LXNtOiAxLjVyZW0sXG4gIGJ0bi1mb250LXNpemUtc206IDAuODc1cmVtLFxuXG4gIGJ0bi1wYWRkaW5nLXkteHM6IDAuNXJlbSxcbiAgYnRuLXBhZGRpbmcteC14czogMS4yNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS14czogMC43NXJlbSxcblxuICBidG4tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBidG4tcmVjdGFuZ2xlLWJvcmRlci1yYWRpdXM6IDAuMjVyZW0sXG4gIGJ0bi1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXM6IDAuNzVyZW0sXG4gIGJ0bi1yb3VuZC1ib3JkZXItcmFkaXVzOiAxLjVyZW0sXG5cbiAgYnRuLWhlcm8tc2hhZG93OiBub25lLFxuICBidG4taGVyby10ZXh0LXNoYWRvdzogbm9uZSxcbiAgYnRuLWhlcm8tYmV2ZWwtc2l6ZTogMCAwIDAgMCxcbiAgYnRuLWhlcm8tZ2xvdy1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tZGVncmVlOiAyMGRlZyxcbiAgYnRuLWhlcm8tcHJpbWFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tc3VjY2Vzcy1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8td2FybmluZy1kZWdyZWU6IDEwZGVnLFxuICBidG4taGVyby1pbmZvLWRlZ3JlZTogLTEwZGVnLFxuICBidG4taGVyby1kYW5nZXItZGVncmVlOiAtMjBkZWcsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuXG4gIGJ0bi1vdXRsaW5lLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1ob3Zlci1mZzogI2ZmZmZmZixcbiAgYnRuLW91dGxpbmUtZm9jdXMtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgYnRuLWdyb3VwLWJnOiBsYXlvdXQtYmcsXG4gIGJ0bi1ncm91cC1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLWdyb3VwLXNlcGFyYXRvcjogI2RhZGZlNixcblxuICBmb3JtLWNvbnRyb2wtdGV4dC1wcmltYXJ5LWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuICBmb3JtLWNvbnRyb2wtYmc6IGNvbG9yLWJnLFxuICBmb3JtLWNvbnRyb2wtZm9jdXMtYmc6IGNvbG9yLWJnLFxuXG4gIGZvcm0tY29udHJvbC1ib3JkZXItd2lkdGg6IDJweCxcbiAgZm9ybS1jb250cm9sLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgZm9ybS1jb250cm9sLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgZm9ybS1jb250cm9sLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1czogMC43NXJlbSxcbiAgZm9ybS1jb250cm9sLXJvdW5kLWJvcmRlci1yYWRpdXM6IDEuNXJlbSxcbiAgZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcjogI2RhZGZlNixcbiAgZm9ybS1jb250cm9sLXNlbGVjdGVkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcblxuICBmb3JtLWNvbnRyb2wtaW5mby1ib3JkZXItY29sb3I6IGNvbG9yLWluZm8sXG4gIGZvcm0tY29udHJvbC1zdWNjZXNzLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgZm9ybS1jb250cm9sLWRhbmdlci1ib3JkZXItY29sb3I6IGNvbG9yLWRhbmdlcixcbiAgZm9ybS1jb250cm9sLXdhcm5pbmctYm9yZGVyLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuXG4gIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcjogY29sb3ItZmcsXG4gIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1mb250LXNpemU6IDFyZW0sXG5cbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZTogMXJlbSxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmc6IDAuNzVyZW0gMS4xMjVyZW0sXG4gIGZvcm0tY29udHJvbC1mb250LXNpemUtc206IGZvbnQtc2l6ZS1zbSxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmctc206IDAuMzc1cmVtIDEuMTI1cmVtLFxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG4gIGZvcm0tY29udHJvbC1wYWRkaW5nLWxnOiAxLjEyNXJlbSxcblxuICBmb3JtLWNvbnRyb2wtbGFiZWwtZm9udC13ZWlnaHQ6IDQwMCxcblxuICBmb3JtLWNvbnRyb2wtZmVlZGJhY2stZm9udC1zaXplOiAwLjg3NXJlbSxcbiAgZm9ybS1jb250cm9sLWZlZWRiYWNrLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG5cbiAgY2hlY2tib3gtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1ib3JkZXItY29sb3I6IGZvcm0tY29udHJvbC1ib3JkZXItY29sb3IsXG4gIGNoZWNrYm94LWNoZWNrbWFyazogdHJhbnNwYXJlbnQsXG5cbiAgY2hlY2tib3gtY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgY2hlY2tib3gtY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgY2hlY2tib3gtZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1kaXNhYmxlZC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBtb2RhbC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbW9kYWwtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBtb2RhbC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtb2RhbC1mZzogY29sb3ItZmctdGV4dCxcbiAgbW9kYWwtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgbW9kYWwtYmc6IGNvbG9yLWJnLFxuICBtb2RhbC1ib3JkZXI6IHRyYW5zcGFyZW50LFxuICBtb2RhbC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1vZGFsLXBhZGRpbmc6IHBhZGRpbmcsXG4gIG1vZGFsLWhlYWRlci1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIG1vZGFsLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtb2RhbC1oZWFkZXItZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIG1vZGFsLWJvZHktZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgbW9kYWwtYm9keS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtb2RhbC1ib2R5LWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtb2RhbC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcblxuICBiYWRnZS1mZy10ZXh0OiBjb2xvci13aGl0ZSxcbiAgYmFkZ2UtcHJpbWFyeS1iZy1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgYmFkZ2UtaW5mby1iZy1jb2xvcjogY29sb3ItaW5mbyxcbiAgYmFkZ2Utd2FybmluZy1iZy1jb2xvcjogY29sb3Itd2FybmluZyxcbiAgYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yOiBjb2xvci1kYW5nZXIsXG5cbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC14bGc6IDEuNzVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQtbGc6IDEuNXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodDogMS4zNzVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQtc206IDEuMjVyZW0sXG4gIHByb2dyZXNzLWJhci1oZWlnaHQteHM6IDFyZW0sXG4gIHByb2dyZXNzLWJhci1hbmltYXRpb24tZHVyYXRpb246IDQwMG1zLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXhsZzogZm9udC1zaXplLXhsZyxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUtc206IGZvbnQtc2l6ZS1zbSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS14czogZm9udC1zaXplLXhzLFxuICBwcm9ncmVzcy1iYXItcmFkaXVzOiByYWRpdXMsXG4gIHByb2dyZXNzLWJhci1iZzogbGF5b3V0LWJnLFxuICBwcm9ncmVzcy1iYXItZm9udC1jb2xvcjogY29sb3Itd2hpdGUsXG4gIHByb2dyZXNzLWJhci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgcHJvZ3Jlc3MtYmFyLWRlZmF1bHQtYmc6IGNvbG9yLWluZm8sXG4gIHByb2dyZXNzLWJhci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBwcm9ncmVzcy1iYXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgcHJvZ3Jlc3MtYmFyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHByb2dyZXNzLWJhci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBwcm9ncmVzcy1iYXItZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgYWxlcnQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFsZXJ0LWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYWxlcnQtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWxlcnQtZmc6IGNvbG9yLXdoaXRlLFxuICBhbGVydC1vdXRsaW5lLWZnOiBjb2xvci1mZyxcbiAgYWxlcnQtYmc6IGNvbG9yLWJnLFxuICBhbGVydC1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBhbGVydC1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIGFsZXJ0LWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgYWxlcnQtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgYWxlcnQtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgYWxlcnQtc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgYWxlcnQtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgYWxlcnQtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIGFsZXJ0LWhlaWdodC14eHNtYWxsOiA1MnB4LFxuICBhbGVydC1oZWlnaHQteHNtYWxsOiA3MnB4LFxuICBhbGVydC1oZWlnaHQtc21hbGw6IDkycHgsXG4gIGFsZXJ0LWhlaWdodC1tZWRpdW06IDExMnB4LFxuICBhbGVydC1oZWlnaHQtbGFyZ2U6IDEzMnB4LFxuICBhbGVydC1oZWlnaHQteGxhcmdlOiAxNTJweCxcbiAgYWxlcnQtaGVpZ2h0LXh4bGFyZ2U6IDE3MnB4LFxuICBhbGVydC1zaGFkb3c6IG5vbmUsXG4gIGFsZXJ0LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYWxlcnQtcGFkZGluZzogMXJlbSAxLjEyNXJlbSxcbiAgYWxlcnQtY2xvc2FibGUtcGFkZGluZzogM3JlbSxcbiAgYWxlcnQtYnV0dG9uLXBhZGRpbmc6IDNyZW0sXG4gIGFsZXJ0LW1hcmdpbjogbWFyZ2luLFxuXG4gIGNoYXQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNoYXQtZmc6IGNvbG9yLXdoaXRlLFxuICBjaGF0LWJnOiBjb2xvci1iZyxcbiAgY2hhdC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNoYXQtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgY2hhdC1oZWlnaHQteHhzbWFsbDogOTZweCxcbiAgY2hhdC1oZWlnaHQteHNtYWxsOiAyMTZweCxcbiAgY2hhdC1oZWlnaHQtc21hbGw6IDMzNnB4LFxuICBjaGF0LWhlaWdodC1tZWRpdW06IDQ1NnB4LFxuICBjaGF0LWhlaWdodC1sYXJnZTogNTc2cHgsXG4gIGNoYXQtaGVpZ2h0LXhsYXJnZTogNjk2cHgsXG4gIGNoYXQtaGVpZ2h0LXh4bGFyZ2U6IDgxNnB4LFxuICBjaGF0LWJvcmRlcjogYm9yZGVyLFxuICBjaGF0LXBhZGRpbmc6IHBhZGRpbmcsXG4gIGNoYXQtc2hhZG93OiBzaGFkb3csXG4gIGNoYXQtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGNoYXQtbWVzc2FnZS1mZzogY29sb3Itd2hpdGUsXG4gIGNoYXQtbWVzc2FnZS1iZzogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjNGNhNmZmLCAjNTliZmZmKSxcbiAgY2hhdC1tZXNzYWdlLXJlcGx5LWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNoYXQtbWVzc2FnZS1yZXBseS1mZzogY29sb3ItZmctdGV4dCxcbiAgY2hhdC1tZXNzYWdlLWF2YXRhci1iZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1zZW5kZXItZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtcXVvdGUtZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtcXVvdGUtYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2hhdC1tZXNzYWdlLWZpbGUtZmc6IGNvbG9yLWZnLFxuICBjaGF0LW1lc3NhZ2UtZmlsZS1iZzogdHJhbnNwYXJlbnQsXG4gIGNoYXQtZm9ybS1iZzogdHJhbnNwYXJlbnQsXG4gIGNoYXQtZm9ybS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgY2hhdC1mb3JtLWJvcmRlcjogc2VwYXJhdG9yLFxuICBjaGF0LWZvcm0tcGxhY2Vob2xkZXItZmc6IGNvbG9yLWZnLFxuICBjaGF0LWZvcm0tYWN0aXZlLWJvcmRlcjogY29sb3ItZmcsXG4gIGNoYXQtYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgY2hhdC1kaXNhYmxlZC1iZzogY29sb3ItZGlzYWJsZWQsXG4gIGNoYXQtZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBjaGF0LXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIGNoYXQtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgY2hhdC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjaGF0LXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGNoYXQtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG5cbiAgc3Bpbm5lci1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgzKSxcbiAgc3Bpbm5lci1jaXJjbGUtYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgc3Bpbm5lci1mZzogY29sb3ItZmctdGV4dCxcbiAgc3Bpbm5lci1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBzcGlubmVyLWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgc3Bpbm5lci1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIHNwaW5uZXItcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgc3Bpbm5lci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBzcGlubmVyLXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIHNwaW5uZXItd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgc3Bpbm5lci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgc3Bpbm5lci14eHNtYWxsOiAxLjI1cmVtLFxuICBzcGlubmVyLXhzbWFsbDogMS41cmVtLFxuICBzcGlubmVyLXNtYWxsOiAxLjc1cmVtLFxuICBzcGlubmVyLW1lZGl1bTogMnJlbSxcbiAgc3Bpbm5lci1sYXJnZTogMi4yNXJlbSxcbiAgc3Bpbm5lci14bGFyZ2U6IDIuNXJlbSxcbiAgc3Bpbm5lci14eGxhcmdlOiAzcmVtLFxuXG4gIHN0ZXBwZXItaW5kZXgtc2l6ZTogMnJlbSxcbiAgc3RlcHBlci1sYWJlbC1mb250LXNpemU6IGZvbnQtc2l6ZS1zbSxcbiAgc3RlcHBlci1sYWJlbC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBzdGVwcGVyLWFjY2VudC1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgc3RlcHBlci1jb21wbGV0ZWQtZmc6IGNvbG9yLXdoaXRlLFxuICBzdGVwcGVyLWZnOiBjb2xvci1mZyxcbiAgc3RlcHBlci1jb21wbGV0ZWQtaWNvbi1zaXplOiAxLjVyZW0sXG4gIHN0ZXBwZXItY29tcGxldGVkLWljb24td2VpZ2h0OiBmb250LXdlaWdodC11bHRyYS1ib2xkLFxuICBzdGVwcGVyLXN0ZXAtcGFkZGluZzogcGFkZGluZyxcblxuICBhY2NvcmRpb24tcGFkZGluZzogcGFkZGluZyxcbiAgYWNjb3JkaW9uLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYWNjb3JkaW9uLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhY2NvcmRpb24taGVhZGVyLWZnLWhlYWRpbmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGFjY29yZGlvbi1oZWFkZXItZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci13aWR0aDogMXB4LFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgYWNjb3JkaW9uLWhlYWRlci1ib3JkZXItY29sb3I6IGFjY29yZGlvbi1zZXBhcmF0b3IsXG4gIGFjY29yZGlvbi1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGFjY29yZGlvbi1pdGVtLWJnOiBjb2xvci1iZyxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC1zaXplOiBmb250LXNpemUsXG4gIGFjY29yZGlvbi1pdGVtLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFjY29yZGlvbi1pdGVtLWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIGFjY29yZGlvbi1pdGVtLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIGFjY29yZGlvbi1pdGVtLXNoYWRvdzogc2hhZG93LFxuXG4gIGxpc3QtaXRlbS1ib3JkZXItY29sb3I6IHRhYnMtc2VwYXJhdG9yLFxuICBsaXN0LWl0ZW0tcGFkZGluZzogMXJlbSxcblxuICBjYWxlbmRhci13aWR0aDogMjEuODc1cmVtLFxuICBjYWxlbmRhci1ib2R5LWhlaWdodDogMjUuNjI1cmVtLFxuICBjYWxlbmRhci1oZWFkZXItdGl0bGUtZm9udC1zaXplOiBmb250LXNpemUteGxnLFxuICBjYWxlbmRhci1oZWFkZXItdGl0bGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIGNhbGVuZGFyLWhlYWRlci1zdWItdGl0bGUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIGNhbGVuZGFyLWhlYWRlci1zdWItdGl0bGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LXRoaW4sXG4gIGNhbGVuZGFyLW5hdmlnYXRpb24tYnV0dG9uLXdpZHRoOiAxMHJlbSxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FsZW5kYXItaG92ZXItaXRlbS1iZzogY2FsZW5kYXItc2VsZWN0ZWQtaXRlbS1iZyxcbiAgY2FsZW5kYXItdG9kYXktaXRlbS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjYWxlbmRhci1hY3RpdmUtaXRlbS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY2FsZW5kYXItZmc6IGNvbG9yLWZnLXRleHQsXG4gIGNhbGVuZGFyLXNlbGVjdGVkLWZnOiBjb2xvci13aGl0ZSxcbiAgY2FsZW5kYXItdG9kYXktZmc6IGNhbGVuZGFyLWZnLFxuICBjYWxlbmRhci1kYXktY2VsbC13aWR0aDogMi42MjVyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWhlaWdodDogMi42MjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGg6IDQuMjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0OiAyLjM3NXJlbSxcbiAgY2FsZW5kYXIteWVhci1jZWxsLXdpZHRoOiBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtaGVpZ2h0OiBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodCxcbiAgY2FsZW5kYXItaW5hY3RpdmUtb3BhY2l0eTogMC41LFxuICBjYWxlbmRhci1kaXNhYmxlZC1vcGFjaXR5OiAwLjMsXG4gIGNhbGVuZGFyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2FsZW5kYXItd2Vla2RheS13aWR0aDogY2FsZW5kYXItZGF5LWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXdlZWtkYXktaGVpZ2h0OiAxLjc1cmVtLFxuICBjYWxlbmRhci13ZWVrZGF5LWZvbnQtc2l6ZTogZm9udC1zaXplLXhzLFxuICBjYWxlbmRhci13ZWVrZGF5LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGNhbGVuZGFyLXdlZWtkYXktZmc6IGNvbG9yLWZnLFxuICBjYWxlbmRhci13ZWVrZGF5LWhvbGlkYXktZmc6IGNvbG9yLWRhbmdlcixcbiAgY2FsZW5kYXItcmFuZ2UtYmctaW4tcmFuZ2U6ICNlYmZiZjIsXG5cbiAgY2FsZW5kYXItbGFyZ2Utd2lkdGg6IDI0LjM3NXJlbSxcbiAgY2FsZW5kYXItbGFyZ2UtYm9keS1oZWlnaHQ6IDI3Ljc1cmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1sYXJnZS13aWR0aDogM3JlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtbGFyZ2UtaGVpZ2h0OiAzcmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLWxhcmdlLXdpZHRoOiA0LjI1cmVtLFxuICBjYWxlbmRhci1tb250aC1jZWxsLWxhcmdlLWhlaWdodDogMi4zNzVyZW0sXG4gIGNhbGVuZGFyLXllYXItY2VsbC1sYXJnZS13aWR0aDogY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aCxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWxhcmdlLWhlaWdodDogY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQsXG5cbiAgb3ZlcmxheS1iYWNrZHJvcC1iZzogcmdiYSgwLCAwLCAwLCAwLjI4OCksXG5cbiAgdG9vbHRpcC1iZzogY29sb3ItZmctdGV4dCxcbiAgdG9vbHRpcC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICB0b29sdGlwLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHRvb2x0aXAtc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgdG9vbHRpcC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICB0b29sdGlwLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICB0b29sdGlwLWZnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHRvb2x0aXAtc3RhdHVzLWZnOiBjb2xvci1iZy1hY3RpdmUsXG4gIHRvb2x0aXAtc2hhZG93OiBzaGFkb3csXG4gIHRvb2x0aXAtZm9udC1zaXplOiBmb250LXNpemUsXG5cbiAgc2VsZWN0LWJvcmRlci13aWR0aDogMnB4LFxuICBzZWxlY3QtbWF4LWhlaWdodDogMjByZW0sXG4gIHNlbGVjdC1iZzogY29sb3ItYmcsXG5cbiAgc2VsZWN0LWNoZWNrYm94LWNvbG9yOiBjaGVja2JveC1ib3JkZXItY29sb3IsXG4gIHNlbGVjdC1jaGVja21hcmstY29sb3I6IGNoZWNrYm94LWJvcmRlci1jb2xvcixcblxuICBzZWxlY3Qtb3B0aW9uLWRpc2FibGVkLWJnOiAjZjJmNGY3LFxuICBzZWxlY3Qtb3B0aW9uLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgc2VsZWN0LW9wdGlvbi1wYWRkaW5nOiAwLjc1cmVtIDEuNXJlbSxcblxuICBkYXRlcGlja2VyLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBkYXRlcGlja2VyLWJnOiBjb2xvci1iZyxcbiAgZGF0ZXBpY2tlci1ib3JkZXI6IGNvbG9yLXN1Y2Nlc3MsXG4gIGRhdGVwaWNrZXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBkYXRlcGlja2VyLXNoYWRvdzogbm9uZSxcbiAgZGF0ZXBpY2tlci1hcnJvdy1zaXplOiAxMXB4LFxuXG4gIHJhZGlvLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tZmc6IGNvbG9yLWZnLXRleHQsXG4gIHJhZGlvLXNpemU6IDEuMjVyZW0sXG4gIHJhZGlvLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWJvcmRlci1jb2xvcjogZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcixcbiAgcmFkaW8tY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tY2hlY2tlZC1iZzogdHJhbnNwYXJlbnQsXG4gIHJhZGlvLWNoZWNrZWQtc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tY2hlY2tlZC1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgcmFkaW8tY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJhZGlvLWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tZGlzYWJsZWQtc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tZGlzYWJsZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiByYWRpby1ib3JkZXItY29sb3IsXG4gIHJhZGlvLWRpc2FibGVkLWNoZWNrbWFyazogcmFkaW8tY2hlY2ttYXJrLFxuXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci13aWR0aDogMXB4LFxuICB0cmVlLWdyaWQtY2VsbC1ib3JkZXItc3R5bGU6IHNvbGlkLFxuICB0cmVlLWdyaWQtY2VsbC1ib3JkZXItY29sb3I6IHNlcGFyYXRvcixcbiAgdHJlZS1ncmlkLXJvdy1taW4taGVpZ2h0OiAycmVtLFxuICB0cmVlLWdyaWQtY2VsbC1wYWRkaW5nOiAwLjg3NXJlbSAxLjI1cmVtLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWJhY2tncm91bmQ6IHRyYW5zcGFyZW50LFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWJvcmRlcjogbm9uZSxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1wYWRkaW5nOiAwLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWZvbnQtd2VpZ2h0OiBib2xkLFxuICB0cmVlLWdyaWQtaGVhZGVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLWZvb3Rlci1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtcm93LWJnLWV2ZW46IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtcm93LWhvdmVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXNvcnQtaGVhZGVyLWJ1dHRvbi1jb2xvcjogY29sb3ItZmctdGV4dCxcbiAgdHJlZS1ncmlkLWljb24tY29sb3I6IGNvbG9yLWZnLXRleHQsXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgZGVmYXVsdCk7XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBpbXBvcnQgJy4uL2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJy4uL2NvcmUvbWl4aW5zJztcbkBpbXBvcnQgJ2RlZmF1bHQnO1xuXG4vLyBkZWZhdWx0IHRoZSBiYXNlIHRoZW1lXG4kdGhlbWU6IChcbiAgcmFkaXVzOiAwLjVyZW0sXG5cbiAgY29sb3ItYmc6ICMzZDM3ODAsXG4gIGNvbG9yLWJnLWFjdGl2ZTogIzQ5NDI5OSxcbiAgY29sb3ItZmc6ICNhMWExZTUsXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICNmZmZmZmYsXG4gIGNvbG9yLWZnLXRleHQ6ICNkMWQxZmYsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogIzAwZjlhNixcblxuICBjb2xvci1ncmF5OiByZ2JhKDgxLCAxMTMsIDE2NSwgMC4xNSksXG4gIGNvbG9yLW5ldXRyYWw6IHRyYW5zcGFyZW50LFxuICBjb2xvci13aGl0ZTogI2ZmZmZmZixcbiAgY29sb3ItZGlzYWJsZWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSxcblxuICBjb2xvci1wcmltYXJ5OiAjNzY1OWZmLFxuICBjb2xvci1zdWNjZXNzOiAjMDBkOTc3LFxuICBjb2xvci1pbmZvOiAjMDA4OGZmLFxuICBjb2xvci13YXJuaW5nOiAjZmZhMTAwLFxuICBjb2xvci1kYW5nZXI6ICNmZjM4NmEsXG5cbiAgbGluay1jb2xvcjogIzAwZjlhNixcbiAgbGluay1jb2xvci1ob3ZlcjogIzE0ZmZiZSxcblxuICBzZXBhcmF0b3I6ICMzNDJlNzMsXG4gIHNoYWRvdzogMCA4cHggMjBweCAwIHJnYmEoNDAsIDM3LCA4OSwgMC42KSxcblxuICBjYXJkLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuXG4gIGxheW91dC1iZzogIzJmMjk2YixcblxuICBzY3JvbGxiYXItZmc6ICM1NTRkYjMsXG4gIHNjcm9sbGJhci1iZzogIzMzMmU3MyxcblxuICByYWRpYWwtZ3JhZGllbnQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgNTAlIDUwJSwgIzQyM2Y4YywgIzMwMmM2ZSksXG4gIGxpbmVhci1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMTcxNzQ5LCAjNDEzNzg5KSxcblxuICBzaWRlYmFyLWZnOiBjb2xvci1zZWNvbmRhcnksXG4gIHNpZGViYXItYmc6IGNvbG9yLWJnLFxuXG4gIGhlYWRlci1mZzogY29sb3Itd2hpdGUsXG4gIGhlYWRlci1iZzogY29sb3ItYmcsXG5cbiAgZm9vdGVyLWZnOiBjb2xvci1mZyxcbiAgZm9vdGVyLWJnOiBjb2xvci1iZyxcblxuICBhY3Rpb25zLWZnOiBjb2xvci1mZyxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG5cbiAgdXNlci1mZzogY29sb3ItYmcsXG4gIHVzZXItYmc6IGNvbG9yLWZnLFxuICB1c2VyLWZnLWhpZ2hsaWdodDogY29sb3ItZmctaGlnaGxpZ2h0LFxuXG4gIHBvcG92ZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuICBwb3BvdmVyLXNoYWRvdzogc2hhZG93LFxuXG4gIGNvbnRleHQtbWVudS1hY3RpdmUtYmc6IGNvbG9yLXByaW1hcnksXG4gIGNvbnRleHQtbWVudS1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG5cbiAgZm9vdGVyLWhlaWdodDogaGVhZGVyLWhlaWdodCxcblxuICBzaWRlYmFyLXdpZHRoOiAxNi4yNXJlbSxcbiAgc2lkZWJhci13aWR0aC1jb21wYWN0OiAzLjQ1cmVtLFxuXG4gIG1lbnUtZmc6IGNvbG9yLWZnLFxuICBtZW51LWJnOiBjb2xvci1iZyxcbiAgbWVudS1hY3RpdmUtZmc6IGNvbG9yLXdoaXRlLFxuICBtZW51LWdyb3VwLWZnOiBjb2xvci13aGl0ZSxcbiAgbWVudS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBtZW51LWFjdGl2ZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LXN1Ym1lbnUtYmc6IGxheW91dC1iZyxcbiAgbWVudS1zdWJtZW51LWZnOiBjb2xvci1mZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogcmdiYSgwLCAyNTUsIDE3MCwgMC4yNSksXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oaWdobGlnaHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiAwIDJweCAxMnB4IDAgcmdiYSgwLCAyNTUsIDE3MCwgMC4yNSksXG4gIG1lbnUtaXRlbS1wYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW0sXG4gIG1lbnUtaXRlbS1zZXBhcmF0b3I6IHRyYW5zcGFyZW50LFxuXG4gIGJ0bi1oZXJvLXNoYWRvdzogMCA0cHggMTBweCAwIHJnYmEoMzMsIDcsIDc3LCAwLjUpLFxuICBidG4taGVyby10ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKSxcbiAgYnRuLWhlcm8tYmV2ZWwtc2l6ZTogMCAzcHggMCAwLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMnB4IDhweCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG4gIGJ0bi1vdXRsaW5lLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tb3V0bGluZS1ob3Zlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgYnRuLW91dGxpbmUtZm9jdXMtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1ncm91cC1iZzogIzM3MzI3MyxcbiAgYnRuLWdyb3VwLXNlcGFyYXRvcjogIzMxMmM2NixcblxuICBmb3JtLWNvbnRyb2wtYmc6ICMzNzMxN2EsXG4gIGZvcm0tY29udHJvbC1mb2N1cy1iZzogc2VwYXJhdG9yLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIGZvcm0tY29udHJvbC1zZWxlY3RlZC1ib3JkZXItY29sb3I6IGNvbG9yLXByaW1hcnksXG5cbiAgY2hlY2tib3gtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1ib3JkZXItc2l6ZTogMnB4LFxuICBjaGVja2JveC1ib3JkZXItY29sb3I6IGNvbG9yLWZnLFxuICBjaGVja2JveC1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuXG4gIGNoZWNrYm94LWNoZWNrZWQtYmc6IHRyYW5zcGFyZW50LFxuICBjaGVja2JveC1jaGVja2VkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtY2hlY2tlZC1ib3JkZXItY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoZWNrYm94LWNoZWNrZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIGNoZWNrYm94LWRpc2FibGVkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtc2l6ZTogMS4yNXJlbSxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLXNpemU6IDJweCxcbiAgY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGVja2JveC1kaXNhYmxlZC1jaGVja21hcms6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgc2VhcmNoLWJnOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMxNzE3NDksICM0MTM3ODkpLFxuXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBzbWFydC10YWJsZS1oZWFkZXItYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgc21hcnQtdGFibGUtYmctZXZlbjogIzNhMzQ3YSxcbiAgc21hcnQtdGFibGUtYmctYWN0aXZlOiBjb2xvci1iZy1hY3RpdmUsXG5cbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJvcmRlci13aWR0aDogMnB4LFxuICBzbWFydC10YWJsZS1wYWdpbmctZmctYWN0aXZlOiBjb2xvci1mZy1oZWFkaW5nLFxuICBzbWFydC10YWJsZS1wYWdpbmctYmctYWN0aXZlOiBjb2xvci1wcmltYXJ5LFxuICBzbWFydC10YWJsZS1wYWdpbmctaG92ZXI6IHJnYmEoMCwgMCwgMCwgMC4yKSxcblxuICBiYWRnZS1mZy10ZXh0OiBjb2xvci13aGl0ZSxcbiAgYmFkZ2UtcHJpbWFyeS1iZy1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgYmFkZ2Utc3VjY2Vzcy1iZy1jb2xvcjogY29sb3Itc3VjY2VzcyxcbiAgYmFkZ2UtaW5mby1iZy1jb2xvcjogY29sb3ItaW5mbyxcbiAgYmFkZ2Utd2FybmluZy1iZy1jb2xvcjogY29sb3Itd2FybmluZyxcbiAgYmFkZ2UtZGFuZ2VyLWJnLWNvbG9yOiBjb2xvci1kYW5nZXIsXG5cbiAgc3Bpbm5lci1iZzogcmdiYSg2MSwgNTUsIDEyOCwgMC45KSxcbiAgc3RlcHBlci1hY2NlbnQtY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG5cbiAgdGFicy1zZWxlY3RlZC1zZWNvbmQtY29sb3I6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtZGVncmVlczogMjBkZWcsXG5cbiAgY2FsZW5kYXItYWN0aXZlLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXNlbGVjdGVkLWl0ZW0tYmc6IGNvbG9yLXByaW1hcnksXG4gIGNhbGVuZGFyLXJhbmdlLWJnLWluLXJhbmdlOiAjNGU0MDk1LFxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiAjMzUyZjZlLFxuXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtYmc6ICMzMTJlNzUsXG5cbiAgdG9hc3RyLWNvbG9yLWZnOiBjb2xvci13aGl0ZSxcbiAgdG9hc3RyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIHRvYXN0ci1ib3JkZXI6IDAsXG4gIHRvYXN0ci1kZWZhdWx0LWJhY2tncm91bmQ6ICNiY2MzY2MsXG5cbiAgdG9vbHRpcC1mZzogY29sb3ItYmcsXG4gIHRvb2x0aXAtc3RhdHVzLWZnOiBjb2xvci13aGl0ZSxcblxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3ItcHJpbWFyeSxcbiAgZGF0ZXBpY2tlci1zaGFkb3c6IHNoYWRvdyxcblxuICByYWRpby1jaGVja2VkLWJvcmRlci1jb2xvcjogY29sb3ItcHJpbWFyeSxcbiAgcmFkaW8tY2hlY2tlZC1jaGVja21hcms6IGNvbG9yLXByaW1hcnksXG4pO1xuXG4vLyByZWdpc3RlciB0aGUgdGhlbWVcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgY29zbWljLCBkZWZhdWx0KTtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuQGltcG9ydCAnZGVmYXVsdCc7XG5cbi8vIGRlZmF1bHQgdGhlIGJhc2UgdGhlbWVcbiR0aGVtZTogKFxuICBoZWFkZXItZmc6ICNmN2ZhZmIsXG4gIGhlYWRlci1iZzogIzExMTIxOCxcblxuICBsYXlvdXQtYmc6ICNmMWY1ZjgsXG5cbiAgY29sb3ItZmctaGVhZGluZzogIzE4MTgxOCxcbiAgY29sb3ItZmctdGV4dDogIzRiNGI0YixcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiBjb2xvci1mZyxcblxuICBzZXBhcmF0b3I6ICNjZGQ1ZGMsXG5cbiAgcmFkaXVzOiAwLjE3cmVtLFxuXG4gIHNjcm9sbGJhci1iZzogI2UzZTllZSxcblxuICBjb2xvci1wcmltYXJ5OiAjNzNhMWZmLFxuICBjb2xvci1zdWNjZXNzOiAjNWRjZmUzLFxuICBjb2xvci1pbmZvOiAjYmE3ZmVjLFxuICBjb2xvci13YXJuaW5nOiAjZmZhMzZiLFxuICBjb2xvci1kYW5nZXI6ICNmZjZiODMsXG5cbiAgYnRuLXNlY29uZGFyeS1iZzogI2VkZjJmNSxcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXI6ICNlZGYyZjUsXG5cbiAgYWN0aW9ucy1mZzogI2QzZGJlNSxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG5cbiAgc2lkZWJhci1iZzogI2UzZTllZSxcblxuICBib3JkZXItY29sb3I6ICNkNWRiZTAsXG5cbiAgbWVudS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZGVyLFxuICBtZW51LWZnOiBjb2xvci1mZy10ZXh0LFxuICBtZW51LWJnOiAjZTNlOWVlLFxuICBtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1hY3RpdmUtYmc6IG1lbnUtYmcsXG5cbiAgbWVudS1zdWJtZW51LWJnOiBtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtZmc6IGNvbG9yLWZnLXRleHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYmc6ICNjZGQ1ZGMsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWJnLFxuICBtZW51LXN1Ym1lbnUtYWN0aXZlLXNoYWRvdzogbm9uZSxcbiAgbWVudS1zdWJtZW51LWhvdmVyLWZnOiBtZW51LXN1Ym1lbnUtYWN0aXZlLWZnLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItYmc6IG1lbnUtYmcsXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci13aWR0aDogMC4xMjVyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbWVudS1zdWJtZW51LWl0ZW0tcGFkZGluZzogMC41cmVtIDFyZW0sXG4gIG1lbnUtc3VibWVudS1pdGVtLWNvbnRhaW5lci1wYWRkaW5nOiAwIDEuMjVyZW0sXG4gIG1lbnUtc3VibWVudS1wYWRkaW5nOiAwLjVyZW0sXG5cbiAgYnRuLWJvcmRlci1yYWRpdXM6IGJ0bi1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXMsXG5cbiAgYnRuLWhlcm8tZGVncmVlOiAwZGVnLFxuICBidG4taGVyby1wcmltYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zdWNjZXNzLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby13YXJuaW5nLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1pbmZvLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1kYW5nZXItZGVncmVlOiBidG4taGVyby1kZWdyZWUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1kZWdyZWU6IGJ0bi1oZXJvLWRlZ3JlZSxcbiAgYnRuLWhlcm8tZ2xvdy1zaXplOiAwIDAgMjBweCAwLFxuICBidG4taGVyby1wcmltYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1zdWNjZXNzLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby13YXJuaW5nLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1pbmZvLWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kYW5nZXItZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXNlY29uZGFyeS1nbG93LXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLWJvcmRlci1yYWRpdXM6IGJ0bi1ib3JkZXItcmFkaXVzLFxuXG4gIGNhcmQtc2hhZG93OiBub25lLFxuICBjYXJkLWJvcmRlci13aWR0aDogMXB4LFxuICBjYXJkLWJvcmRlci1jb2xvcjogYm9yZGVyLWNvbG9yLFxuICBjYXJkLWhlYWRlci1ib3JkZXItd2lkdGg6IDAsXG5cbiAgbGluay1jb2xvcjogIzVkY2ZlMyxcbiAgbGluay1jb2xvci1ob3ZlcjogIzdkY2ZlMyxcbiAgbGluay1jb2xvci12aXNpdGVkOiBsaW5rLWNvbG9yLFxuXG4gIGFjdGlvbnMtc2VwYXJhdG9yOiAjZjFmNGY1LFxuXG4gIG1vZGFsLXNlcGFyYXRvcjogYm9yZGVyLWNvbG9yLFxuXG4gIHRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXByaW1hcnksXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICB0YWJzLXNlcGFyYXRvcjogI2ViZWNlZSxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYmctYWN0aXZlOiBjb2xvci1wcmltYXJ5LFxuXG4gIHJvdXRlLXRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXByaW1hcnksXG5cbiAgcG9wb3Zlci1ib3JkZXI6IGNvbG9yLXByaW1hcnksXG5cbiAgZm9vdGVyLXNoYWRvdzogbm9uZSxcbiAgZm9vdGVyLXNlcGFyYXRvcjogYm9yZGVyLWNvbG9yLFxuICBmb290ZXItZmctaGlnaGxpZ2h0OiAjMmEyYTJhLFxuXG4gIGNhbGVuZGFyLXRvZGF5LWl0ZW0tYmc6ICNhMmIyYzcsXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogI2UzZWNmZSxcbiAgY2FsZW5kYXItdG9kYXktZmc6IGNvbG9yLXdoaXRlLFxuXG4gIHRvYXN0ci1pY29uLXJhZGl1czogcmFkaXVzLFxuXG4gIGRhdGVwaWNrZXItYm9yZGVyOiBjb2xvci1wcmltYXJ5LFxuKTtcblxuLy8gcmVnaXN0ZXIgdGhlIHRoZW1lXG4kbmItdGhlbWVzOiBuYi1yZWdpc3Rlci10aGVtZSgkdGhlbWUsIGNvcnBvcmF0ZSwgZGVmYXVsdCk7XG4iLCIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2U6IDI0cHggIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGhzOiAoXG4gIHhzOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgc206ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBtZDogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIGxnOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgeGw6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlXG4pICFkZWZhdWx0O1xuXG5cbiRncmlkLWJyZWFrcG9pbnRzOiAoXG4gIHhzOiAwLFxuICBpczogNDAwcHgsXG4gIHNtOiA1NzZweCxcbiAgbWQ6IDc2OHB4LFxuICBsZzogOTkycHgsXG4gIHhsOiAxMjAwcHgsXG4gIHh4bDogMTQwMHB4LFxuICB4eHhsOiAxNjAwcHhcbik7XG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBpczogMzgwcHgsXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHgsXG4gIHh4bDogMTMyMHB4LFxuICB4eHhsOiAxNTAwcHhcbik7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gMC4wMnB4LCBudWxsKTtcbn1cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uLy4uL3N0eWxlcy90aGVtZXMnO1xyXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zL2JyZWFrcG9pbnRzJztcclxuQGltcG9ydCAnfkBuZWJ1bGFyL3RoZW1lL3N0eWxlcy9nbG9iYWwvYnJlYWtwb2ludHMnO1xyXG5cclxuQGluY2x1ZGUgbmItaW5zdGFsbC1jb21wb25lbnQoKSB7XHJcbiAgbmItbGF5b3V0LWNvbHVtbi5zbWFsbCB7XHJcbiAgICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xyXG4gICAgJHNpZGViYXItd2lkdGg6IDcuNXJlbTtcclxuXHJcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XHJcbiAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgICYuY29sbGFwc2VkIHtcclxuICAgICAgd2lkdGg6IDA7XHJcblxyXG4gICAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgICB3aWR0aDogMDtcclxuXHJcbiAgICAgICAgLnNjcm9sbGFibGUge1xyXG4gICAgICAgICAgd2lkdGg6ICRzaWRlYmFyLXdpZHRoO1xyXG4gICAgICAgICAgcGFkZGluZzogMS4yNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcclxuICAgICAgd2lkdGg6ICRzaWRlYmFyLXdpZHRoO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBuYi10aGVtZShjb2xvci1iZyk7XHJcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAgIC5zY3JvbGxhYmxlIHtcclxuICAgICAgICB3aWR0aDogJHNpZGViYXItd2lkdGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZShjb3NtaWMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBuYi10aGVtZShsYXlvdXQtYmcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XHJcblxyXG4gICAgbWFyZ2luLXRvcDogbmItdGhlbWUoc2lkZWJhci1oZWFkZXItZ2FwKTtcclxuXHJcbiAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoY29ycG9yYXRlKSB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XHJcbiAgICAgIGhlaWdodDpcclxuICAgICAgICBjYWxjKCN7bmItdGhlbWUoc2lkZWJhci1oZWlnaHQpfSAtICN7bmItdGhlbWUoaGVhZGVyLWhlaWdodCl9IC0gI3tuYi10aGVtZShzaWRlYmFyLWhlYWRlci1nYXApfSkgIWltcG9ydGFudDtcclxuICAgICAgQGluY2x1ZGUgbmItbHRyKGJvcmRlci10b3AtcmlnaHQtcmFkaXVzLCBuYi10aGVtZShyYWRpdXMpKTtcclxuICAgICAgQGluY2x1ZGUgbmItcnRsKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsIG5iLXRoZW1lKHJhZGl1cykpO1xyXG5cclxuICAgICAgQGluY2x1ZGUgbmItZm9yLXRoZW1lKGNvcnBvcmF0ZSkge1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIG5iLXRoZW1lKHNlcGFyYXRvcik7XHJcbiAgICAgICAgaGVpZ2h0OlxyXG4gICAgICAgICAgY2FsYygje25iLXRoZW1lKHNpZGViYXItaGVpZ2h0KX0gLSAje25iLXRoZW1lKGhlYWRlci1oZWlnaHQpfSkgIWltcG9ydGFudDtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gLnNjcm9sbGFibGUge1xyXG4gICAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoY29ycG9yYXRlKSB7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XHJcblxyXG4gICAgICAgIC5tZW51LWl0ZW06Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gbmItc2lkZWJhci1oZWFkZXIge1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgLm1haW4tYnRuIHtcclxuICAgICAgcGFkZGluZzogMC43NXJlbSAyLjVyZW07XHJcbiAgICAgIG1hcmdpbi10b3A6IC0ycmVtO1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgdHJhbnNpdGlvbjogcGFkZGluZyAwLjNzIGN1YmljLWJlemllcigwLjE4LCAwLjg5LCAwLjMyLCAxLjQ4KTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIG5iLWZvci10aGVtZShjb3Jwb3JhdGUpIHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiBuYi10aGVtZShyYWRpdXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpIHtcclxuICAgICAgICBmb250LXNpemU6IDJyZW07XHJcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgICAgIH1cclxuICAgICAgc3BhbiB7XHJcbiAgICAgICAgQGluY2x1ZGUgbmItbHRyKHBhZGRpbmctbGVmdCwgMC4yNXJlbSk7XHJcbiAgICAgICAgQGluY2x1ZGUgbmItcnRsKHBhZGRpbmctcmlnaHQsIDAuMjVyZW0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpLCBzcGFuIHtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5jb21wYWN0ZWQge1xyXG5cclxuICAgICAgL2RlZXAvIG5iLXNpZGViYXItaGVhZGVyIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm1haW4tYnRuIHtcclxuICAgICAgICB3aWR0aDogNDZweDtcclxuICAgICAgICBoZWlnaHQ6IDQ0cHg7XHJcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW07XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XHJcblxyXG4gICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bih4cykge1xyXG4gICAgLm1haW4tY29udGVudCB7XHJcbiAgICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcclxuXHJcbiAgICBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XHJcblxyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG5cclxuICAgICAgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XHJcbiAgICAgICAgaGVpZ2h0OiBjYWxjKCN7bmItdGhlbWUoc2lkZWJhci1oZWlnaHQpfSAtICN7bmItdGhlbWUoaGVhZGVyLWhlaWdodCl9KSAhaW1wb3J0YW50O1xyXG4gICAgICAgIEBpbmNsdWRlIG5iLWx0cihib3JkZXItdG9wLXJpZ2h0LXJhZGl1cywgMCk7XHJcbiAgICAgICAgQGluY2x1ZGUgbmItcnRsKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsIDApO1xyXG5cclxuICAgICAgICAuc2Nyb2xsYWJsZSB7XHJcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAubWFpbi1idG4ge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBAbmVidWxhciB0aGVtaW5nIGZyYW1ld29ya1xyXG5AaW1wb3J0ICd+QG5lYnVsYXIvdGhlbWUvc3R5bGVzL3RoZW1pbmcnO1xyXG4vLyBAbmVidWxhciBvdXQgb2YgdGhlIGJveCB0aGVtZXNcclxuQGltcG9ydCAnfkBuZWJ1bGFyL3RoZW1lL3N0eWxlcy90aGVtZXMnO1xyXG5cclxuLy8gd2hpY2ggdGhlbWVzIHlvdSB3aGF0IHRvIGVuYWJsZSAoZW1wdHkgdG8gZW5hYmxlIGFsbClcclxuJG5iLWVuYWJsZWQtdGhlbWVzOiAoZGVmYXVsdCwgY29zbWljLCBjb3Jwb3JhdGUpO1xyXG5cclxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoKFxyXG4gLy8gYXBwIHdpc2UgdmFyaWFibGVzIGZvciBlYWNoIHRoZW1lXHJcbiAgc2lkZWJhci1oZWFkZXItZ2FwOiAycmVtLFxyXG4gIHNpZGViYXItaGVhZGVyLWhlaWdodDogaW5pdGlhbCxcclxuICBsYXlvdXQtY29udGVudC13aWR0aDogMTQwMHB4LFxyXG5cclxuICBmb250LW1haW46IFJhamRoYW5pLFxyXG4gIGZvbnQtc2Vjb25kYXJ5OiBSb2JvdG8sXHJcblxyXG4gIHN3aXRjaGVyLWJhY2tncm91bmQ6ICNlYmVmZjUsXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZC1wZXJjZW50YWdlOiA1MCUsXHJcbiAgZHJvcHMtaWNvbi1saW5lLWdhZGllbnQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCMwMWRiYjUsICMwYmJiNzkpLFxyXG5cclxuICBsaXN0LWl0ZW0tYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHNsaWRlLW91dC1jb250YWluZXItd2lkdGg6IDMwJSxcclxuICBzbGlkZS1vdXQtYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDI3MGRlZywgI2Y3ZmFmYiAwJSwgI2VjZjJmNSAxMDAlKSxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yOiAwIDRweCAxNHB4IDAgI2EyZDJjOCxcclxuICBzbGlkZS1vdXQtc2hhZG93LWNvbG9yLXJ0bDogMCA0cHggMTRweCAwICNhMmQyYzgsXHJcblxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm94LXNoYWRvdzogbm9uZSxcclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJhY2tncm91bmQtY29sb3I6ICNlY2YyZjUsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItY29sb3I6ICNlYmVmZjEsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgZWNvbW1lcmNlLWNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHByb2dyZXNzLWJhci1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMzZWRkODEgMCUsICMzYmRkYWYgMTAwJSksXHJcblxyXG4gIGNvbG9yLXByaW1hcnk6ICMzMTE3N2EsXHJcbiAgY29sb3ItZmctaGlnaGxpZ2h0OiAjMzExNzdhLFxyXG4pLCBkZWZhdWx0LCBkZWZhdWx0KTtcclxuXHJcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKChcclxuICAvLyBhcHAgd2lzZSB2YXJpYWJsZXMgZm9yIGVhY2ggdGhlbWVcclxuICBzaWRlYmFyLWhlYWRlci1nYXA6IDJyZW0sXHJcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiBpbml0aWFsLFxyXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiAxNDAwcHgsXHJcblxyXG4gIGZvbnQtbWFpbjogUmFqZGhhbmksXHJcbiAgZm9udC1zZWNvbmRhcnk6IFJvYm90byxcclxuXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZDogIzRlNDFhNSxcclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kLXBlcmNlbnRhZ2U6IDE0JSxcclxuICBkcm9wcy1pY29uLWxpbmUtZ2FkaWVudDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2EyNThmZSwgIzc5NThmYSksXHJcblxyXG4gIGxpc3QtaXRlbS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgc2xpZGUtb3V0LWNvbnRhaW5lci13aWR0aDogMzAlLFxyXG4gIHNsaWRlLW91dC1iYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCAjMzAyYzZlIDAlLCAjNDIzZjhjIDEwMCUpLFxyXG4gIHNsaWRlLW91dC1zaGFkb3ctY29sb3I6IDJweCAwIDNweCByZ2JhKDE5LCAxOSwgOTQsIDAuOSksXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvci1ydGw6IC0ycHggMCAzcHggcmdiYSgxOSwgMTksIDk0LCAwLjkpLFxyXG5cclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJveC1zaGFkb3c6IG5vbmUsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSksXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItY29sb3I6ICMzMzJlNzMsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgZWNvbW1lcmNlLWNhcmQtYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIHByb2dyZXNzLWJhci1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMwMGM3YzcgMCUsICMwMGQ5NzcgMTAwJSksXHJcbiksIGNvc21pYywgY29zbWljKTtcclxuXHJcbiRuYi10aGVtZXM6IG5iLXJlZ2lzdGVyLXRoZW1lKChcclxuICAvLyBhcHAgd2lzZSB2YXJpYWJsZXMgZm9yIGVhY2ggdGhlbWVcclxuICBzaWRlYmFyLWhlYWRlci1nYXA6IDJyZW0sXHJcbiAgc2lkZWJhci1oZWFkZXItaGVpZ2h0OiBpbml0aWFsLFxyXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiAxNDAwcHgsXHJcblxyXG4gIGZvbnQtbWFpbjogUmFqZGhhbmksXHJcbiAgZm9udC1zZWNvbmRhcnk6IFJvYm90byxcclxuXHJcbiAgc3dpdGNoZXItYmFja2dyb3VuZDogIzJiMmQzNCxcclxuICBzd2l0Y2hlci1iYWNrZ3JvdW5kLXBlcmNlbnRhZ2U6IDE0JSxcclxuICBkcm9wcy1pY29uLWxpbmUtZ2FkaWVudDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2U5ZThlYiwgI2E3YTJiZSksXHJcblxyXG4gIGxpc3QtaXRlbS1ib3JkZXItd2lkdGg6IDFweCxcclxuXHJcbiAgc2xpZGUtb3V0LWNvbnRhaW5lci13aWR0aDogMzAlLFxyXG4gIHNsaWRlLW91dC1iYWNrZ3JvdW5kOiBcdGxpbmVhci1ncmFkaWVudCgyNzBkZWcsICNmN2ZhZmIgMCUsICNlY2YyZjUgMTAwJSksXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvcjogMCA0cHggMTRweCAwICNhMmQyYzgsXHJcbiAgc2xpZGUtb3V0LXNoYWRvdy1jb2xvci1ydGw6IDAgNHB4IDE0cHggMCAjYTJkMmM4LFxyXG5cclxuICBjaGFydC1wYW5lbC1zdW1tYXJ5LWJveC1zaGFkb3c6IG5vbmUsXHJcbiAgY2hhcnQtcGFuZWwtc3VtbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjZjdmYWZiLFxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm9yZGVyLWNvbG9yOiAjZWJlZmYxLFxyXG4gIGNoYXJ0LXBhbmVsLXN1bW1hcnktYm9yZGVyLXdpZHRoOiAxcHgsXHJcblxyXG4gIGVjb21tZXJjZS1jYXJkLWJvcmRlci13aWR0aDogMXB4LFxyXG5cclxuICBwcm9ncmVzcy1iYXItYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZmY5ZjZmIDAlLCAjZmY4Yjk3IDEwMCUpLFxyXG4pLCBjb3Jwb3JhdGUsIGNvcnBvcmF0ZSk7XHJcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBpcyBhIHN0YXJ0aW5nIHBvaW50IHdoZXJlIHdlIGRlY2xhcmUgdGhlIG1hcHMgb2YgdGhlbWVzIGFuZCBnbG9iYWxseSBhdmFpbGFibGUgZnVuY3Rpb25zL21peGluc1xuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbi5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLWxheW91dC1jb2x1bW4uc21hbGwge1xuICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7IH1cblxuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIHtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xuICB3aWR0aDogNy41cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQge1xuICAgIHdpZHRoOiAwOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAwOyB9XG4gICAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgICB3aWR0aDogNy41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICB3aWR0aDogNy41cmVtO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICB3aWR0aDogNy41cmVtOyB9XG5cbi5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSAtIDJyZW0pICFpbXBvcnRhbnQ7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4zNzVyZW07IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjM3NXJlbTsgfVxuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gbmItc2lkZWJhci1oZWFkZXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biB7XG4gICAgcGFkZGluZzogMC43NXJlbSAyLjVyZW07XG4gICAgbWFyZ2luLXRvcDogLTJyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAwLjNzIGN1YmljLWJlemllcigwLjE4LCAwLjg5LCAwLjMyLCAxLjQ4KTsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBpIHtcbiAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTsgfVxuICAgIFtkaXI9cnRsXSAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGksIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC5tYWluLWJ0biB7XG4gICAgd2lkdGg6IDQ2cHg7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIHBhZGRpbmc6IDAuMzc1cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB0cmFuc2l0aW9uOiBub25lOyB9XG4gICAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC5tYWluLWJ0biBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDM5OS45OHB4KSB7XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IC5tYWluLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XG4gICAgbWFyZ2luLXRvcDogMDsgfVxuICAgIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSkgIWltcG9ydGFudDsgfVxuICAgICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyB9XG4gICAgICAubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgLm1haW4tYnRuIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4ubmItdGhlbWUtY29zbWljIDpob3N0IG5iLWxheW91dC1jb2x1bW4uc21hbGwge1xuICBmbGV4OiAwLjE1ICFpbXBvcnRhbnQ7IH1cblxuLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIge1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gIHdpZHRoOiA3LjVyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIHtcbiAgICB3aWR0aDogMDsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAwOyB9XG4gICAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHdpZHRoOiA3LjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDcuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiAjM2QzNzgwO1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuM3MgZWFzZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6ICMyZjI5NmI7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIC5zY3JvbGxhYmxlIHtcbiAgICAgIHdpZHRoOiA3LjVyZW07IH1cblxuLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XG4gIG1hcmdpbi10b3A6IDJyZW07XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNC43NXJlbSAtIDJyZW0pICFpbXBvcnRhbnQ7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjVyZW07IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuNXJlbTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4ge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMi41cmVtO1xuICAgIG1hcmdpbi10b3A6IC0ycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRyYW5zaXRpb246IHBhZGRpbmcgMC4zcyBjdWJpYy1iZXppZXIoMC4xOCwgMC44OSwgMC4zMiwgMS40OCk7IH1cbiAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC5tYWluLWJ0biBpIHtcbiAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9XG4gICAgW2Rpcj1sdHJdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGksIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAvZGVlcC8gbmItc2lkZWJhci1oZWFkZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9XG4gIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC5tYWluLWJ0biB7XG4gICAgd2lkdGg6IDQ2cHg7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIHBhZGRpbmc6IDAuMzc1cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB0cmFuc2l0aW9uOiBub25lOyB9XG4gICAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHNwYW4ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogMzk5Ljk4cHgpIHtcbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCAubWFpbi1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcbiAgLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciB7XG4gICAgbWFyZ2luLXRvcDogMDsgfVxuICAgIC5uYi10aGVtZS1jb3NtaWMgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtKSAhaW1wb3J0YW50OyB9XG4gICAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvc21pYyA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH1cbiAgICAgIFtkaXI9cnRsXSAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyB9XG4gICAgICAubmItdGhlbWUtY29zbWljIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDsgfVxuICAubmItdGhlbWUtY29zbWljIDpob3N0IC5tYWluLWJ0biB7XG4gICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qXG4gICAgICA6aG9zdCBjYW4gYmUgcHJlZml4ZWRcbiAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi84ZDBlZTM0OTM5ZjE0YzA3ODc2ZDIyMmMyNWI0MDVlZDQ1OGEzNGQzL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9zaGFkb3dfY3NzLnRzI0w0NDFcblxuICAgICAgV2UgaGF2ZSB0byB1c2UgOmhvc3QgaW5zdGVkIG9mIDpob3N0LWNvbnRleHQoJHRoZW1lKSwgdG8gYmUgYWJsZSB0byBwcmVmaXggdGhlbWUgY2xhc3NcbiAgICAgIHdpdGggc29tZXRoaW5nIGRlZmluZWQgaW5zaWRlIG9mIEBjb250ZW50LCBieSBwcmVmaXhpbmcgJi5cbiAgICAgIEZvciBleGFtcGxlIHRoaXMgc2NzcyBjb2RlOlxuICAgICAgICAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLnNvbWUtc2VsZWN0b3IgJiB7XG4gICAgICAgICAgICAuLi5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIFdpbGwgcmVzdWx0IGluIG5leHQgY3NzOlxuICAgICAgICAuc29tZS1zZWxlY3RvciAubmItdGhlbWUtZGVmYXVsdCB7XG4gICAgICAgICAgLi4uXG4gICAgICAgIH1cblxuICAgICAgSXQgZG9lc24ndCB3b3JrIHdpdGggOmhvc3QtY29udGV4dCBiZWNhdXNlIGFuZ3VsYXIgc3BsaXR0aW5nIGl0IGluIHR3byBzZWxlY3RvcnMgYW5kIHJlbW92ZXNcbiAgICAgIHByZWZpeCBpbiBvbmUgb2YgdGhlIHNlbGVjdG9ycy5cbiAgICAqL1xuLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1sYXlvdXQtY29sdW1uLnNtYWxsIHtcbiAgZmxleDogMC4xNSAhaW1wb3J0YW50OyB9XG5cbi5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIHtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlO1xuICB3aWR0aDogNy41cmVtO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyLmNvbGxhcHNlZCB7XG4gICAgd2lkdGg6IDA7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIuc2V0dGluZ3Mtc2lkZWJhci5jb2xsYXBzZWQgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICB3aWR0aDogMDsgfVxuICAgICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLnNldHRpbmdzLXNpZGViYXIuY29sbGFwc2VkIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgICB3aWR0aDogNy41cmVtO1xuICAgICAgICBwYWRkaW5nOiAxLjI1cmVtOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgIHdpZHRoOiA3LjVyZW07XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5zZXR0aW5ncy1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIgLnNjcm9sbGFibGUge1xuICAgICAgd2lkdGg6IDcuNXJlbTsgfVxuXG4ubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0Ljc1cmVtIC0gMnJlbSkgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2RkNWRjO1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0pICFpbXBvcnRhbnQ7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjE3cmVtOyB9XG4gICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjE3cmVtOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5zY3JvbGxhYmxlIHtcbiAgICBwYWRkaW5nLXRvcDogMDsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5zY3JvbGxhYmxlIC5tZW51LWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcDogbm9uZTsgfVxuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4ge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMi41cmVtO1xuICAgIG1hcmdpbi10b3A6IC0ycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRyYW5zaXRpb246IHBhZGRpbmcgMC4zcyBjdWJpYy1iZXppZXIoMC4xOCwgMC44OSwgMC4zMiwgMS40OCk7XG4gICAgYm9yZGVyLXJhZGl1czogMC4xN3JlbTsgfVxuICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgLm1haW4tYnRuIGkge1xuICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMik7IH1cbiAgICBbZGlyPWx0cl0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07IH1cbiAgICBbZGlyPXJ0bF0gLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gaSwgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAubWFpbi1idG4gc3BhbiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIuY29tcGFjdGVkIC9kZWVwLyBuYi1zaWRlYmFyLWhlYWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhci5jb21wYWN0ZWQgLm1haW4tYnRuIHtcbiAgICB3aWR0aDogNDZweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgcGFkZGluZzogMC4zNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIHRyYW5zaXRpb246IG5vbmU7IH1cbiAgICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyLmNvbXBhY3RlZCAubWFpbi1idG4gc3BhbiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzOTkuOThweCkge1xuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IC5tYWluLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAwOyB9XG4gICAgLm5iLXRoZW1lLWNvcnBvcmF0ZSA6aG9zdCBuYi1zaWRlYmFyLm1lbnUtc2lkZWJhciAvZGVlcC8gLm1haW4tY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDQuNzVyZW0pICFpbXBvcnRhbnQ7IH1cbiAgICAgIFtkaXI9bHRyXSAubmItdGhlbWUtY29ycG9yYXRlIDpob3N0IG5iLXNpZGViYXIubWVudS1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfVxuICAgICAgW2Rpcj1ydGxdIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IH1cbiAgICAgIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgbmItc2lkZWJhci5tZW51LXNpZGViYXIgL2RlZXAvIC5tYWluLWNvbnRhaW5lciAuc2Nyb2xsYWJsZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwOyB9XG4gIC5uYi10aGVtZS1jb3Jwb3JhdGUgOmhvc3QgLm1haW4tYnRuIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cbiJdfQ== */\"","import { Component, OnDestroy } from '@angular/core';\r\nimport { NbThemeService } from '@nebular/theme';\r\nimport { takeWhile } from 'rxjs/operators';\r\n\r\n// TODO: move layouts into the framework\r\n@Component({\r\n selector: 'ngx-two-columns-layout',\r\n styleUrls: ['./two-columns.layout.scss'],\r\n template: `\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Support Us\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n `,\r\n})\r\nexport class TwoColumnsLayoutComponent implements OnDestroy {\r\n\r\n private alive = true;\r\n\r\n currentTheme: string;\r\n\r\n constructor(protected themeService: NbThemeService) {\r\n this.themeService.getJsTheme()\r\n .pipe(takeWhile(() => this.alive))\r\n .subscribe(theme => {\r\n this.currentTheme = theme.name;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.alive = false;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'ngxCapitalize' })\r\nexport class CapitalizePipe implements PipeTransform {\r\n\r\n transform(input: string): string {\r\n return input && input.length\r\n ? (input.charAt(0).toUpperCase() + input.slice(1).toLowerCase())\r\n : input;\r\n }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Akveo. All Rights Reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n */\r\n\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { icons } from 'eva-icons';\r\n\r\n@Pipe({ name: 'eva' })\r\nexport class EvaIconsPipe implements PipeTransform {\r\n\r\n private defaultOptions = {\r\n height: 24,\r\n width: 24,\r\n fill: 'inherit',\r\n animationHover: true,\r\n animationInfinity: false,\r\n };\r\n\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(icon: string,\r\n options: {\r\n height: number;\r\n width: number;\r\n fill: string;\r\n animationType?: string;\r\n animationHover?: boolean;\r\n animationInfinity?: boolean;\r\n },\r\n ) {\r\n const mergedOptions = {\r\n ...this.defaultOptions,\r\n ...options,\r\n };\r\n const { width, height, fill, animationType, animationHover, animationInfinity } = mergedOptions;\r\n const animation = animationType ?\r\n { type: animationType, hover: animationHover, infinite: animationInfinity } :\r\n null;\r\n\r\n return this.sanitizer.bypassSecurityTrustHtml(icons[icon].toSvg({\r\n width,\r\n height,\r\n fill,\r\n animation,\r\n }));\r\n }\r\n}\r\n","export * from './capitalize.pipe';\r\nexport * from './plural.pipe';\r\nexport * from './round.pipe';\r\nexport * from './timing.pipe';\r\nexport * from './number-with-commas.pipe';\r\nexport * from './eva-icons.pipe';\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'ngxNumberWithCommas' })\r\nexport class NumberWithCommasPipe implements PipeTransform {\r\n\r\n transform(input: number): string {\r\n return new Intl.NumberFormat().format(input);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'ngxPlural' })\r\nexport class PluralPipe implements PipeTransform {\r\n\r\n transform(input: number, label: string, pluralLabel: string = ''): string {\r\n input = input || 0;\r\n return input === 1\r\n ? `${input} ${label}`\r\n : pluralLabel\r\n ? `${input} ${pluralLabel}`\r\n : `${input} ${label}s`;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'ngxRound' })\r\nexport class RoundPipe implements PipeTransform {\r\n\r\n transform(input: number): number {\r\n return Math.round(input);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'timing' })\r\nexport class TimingPipe implements PipeTransform {\r\n transform(time: number): string {\r\n if (time) {\r\n const minutes = Math.floor(time / 60);\r\n const seconds = Math.floor(time % 60);\r\n return `${this.initZero(minutes)}${minutes}:${this.initZero(seconds)}${seconds}`;\r\n }\r\n\r\n return '00:00';\r\n }\r\n\r\n private initZero(time: number): string {\r\n return time < 10 ? '0' : '';\r\n }\r\n}\r\n","export const CORPORATE_THEME = {\r\n name: 'corporate',\r\n base: 'default',\r\n variables: {\r\n temperature: [\r\n '#ffa36b',\r\n '#ffa36b',\r\n '#ff9e7a',\r\n '#ff9888',\r\n '#ff8ea0',\r\n ],\r\n\r\n solar: {\r\n gradientLeft: '#ff8ea0',\r\n gradientRight: '#ffa36b',\r\n shadowColor: 'rgba(0, 0, 0, 0)',\r\n radius: ['80%', '90%'],\r\n },\r\n\r\n traffic: {\r\n colorBlack: '#ffffff',\r\n tooltipBg: '#eef2f5',\r\n tooltipBorderColor: '#eef2f5',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: '400',\r\n\r\n lineBg: '#cae6f3',\r\n lineShadowBlur: '0',\r\n itemColor: '#bcc3cc',\r\n itemBorderColor: '#bcc3cc',\r\n itemEmphasisBorderColor: '#74a2ff',\r\n shadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n shadowLineShadow: 'rgba(0, 0, 0, 0)',\r\n gradFrom: '#ffffff',\r\n gradTo: '#ffffff',\r\n },\r\n\r\n electricity: {\r\n tooltipBg: '#edf0f4',\r\n tooltipLineColor: '#bdc4cd',\r\n tooltipLineWidth: '0',\r\n tooltipBorderColor: '#ebeef2',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n\r\n axisLineColor: 'rgba(0, 0, 0, 0)',\r\n xAxisTextColor: '#2a2a2a',\r\n yAxisSplitLine: '#ebeef2',\r\n\r\n itemBorderColor: '#73a1ff',\r\n lineStyle: 'solid',\r\n lineWidth: '4',\r\n lineGradFrom: '#bdc4cd',\r\n lineGradTo: '#c0c8d1',\r\n lineShadow: 'rgba(0, 0, 0, 0)',\r\n\r\n areaGradFrom: 'rgba(255, 255, 255, 0)',\r\n areaGradTo: 'rgba(255, 255, 255, 0)',\r\n shadowLineDarkBg: 'rgba(255, 255, 255, 0)',\r\n },\r\n\r\n bubbleMap: {\r\n titleColor: '#484848',\r\n areaColor: '#dddddd',\r\n areaHoverColor: '#cccccc',\r\n areaBorderColor: '#ebeef2',\r\n },\r\n\r\n profitBarAnimationEchart: {\r\n textColor: '#b2bac2',\r\n\r\n firstAnimationBarColor: '#719efc',\r\n secondAnimationBarColor: '#5dcfe3',\r\n\r\n splitLineStyleOpacity: '0.06',\r\n splitLineStyleWidth: '1',\r\n splitLineStyleColor: '#000000',\r\n\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: '400',\r\n tooltipFontSize: '16',\r\n tooltipBg: '#eef2f5',\r\n tooltipBorderColor: '#eef2f5',\r\n tooltipBorderWidth: '3',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',\r\n },\r\n\r\n trafficBarEchart: {\r\n gradientFrom: '#ff8ea0',\r\n gradientTo: '#ffa36b',\r\n shadow: 'rgba(0, 0, 0, 0)',\r\n shadowBlur: '0',\r\n\r\n axisTextColor: '#b2bac2',\r\n axisFontSize: '12',\r\n\r\n tooltipBg: '#edf0f4',\r\n tooltipBorderColor: '#ebeef2',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n },\r\n\r\n countryOrders: {\r\n countryBorderColor: 'rgba(255, 255, 255, 1)',\r\n countryFillColor: 'rgba(236, 242, 245, 1)',\r\n countryBorderWidth: '1',\r\n hoveredCountryBorderColor: 'rgba(113, 158, 252, 1)',\r\n hoveredCountryFillColor: 'rgba(199, 216, 247, 1)',\r\n hoveredCountryBorderWidth: '3',\r\n\r\n chartAxisLineColor: 'rgba(0, 0, 0, 0)',\r\n chartAxisTextColor: '#b2bac2',\r\n chartAxisFontSize: '16',\r\n chartGradientTo: 'rgba(113, 158, 252, 1)',\r\n chartGradientFrom: 'rgba(113, 158, 252, 1)',\r\n chartAxisSplitLine: '#ebeef2',\r\n chartShadowLineColor: '#2f296b',\r\n\r\n chartLineBottomShadowColor: 'rgba(113, 158, 252, 1)',\r\n\r\n chartInnerLineColor: '#eceff4',\r\n },\r\n\r\n echarts: {\r\n bg: '#ffffff',\r\n textColor: '#484848',\r\n axisLineColor: '#bbbbbb',\r\n splitLineColor: '#ebeef2',\r\n itemHoverShadowColor: 'rgba(0, 0, 0, 0.5)',\r\n tooltipBackgroundColor: '#6a7985',\r\n areaOpacity: '0.7',\r\n },\r\n\r\n chartjs: {\r\n axisLineColor: '#cccccc',\r\n textColor: '#484848',\r\n },\r\n\r\n orders: {\r\n tooltipBg: '#ffffff',\r\n tooltipLineColor: 'rgba(0, 0, 0, 0)',\r\n tooltipLineWidth: '0',\r\n tooltipBorderColor: '#ebeef2',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n tooltipFontSize: '20',\r\n\r\n axisLineColor: 'rgba(161, 161 ,229, 0.3)',\r\n axisFontSize: '16',\r\n axisTextColor: '#b2bac2',\r\n yAxisSplitLine: 'rgba(161, 161 ,229, 0.2)',\r\n\r\n itemBorderColor: '#73a1ff',\r\n lineStyle: 'solid',\r\n lineWidth: '4',\r\n\r\n // first line\r\n firstAreaGradFrom: 'rgba(227, 236, 254, 0.7)',\r\n firstAreaGradTo: 'rgba(227, 236, 254, 0.7)',\r\n firstShadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n\r\n // second line\r\n secondLineGradFrom: 'rgba(93, 207, 227, 1)',\r\n secondLineGradTo: 'rgba(93, 207, 227, 1)',\r\n\r\n secondAreaGradFrom: 'rgba(0, 0, 0, 0)',\r\n secondAreaGradTo: 'rgba(0, 0, 0, 0)',\r\n secondShadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n\r\n // third line\r\n thirdLineGradFrom: 'rgba(113, 158, 252, 1)',\r\n thirdLineGradTo: 'rgba(113, 158, 252, 1)',\r\n\r\n thirdAreaGradFrom: 'rgba(0, 0, 0, 0)',\r\n thirdAreaGradTo: 'rgba(0, 0, 0, 0)',\r\n thirdShadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n },\r\n\r\n profit: {\r\n bg: '#ffffff',\r\n textColor: '#ffffff',\r\n axisLineColor: 'rgba(161, 161 ,229, 0.3)',\r\n splitLineColor: 'rgba(161, 161 ,229, 0.2)',\r\n areaOpacity: '1',\r\n\r\n axisFontSize: '16',\r\n axisTextColor: '#b2bac2',\r\n\r\n // first bar\r\n firstLineGradFrom: '#719efc',\r\n firstLineGradTo: '#719efc',\r\n firstLineShadow: 'rgba(14, 16, 48, 0.4)',\r\n\r\n // second bar\r\n secondLineGradFrom: '#5dcfe3',\r\n secondLineGradTo: '#5dcfe3',\r\n secondLineShadow: 'rgba(14, 16, 48, 0.4)',\r\n\r\n // third bar\r\n thirdLineGradFrom: '#e3ecfe',\r\n thirdLineGradTo: '#e3ecfe',\r\n thirdLineShadow: 'rgba(14, 16, 48, 0.4)',\r\n },\r\n\r\n orderProfitLegend: {\r\n firstItem: '#719efc',\r\n secondItem: '#5dcfe3',\r\n thirdItem: '#e3ecfe',\r\n },\r\n\r\n visitors: {\r\n tooltipBg: '#ffffff',\r\n tooltipLineColor: 'rgba(0, 0, 0, 0)',\r\n tooltipLineWidth: '0',\r\n tooltipBorderColor: '#ebeef2',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n tooltipFontSize: '20',\r\n\r\n axisLineColor: 'rgba(161, 161 ,229, 0.3)',\r\n axisFontSize: '16',\r\n axisTextColor: '#b2bac2',\r\n yAxisSplitLine: 'rgba(161, 161 ,229, 0.2)',\r\n\r\n itemBorderColor: '#73a1ff',\r\n lineStyle: 'dotted',\r\n lineWidth: '6',\r\n lineGradFrom: '#73a1ff',\r\n lineGradTo: '#73a1ff',\r\n lineShadow: 'rgba(0, 0, 0, 0)',\r\n\r\n areaGradFrom: 'rgba(146, 181, 252, 1)',\r\n areaGradTo: 'rgba(146, 181, 252, 1)',\r\n shadowLineDarkBg: '#a695ff',\r\n\r\n innerLineStyle: 'solid',\r\n innerLineWidth: '1',\r\n\r\n innerAreaGradFrom: 'rgba(227, 236, 254, 1)',\r\n innerAreaGradTo: 'rgba(227, 236, 254, 1)',\r\n },\r\n\r\n visitorsLegend: {\r\n firstIcon: '#e3ecfe',\r\n secondIcon: '#719efc',\r\n },\r\n\r\n visitorsPie: {\r\n firstPieGradientLeft: '#94e2ed',\r\n firstPieGradientRight: '#94e2ed',\r\n firstPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n firstPieRadius: ['65%', '90%'],\r\n\r\n secondPieGradientLeft: '#719efc',\r\n secondPieGradientRight: '#719efc',\r\n secondPieShadowColor: '#b2cafb',\r\n secondPieRadius: ['63%', '92%'],\r\n shadowOffsetX: '-4',\r\n shadowOffsetY: '-4',\r\n },\r\n\r\n visitorsPieLegend: {\r\n firstSection: '#719efc',\r\n secondSection: '#99e5ee',\r\n },\r\n\r\n earningPie: {\r\n radius: ['65%', '100%'],\r\n center: ['50%', '50%'],\r\n\r\n fontSize: '22',\r\n\r\n firstPieGradientLeft: '#719efc',\r\n firstPieGradientRight: '#719efc',\r\n firstPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n\r\n secondPieGradientLeft: '#ff9f6f',\r\n secondPieGradientRight: '#ff9f6f',\r\n secondPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n\r\n thirdPieGradientLeft: '#ff5e83',\r\n thirdPieGradientRight: '#ff5e83',\r\n thirdPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n },\r\n\r\n earningLine: {\r\n gradFrom: '#e3ecfe',\r\n gradTo: '#e3ecfe',\r\n\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: '400',\r\n tooltipFontSize: '16',\r\n tooltipBg: '#eef2f5',\r\n tooltipBorderColor: '#eef2f5',\r\n tooltipBorderWidth: '3',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',\r\n },\r\n },\r\n};\r\n","export const DEFAULT_THEME = {\r\n name: 'default',\r\n base: null,\r\n variables: {\r\n\r\n // Safari fix\r\n temperature: [\r\n '#42db7d',\r\n '#42db7d',\r\n '#42db7d',\r\n '#42db7d',\r\n '#42db7d',\r\n ],\r\n\r\n solar: {\r\n gradientLeft: '#42db7d',\r\n gradientRight: '#42db7d',\r\n shadowColor: 'rgba(0, 0, 0, 0)',\r\n radius: ['80%', '90%'],\r\n },\r\n\r\n traffic: {\r\n colorBlack: '#000000',\r\n tooltipBg: '#ffffff',\r\n tooltipBorderColor: '#c0c8d1',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n\r\n lineBg: '#c0c8d1',\r\n lineShadowBlur: '1',\r\n itemColor: '#bcc3cc',\r\n itemBorderColor: '#bcc3cc',\r\n itemEmphasisBorderColor: '#42db7d',\r\n shadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n shadowLineShadow: 'rgba(0, 0, 0, 0)',\r\n gradFrom: '#ebeef2',\r\n gradTo: '#ebeef2',\r\n },\r\n\r\n electricity: {\r\n tooltipBg: '#ffffff',\r\n tooltipLineColor: 'rgba(0, 0, 0, 0)',\r\n tooltipLineWidth: '0',\r\n tooltipBorderColor: '#ebeef2',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n\r\n axisLineColor: 'rgba(0, 0, 0, 0)',\r\n xAxisTextColor: '#2a2a2a',\r\n yAxisSplitLine: '#ebeef2',\r\n\r\n itemBorderColor: '#42db7d',\r\n lineStyle: 'solid',\r\n lineWidth: '4',\r\n lineGradFrom: '#42db7d',\r\n lineGradTo: '#42db7d',\r\n lineShadow: 'rgba(0, 0, 0, 0)',\r\n\r\n areaGradFrom: 'rgba(235, 238, 242, 0.5)',\r\n areaGradTo: 'rgba(235, 238, 242, 0.5)',\r\n shadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n },\r\n\r\n bubbleMap: {\r\n titleColor: '#484848',\r\n areaColor: '#dddddd',\r\n areaHoverColor: '#cccccc',\r\n areaBorderColor: '#ebeef2',\r\n },\r\n\r\n profitBarAnimationEchart: {\r\n textColor: '#484848',\r\n\r\n firstAnimationBarColor: '#3edd81',\r\n secondAnimationBarColor: '#8d7fff',\r\n\r\n splitLineStyleOpacity: '0.06',\r\n splitLineStyleWidth: '1',\r\n splitLineStyleColor: '#000000',\r\n\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n tooltipFontSize: '16',\r\n tooltipBg: '#ffffff',\r\n tooltipBorderColor: '#c0c8d1',\r\n tooltipBorderWidth: '3',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',\r\n },\r\n\r\n trafficBarEchart: {\r\n gradientFrom: '#fc0',\r\n gradientTo: '#ffa100',\r\n shadow: '#ffb600',\r\n shadowBlur: '0',\r\n\r\n axisTextColor: '#b2bac2',\r\n axisFontSize: '12',\r\n\r\n tooltipBg: '#ffffff',\r\n tooltipBorderColor: '#c0c8d1',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n },\r\n\r\n countryOrders: {\r\n countryBorderColor: 'rgba(255, 255, 255, 1)',\r\n countryFillColor: 'rgba(236, 242, 245, 1)',\r\n countryBorderWidth: '1',\r\n hoveredCountryBorderColor: '#40dc7e',\r\n hoveredCountryFillColor: '#c7f4d9',\r\n hoveredCountryBorderWidth: '3',\r\n\r\n chartAxisLineColor: 'rgba(0, 0, 0, 0)',\r\n chartAxisTextColor: '#b2bac2',\r\n chartAxisFontSize: '16',\r\n chartGradientTo: '#3edd81',\r\n chartGradientFrom: '#3bddaf',\r\n chartAxisSplitLine: '#ebeef2',\r\n chartShadowLineColor: '#2f296b',\r\n\r\n chartLineBottomShadowColor: '#eceff4',\r\n\r\n chartInnerLineColor: '#eceff4',\r\n },\r\n\r\n echarts: {\r\n bg: '#ffffff',\r\n textColor: '#484848',\r\n axisLineColor: '#bbbbbb',\r\n splitLineColor: '#ebeef2',\r\n itemHoverShadowColor: 'rgba(0, 0, 0, 0.5)',\r\n tooltipBackgroundColor: '#6a7985',\r\n areaOpacity: '0.7',\r\n },\r\n\r\n chartjs: {\r\n axisLineColor: '#cccccc',\r\n textColor: '#484848',\r\n },\r\n\r\n orders: {\r\n tooltipBg: '#ffffff',\r\n tooltipLineColor: 'rgba(0, 0, 0, 0)',\r\n tooltipLineWidth: '0',\r\n tooltipBorderColor: '#ebeef2',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n tooltipFontSize: '20',\r\n\r\n axisLineColor: 'rgba(161, 161 ,229, 0.3)',\r\n axisFontSize: '16',\r\n axisTextColor: '#b2bac2',\r\n yAxisSplitLine: 'rgba(161, 161 ,229, 0.2)',\r\n\r\n itemBorderColor: '#42db7d',\r\n lineStyle: 'solid',\r\n lineWidth: '4',\r\n\r\n // first line\r\n firstAreaGradFrom: 'rgba(236, 242, 245, 0.8)',\r\n firstAreaGradTo: 'rgba(236, 242, 245, 0.8)',\r\n firstShadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n\r\n // second line\r\n secondLineGradFrom: 'rgba(164, 123, 255, 1)',\r\n secondLineGradTo: 'rgba(164, 123, 255, 1)',\r\n\r\n secondAreaGradFrom: 'rgba(188, 92, 255, 0.2)',\r\n secondAreaGradTo: 'rgba(188, 92, 255, 0)',\r\n secondShadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n\r\n // third line\r\n thirdLineGradFrom: 'rgba(55, 220, 136, 1)',\r\n thirdLineGradTo: 'rgba(55, 220, 136, 1)',\r\n\r\n thirdAreaGradFrom: 'rgba(31 ,106, 124, 0.2)',\r\n thirdAreaGradTo: 'rgba(4, 126, 230, 0)',\r\n thirdShadowLineDarkBg: 'rgba(0, 0, 0, 0)',\r\n },\r\n\r\n // TODO: need design for default theme\r\n profit: {\r\n bg: '#ffffff',\r\n textColor: '#ffffff',\r\n axisLineColor: 'rgba(161, 161 ,229, 0.3)',\r\n splitLineColor: 'rgba(161, 161 ,229, 0.2)',\r\n areaOpacity: '1',\r\n\r\n axisFontSize: '16',\r\n axisTextColor: '#b2bac2',\r\n\r\n // first bar\r\n firstLineGradFrom: '#00bece',\r\n firstLineGradTo: '#00da78',\r\n firstLineShadow: 'rgba(14, 16, 48, 0.4)',\r\n\r\n // second bar\r\n secondLineGradFrom: '#8069ff',\r\n secondLineGradTo: '#8357ff',\r\n secondLineShadow: 'rgba(14, 16, 48, 0.4)',\r\n\r\n // third bar\r\n thirdLineGradFrom: 'rgba(236, 242, 245, 0.8)',\r\n thirdLineGradTo: 'rgba(236, 242, 245, 0.8)',\r\n thirdLineShadow: 'rgba(14, 16, 48, 0.4)',\r\n },\r\n\r\n orderProfitLegend: {\r\n firstItem: 'linear-gradient(90deg, #3edd81 0%, #3bddad 100%)',\r\n secondItem: 'linear-gradient(90deg, #8d7fff 0%, #b17fff 100%)',\r\n thirdItem: 'rgba(236, 242, 245, 0.8)',\r\n },\r\n\r\n visitors: {\r\n tooltipBg: '#ffffff',\r\n tooltipLineColor: 'rgba(0, 0, 0, 0)',\r\n tooltipLineWidth: '0',\r\n tooltipBorderColor: '#ebeef2',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n tooltipFontSize: '20',\r\n\r\n axisLineColor: 'rgba(161, 161 ,229, 0.3)',\r\n axisFontSize: '16',\r\n axisTextColor: '#b2bac2',\r\n yAxisSplitLine: 'rgba(161, 161 ,229, 0.2)',\r\n\r\n itemBorderColor: '#42db7d',\r\n lineStyle: 'dotted',\r\n lineWidth: '6',\r\n lineGradFrom: '#ffffff',\r\n lineGradTo: '#ffffff',\r\n lineShadow: 'rgba(14, 16, 48, 0)',\r\n\r\n areaGradFrom: 'rgba(188, 92, 255, 1)',\r\n areaGradTo: 'rgba(188, 92, 255, 0.5)',\r\n shadowLineDarkBg: '#a695ff',\r\n\r\n innerLineStyle: 'solid',\r\n innerLineWidth: '1',\r\n\r\n innerAreaGradFrom: 'rgba(60, 221, 156, 1)',\r\n innerAreaGradTo: 'rgba(60, 221, 156, 1)',\r\n },\r\n\r\n visitorsLegend: {\r\n firstIcon: 'linear-gradient(90deg, #3edd81 0%, #3bddad 100%)',\r\n secondIcon: 'linear-gradient(90deg, #8d7fff 0%, #b17fff 100%)',\r\n },\r\n\r\n visitorsPie: {\r\n firstPieGradientLeft: '#8defbb',\r\n firstPieGradientRight: '#8defbb',\r\n firstPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n firstPieRadius: ['70%', '90%'],\r\n\r\n secondPieGradientLeft: '#ff894a',\r\n secondPieGradientRight: '#ffcc10',\r\n secondPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n secondPieRadius: ['60%', '97%'],\r\n shadowOffsetX: '0',\r\n shadowOffsetY: '0',\r\n },\r\n\r\n visitorsPieLegend: {\r\n firstSection: 'linear-gradient(90deg, #ffcb17 0%, #ff874c 100%)',\r\n secondSection: '#8defbb',\r\n },\r\n\r\n earningPie: {\r\n radius: ['65%', '100%'],\r\n center: ['50%', '50%'],\r\n\r\n fontSize: '22',\r\n\r\n firstPieGradientLeft: '#00d77f',\r\n firstPieGradientRight: '#00d77f',\r\n firstPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n\r\n secondPieGradientLeft: '#7756f7',\r\n secondPieGradientRight: '#7756f7',\r\n secondPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n\r\n thirdPieGradientLeft: '#ffca00',\r\n thirdPieGradientRight: '#ffca00',\r\n thirdPieShadowColor: 'rgba(0, 0, 0, 0)',\r\n },\r\n\r\n earningLine: {\r\n gradFrom: 'rgba(188, 92, 255, 0.5)',\r\n gradTo: 'rgba(188, 92, 255, 0.5)',\r\n\r\n tooltipTextColor: '#2a2a2a',\r\n tooltipFontWeight: 'bolder',\r\n tooltipFontSize: '16',\r\n tooltipBg: '#ffffff',\r\n tooltipBorderColor: '#c0c8d1',\r\n tooltipBorderWidth: '3',\r\n tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',\r\n },\r\n },\r\n};\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport {\r\n NbActionsModule,\r\n NbCardModule,\r\n NbLayoutModule,\r\n NbMenuModule,\r\n NbRouteTabsetModule,\r\n NbSearchModule,\r\n NbSidebarModule,\r\n NbTabsetModule,\r\n NbThemeModule,\r\n NbUserModule,\r\n NbCheckboxModule,\r\n NbPopoverModule,\r\n NbContextMenuModule,\r\n NbProgressBarModule,\r\n NbCalendarModule,\r\n NbCalendarRangeModule,\r\n NbStepperModule,\r\n NbButtonModule,\r\n NbInputModule,\r\n NbAccordionModule,\r\n NbDialogModule,\r\n NbWindowModule,\r\n NbListModule,\r\n NbToastrModule,\r\n NbAlertModule,\r\n NbSpinnerModule,\r\n NbRadioModule,\r\n NbSelectModule,\r\n NbTooltipModule,\r\n} from '@nebular/theme';\r\n\r\nimport { NbSecurityModule } from '@nebular/security';\r\n\r\nimport {\r\n FooterComponent,\r\n HeaderComponent,\r\n SearchInputComponent,\r\n SwitcherComponent,\r\n LayoutDirectionSwitcherComponent,\r\n} from './components';\r\nimport {\r\n CapitalizePipe,\r\n PluralPipe,\r\n RoundPipe,\r\n TimingPipe,\r\n NumberWithCommasPipe,\r\n EvaIconsPipe,\r\n} from './pipes';\r\nimport {\r\n OneColumnLayoutComponent,\r\n SampleLayoutComponent,\r\n ThreeColumnsLayoutComponent,\r\n TwoColumnsLayoutComponent,\r\n} from './layouts';\r\nimport { DEFAULT_THEME } from './styles/theme.default';\r\nimport { CORPORATE_THEME } from './styles/theme.corporate';\r\n\r\nconst BASE_MODULES = [CommonModule, FormsModule, ReactiveFormsModule];\r\n\r\nconst NB_MODULES = [\r\n NbCardModule,\r\n NbLayoutModule,\r\n NbTabsetModule,\r\n NbRouteTabsetModule,\r\n NbMenuModule,\r\n NbUserModule,\r\n NbActionsModule,\r\n NbSearchModule,\r\n NbSidebarModule,\r\n NbCheckboxModule,\r\n NbPopoverModule,\r\n NbContextMenuModule,\r\n NgbModule,\r\n NbSecurityModule, // *nbIsGranted directive,\r\n NbProgressBarModule,\r\n NbCalendarModule,\r\n NbCalendarRangeModule,\r\n NbStepperModule,\r\n NbButtonModule,\r\n NbListModule,\r\n NbToastrModule,\r\n NbInputModule,\r\n NbAccordionModule,\r\n NbDialogModule,\r\n NbWindowModule,\r\n NbAlertModule,\r\n NbSpinnerModule,\r\n NbRadioModule,\r\n NbSelectModule,\r\n NbTooltipModule,\r\n];\r\n\r\nconst COMPONENTS = [\r\n SwitcherComponent,\r\n LayoutDirectionSwitcherComponent,\r\n HeaderComponent,\r\n FooterComponent,\r\n SearchInputComponent,\r\n OneColumnLayoutComponent,\r\n SampleLayoutComponent,\r\n ThreeColumnsLayoutComponent,\r\n TwoColumnsLayoutComponent,\r\n];\r\n\r\nconst ENTRY_COMPONENTS = [\r\n];\r\n\r\nconst PIPES = [\r\n CapitalizePipe,\r\n PluralPipe,\r\n RoundPipe,\r\n TimingPipe,\r\n NumberWithCommasPipe,\r\n EvaIconsPipe,\r\n];\r\n\r\nconst NB_THEME_PROVIDERS = [\r\n ...NbThemeModule.forRoot(\r\n {\r\n name: 'corporate',\r\n },\r\n [ DEFAULT_THEME, CORPORATE_THEME ],\r\n ).providers,\r\n ...NbSidebarModule.forRoot().providers,\r\n ...NbMenuModule.forRoot().providers,\r\n ...NbDialogModule.forRoot().providers,\r\n ...NbWindowModule.forRoot().providers,\r\n ...NbToastrModule.forRoot().providers,\r\n];\r\n\r\n@NgModule({\r\n imports: [...BASE_MODULES, ...NB_MODULES],\r\n exports: [...BASE_MODULES, ...NB_MODULES, ...COMPONENTS, ...PIPES],\r\n declarations: [...COMPONENTS, ...PIPES],\r\n entryComponents: [...ENTRY_COMPONENTS],\r\n})\r\nexport class ThemeModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: ThemeModule,\r\n providers: [...NB_THEME_PROVIDERS],\r\n };\r\n }\r\n}\r\n","import { ExtraOptions, RouterModule, Routes } from '@angular/router';\r\nimport { NgModule } from '@angular/core';\r\nimport { AuthGuard } from './services/auth-guard.service';\r\n\r\nconst routes: Routes = [\r\n { path: 'auth', loadChildren: './auth/auth.module#NgxAuthModule' },\r\n { path: '', loadChildren: 'app/pages/pages.module#PagesModule', canActivate: [AuthGuard] },\r\n { path: '**', redirectTo: 'pages' },\r\n];\r\n\r\nconst config: ExtraOptions = {\r\n useHash: true,\r\n};\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, config)],\r\n exports: [RouterModule],\r\n})\r\nexport class AppRoutingModule {\r\n}\r\n","/**\r\n * @license\r\n * Copyright Akveo. All Rights Reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n */\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { NbThemeService } from '@nebular/theme';\r\n\r\n@Component({\r\n selector: 'ngx-app',\r\n template: '',\r\n})\r\nexport class AppComponent implements OnInit {\r\n\r\n constructor(private themeService: NbThemeService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.themeService.changeTheme('default');\r\n }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Akveo. All Rights Reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n */\r\nimport { APP_BASE_HREF } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CoreModule } from './@core/core.module';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { ThemeModule } from './@theme/theme.module';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AuthGuard } from './services/auth-guard.service';\r\nimport { UsersService } from './services/users.service';\r\n\r\n@NgModule({\r\n declarations: [AppComponent],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n AppRoutingModule,\r\n\r\n NgbModule.forRoot(),\r\n ThemeModule.forRoot(),\r\n CoreModule.forRoot(),\r\n ],\r\n bootstrap: [AppComponent],\r\n providers: [\r\n { provide: APP_BASE_HREF, useValue: '/' },\r\n AuthGuard,\r\n UsersService,\r\n ],\r\n})\r\nexport class AppModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\nimport { NbAuthService } from '@nebular/auth';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n\r\n constructor(private authService: NbAuthService, private router: Router) {\r\n }\r\n\r\n canActivate() {\r\n return this.authService.isAuthenticated()\r\n .pipe(\r\n tap(authenticated => {\r\n if (!authenticated) {\r\n this.router.navigate(['auth/login']);\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { NbAuthService } from '@nebular/auth';\r\n\r\nexport class User {\r\n id: number;\r\n email: string;\r\n password: string;\r\n roleId?: number;\r\n isDeleted?: boolean;\r\n createdAt?: Date;\r\n updatedAt?: Date;\r\n projects?: [];\r\n}\r\n\r\nexport class Role {\r\n id: number;\r\n roleName: string;\r\n createdAt?: Date;\r\n updatedAt?: Date;\r\n}\r\n\r\n@Injectable()\r\nexport class UsersService {\r\n BASE_URL: string = '/webapi/api/Users';\r\n token: any;\r\n currentUser: User;\r\n currentRole: Role;\r\n roles: Array;\r\n\r\n constructor(private http: HttpClient, private nbAuthService: NbAuthService) {}\r\n\r\n load(): Observable {\r\n return this.http.get(this.BASE_URL + '/GetAllUsers');\r\n }\r\n\r\n loadRoles(): Observable {\r\n return this.http.get(this.BASE_URL + '/GetUserRoles');\r\n }\r\n\r\n setCurrentUserAndRole(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (this.currentUser) {\r\n resolve(this.currentUser);\r\n } else {\r\n this.loadRoles().subscribe(roles => {\r\n this.roles = roles;\r\n\r\n this.nbAuthService.getToken().subscribe(res => {\r\n this.token = res.getValue();\r\n });\r\n\r\n this.http.get(this.BASE_URL + '/GetUserById/' + this.token).subscribe((user: User) => {\r\n this.currentUser = user;\r\n this.currentRole = this.roles.find(r => r.id === user.roleId);\r\n resolve(user);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n getCurrentUser(): Promise {\r\n return this.setCurrentUserAndRole().then((user) => {\r\n return user;\r\n });\r\n }\r\n\r\n deactivateUser(userId): Observable {\r\n const httpParams = new HttpParams().set('userId', userId);\r\n const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');\r\n const options: {\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType: 'text';\r\n withCredentials?: boolean;\r\n } = { params: httpParams, headers: headers, responseType: 'text' };\r\n return this.http.delete(this.BASE_URL + '/DeleteUser', options);\r\n }\r\n\r\n edit(user): Observable {\r\n const options: {\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'body';\r\n params?: HttpParams | {\r\n [param: string]: string | string[];\r\n };\r\n reportProgress?: boolean;\r\n responseType: 'text';\r\n withCredentials?: boolean;\r\n } = { responseType: 'text' };\r\n\r\n const fields = {\r\n id: user.id,\r\n roleId: parseInt(user.roleId),\r\n isDeleted: user.isDeleted ? true : false,\r\n };\r\n\r\n return this.http.put(this.BASE_URL + '/UpdateUser', fields, options);\r\n }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Akveo. All Rights Reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n */\r\n// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n};\r\n","/**\r\n * @license\r\n * Copyright Akveo. All Rights Reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n */\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""}