From 2fefe2ed9ee24fd0db8f6176de4e2db89b18f69d Mon Sep 17 00:00:00 2001 From: sechan100 Date: Sun, 10 Nov 2024 12:23:51 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=A0=84=EC=B2=B4=20=EB=B7=B0=20?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EA=B0=9C=ED=8E=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MUI를 사용하여 tabs를 구현 - 레이아웃이 깨지거나 침범하는 부분들을 깔끔하게 정리 --- esbuild.config.mjs | 3 +- package-lock.json | 250 +++++++++++++++++- package.json | 1 + src/app/DailyRoutineView.tsx | 93 +++---- src/app/MUIThemProvider.tsx | 54 ++++ src/app/obsidian-view.tsx | 1 - src/features/days/index.ts | 1 - .../{days/DaysNav.tsx => weeks/Weeks.tsx} | 236 +++++++---------- src/features/weeks/index.ts | 1 + src/features/weeks/load-weeks.tsx | 82 ++++++ src/features/weeks/types.ts | 7 + .../days-nav.scss => weeks/weeks-style.scss} | 0 src/pages/routine-note/RoutineNote.tsx | 113 +++----- src/shared/components/Icon.tsx | 10 +- src/shared/components/Menu.tsx | 17 +- src/shared/components/PercentageCircle.tsx | 7 +- src/shared/components/Touchable.tsx | 4 +- src/shared/day.ts | 8 + src/widgets/tasks/constants.ts | 8 - src/widgets/tasks/dnd-context.tsx | 9 +- src/widgets/tasks/ui/AbstractTask.tsx | 10 +- styles.css | 34 +-- 22 files changed, 615 insertions(+), 334 deletions(-) create mode 100644 src/app/MUIThemProvider.tsx delete mode 100644 src/features/days/index.ts rename src/features/{days/DaysNav.tsx => weeks/Weeks.tsx} (54%) create mode 100644 src/features/weeks/index.ts create mode 100644 src/features/weeks/load-weeks.tsx create mode 100644 src/features/weeks/types.ts rename src/features/{days/days-nav.scss => weeks/weeks-style.scss} (100%) delete mode 100644 src/widgets/tasks/constants.ts diff --git a/esbuild.config.mjs b/esbuild.config.mjs index 0bde50a..bc50a70 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -107,7 +107,8 @@ async function copyPluginFilesTo_iCloud() { ]; const destinationDir = '/Users/sechan/Library/Mobile Documents/iCloud~md~obsidian/Documents/main/.obsidian/plugins/daily-routine-2/'; - // const destinationDir = '/Users/sechan/local/obsidian/plugin-dev'; + // const destinationDir = '/Users/sechan/Library/Mobile Documents/iCloud~md~obsidian/Documents/cloud-test/.obsidian/plugins/daily-routine-2/'; + // 현재 파일의 URL을 파일 경로로 변환 const __filename = fileURLToPath(import.meta.url); diff --git a/package-lock.json b/package-lock.json index 1ec67ec..e7ee81b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@mui/material": "^6.1.6", "@popperjs/core": "^2.11.8", "clsx": "^2.1.1", "esbuild-sass-plugin": "^3.3.1", @@ -194,9 +195,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -935,6 +936,213 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.6.tgz", + "integrity": "sha512-nz1SlR9TdBYYPz4qKoNasMPRiGb4PaIHFkzLzhju0YVYS5QSuFF2+n7CsiHMIDcHv3piPu/xDWI53ruhOqvZwQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/material": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.6.tgz", + "integrity": "sha512-1yvejiQ/601l5AK3uIdUlAVElyCxoqKnl7QA+2oFB/2qYPWfRwDgavW/MoywS5Y2gZEslcJKhe0s2F3IthgFgw==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/core-downloads-tracker": "^6.1.6", + "@mui/system": "^6.1.6", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.6", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.3.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^6.1.6", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/@mui/private-theming": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.6.tgz", + "integrity": "sha512-ioAiFckaD/fJSnTrUMWgjl9HYBWt7ixCh7zZw7gDZ+Tae7NuprNV6QJK95EidDT7K0GetR2rU3kAeIR61Myttw==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/utils": "^6.1.6", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.6.tgz", + "integrity": "sha512-I+yS1cSuSvHnZDBO7e7VHxTWpj+R7XlSZvTC4lS/OIbUNJOMMSd3UDP6V2sfwzAdmdDNBi7NGCRv2SZ6O9hGDA==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@emotion/cache": "^11.13.1", + "@emotion/serialize": "^1.3.2", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.6.tgz", + "integrity": "sha512-qOf1VUE9wK8syiB0BBCp82oNBAVPYdj4Trh+G1s+L+ImYiKlubWhhqlnvWt3xqMevR+D2h1CXzA1vhX2FvA+VQ==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/private-theming": "^6.1.6", + "@mui/styled-engine": "^6.1.6", + "@mui/types": "^7.2.19", + "@mui/utils": "^6.1.6", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.19", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz", + "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.6.tgz", + "integrity": "sha512-sBS6D9mJECtELASLM+18WUcXF6RH3zNxBRFeyCRg8wad6NbyNrdxLuwK+Ikvc38sTZwBzAz691HmSofLqHd9sQ==", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/types": "^7.2.19", + "@types/prop-types": "^15.7.13", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1337,14 +1545,12 @@ "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "devOptional": true + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "node_modules/@types/react": { "version": "18.3.8", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.8.tgz", "integrity": "sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==", - "devOptional": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1359,6 +1565,14 @@ "@types/react": "*" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -2424,6 +2638,15 @@ "node": ">=6.0.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dot-prop": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", @@ -7515,6 +7738,21 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/readdirp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", diff --git a/package.json b/package.json index 14b5406..9315235 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@mui/material": "^6.1.6", "@popperjs/core": "^2.11.8", "clsx": "^2.1.1", "esbuild-sass-plugin": "^3.3.1", diff --git a/src/app/DailyRoutineView.tsx b/src/app/DailyRoutineView.tsx index b889414..b173472 100644 --- a/src/app/DailyRoutineView.tsx +++ b/src/app/DailyRoutineView.tsx @@ -1,18 +1,31 @@ /** @jsxImportSource @emotion/react */ +import { css } from "@emotion/react"; import { RoutineNote } from 'pages/routine-note'; import { RoutineCalendar } from "pages/calendar"; -import { useCallback, useMemo } from "react"; +import { useCallback, useEffect, useMemo } from "react"; import { Day } from "shared/day"; import { usePageRoute } from "./use-page-route"; import "./style.css"; import { DailyRoutineObsidianView } from './obsidian-view'; import { useLeaf } from 'shared/view/react-view'; import { Button } from 'shared/components/Button'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import { MUIThemeProvider } from './MUIThemProvider'; +import { Box } from '@mui/material'; +import { Icon } from "shared/components/Icon"; -const pageNavbarHeight = 50; +const tabsHeight = "50px"; +const tabsBottomGap = "25px"; +const tabCss = css({ + boxShadow: "none !important", + backgroundColor: "transparent !important", + minHeight: "0 !important", + fontSize: "0.7em", +}) // FIXME: setPage로 렌더링 1번, cmd를 적용해서 다시 렌더링까지 총 2번의 렌더링이 발생한다. 추후 여건되면 최적화 가능 @@ -24,6 +37,9 @@ export const DailyRoutineView = () => { }, [routePage]); const { view } = useLeaf(); + useEffect(() => { + view.contentEl.style.padding = "0"; + }, [view]); const viewContentRealHeight = useMemo(() => { const viewContainer = view.contentEl; @@ -36,56 +52,35 @@ export const DailyRoutineView = () => { return ( -
- {page === "note" && } - {page === "calendar" && } -
+
- routePage("note", Day.now())}>Routine Note - routePage("calendar", Day.now())}>Calendar - routePage("achivement", Day.now())}>Achivement + {page === "note" && } + {page === "calendar" && }
-
+ routePage(value, Day.now())} + css={{ + position: "fixed", + height: tabsHeight, + width: "100%", + left: "0", + bottom: tabsBottomGap, + }} + > + } iconPosition="start" label="Note" css={tabCss} value={"note"} /> + } iconPosition="start" label="Calendar" css={tabCss} value={"calendar"} /> + } iconPosition="start" label="Achivement" css={tabCss} value={"achivement"} /> + + ); } - - -interface ViewNavItemProps { - active: boolean; - onClick: () => void; - children: React.ReactNode; -} -const ViewNavItem = ({ active, onClick, children }: ViewNavItemProps) => { - return ( - - ); -} \ No newline at end of file diff --git a/src/app/MUIThemProvider.tsx b/src/app/MUIThemProvider.tsx new file mode 100644 index 0000000..39a2385 --- /dev/null +++ b/src/app/MUIThemProvider.tsx @@ -0,0 +1,54 @@ +import { Theme, ThemeProvider, createTheme } from '@mui/material/styles'; +import _ from 'lodash'; +import { useCallback, useEffect, useMemo, useState } from 'react'; + + + + + +interface MUIThemeProviderProps { + children: React.ReactNode; +} +export const MUIThemeProvider = (props: MUIThemeProviderProps) => { + const body = useMemo(() => { + const body = document.querySelector("body"); + if(!body) throw new Error("Cannot find body element"); + return body; + }, []); + + const extractMUIThemeFromBodyEl = useCallback(() => { + const computedStyle = getComputedStyle(body); + return createTheme({ + palette: { + primary: { + main: computedStyle.getPropertyValue('--color-accent-1').trim(), + }, + // secondary: {}, + }, + }); + }, [body]); + + const [ theme, setTheme ] = useState(extractMUIThemeFromBodyEl()); + + useEffect(() => { + const updateThemeColor = _.debounce(() => { + setTheme(extractMUIThemeFromBodyEl()) + }, 100); + + const observer = new MutationObserver((mutationsList) => { + for (const mutation of mutationsList) { + if (mutation.type === 'attributes' && mutation.attributeName === 'style') { + updateThemeColor(); + } + } + }); + observer.observe(body, { attributes: true, attributeFilter: ['style'] }); + }, [body, extractMUIThemeFromBodyEl, theme]); + + + return ( + + {props.children} + + ) +} \ No newline at end of file diff --git a/src/app/obsidian-view.tsx b/src/app/obsidian-view.tsx index 29cbd4f..59582bd 100644 --- a/src/app/obsidian-view.tsx +++ b/src/app/obsidian-view.tsx @@ -4,7 +4,6 @@ import { DailyRoutineView } from "./DailyRoutineView"; - export class DailyRoutineObsidianView extends ReactView { static VIEW_TYPE = "daily-routine-view"; diff --git a/src/features/days/index.ts b/src/features/days/index.ts deleted file mode 100644 index 203ec1a..0000000 --- a/src/features/days/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { DaysNav } from "./DaysNav"; \ No newline at end of file diff --git a/src/features/days/DaysNav.tsx b/src/features/weeks/Weeks.tsx similarity index 54% rename from src/features/days/DaysNav.tsx rename to src/features/weeks/Weeks.tsx index 44e6ee1..80169c3 100644 --- a/src/features/days/DaysNav.tsx +++ b/src/features/weeks/Weeks.tsx @@ -1,98 +1,26 @@ /** @jsxImportSource @emotion/react */ import { Day } from "shared/day"; -import clsx from "clsx"; import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import "./days-nav.scss"; import { PercentageCircle } from "shared/components/PercentageCircle"; import { Navigation } from 'swiper/modules'; import { Swiper, SwiperClass, SwiperRef, SwiperSlide } from 'swiper/react'; import 'swiper/swiper-bundle.css'; -import { routineNoteArchiver, routineNoteService, useRoutineNote } from 'entities/note'; +import { useRoutineNote } from 'entities/note'; import { dr } from "shared/daily-routine-bem"; -import { css } from "@emotion/react"; +import { loadWeeks } from "./load-weeks"; -// week를 로드하는 함수. option은 앞뒤로 추가할 week의 수. prev: -1, next: 2라면 총 4개의 week를 로드한다. -const loadWeek = async (day: Day, {prev, next}: {prev: number, next: number} = {prev: 0, next: 0}) => { - const start = day.subtractOnClone(prev*7, "day"); - const end = day.addOnClone((next + 1)*7, "day").subtract(1, "day"); // week의 시작날짜는 포함이기에 마지막에 하나 빼줘야함. - - // 존재하는 루틴 노트들 불러오기 - const notes = (await routineNoteArchiver.loadBetween(start, end)).map(routineNote => { - const day = routineNote.day; - const percentage = routineNoteService.getTaskCompletion(routineNote).percentageRounded; - return {day, percentage}; - }); - - /** - * notes은 이미 존재하는 note들만 가져오기때문에, 원래 요청된 사이즈만큼의 노트가 존재하지 않을 수 있음. - * 때문에 빈노트 element들을 만들어서 채워주어야하는데, 이 때 사용될 수 있는 요청된 사이즈만큼의 배열이 채워졌는지 확인하는 함수. - */ - const isRequestedSize = () => notes.length === (prev+next+1)*7; - - /** - * notes의 시작과 끝을 먼저 정해진 경계값으로 채우고, 사이를 매꾸는 방식을 사용한다. - * 다만, notes중에서 비어있는 노트들이 이 경계값인 경우가 있을 수 있다. - * 때문에 이를 확인해서 경계값이 비어있는 경우 먼저 채워준다. - */ - if(notes.length === 0){ // 아예 가져온 노트가 없다면 경계가 모두 없음 - notes.push({day: start.clone(), percentage: 0}); - notes.push({day: end.clone(), percentage: 0}); - } else { - if(!notes[0].day.isSameDay(start)){ - notes.unshift({day: start.clone(), percentage: 0}); - } - if(!notes[notes.length-1].day.isSameDay(end)){ - notes.push({day: end.clone(), percentage: 0}); - } - } - - // 매꾸기 - for(let i = 0; i+1 < notes.length; i++){ - const note = notes[i]; - const nextNote = notes[i+1]; - const isContinueous = () => note.day.addOnClone(1, "day").isSameDay(nextNote.day); - if(!isContinueous()){ - const emptyNote = {day: note.day.addOnClone(1, "day"), percentage: 0}; - notes.splice(i+1, 0, emptyNote); - } - if(isRequestedSize()) break; - } - - // 하나의 배열에 담겨있는 day들을 week의 2차원 배열로 변환 - const weeks: {day:Day, percentage:number}[][] = new Array(prev+next+1).fill([]).map(() => []); - let weekIdx = 0; - for(const currentDay of notes){ - // 최초 week에 추가 - const currentWeek = weeks[weekIdx]; - if(currentWeek.length === 0){ - currentWeek.push(currentDay); - continue; - } - // 만약 week가 꽉 찼다면 weekIdx를 증가시키고 다음 week에 추가 - if(weeks[weekIdx].length === 7){ - weekIdx++; - if(weekIdx >= weeks.length) break; - weeks[weekIdx].push(currentDay); - continue; - } - weeks[weekIdx].push(currentDay); - } - return weeks; -}; - - -interface DaysNavProps { +interface WeeksProps { currentDay: Day; /** * 현재 보고있는 day의 percentage는, note page에서 사용자가 task를 클릭할 때마다 동적으로 변경될 수 있다. */ currentDayPercentage: number; - resizeObserver?: (entry: ResizeObserverEntry) => void; onDayClick?: (day: Day, event?: React.MouseEvent) => void; + className?: string; } -export const DaysNav = ({ currentDay, resizeObserver, currentDayPercentage, onDayClick }: DaysNavProps) => { +export const Weeks = ({ currentDay, currentDayPercentage, onDayClick, className }: WeeksProps) => { const [ weeks, setWeeks ] = useState<{day:Day, percentage:number}[][]>([]); const currentWeekStartDay = useMemo(() => currentDay.clone(m => m.startOf("week")), [currentDay]); const swiperRef = useRef(null); @@ -136,7 +64,7 @@ export const DaysNav = ({ currentDay, resizeObserver, currentDayPercentage, onDa if(ignore) return; // weeks에 currentWeekStartDay가 포함되어있지 않다면, 해당 week를 로드한다. if(!weeks.some(week => week.some(({day}) => day.isSameDay(currentWeekStartDay)))){ - loadWeek(currentWeekStartDay, {prev: 1, next: 1}) // 해당 week와 앞뒤로 하나씩의 week를 로드한다. + loadWeeks(currentWeekStartDay, {prev: 1, next: 1}) // 해당 week와 앞뒤로 하나씩의 week를 로드한다. .then(weeks => { setWeeks(weeks); // 새롭게 3개의 week를 로드했으므로, swiper를 중간으로 이동시킨다. @@ -168,7 +96,7 @@ export const DaysNav = ({ currentDay, resizeObserver, currentDayPercentage, onDa */ const onSlideToEdge = useCallback(async(edge: "start" | "end") => { const needWeekStartDay = edge === "start" ? weeks[0][0].day.subtractOnClone(1, "week") : weeks[weeks.length-1][0].day.addOnClone(1, "week"); - const newWeek = (await loadWeek(needWeekStartDay))[0]; // 새로운 week 하나만 받아옴으로 0번으로 가져옴 + const newWeek = (await loadWeeks(needWeekStartDay))[0]; // 새로운 week 하나만 받아옴으로 0번으로 가져옴 if(edge === "start"){ updateWeeksRef.current = () => { setWeeks([newWeek, ...weeks]); @@ -201,40 +129,37 @@ export const DaysNav = ({ currentDay, resizeObserver, currentDayPercentage, onDa if(onDayClick) onDayClick(day, event); }, [onDayClick, setClientNote]); - const bem = useMemo(() => dr("days-nav"), []); + const bem = useMemo(() => dr("weeks"), []); return ( -
e.stopPropagation()} + css={{ + padding: "0 5px", // nav buttons - & .swiper-button-next, & .swiper-button-prev { - color: var(--color-accent-1); - + "& .swiper-button-next, & .swiper-button-prev": { + display: "flex", + color: "var(--color-accent-1)", // 화살표 사이즈 - &::after { - font-size: 2em; + "&::after": { + fontSize: "1em", + fontWeight: "bold" } - } - `} - className={bem()} - ref={ref => { - if(!ref) return; - const observer = new ResizeObserver(entries => { - for (const entry of entries) { - if (entry.contentRect.width < 540) { - ref.classList.add("hidden-navigation"); - } else { - ref.classList.remove("hidden-navigation"); - } - resizeObserver?.(entry); + }, + ".swiper-button-next": { + right: "0px", + justifyContent: "end", + }, + ".swiper-button-prev": { + left: "0px", + justifyContent: "start", + }, + ".is-mobile &": { + ".swiper-button-next, .swiper-button-prev": { + display: "none" } - }); - observer.observe(ref); + }, }} > {weeks.map((week, idx) => { return ( - +
{week.map(({day, percentage}, idx) => { return (
_onDayClick(day, e)} >
{day.format("M/D").toUpperCase()}
Promise<{ day: Day; percentage: number; }[][]>; + + +// week를 로드하는 함수. option은 앞뒤로 추가할 week의 수. prev: -1, next: 2라면 총 4개의 week를 로드한다. +export const loadWeeks: LoadWeeks = async (day, { prev, next } = { prev: 0, next: 0 }) => { + const start = day.subtractOnClone(prev * 7, "day"); + const end = day.addOnClone((next + 1) * 7, "day").subtract(1, "day"); // week의 시작날짜는 포함이기에 마지막에 하나 빼줘야함. + + const existNotes = await routineNoteArchiver.loadBetween(start, end); + const nodes: WeeksDayNode[] = existNotes.map(routineNote => { + const day = routineNote.day; + const percentage = routineNoteService.getTaskCompletion(routineNote).percentageRounded; + return { day, percentage }; + }) + + nodes.sort((a, b) => a.day.isBefore(b.day) ? -1 : 1); + + + /** + * notes은 이미 존재하는 note들만 가져오기때문에, 원래 요청된 사이즈만큼의 노트가 존재하지 않을 수 있음. + * 때문에 빈노트 element들을 만들어서 채워주어야하는데, 이 때 사용될 수 있는 요청된 사이즈만큼의 배열이 채워졌는지 확인하는 함수. + */ + const isRequestedSize = () => nodes.length === (prev + next + 1) * 7; + + /** + * notes의 시작과 끝을 먼저 정해진 경계값으로 채우고, 사이를 매꾸는 방식을 사용한다. + * 다만, notes중에서 비어있는 노트들이 이 경계값인 경우가 있을 수 있다. + * 때문에 이를 확인해서 경계값이 비어있는 경우 먼저 채워준다. + */ + if (nodes.length === 0) { // 아예 가져온 노트가 없다면 경계가 모두 없음 + nodes.push({ day: start.clone(), percentage: 0 }); + nodes.push({ day: end.clone(), percentage: 0 }); + } else { + if (!nodes[0].day.isSameDay(start)) { + nodes.unshift({ day: start.clone(), percentage: 0 }); + } + if (!nodes[nodes.length - 1].day.isSameDay(end)) { + nodes.push({ day: end.clone(), percentage: 0 }); + } + } + + // 매꾸기 + for (let i = 0; i + 1 < nodes.length; i++) { + const note = nodes[i]; + const nextNote = nodes[i + 1]; + const isContinueous = () => note.day.addOnClone(1, "day").isSameDay(nextNote.day); + if (!isContinueous()) { + const emptyNote = { day: note.day.addOnClone(1, "day"), percentage: 0 }; + nodes.splice(i + 1, 0, emptyNote); + } + if (isRequestedSize()) break; + } + + // 하나의 배열에 담겨있는 day들을 week의 2차원 배열로 변환 + const weeks: { day: Day; percentage: number; }[][] = new Array(prev + next + 1).fill([]).map(() => []); + let weekIdx = 0; + for (const currentDay of nodes) { + // 최초 week에 추가 + const currentWeek = weeks[weekIdx]; + if (currentWeek.length === 0) { + currentWeek.push(currentDay); + continue; + } + // 만약 week가 꽉 찼다면 weekIdx를 증가시키고 다음 week에 추가 + if (weeks[weekIdx].length === 7) { + weekIdx++; + if (weekIdx >= weeks.length) break; + weeks[weekIdx].push(currentDay); + continue; + } + weeks[weekIdx].push(currentDay); + } + + return weeks; +}; diff --git a/src/features/weeks/types.ts b/src/features/weeks/types.ts new file mode 100644 index 0000000..f29fa93 --- /dev/null +++ b/src/features/weeks/types.ts @@ -0,0 +1,7 @@ +import { Day } from "shared/day"; + + +export type WeeksDayNode = { + day: Day; + percentage: number; +}; diff --git a/src/features/days/days-nav.scss b/src/features/weeks/weeks-style.scss similarity index 100% rename from src/features/days/days-nav.scss rename to src/features/weeks/weeks-style.scss diff --git a/src/pages/routine-note/RoutineNote.tsx b/src/pages/routine-note/RoutineNote.tsx index 8247f57..4466b01 100644 --- a/src/pages/routine-note/RoutineNote.tsx +++ b/src/pages/routine-note/RoutineNote.tsx @@ -1,7 +1,7 @@ /** @jsxImportSource @emotion/react */ import { RoutineNote as RoutineNoteEntity, routineNoteService, routineNoteArchiver, UseRoutineNoteProvider, useRoutineNote } from 'entities/note'; import { useStartRoutineModal } from "features/routine"; -import { DaysNav } from "features/days"; +import { Weeks } from "features/weeks"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { Day } from "shared/day"; import { dr } from "shared/daily-routine-bem"; @@ -54,8 +54,6 @@ const RoutineNotePage = () => { const { note, setNote } = useRoutineNote(); const percentage = useMemo(() => routineNoteService.getTaskCompletion(note).percentageRounded, [note]); - const mainRef = useRef(null); - const AddTodoModal = useAddTodoModal(); const StartRoutineModal = useStartRoutineModal(); @@ -84,76 +82,53 @@ const RoutineNotePage = () => { const bem = useMemo(() => dr("note"), []); return (
- { - const navHeight = entry.contentRect.height; - if(mainRef.current){ - mainRef.current.style.height = `calc(100% - ${navHeight}px)`; - } - }} + -
-
-

- {note.day.getBaseFormat() + " / " + note.day.getDayOfWeek()} -

-
- - -
-
-
- - {note.tasks.map(task => { - switch(task.type){ - case "routine": return - case "todo": return - default: task as never; - } - })} - -
+
+ + {note.day.getBaseFormat() + " / " + note.day.getDayOfWeek()} + + +
+
+ + {note.tasks.map(task => { + switch(task.type){ + case "routine": return + case "todo": return + default: task as never; + } + })} +
diff --git a/src/shared/components/Icon.tsx b/src/shared/components/Icon.tsx index cc940e1..dc2aa3d 100644 --- a/src/shared/components/Icon.tsx +++ b/src/shared/components/Icon.tsx @@ -8,6 +8,7 @@ import React, { useEffect, useRef } from "react"; interface IconProps { icon: string; accent?: boolean; + color?: string; className?: string; } export const Icon = React.memo((props: IconProps) => { @@ -25,11 +26,14 @@ export const Icon = React.memo((props: IconProps) => { }, [props]); return ( - ) diff --git a/src/shared/components/Menu.tsx b/src/shared/components/Menu.tsx index 24271c6..93e898c 100644 --- a/src/shared/components/Menu.tsx +++ b/src/shared/components/Menu.tsx @@ -10,27 +10,30 @@ import { Icon } from "./Icon"; interface MenuComponentProps { onMenuShow: (menu: Menu) => void; + icon?: string; + iconAccent?: boolean; } -export const MenuComponent = (props: MenuComponentProps) => { +export const MenuComponent = ({ + onMenuShow, + icon = "menu", + iconAccent = false +}: MenuComponentProps) => { const openMenu = useCallback((e: React.MouseEvent) => { const m = new Menu(); - props.onMenuShow(m); + onMenuShow(m); m.showAtMouseEvent(e.nativeEvent); - }, [props]); + }, [onMenuShow]); return (
- +
) } \ No newline at end of file diff --git a/src/shared/components/PercentageCircle.tsx b/src/shared/components/PercentageCircle.tsx index ec13abb..e2c4738 100644 --- a/src/shared/components/PercentageCircle.tsx +++ b/src/shared/components/PercentageCircle.tsx @@ -1,3 +1,4 @@ +import clsx from "clsx"; import React from "react"; const cleanPercentage = (percentage: number) => { @@ -40,12 +41,14 @@ interface PercentageCircleProps { percentage: number; text: string; transition?: boolean; + width?: string; + className?: string; } -export const PercentageCircle = React.memo(({ percentage, text, transition=true }: PercentageCircleProps) => { +export const PercentageCircle = React.memo(({ percentage, width, className, text, transition=true }: PercentageCircleProps) => { const pct = cleanPercentage(percentage); const color = pct > 70 ? "var(--color-accent-1)" : "var(--color-accent-2)"; return ( - + diff --git a/src/shared/components/Touchable.tsx b/src/shared/components/Touchable.tsx index f41c361..e3fb0f3 100644 --- a/src/shared/components/Touchable.tsx +++ b/src/shared/components/Touchable.tsx @@ -24,7 +24,7 @@ interface TouchableProps { // pressed 상태가 변경될 때 호출 onChangePressedState?: (isPressed: boolean) => void; - // click인지, long press인지 판단하기 위한 지연시간(default: 200ms) + // click인지, long press인지 판단하기 위한 지연시간 longPressStartDelay?: number; // long press가 시작될 때 호출 @@ -43,7 +43,7 @@ export const Touchable = memo(forwardRef((props: const clickPreventRef = useRef(false); const performanceRef = useRef(0); - const startDelay = useMemo(() => props.longPressStartDelay??100, [props.longPressStartDelay]); + const startDelay = useMemo(() => props.longPressStartDelay??150, [props.longPressStartDelay]); const longPressDelay = useMemo(() => props.longPressDelay??500, [props.longPressDelay]); const isMovedRef = useRef(false); const isTouchRef = useRef(false); diff --git a/src/shared/day.ts b/src/shared/day.ts index ec3e8a0..8b2a946 100644 --- a/src/shared/day.ts +++ b/src/shared/day.ts @@ -45,6 +45,14 @@ export class Day { return this.#moment.isSame(moment(), 'day'); } + isBefore(day: Day){ + return this.#moment.isBefore(day.#moment); + } + + isAfter(day: Day){ + return this.#moment.isAfter(day.#moment); + } + add(amount: number, unit: moment.unitOfTime.DurationConstructor){ this.#moment.add(amount, unit); return this; diff --git a/src/widgets/tasks/constants.ts b/src/widgets/tasks/constants.ts deleted file mode 100644 index c0ccd65..0000000 --- a/src/widgets/tasks/constants.ts +++ /dev/null @@ -1,8 +0,0 @@ - - - - -/** - * 모바일에서 드래그를 시작하기 위한 딜레이 시간 - */ -export const DRAG_PRESS_DELAY = 500; \ No newline at end of file diff --git a/src/widgets/tasks/dnd-context.tsx b/src/widgets/tasks/dnd-context.tsx index 45dc4f0..aaae174 100644 --- a/src/widgets/tasks/dnd-context.tsx +++ b/src/widgets/tasks/dnd-context.tsx @@ -1,6 +1,5 @@ /** @jsxImportSource @emotion/react */ -import { Task } from "entities/note"; -import React, { CSSProperties, useEffect, useMemo, useRef } from "react"; +import React, { useEffect, useMemo, useRef } from "react"; import { HTML5Backend } from "react-dnd-html5-backend"; import { TouchBackend } from "react-dnd-touch-backend"; import { @@ -11,7 +10,6 @@ import { createTransition, } from "react-dnd-multi-backend"; import { Preview } from "react-dnd-preview"; -import { DRAG_PRESS_DELAY } from "./constants"; import { TaskPreview } from "./ui/TaskPreview"; import { useDndScroll } from "./use-dnd-scroll"; import { useDragDropManager } from "react-dnd"; @@ -49,7 +47,7 @@ export const TaskDndContext = ({ children }: {children: React.ReactNode }) => { backend: TouchBackend, options: { enableMouseEvents: false, - delayTouchStart: DRAG_PRESS_DELAY, + delayTouchStart: 500, ignoreContextMenu: false }, transition: TouchTransition @@ -99,10 +97,11 @@ const ScrollComponent = ({ children }: ScrollComponentProps) => { return (
{children} diff --git a/src/widgets/tasks/ui/AbstractTask.tsx b/src/widgets/tasks/ui/AbstractTask.tsx index 55cdbdd..beafb24 100644 --- a/src/widgets/tasks/ui/AbstractTask.tsx +++ b/src/widgets/tasks/ui/AbstractTask.tsx @@ -3,7 +3,6 @@ import { RoutineNote, routineNoteArchiver, routineNoteService, Task as TaskEntit import React, { useCallback, useMemo, useRef, useState } from "react" import { useRoutineNote } from "entities/note"; import _ from "lodash"; -import { DRAG_PRESS_DELAY } from "../constants"; import { Touchable } from 'shared/components/Touchable'; import { dr } from 'shared/daily-routine-bem'; import { Icon } from 'shared/components/Icon'; @@ -11,7 +10,6 @@ import { TaskName } from './TaskName'; import { Checkbox } from './Checkbox'; import { css } from '@emotion/react'; import { useTaskDnd } from '../hooks/use-task-dnd'; -import { moment } from 'obsidian'; // [[ Styles @@ -26,6 +24,7 @@ const taskPressedAndDraggingStyle = css({ height: "100%", borderRadius: "5px", backgroundColor: "hsla(var(--color-accent-1-hsl), 0.5)", + transition: "background-color 0.5s", } }) @@ -128,12 +127,15 @@ export const AbstractTask = React.memo(({ className, task, touchAction: "manipulation", userSelect: "none", }, + "&::after": { + content: "''", + }, "&.dr-task--pressed, &.dr-task--dragging": taskPressedAndDraggingStyle }} > ({ className, task, e.stopPropagation(); }} > - +
) diff --git a/styles.css b/styles.css index 1593e85..6f629bf 100644 --- a/styles.css +++ b/styles.css @@ -67,38 +67,6 @@ background-color: #e6e6e6; } -/* src/features/days/days-nav.scss */ -.dr-days { - display: flex; - width: 100%; - overflow-x: scroll; - scrollbar-width: none; - padding-top: 5px; -} -.dr-days .dr-days__items { - display: flex; - justify-content: space-between; - align-items: center; - gap: 0.3em; - flex-wrap: nowrap; -} -.dr-days .dr-days__items .dr-days__item { - display: inline-block; - position: relative; - height: auto; - background: none; - padding: 0 0em; - cursor: pointer; - border-radius: 7px; -} -.dr-days .dr-days__items .dr-days__item .dr-days__day-of-week { - text-align: center; - font-size: 0.8em; -} -.dr-days .dr-days__items .dr-days__item.dr-days__current { - box-shadow: inset 0 0 0.6em 0.2em rgba(0, 0, 0, 0.1) !important; -} - /* node_modules/swiper/swiper-bundle.css */ @font-face { font-family: "swiper-icons"; @@ -902,4 +870,4 @@ body { calc(var(--accent-s) * 1.05), calc(var(--accent-l) * 1.29); } -/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2ZlYXR1cmVzL3JvdXRpbmUvZGF5cy1vZi1tb250aC1jYWxlbmRhci1zdHlsZS5zY3NzIiwgInNyYy9mZWF0dXJlcy9kYXlzL2RheXMtbmF2LnNjc3MiLCAibm9kZV9tb2R1bGVzL3N3aXBlci9zd2lwZXItYnVuZGxlLmNzcyIsICJzcmMvZmVhdHVyZXMvY2FsZW5kYXIvY2FsZW5kYXItc3R5bGUuc2NzcyIsICJzcmMvYXBwL3N0eWxlLmNzcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8g7IOJ7IOBIOuzgOyImFxuJGNvbG9yLWJvcmRlcjogI2EwYTA5NjtcbiRjb2xvci1kaXNhYmxlZC1iZzogI2YwZjBmMDtcbiRjb2xvci1kaXNhYmxlZC10ZXh0OiAjYWJhYmFiO1xuJGNvbG9yLWRpc2FibGVkLW5laWdoYm9yOiAjY2RjZGNkO1xuJGNvbG9yLWhvdmVyLWJnOiAjZTZlNmU2O1xuXG5cblxuLy8g66eI7KeA66eJ64Kg7KecIOyEoO2DnSDrsoTtirwg7YOA7J28XG4uZHItZGF5cy1vZi1tb250aC1vcHRpb24tY2FsZW5kYXIge1xuICAmX19sYXN0LWRheS10aWxlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgJi0tYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudC0xKSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG4vLyByZWFjdC1jYWxlbmRhciDquLDrs7gg7Iqk7YOA7J28XG4uZHItZGF5cy1vZi1tb250aC1vcHRpb24tY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1ib3JkZXI7XG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICBsaW5lLWhlaWdodDogMS4xMjVlbTtcblxuICAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICY6ZW5hYmxlZDpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG59XG5cbi8vIOyalOydvFxuLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5cyB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRyLWRheXMtb2YtbW9udGgtb3B0aW9uLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla051bWJlcnMgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLy8g64Kg7KecIO2DgOydvCDsiqTtg4Dsnbxcbi5kci1kYXlzLW9mLW1vbnRoLW9wdGlvbi1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXMge1xuICBnYXA6IDAuNWVtIDA7XG5cbiAgJl9fZGF5IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgfVxuXG4gIGFiYnIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbi8vIDEsIDIsIDMsIDTsnbwg7YOA7J28XG4uZHItZGF5cy1vZi1tb250aC1vcHRpb24tY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzIGJ1dHRvbjpudGgtY2hpbGQoMzIpLCBcbi5kci1kYXlzLW9mLW1vbnRoLW9wdGlvbi1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXMgYnV0dG9uOm50aC1jaGlsZCgzMyksIFxuLmRyLWRheXMtb2YtbW9udGgtb3B0aW9uLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5cyBidXR0b246bnRoLWNoaWxkKDM0KSxcbi5kci1kYXlzLW9mLW1vbnRoLW9wdGlvbi1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXMgYnV0dG9uOm50aC1jaGlsZCgzNSkge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5cbi8vIHJlYWN0LWNhbGVuZGFyIOuLpOuluCDrqqjrk6Ag7YOA7J28XG4uZHItZGF5cy1vZi1tb250aC1vcHRpb24tY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDRlbTtcbiAgcGFkZGluZzogMWVtO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMC43ZW07XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWhvdmVyLWJnO1xuICB9XG59XG4iLCAiLy8gUm91dGluZU5vdGUg7IOB64uoIERheXMgTWVudSBcbi5kci1kYXlzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICBwYWRkaW5nLXRvcDogNXB4O1xuXG4gIC5kci1kYXlzX19pdGVtcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuM2VtO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgLmRyLWRheXNfX2l0ZW0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDAgMGVtO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xuICAgICAgLmRyLWRheXNfX2RheS1vZi13ZWVrIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgfVxuICAgICAgLy8gLmRyLXBlcmNlbnRhZ2UtY2lyY2xlIHtcbiAgICAgIC8vIH1cbiAgICAgIFxuICAgICAgXG4gICAgICAvLyDtmITsnqwg7ISg7YOdXG4gICAgICAmLmRyLWRheXNfX2N1cnJlbnQge1xuICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMC42ZW0gMC4yZW0gcmdiYSgwLCAwLCAwLCAwLjEpICFpbXBvcnRhbnQ7XG4gICAgICAgIC8vIGJhY2tncm91bmQtY29sb3I6ICNkOGQ4ZDg7XG4gICAgICB9XG5cbiAgICAgIC8vIOyYpOuKmFxuICAgICAgLy8gJi5kci1kYXlzX190b2RheSB7XG4gICAgICAvLyAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tY29sb3ItYWNjZW50LTEtaHNsKSwgMSkgIWltcG9ydGFudDtcbiAgICAgIC8vIH1cbiAgICAgIFxuICAgIH1cbiAgfVxufSIsICIvKipcbiAqIFN3aXBlciAxMS4xLjE0XG4gKiBNb3N0IG1vZGVybiBtb2JpbGUgdG91Y2ggc2xpZGVyIGFuZCBmcmFtZXdvcmsgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRlZCB0cmFuc2l0aW9uc1xuICogaHR0cHM6Ly9zd2lwZXJqcy5jb21cbiAqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDI0IFZsYWRpbWlyIEtoYXJsYW1waWRpXG4gKlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKlxuICogUmVsZWFzZWQgb246IFNlcHRlbWJlciAxMiwgMjAyNFxuICovXG5cbi8qIEZPTlRfU1RBUlQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ3N3aXBlci1pY29ucyc7XG4gIHNyYzogdXJsKCdkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwgZDA5R1JnQUJBQUFBQUFaZ0FCQUFBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJHUmxSTkFBQUdSQUFBQUJvQUFBQWNpNnFIa1VkRVJVWUFBQVdnQUFBQUl3QUFBQ1FBWUFCWFIxQlBVd0FBQmhRQUFBQXVBQUFBTnVBWTcreEhVMVZDQUFBRnhBQUFBRkFBQUFCbTJmUGN6VTlUTHpJQUFBSGNBQUFBU2dBQUFHQlA5VjVSWTIxaGNBQUFBa1FBQUFDSUFBQUJZdDZGMGNCamRuUWdBQUFDekFBQUFBUUFBQUFFQUJFQlJHZGhjM0FBQUFXWUFBQUFDQUFBQUFqLy93QURaMng1WmdBQUF5d0FBQURNQUFBRDJNSHRyeVZvWldGa0FBQUJiQUFBQURBQUFBQTJFMitlb1dob1pXRUFBQUdjQUFBQUh3QUFBQ1FDOWdEemFHMTBlQUFBQWlnQUFBQVpBQUFBcmdKa0FCRnNiMk5oQUFBQzBBQUFBRm9BQUFCYUZRQVVHRzFoZUhBQUFBRzhBQUFBSHdBQUFDQUFjQUJBYm1GdFpRQUFBL2dBQUFFNUFBQUNYdkZkQndsd2IzTjBBQUFGTkFBQUFHSUFBQUNFNXM3NGhYamFZMkJrWUdBQVlwZjVIdS9qK1cyK01uQXpNWURBemFYNlFqRDYvNC8vQnhqNUdBOEF1UndNWUdrQVB5d0wxM2phWTJCa1lHQTg4UDhBZ3g0aisvOGZRRFlmQTFBRUJXZ0RBSUIyQk9vQWVOcGpZR1JnWU5CaDRHZGdZZ0FCRU1uSUFCSnpZTkFEQ1FBQUNXZ0FzUUI0Mm1OZ1lmekNPSUdCbFlHQjBZY3hqWUdCd1IxS2YyV1FaR2hoWUdCaVlHVm1nQUZHQmlRUWtPYWF3dERBb01CUXhYamcvd0VHUGNZRERBNHdOVUEyQ0Nnd3NBQUFPNEVMNmdBQWVOcGoyTTBneUFBQ3F4Z0dOV0JrWjJENC93TUEreGtEZGdBQUFIamFZMkJnWUdhQVlCa0dSZ1lRaUFIeUdNRjhGZ1lISU0zRHdNSEFCR1FyTU9neVdETEVNMVQ5L3c4VUJmRU1nTHpFLy8vL1AvNS8vZi9WL3h2K3I0ZWFBQWVNYkF4d0lVWW1JTUhFZ0tZQVlqVWNzREF3c0xLeGMzQnljZlB3OGpFUUEvZ1pCQVNGaEVWRXhjUWxKS1drWldUbDVCVVVsWlJWVk5YVU5UUVpCZ01BQU1SK0UrZ0FFUUZFQUFBQUtnQXFBQ29BTkFBK0FFZ0FVZ0JjQUdZQWNBQjZBSVFBamdDWUFLSUFyQUMyQU1BQXlnRFVBTjRBNkFEeUFQd0JCZ0VRQVJvQkpBRXVBVGdCUWdGTUFWWUJZQUZxQVhRQmZnR0lBWklCbkFHbUFiSUJ6Z0hzQUFCNDJ1Mk5NUTZDVUF5R1c1Njh4OUFuZVlZZ200TUpiaEtGYUV4SU9BVlg4QXBld1N0NEJpYzRBZmVBaWQzVk9CaXhEeGZQWUV6YTVPK1hmaTA0WUFEZ2dpVUlVTEN1RUpLOFZoTzRiU3ZwZG5rdEhJNVFDWXRkaTJzbDhablhhSGxxVXJOS3pkS2NUOGNqbHErcndaU3ZJVmN6TmllenNmblAvdXpubWZQRkJOT0RNMks3TVRRNDVZRUFacUdQODFBbUdHY0YzaVBxT29wMHIxU1BUYVRiVmtmVWU0SFhqOTd3WUUreU53V1l4d1d1NHYxdWdXSGdvM1MxWGRaRVZxV003RVQwY2ZuTEd4V2ZrZ1I0Mm8yUHZXckRNQlNGai9JSExhRjB6S2pSZ2RpVk13U2NOUkFvV1VvSDc4WTJpY0IveUlZMDlBbjZBSDJCZHUvVUIreXhvcFlzaFFpRXZudnUwZFVSZ0R0OFFlQzhQRHc3RnBqaTNmRUE0ei9QRUo2WU9CNWhLaDRkajNFdlhoeFBxSC9TS1VZM3JKN3NyWjRGWm5oMVBNQXRQaHdQNmZsMlBNSk1QRGdlUTRyWThZVDZHemFvMGVBRUE0MDlEdWdnbVRuRm5PY1NDaUVpTE1neENpVEk2Q3E1RFpVZDNRbXAxMHZPMExhTFRkMmNqTjRmT3VtbGM3bFVZYlNRY1pGa3V0Ukc3ZzZKS1pLeTBSbWRMWTY4MENEbkVKK1VNa3BGRmUxUk43bnhkVnBYckM0YVR0bmF1ck9uWWVyY1pnMllWbUxOL2QvZ2N6ZkVpbXJFL2ZzL2JPdXEyOVptbjh0bG9PUmFYZ1pnR2E3OHlPOS9jblhtMkJwYUd2cTI1RHY5UzRFOSs1U0ljOVBxdXBKS2hZRlNTbDQ3K1FjcjFtWU5BQUFBZU5wdHcwY0t3a0FBQU1EWkpBOFE3T1VKdmtMc1BmWjZ6RlZFUlB5OHFIaDJZRVIrM2kvQlA4M3ZJQkxMeVNzb0tpbXJxS3FwYTJocDYranE2UnNZR2htYm1KcVpTeTBzcmF4dGJPM3NIUnlkbkVNVTR1UjZ5eDdKSlh2ZVA3V3JEeWNBQUFBQUFBSC8vd0FDZU5wallHUmdZT0FCWWhrZ1pnSkNaZ1pOQmtZR0xRWnRJSnNGTE1ZQUFBdzNBTGdBZU5vbGl6RUtnREFRQkNjaFJiQzJzRkVSMFlENnFWUWlCQ3YvSDllekdJNlo1WEJBdzhDQksvbTVpUVFWYXVWYlhMbk9yTVp2Mm9MZEtGYThQanVydTJoSnpHYWJtT1NMek5NenZ1dHBCM040Mm1OZ1pHQmc0R0tRWXpCaFlNeEpMTWxqNEdCZ0FZb3cvUC9QQUpKaExNNnNTb1dLZldDQUF3REFqZ2JSQUFCNDJtTmdZR0JrQUlJYkNabzVJUHJtVW4waEdBMEFPOEVGVFFBQScpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG4vKiBGT05UX0VORCAqL1xuOnJvb3Qge1xuICAtLXN3aXBlci10aGVtZS1jb2xvcjogIzAwN2FmZjtcbiAgLypcbiAgLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yOiB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpO1xuICAtLXN3aXBlci13cmFwcGVyLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBpbml0aWFsO1xuICAqL1xufVxuOmhvc3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB6LWluZGV4OiAxO1xufVxuLnN3aXBlciB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgLyogRml4IG9mIFdlYmtpdCBmbGlja2VyaW5nICovXG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlciB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uc3dpcGVyLXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXN3aXBlci13cmFwcGVyLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCBpbml0aWFsKTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG4uc3dpcGVyLWFuZHJvaWQgLnN3aXBlci1zbGlkZSxcbi5zd2lwZXItaW9zIC5zd2lwZXItc2xpZGUsXG4uc3dpcGVyLXdyYXBwZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMCwgMCk7XG59XG4uc3dpcGVyLWhvcml6b250YWwge1xuICB0b3VjaC1hY3Rpb246IHBhbi15O1xufVxuLnN3aXBlci12ZXJ0aWNhbCB7XG4gIHRvdWNoLWFjdGlvbjogcGFuLXg7XG59XG4uc3dpcGVyLXNsaWRlIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5zd2lwZXItc2xpZGUtaW52aXNpYmxlLWJsYW5rIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLyogQXV0byBIZWlnaHQgKi9cbi5zd2lwZXItYXV0b2hlaWdodCxcbi5zd2lwZXItYXV0b2hlaWdodCAuc3dpcGVyLXNsaWRlIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLnN3aXBlci1hdXRvaGVpZ2h0IC5zd2lwZXItd3JhcHBlciB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGhlaWdodDtcbn1cbi5zd2lwZXItYmFja2ZhY2UtaGlkZGVuIC5zd2lwZXItc2xpZGUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi8qIDNEIEVmZmVjdHMgKi9cbi5zd2lwZXItM2Quc3dpcGVyLWNzcy1tb2RlIC5zd2lwZXItd3JhcHBlciB7XG4gIHBlcnNwZWN0aXZlOiAxMjAwcHg7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItd3JhcHBlciB7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG59XG4uc3dpcGVyLTNkIHtcbiAgcGVyc3BlY3RpdmU6IDEyMDBweDtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZSxcbi5zd2lwZXItM2QgLnN3aXBlci1jdWJlLXNoYWRvdyB7XG4gIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG59XG4vKiBDU1MgTW9kZSAqL1xuLnN3aXBlci1jc3MtbW9kZSA+IC5zd2lwZXItd3JhcHBlciB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gIC8qIEZvciBGaXJlZm94ICovXG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTtcbiAgLyogRm9yIEludGVybmV0IEV4cGxvcmVyIGFuZCBFZGdlICovXG59XG4uc3dpcGVyLWNzcy1tb2RlID4gLnN3aXBlci13cmFwcGVyOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uc3dpcGVyLWNzcy1tb2RlID4gLnN3aXBlci13cmFwcGVyID4gLnN3aXBlci1zbGlkZSB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydCBzdGFydDtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXdyYXBwZXIge1xuICBzY3JvbGwtc25hcC10eXBlOiB4IG1hbmRhdG9yeTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci13cmFwcGVyIHtcbiAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1mcmVlLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIge1xuICBzY3JvbGwtc25hcC10eXBlOiBub25lO1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItZnJlZS1tb2RlID4gLnN3aXBlci13cmFwcGVyID4gLnN3aXBlci1zbGlkZSB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBub25lO1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQgPiAuc3dpcGVyLXdyYXBwZXI6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBmbGV4LXNocmluazogMDtcbiAgb3JkZXI6IDk5OTk7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZCA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGUge1xuICBzY3JvbGwtc25hcC1hbGlnbjogY2VudGVyIGNlbnRlcjtcbiAgc2Nyb2xsLXNuYXAtc3RvcDogYWx3YXlzO1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1iZWZvcmUpO1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItY2VudGVyZWQuc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXdyYXBwZXI6OmJlZm9yZSB7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogMXB4O1xuICB3aWR0aDogdmFyKC0tc3dpcGVyLWNlbnRlcmVkLW9mZnNldC1hZnRlcik7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZSk7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXdyYXBwZXI6OmJlZm9yZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDFweDtcbiAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKTtcbn1cbi8qIFNsaWRlIHN0eWxlcyBzdGFydCAqL1xuLyogM0QgU2hhZG93cyAqL1xuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdyxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdyxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQsXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAxMDtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3cge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXJpZ2h0IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpO1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3Age1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpO1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20ge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNSksIHJnYmEoMCwgMCwgMCwgMCkpO1xufVxuLnN3aXBlci1sYXp5LXByZWxvYWRlciB7XG4gIHdpZHRoOiA0MnB4O1xuICBoZWlnaHQ6IDQycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0b3A6IDUwJTtcbiAgbWFyZ2luLWxlZnQ6IC0yMXB4O1xuICBtYXJnaW4tdG9wOiAtMjFweDtcbiAgei1pbmRleDogMTA7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiA0cHggc29saWQgdmFyKC0tc3dpcGVyLXByZWxvYWRlci1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uc3dpcGVyOm5vdCguc3dpcGVyLXdhdGNoLXByb2dyZXNzKSAuc3dpcGVyLWxhenktcHJlbG9hZGVyLFxuLnN3aXBlci13YXRjaC1wcm9ncmVzcyAuc3dpcGVyLXNsaWRlLXZpc2libGUgLnN3aXBlci1sYXp5LXByZWxvYWRlciB7XG4gIGFuaW1hdGlvbjogc3dpcGVyLXByZWxvYWRlci1zcGluIDFzIGluZmluaXRlIGxpbmVhcjtcbn1cbi5zd2lwZXItbGF6eS1wcmVsb2FkZXItd2hpdGUge1xuICAtLXN3aXBlci1wcmVsb2FkZXItY29sb3I6ICNmZmY7XG59XG4uc3dpcGVyLWxhenktcHJlbG9hZGVyLWJsYWNrIHtcbiAgLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yOiAjMDAwO1xufVxuQGtleWZyYW1lcyBzd2lwZXItcHJlbG9hZGVyLXNwaW4ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuLyogU2xpZGUgc3R5bGVzIGVuZCAqL1xuLnN3aXBlci12aXJ0dWFsIC5zd2lwZXItc2xpZGUge1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xufVxuLnN3aXBlci12aXJ0dWFsLnN3aXBlci1jc3MtbW9kZSAuc3dpcGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItdmlydHVhbC5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWhvcml6b250YWwgLnN3aXBlci13cmFwcGVyOjphZnRlciB7XG4gIGhlaWdodDogMXB4O1xuICB3aWR0aDogdmFyKC0tc3dpcGVyLXZpcnR1YWwtc2l6ZSk7XG59XG4uc3dpcGVyLXZpcnR1YWwuc3dpcGVyLWNzcy1tb2RlLnN3aXBlci12ZXJ0aWNhbCAuc3dpcGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItdmlydHVhbC1zaXplKTtcbn1cbjpyb290IHtcbiAgLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplOiA0NHB4O1xuICAvKlxuICAtLXN3aXBlci1uYXZpZ2F0aW9uLXRvcC1vZmZzZXQ6IDUwJTtcbiAgLS1zd2lwZXItbmF2aWdhdGlvbi1zaWRlcy1vZmZzZXQ6IDEwcHg7XG4gIC0tc3dpcGVyLW5hdmlnYXRpb24tY29sb3I6IHZhcigtLXN3aXBlci10aGVtZS1jb2xvcik7XG4gICovXG59XG4uc3dpcGVyLWJ1dHRvbi1wcmV2LFxuLnN3aXBlci1idXR0b24tbmV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi10b3Atb2Zmc2V0LCA1MCUpO1xuICB3aWR0aDogY2FsYyh2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKSAvIDQ0ICogMjcpO1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpO1xuICBtYXJnaW4tdG9wOiBjYWxjKDBweCAtICh2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKSAvIDIpKTtcbiAgei1pbmRleDogMTA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7XG59XG4uc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24tZGlzYWJsZWQsXG4uc3dpcGVyLWJ1dHRvbi1uZXh0LnN3aXBlci1idXR0b24tZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjM1O1xuICBjdXJzb3I6IGF1dG87XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci1idXR0b24tcHJldi5zd2lwZXItYnV0dG9uLWhpZGRlbixcbi5zd2lwZXItYnV0dG9uLW5leHQuc3dpcGVyLWJ1dHRvbi1oaWRkZW4ge1xuICBvcGFjaXR5OiAwO1xuICBjdXJzb3I6IGF1dG87XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci1uYXZpZ2F0aW9uLWRpc2FibGVkIC5zd2lwZXItYnV0dG9uLXByZXYsXG4uc3dpcGVyLW5hdmlnYXRpb24tZGlzYWJsZWQgLnN3aXBlci1idXR0b24tbmV4dCB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5zd2lwZXItYnV0dG9uLXByZXYgc3ZnLFxuLnN3aXBlci1idXR0b24tbmV4dCBzdmcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG59XG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2IHN2Zyxcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLW5leHQgc3ZnIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cbi5zd2lwZXItYnV0dG9uLXByZXYsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0IHtcbiAgbGVmdDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2lkZXMtb2Zmc2V0LCAxMHB4KTtcbiAgcmlnaHQ6IGF1dG87XG59XG4uc3dpcGVyLWJ1dHRvbi1uZXh0LFxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tcHJldiB7XG4gIHJpZ2h0OiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaWRlcy1vZmZzZXQsIDEwcHgpO1xuICBsZWZ0OiBhdXRvO1xufVxuLnN3aXBlci1idXR0b24tbG9jayB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKiBOYXZpZ2F0aW9uIGZvbnQgc3RhcnQgKi9cbi5zd2lwZXItYnV0dG9uLXByZXY6YWZ0ZXIsXG4uc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyIHtcbiAgZm9udC1mYW1pbHk6IHN3aXBlci1pY29ucztcbiAgZm9udC1zaXplOiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaXplKTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIGZvbnQtdmFyaWFudDogaW5pdGlhbDtcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG4uc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyLFxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tbmV4dDphZnRlciB7XG4gIGNvbnRlbnQ6ICdwcmV2Jztcbn1cbi5zd2lwZXItYnV0dG9uLW5leHQsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2IHtcbiAgcmlnaHQ6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpZGVzLW9mZnNldCwgMTBweCk7XG4gIGxlZnQ6IGF1dG87XG59XG4uc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyLFxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tcHJldjphZnRlciB7XG4gIGNvbnRlbnQ6ICduZXh0Jztcbn1cbi8qIE5hdmlnYXRpb24gZm9udCBlbmQgKi9cbjpyb290IHtcbiAgLypcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvcjogdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKTtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1sZWZ0OiBhdXRvO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLXJpZ2h0OiA4cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYm90dG9tOiA4cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tdG9wOiBhdXRvO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLWNvbG9yOiBpbmhlcml0O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWJnLWNvbG9yOiByZ2JhKDAsMCwwLDAuMjUpO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLXNpemU6IDRweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZTogOHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC13aWR0aDogOHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1oZWlnaHQ6IDhweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYm9yZGVyLXJhZGl1czogNTAlO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1jb2xvcjogIzAwMDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaW5hY3RpdmUtb3BhY2l0eTogMC4yO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1vcGFjaXR5OiAxO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ob3Jpem9udGFsLWdhcDogNHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC12ZXJ0aWNhbC1nYXA6IDZweDtcbiAgKi9cbn1cbi5zd2lwZXItcGFnaW5hdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiAzMDBtcyBvcGFjaXR5O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB6LWluZGV4OiAxMDtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi5zd2lwZXItcGFnaW5hdGlvbi1oaWRkZW4ge1xuICBvcGFjaXR5OiAwO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWRpc2FibGVkID4gLnN3aXBlci1wYWdpbmF0aW9uLFxuLnN3aXBlci1wYWdpbmF0aW9uLnN3aXBlci1wYWdpbmF0aW9uLWRpc2FibGVkIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLyogQ29tbW9uIFN0eWxlcyAqL1xuLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLFxuLnN3aXBlci1wYWdpbmF0aW9uLWN1c3RvbSxcbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLFxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbCB7XG4gIGJvdHRvbTogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYm90dG9tLCA4cHgpO1xuICB0b3A6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLXRvcCwgYXV0byk7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLyogQnVsbGV0cyAqL1xuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGZvbnQtc2l6ZTogMDtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC4zMyk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1tYWluIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtcHJldiB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC42Nik7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLXByZXYtcHJldiB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC4zMyk7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW5leHQge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNjYpO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1uZXh0LW5leHQge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuMzMpO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtd2lkdGgsIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1zaXplLCA4cHgpKTtcbiAgaGVpZ2h0OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaGVpZ2h0LCB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtc2l6ZSwgOHB4KSk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWJvcmRlci1yYWRpdXMsIDUwJSk7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1jb2xvciwgIzAwMCk7XG4gIG9wYWNpdHk6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1vcGFjaXR5LCAwLjIpO1xufVxuYnV0dG9uLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3gtc2hhZG93OiBub25lO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1jbGlja2FibGUgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQ6b25seS1jaGlsZCB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlIHtcbiAgb3BhY2l0eTogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LW9wYWNpdHksIDEpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsXG4uc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyB7XG4gIHJpZ2h0OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1yaWdodCwgOHB4KTtcbiAgbGVmdDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tbGVmdCwgYXV0byk7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgLTUwJSwgMCk7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCxcbi5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICBtYXJnaW46IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC12ZXJ0aWNhbC1nYXAsIDZweCkgMDtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljLFxuLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgd2lkdGg6IDhweDtcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCxcbi5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0cmFuc2l0aW9uOiAyMDBtcyB0cmFuc2Zvcm0sXG4gICAgICAgIDIwMG1zIHRvcDtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsXG4uc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICBtYXJnaW46IDAgdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWhvcml6b250YWwtZ2FwLCA0cHgpO1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljLFxuLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMge1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LFxuLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIHRyYW5zaXRpb246IDIwMG1zIHRyYW5zZm9ybSxcbiAgICAgICAgMjAwbXMgbGVmdDtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbC5zd2lwZXItcnRsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgdHJhbnNpdGlvbjogMjAwbXMgdHJhbnNmb3JtLFxuICAgIDIwMG1zIHJpZ2h0O1xufVxuLyogRnJhY3Rpb24gKi9cbi5zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbiB7XG4gIGNvbG9yOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1mcmFjdGlvbi1jb2xvciwgaW5oZXJpdCk7XG59XG4vKiBQcm9ncmVzcyAqL1xuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItYmctY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4yNSkpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLWZpbGwge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1jb2xvciwgdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcbn1cbi5zd2lwZXItcnRsIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbCB7XG4gIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhcixcbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLFxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSxcbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLXNpemUsIDRweCk7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIsXG4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwsXG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItb3Bwb3NpdGUsXG4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIuc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSB7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1zaXplLCA0cHgpO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1sb2NrIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbjpyb290IHtcbiAgLypcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIC0tc3dpcGVyLXNjcm9sbGJhci10b3A6IGF1dG87XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1ib3R0b206IDRweDtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLWxlZnQ6IGF1dG87XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1yaWdodDogNHB4O1xuICAtLXN3aXBlci1zY3JvbGxiYXItc2lkZXMtb2Zmc2V0OiAxJTtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLWJnLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1kcmFnLWJnLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1zaXplOiA0cHg7XG4gICovXG59XG4uc3dpcGVyLXNjcm9sbGJhciB7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItYm9yZGVyLXJhZGl1cywgMTBweCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLWJnLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xufVxuLnN3aXBlci1zY3JvbGxiYXItZGlzYWJsZWQgPiAuc3dpcGVyLXNjcm9sbGJhcixcbi5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItZGlzYWJsZWQge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXNjcm9sbGJhcixcbi5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItaG9yaXpvbnRhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaWRlcy1vZmZzZXQsIDElKTtcbiAgYm90dG9tOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLWJvdHRvbSwgNHB4KTtcbiAgdG9wOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXRvcCwgYXV0byk7XG4gIHotaW5kZXg6IDUwO1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2l6ZSwgNHB4KTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDIgKiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpZGVzLW9mZnNldCwgMSUpKTtcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXNjcm9sbGJhcixcbi5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItdmVydGljYWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItbGVmdCwgYXV0byk7XG4gIHJpZ2h0OiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXJpZ2h0LCA0cHgpO1xuICB0b3A6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2lkZXMtb2Zmc2V0LCAxJSk7XG4gIHotaW5kZXg6IDUwO1xuICB3aWR0aDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaXplLCA0cHgpO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIgKiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpZGVzLW9mZnNldCwgMSUpKTtcbn1cbi5zd2lwZXItc2Nyb2xsYmFyLWRyYWcge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItZHJhZy1iZy1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjUpKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1ib3JkZXItcmFkaXVzLCAxMHB4KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xufVxuLnN3aXBlci1zY3JvbGxiYXItY3Vyc29yLWRyYWcge1xuICBjdXJzb3I6IG1vdmU7XG59XG4uc3dpcGVyLXNjcm9sbGJhci1sb2NrIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qIFpvb20gY29udGFpbmVyIHN0eWxlcyBzdGFydCAqL1xuLnN3aXBlci16b29tLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uc3dpcGVyLXpvb20tY29udGFpbmVyID4gaW1nLFxuLnN3aXBlci16b29tLWNvbnRhaW5lciA+IHN2Zyxcbi5zd2lwZXItem9vbS1jb250YWluZXIgPiBjYW52YXMge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG59XG4vKiBab29tIGNvbnRhaW5lciBzdHlsZXMgZW5kICovXG4uc3dpcGVyLXNsaWRlLXpvb21lZCB7XG4gIGN1cnNvcjogbW92ZTtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xufVxuLyogYTExeSAqL1xuLnN3aXBlciAuc3dpcGVyLW5vdGlmaWNhdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogLTEwMDA7XG59XG4uc3dpcGVyLWZyZWUtbW9kZSA+IC5zd2lwZXItd3JhcHBlciB7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG4uc3dpcGVyLWdyaWQgPiAuc3dpcGVyLXdyYXBwZXIge1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uc3dpcGVyLWdyaWQtY29sdW1uID4gLnN3aXBlci13cmFwcGVyIHtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLnN3aXBlci1mYWRlLnN3aXBlci1mcmVlLW1vZGUgLnN3aXBlci1zbGlkZSB7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDtcbn1cbi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHk7XG59XG4uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLWZhZGUgLnN3aXBlci1zbGlkZS1hY3RpdmUge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cbi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuLnN3aXBlci5zd2lwZXItY3ViZSB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB6LWluZGV4OiAxO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItY3ViZS5zd2lwZXItcnRsIC5zd2lwZXItc2xpZGUge1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDA7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUsXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmUge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLW5leHQsXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1wcmV2IHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1jdWJlLXNoYWRvdyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9wYWNpdHk6IDAuNjtcbiAgei1pbmRleDogMDtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLWN1YmUtc2hhZG93OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBiYWNrZ3JvdW5kOiAjMDAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgZmlsdGVyOiBibHVyKDUwcHgpO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtbmV4dCArIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cbi8qIEN1YmUgc2xpZGUgc2hhZG93cyBzdGFydCAqL1xuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWN1YmUuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctY3ViZS5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1jdWJlLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1jdWJlLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQge1xuICB6LWluZGV4OiAwO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG4vKiBDdWJlIHNsaWRlIHNoYWRvd3MgZW5kICovXG4uc3dpcGVyLnN3aXBlci1mbGlwIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHotaW5kZXg6IDE7XG59XG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZSAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1hY3RpdmUsXG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1hY3RpdmUgLnN3aXBlci1zbGlkZS1hY3RpdmUge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cbi8qIEZsaXAgc2xpZGUgc2hhZG93cyBzdGFydCAqL1xuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWZsaXAuc3dpcGVyLXNsaWRlLXNoYWRvdy10b3AsXG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctZmxpcC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSxcbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1mbGlwLnN3aXBlci1zbGlkZS1zaGFkb3ctbGVmdCxcbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1mbGlwLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQge1xuICB6LWluZGV4OiAwO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG4vKiBGbGlwIHNsaWRlIHNoYWRvd3MgZW5kICovXG4uc3dpcGVyLWNyZWF0aXZlIC5zd2lwZXItc2xpZGUge1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgb3BhY2l0eSwgaGVpZ2h0O1xufVxuLnN3aXBlci5zd2lwZXItY2FyZHMge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5zd2lwZXItY2FyZHMgLnN3aXBlci1zbGlkZSB7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsICIvLyDsg4nsg4Eg67OA7IiYXG4kY29sb3ItYm9yZGVyOiAjYTBhMDk2O1xuJGNvbG9yLWRpc2FibGVkLWJnOiAjZjBmMGYwO1xuJGNvbG9yLWRpc2FibGVkLXRleHQ6ICNhYmFiYWI7XG4kY29sb3ItZGlzYWJsZWQtbmVpZ2hib3I6ICNjZGNkY2Q7XG4kY29sb3ItaG92ZXItYmc6ICNlNmU2ZTY7XG5cbi8vIOqzte2GtSDsiqTtg4Dsnbxcbi5yZWFjdC1jYWxlbmRhcixcbi5yZWFjdC1jYWxlbmRhciAqLFxuLnJlYWN0LWNhbGVuZGFyICo6YmVmb3JlLFxuLnJlYWN0LWNhbGVuZGFyICo6YWZ0ZXIge1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLy8gcmVhY3QtY2FsZW5kYXIg6riw67O4IOyKpO2DgOydvFxuLmRyLXJvdXRpbmUtbm90ZS1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXIge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLWJvcmRlcjtcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjEyNWVtO1xuXG4gIGJ1dHRvbiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG5cbiAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuICBcbiAgJi0tZG91YmxlVmlldyB7XG4gICAgd2lkdGg6IDcwMHB4O1xuXG4gICAgLnJlYWN0LWNhbGVuZGFyX192aWV3Q29udGFpbmVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBtYXJnaW46IC0wLjVlbTtcblxuICAgICAgPiAqIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgbWFyZ2luOiAwLjVlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8g64Sk67mE6rKM7J207IWYXG4uZHItcm91dGluZS1ub3RlLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fbmF2aWdhdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogNDRweDtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xuXG4gIGJ1dHRvbiB7XG4gICAgbWluLXdpZHRoOiA0NHB4O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG5cbiAgICAmOmRpc2FibGVkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1kaXNhYmxlZC1iZztcbiAgICB9XG5cbiAgICAmOmVuYWJsZWQge1xuICAgICAgJjpob3ZlcixcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItaG92ZXItYmc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIOyblCwg7JqU7J28IOuwjyDrgqDsp5xcbi5kci1yb3V0aW5lLW5vdGUtY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrZGF5cyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICZfX3dlZWtkYXkge1xuICAgIHBhZGRpbmc6IDAuNWVtO1xuICB9XG59XG5cbi5kci1yb3V0aW5lLW5vdGUtY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X193ZWVrTnVtYmVycyAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vLyDrgqDsp5wg7YOA7J28IOyKpO2DgOydvFxuLmRyLXJvdXRpbmUtbm90ZS1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXMge1xuICBnYXA6IDAuNWVtIDA7XG5cbiAgJl9fZGF5IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgfVxuXG4gIGFiYnIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuZHItcGVyY2VudGFnZS1jaXJjbGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjaXJjbGUge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuN3MgZWFzZS1pbi1vdXQ7XG4gICAgfVxuICB9XG59XG4vLyDsnbTsm4PtlZwg64us7J2YIOuCoOynnFxuLmRyLXJvdXRpbmUtbm90ZS1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXNfX2RheS0tbmVpZ2hib3JpbmdNb250aCB7XG4gIC5kci1wZXJjZW50YWdlLWNpcmNsZSB7XG4gICAgY2lyY2xlIHtcbiAgICAgIHN0cm9rZTogJGNvbG9yLWRpc2FibGVkLW5laWdoYm9yICFpbXBvcnRhbnQ7XG4gICAgICBzdHJva2Utb3BhY2l0eTogMC4xICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIHRleHQge1xuICAgICAgb3BhY2l0eTogMC4yO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIHJlYWN0LWNhbGVuZGFyIO2DgOydvFxuLmRyLXJvdXRpbmUtbm90ZS1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX3RpbGUge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNmVtO1xuICBwYWRkaW5nOiAxZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAwLjdlbTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItaG92ZXItYmc7XG4gIH1cbn1cbiIsICJib2R5IHtcbiAgLS1jb2xvci1hY2NlbnQtMS1oc2w6IGNhbGModmFyKC0tYWNjZW50LWgpIC0gMyksIGNhbGModmFyKC0tYWNjZW50LXMpICogMS4wMiksIGNhbGModmFyKC0tYWNjZW50LWwpICogMS4xNSk7XG4gIC0tY29sb3ItYWNjZW50LTItaHNsOiBjYWxjKHZhcigtLWFjY2VudC1oKSAtIDUpLCBjYWxjKHZhcigtLWFjY2VudC1zKSAqIDEuMDUpLCBjYWxjKHZhcigtLWFjY2VudC1sKSAqIDEuMjkpO1xufSJdLAogICJtYXBwaW5ncyI6ICI7QUFXRSxDQUFBO0FBQ0UsVUFBQTs7QUFDQSxDQUFBO0FBQ0Usb0JBQUEsSUFBQTs7QUFTTixDQUFBLGlDQUFBLENBQUE7QUFDRSxTQUFBO0FBQ0EsYUFBQTtBQUNBLGNBQUE7QUFFQTtJQUFBLEtBQUE7SUFBQSxTQUFBO0lBQUE7QUFDQSxlQUFBOztBQUVBLENBUkYsaUNBUUUsQ0FSRixlQVFFLENBQUE7QUFDRSxVQUFBO0FBQ0EsVUFBQTtBQUNBLFdBQUE7QUFDQSxvQkFBQTs7QUFDQSxDQWJKLGlDQWFJLENBYkosZUFhSSxDQUxGLG9CQUtFLFFBQUE7QUFDRSxVQUFBOztBQU1OLENBQUE7QUFDRSxXQUFBOztBQUdGLENBeEJBLGlDQXdCQSxDQUFBLHdDQUFBLENBaEJFO0FBaUJBLFdBQUE7QUFDQSxlQUFBO0FBQ0EsbUJBQUE7QUFDQSxRQUFBO0FBQ0Es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 */ +/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2ZlYXR1cmVzL3JvdXRpbmUvZGF5cy1vZi1tb250aC1jYWxlbmRhci1zdHlsZS5zY3NzIiwgIm5vZGVfbW9kdWxlcy9zd2lwZXIvc3dpcGVyLWJ1bmRsZS5jc3MiLCAic3JjL2ZlYXR1cmVzL2NhbGVuZGFyL2NhbGVuZGFyLXN0eWxlLnNjc3MiLCAic3JjL2FwcC9zdHlsZS5jc3MiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vIOyDieyDgSDrs4DsiJhcbiRjb2xvci1ib3JkZXI6ICNhMGEwOTY7XG4kY29sb3ItZGlzYWJsZWQtYmc6ICNmMGYwZjA7XG4kY29sb3ItZGlzYWJsZWQtdGV4dDogI2FiYWJhYjtcbiRjb2xvci1kaXNhYmxlZC1uZWlnaGJvcjogI2NkY2RjZDtcbiRjb2xvci1ob3Zlci1iZzogI2U2ZTZlNjtcblxuXG5cbi8vIOuniOyngOunieuCoOynnCDshKDtg50g67KE7Yq8IO2DgOydvFxuLmRyLWRheXMtb2YtbW9udGgtb3B0aW9uLWNhbGVuZGFyIHtcbiAgJl9fbGFzdC1kYXktdGlsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICYtLWFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQtMSkgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuLy8gcmVhY3QtY2FsZW5kYXIg6riw67O4IOyKpO2DgOydvFxuLmRyLWRheXMtb2YtbW9udGgtb3B0aW9uLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyO1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07XG5cbiAgLnJlYWN0LWNhbGVuZGFyX190aWxlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAmOmVuYWJsZWQ6aG92ZXIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxufVxuXG4vLyDsmpTsnbxcbi5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fd2Vla2RheXMge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kci1kYXlzLW9mLW1vbnRoLW9wdGlvbi1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8vIOuCoOynnCDtg4Dsnbwg7Iqk7YOA7J28XG4uZHItZGF5cy1vZi1tb250aC1vcHRpb24tY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzIHtcbiAgZ2FwOiAwLjVlbSAwO1xuXG4gICZfX2RheSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG4gIH1cblxuICBhYmJyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4vLyAxLCAyLCAzLCA07J28IO2DgOydvFxuLmRyLWRheXMtb2YtbW9udGgtb3B0aW9uLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5cyBidXR0b246bnRoLWNoaWxkKDMyKSwgXG4uZHItZGF5cy1vZi1tb250aC1vcHRpb24tY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzIGJ1dHRvbjpudGgtY2hpbGQoMzMpLCBcbi5kci1kYXlzLW9mLW1vbnRoLW9wdGlvbi1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX2RheXMgYnV0dG9uOm50aC1jaGlsZCgzNCksXG4uZHItZGF5cy1vZi1tb250aC1vcHRpb24tY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX19tb250aC12aWV3X19kYXlzIGJ1dHRvbjpudGgtY2hpbGQoMzUpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuXG4vLyByZWFjdC1jYWxlbmRhciDri6Trpbgg66qo65OgIO2DgOydvFxuLmRyLWRheXMtb2YtbW9udGgtb3B0aW9uLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0ZW07XG4gIHBhZGRpbmc6IDFlbTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogMWVtO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuN2VtO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ob3Zlci1iZztcbiAgfVxufVxuIiwgIi8qKlxuICogU3dpcGVyIDExLjEuMTRcbiAqIE1vc3QgbW9kZXJuIG1vYmlsZSB0b3VjaCBzbGlkZXIgYW5kIGZyYW1ld29yayB3aXRoIGhhcmR3YXJlIGFjY2VsZXJhdGVkIHRyYW5zaXRpb25zXG4gKiBodHRwczovL3N3aXBlcmpzLmNvbVxuICpcbiAqIENvcHlyaWdodCAyMDE0LTIwMjQgVmxhZGltaXIgS2hhcmxhbXBpZGlcbiAqXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqXG4gKiBSZWxlYXNlZCBvbjogU2VwdGVtYmVyIDEyLCAyMDI0XG4gKi9cblxuLyogRk9OVF9TVEFSVCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnc3dpcGVyLWljb25zJztcbiAgc3JjOiB1cmwoJ2RhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCBkMDlHUmdBQkFBQUFBQVpnQUJBQUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkdSbFJOQUFBR1JBQUFBQm9BQUFBY2k2cUhrVWRFUlVZQUFBV2dBQUFBSXdBQUFDUUFZQUJYUjFCUFV3QUFCaFFBQUFBdUFBQUFOdUFZNyt4SFUxVkNBQUFGeEFBQUFGQUFBQUJtMmZQY3pVOVRMeklBQUFIY0FBQUFTZ0FBQUdCUDlWNVJZMjFoY0FBQUFrUUFBQUNJQUFBQll0NkYwY0JqZG5RZ0FBQUN6QUFBQUFRQUFBQUVBQkVCUkdkaGMzQUFBQVdZQUFBQUNBQUFBQWovL3dBRFoyeDVaZ0FBQXl3QUFBRE1BQUFEMk1IdHJ5Vm9aV0ZrQUFBQmJBQUFBREFBQUFBMkUyK2VvV2hvWldFQUFBR2NBQUFBSHdBQUFDUUM5Z0R6YUcxMGVBQUFBaWdBQUFBWkFBQUFyZ0prQUJGc2IyTmhBQUFDMEFBQUFGb0FBQUJhRlFBVUdHMWhlSEFBQUFHOEFBQUFId0FBQUNBQWNBQkFibUZ0WlFBQUEvZ0FBQUU1QUFBQ1h2RmRCd2x3YjNOMEFBQUZOQUFBQUdJQUFBQ0U1czc0aFhqYVkyQmtZR0FBWXBmNUh1L2orVzIrTW5Bek1ZREF6YVg2UWpENi80Ly9CeGo1R0E4QXVSd01ZR2tBUHl3TDEzamFZMkJrWUdBODhQOEFneDRqKy84ZlFEWWZBMUFFQldnREFJQjJCT29BZU5wallHUmdZTkJoNEdkZ1lnQUJFTW5JQUJKellOQURDUUFBQ1dnQXNRQjQybU5nWWZ6Q09JR0JsWUdCMFljeGpZR0J3UjFLZjJXUVpHaGhZR0JpWUdWbWdBRkdCaVFRa09hYXd0REFvTUJReFhqZy93RUdQY1lEREE0d05VQTJDQ2d3c0FBQU80RUw2Z0FBZU5wajJNMGd5QUFDcXhnR05XQmtaMkQ0L3dNQSt4a0RkZ0FBQUhqYVkyQmdZR2FBWUJrR1JnWVFpQUh5R01GOEZnWUhJTTNEd01IQUJHUXJNT2d5V0RMRU0xVDkvdzhVQmZFTWdMekUvLy8vUC81Ly9mL1YveHYrcjRlYUFBZU1iQXh3SVVZbUlNSEVnS1lBWWpVY3NEQXdzTEt4YzNCeWNmUHc4akVRQS9nWkJBU0ZoRVZFeGNRbEpLV2taV1RsNUJVVWxaUlZWTlhVTlRRWkJnTUFBTVIrRStnQUVRRkVBQUFBS2dBcUFDb0FOQUErQUVnQVVnQmNBR1lBY0FCNkFJUUFqZ0NZQUtJQXJBQzJBTUFBeWdEVUFONEE2QUR5QVB3QkJnRVFBUm9CSkFFdUFUZ0JRZ0ZNQVZZQllBRnFBWFFCZmdHSUFaSUJuQUdtQWJJQnpnSHNBQUI0MnUyTk1RNkNVQXlHVzU2OHg5QW5lWVlnbTRNSmJoS0ZhRXhJT0FWWDhBcGV3U3Q0QmljNEFmZUFpZDNWT0JpeER4ZlBZRXphNU8rWGZpMDRZQURnZ2lVSVVMQ3VFSks4VmhPNGJTdnBkbmt0SEk1UUNZdGRpMnNsOFpuWGFIbHFVck5LemRLY1Q4Y2pscStyd1pTdklWY3pOaWV6c2ZuUC91em5tZlBGQk5PRE0ySzdNVFE0NVlFQVpxR1A4MUFtR0djRjNpUHFPb3AwcjFTUFRhVGJWa2ZVZTRIWGo5N3dZRSt5TndXWXh3V3U0djF1Z1dIZ28zUzFYZFpFVnFXTTdFVDBjZm5MR3hXZmtnUjQybzJQdldyRE1CU0ZqL0lITGFGMHpLalJnZGlWTXdTY05SQW9XVW9INzhZMmljQi95SVkwOUFuNkFIMkJkdS9VQit5eG9wWXNoUWlFdm52dTBkVVJnRHQ4UWVDOFBEdzdGcGppM2ZFQTR6L1BFSjZZT0I1aEtoNGRqM0V2WGh4UHFIL1NLVVkzcko3c3JaNEZabmgxUE1BdFBod1A2ZmwyUE1KTVBEZ2VRNHJZOFlUNkd6YW8wZUFFQTQwOUR1Z2dtVG5Gbk9jU0NpRWlMTWd4Q2lUSTZDcTVEWlVkM1FtcDEwdk8wTGFMVGQyY2pONGZPdW1sYzdsVVliU1FjWkZrdXRSRzdnNkpLWkt5MFJtZExZNjgwQ0RuRUorVU1rcEZGZTFSTjdueGRWcFhyQzRhVHRuYXVyT25ZZXJjWmcyWVZtTE4vZC9nY3pmRWltckUvZnMvYk91cTI5Wm1uOHRsb09SYVhnWmdHYTc4eU85L2NuWG0yQnBhR3ZxMjVEdjlTNEU5KzVTSWM5UHF1cEpLaFlGU1NsNDcrUWNyMW1ZTkFBQUFlTnB0dzBjS3drQUFBTURaSkE4UTdPVUp2a0xzUGZaNnpGVkVSUHk4cUhoMllFUiszaS9CUDgzdklCTEx5U3NvS2ltcnFLcXBhMmhwNitqcTZSc1lHaG1ibUpxWlN5MHNyYXh0Yk8zc0hSeWRuRU1VNHVSNnl4N0pKWHZlUDdXckR5Y0FBQUFBQUFILy93QUNlTnBqWUdSZ1lPQUJZaGtnWmdKQ1pnWk5Ca1lHTFFadElKc0ZMTVlBQUF3M0FMZ0FlTm9saXpFS2dEQVFCQ2NoUmJDMnNGRVIwWUQ2cVZRaUJDdi9IOWV6R0k2WjVYQkF3OENCSy9tNWlRUVZhdVZiWExuT3JNWnYyb0xkS0ZhOFBqdXJ1MmhKekdhYm1PU0x6Tk16dnV0cEIzTjQybU5nWkdCZzRHS1FZekJoWU14SkxNbGo0R0JnQVlvdy9QL1BBSkpoTE02c1NvV0tmV0NBQXdEQWpnYlJBQUI0Mm1OZ1lHQmtBSUliQ1pvNUlQcm1VbjBoR0EwQU84RUZUUUFBJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbi8qIEZPTlRfRU5EICovXG46cm9vdCB7XG4gIC0tc3dpcGVyLXRoZW1lLWNvbG9yOiAjMDA3YWZmO1xuICAvKlxuICAtLXN3aXBlci1wcmVsb2FkZXItY29sb3I6IHZhcigtLXN3aXBlci10aGVtZS1jb2xvcik7XG4gIC0tc3dpcGVyLXdyYXBwZXItdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGluaXRpYWw7XG4gICovXG59XG46aG9zdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHotaW5kZXg6IDE7XG59XG4uc3dpcGVyIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICAvKiBGaXggb2YgV2Via2l0IGZsaWNrZXJpbmcgKi9cbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci13cmFwcGVyIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5zd2lwZXItd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tc3dpcGVyLXdyYXBwZXItdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sIGluaXRpYWwpO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cbi5zd2lwZXItYW5kcm9pZCAuc3dpcGVyLXNsaWRlLFxuLnN3aXBlci1pb3MgLnN3aXBlci1zbGlkZSxcbi5zd2lwZXItd3JhcHBlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwLCAwKTtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCB7XG4gIHRvdWNoLWFjdGlvbjogcGFuLXk7XG59XG4uc3dpcGVyLXZlcnRpY2FsIHtcbiAgdG91Y2gtYWN0aW9uOiBwYW4teDtcbn1cbi5zd2lwZXItc2xpZGUge1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnN3aXBlci1zbGlkZS1pbnZpc2libGUtYmxhbmsge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4vKiBBdXRvIEhlaWdodCAqL1xuLnN3aXBlci1hdXRvaGVpZ2h0LFxuLnN3aXBlci1hdXRvaGVpZ2h0IC5zd2lwZXItc2xpZGUge1xuICBoZWlnaHQ6IGF1dG87XG59XG4uc3dpcGVyLWF1dG9oZWlnaHQgLnN3aXBlci13cmFwcGVyIHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgaGVpZ2h0O1xufVxuLnN3aXBlci1iYWNrZmFjZS1oaWRkZW4gLnN3aXBlci1zbGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLyogM0QgRWZmZWN0cyAqL1xuLnN3aXBlci0zZC5zd2lwZXItY3NzLW1vZGUgLnN3aXBlci13cmFwcGVyIHtcbiAgcGVyc3BlY3RpdmU6IDEyMDBweDtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci13cmFwcGVyIHtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbn1cbi5zd2lwZXItM2Qge1xuICBwZXJzcGVjdGl2ZTogMTIwMHB4O1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLFxuLnN3aXBlci0zZCAuc3dpcGVyLWN1YmUtc2hhZG93IHtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbn1cbi8qIENTUyBNb2RlICovXG4uc3dpcGVyLWNzcy1tb2RlID4gLnN3aXBlci13cmFwcGVyIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgLyogRm9yIEZpcmVmb3ggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuICAvKiBGb3IgSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgKi9cbn1cbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5zd2lwZXItY3NzLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcbiAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0IHN0YXJ0O1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlciB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5O1xufVxuLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXdyYXBwZXIge1xuICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWZyZWUtbW9kZSA+IC5zd2lwZXItd3JhcHBlciB7XG4gIHNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1mcmVlLW1vZGUgPiAuc3dpcGVyLXdyYXBwZXIgPiAuc3dpcGVyLXNsaWRlIHtcbiAgc2Nyb2xsLXNuYXAtYWxpZ246IG5vbmU7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBvcmRlcjogOTk5OTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkID4gLnN3aXBlci13cmFwcGVyID4gLnN3aXBlci1zbGlkZSB7XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBjZW50ZXIgY2VudGVyO1xuICBzY3JvbGwtc25hcC1zdG9wOiBhbHdheXM7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGU6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWJlZm9yZSk7XG59XG4uc3dpcGVyLWNzcy1tb2RlLnN3aXBlci1jZW50ZXJlZC5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItY2VudGVyZWQtb2Zmc2V0LWFmdGVyKTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlciA+IC5zd2lwZXItc2xpZGU6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYmVmb3JlKTtcbn1cbi5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLWNlbnRlcmVkLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItd3JhcHBlcjo6YmVmb3JlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMXB4O1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci1jZW50ZXJlZC1vZmZzZXQtYWZ0ZXIpO1xufVxuLyogU2xpZGUgc3R5bGVzIHN0YXJ0ICovXG4vKiAzRCBTaGFkb3dzICovXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20sXG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCxcbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctdG9wLFxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1ib3R0b20ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDEwO1xufVxuLnN3aXBlci0zZCAuc3dpcGVyLXNsaWRlLXNoYWRvdyB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWxlZnQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgwLCAwLCAwLCAwLjUpLCByZ2JhKDAsIDAsIDAsIDApKTtcbn1cbi5zd2lwZXItM2QgLnN3aXBlci1zbGlkZS1zaGFkb3ctcmlnaHQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XG59XG4uc3dpcGVyLTNkIC5zd2lwZXItc2xpZGUtc2hhZG93LWJvdHRvbSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC41KSwgcmdiYSgwLCAwLCAwLCAwKSk7XG59XG4uc3dpcGVyLWxhenktcHJlbG9hZGVyIHtcbiAgd2lkdGg6IDQycHg7XG4gIGhlaWdodDogNDJweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogNTAlO1xuICBtYXJnaW4tbGVmdDogLTIxcHg7XG4gIG1hcmdpbi10b3A6IC0yMXB4O1xuICB6LWluZGV4OiAxMDtcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXI6IDRweCBzb2xpZCB2YXIoLS1zd2lwZXItcHJlbG9hZGVyLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5zd2lwZXI6bm90KC5zd2lwZXItd2F0Y2gtcHJvZ3Jlc3MpIC5zd2lwZXItbGF6eS1wcmVsb2FkZXIsXG4uc3dpcGVyLXdhdGNoLXByb2dyZXNzIC5zd2lwZXItc2xpZGUtdmlzaWJsZSAuc3dpcGVyLWxhenktcHJlbG9hZGVyIHtcbiAgYW5pbWF0aW9uOiBzd2lwZXItcHJlbG9hZGVyLXNwaW4gMXMgaW5maW5pdGUgbGluZWFyO1xufVxuLnN3aXBlci1sYXp5LXByZWxvYWRlci13aGl0ZSB7XG4gIC0tc3dpcGVyLXByZWxvYWRlci1jb2xvcjogI2ZmZjtcbn1cbi5zd2lwZXItbGF6eS1wcmVsb2FkZXItYmxhY2sge1xuICAtLXN3aXBlci1wcmVsb2FkZXItY29sb3I6ICMwMDA7XG59XG5Aa2V5ZnJhbWVzIHN3aXBlci1wcmVsb2FkZXItc3BpbiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG4vKiBTbGlkZSBzdHlsZXMgZW5kICovXG4uc3dpcGVyLXZpcnR1YWwgLnN3aXBlci1zbGlkZSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG59XG4uc3dpcGVyLXZpcnR1YWwuc3dpcGVyLWNzcy1tb2RlIC5zd2lwZXItd3JhcHBlcjo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci12aXJ0dWFsLnN3aXBlci1jc3MtbW9kZS5zd2lwZXItaG9yaXpvbnRhbCAuc3dpcGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgaGVpZ2h0OiAxcHg7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItdmlydHVhbC1zaXplKTtcbn1cbi5zd2lwZXItdmlydHVhbC5zd2lwZXItY3NzLW1vZGUuc3dpcGVyLXZlcnRpY2FsIC5zd2lwZXItd3JhcHBlcjo6YWZ0ZXIge1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci12aXJ0dWFsLXNpemUpO1xufVxuOnJvb3Qge1xuICAtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemU6IDQ0cHg7XG4gIC8qXG4gIC0tc3dpcGVyLW5hdmlnYXRpb24tdG9wLW9mZnNldDogNTAlO1xuICAtLXN3aXBlci1uYXZpZ2F0aW9uLXNpZGVzLW9mZnNldDogMTBweDtcbiAgLS1zd2lwZXItbmF2aWdhdGlvbi1jb2xvcjogdmFyKC0tc3dpcGVyLXRoZW1lLWNvbG9yKTtcbiAgKi9cbn1cbi5zd2lwZXItYnV0dG9uLXByZXYsXG4uc3dpcGVyLWJ1dHRvbi1uZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXRvcC1vZmZzZXQsIDUwJSk7XG4gIHdpZHRoOiBjYWxjKHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpIC8gNDQgKiAyNyk7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2l6ZSk7XG4gIG1hcmdpbi10b3A6IGNhbGMoMHB4IC0gKHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpIC8gMikpO1xuICB6LWluZGV4OiAxMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbn1cbi5zd2lwZXItYnV0dG9uLXByZXYuc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCxcbi5zd2lwZXItYnV0dG9uLW5leHQuc3dpcGVyLWJ1dHRvbi1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuMzU7XG4gIGN1cnNvcjogYXV0bztcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLWJ1dHRvbi1wcmV2LnN3aXBlci1idXR0b24taGlkZGVuLFxuLnN3aXBlci1idXR0b24tbmV4dC5zd2lwZXItYnV0dG9uLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG4gIGN1cnNvcjogYXV0bztcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uc3dpcGVyLW5hdmlnYXRpb24tZGlzYWJsZWQgLnN3aXBlci1idXR0b24tcHJldixcbi5zd2lwZXItbmF2aWdhdGlvbi1kaXNhYmxlZCAuc3dpcGVyLWJ1dHRvbi1uZXh0IHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnN3aXBlci1idXR0b24tcHJldiBzdmcsXG4uc3dpcGVyLWJ1dHRvbi1uZXh0IHN2ZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbn1cbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXYgc3ZnLFxuLnN3aXBlci1ydGwgLnN3aXBlci1idXR0b24tbmV4dCBzdmcge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuLnN3aXBlci1idXR0b24tcHJldixcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLW5leHQge1xuICBsZWZ0OiB2YXIoLS1zd2lwZXItbmF2aWdhdGlvbi1zaWRlcy1vZmZzZXQsIDEwcHgpO1xuICByaWdodDogYXV0bztcbn1cbi5zd2lwZXItYnV0dG9uLW5leHQsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2IHtcbiAgcmlnaHQ6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpZGVzLW9mZnNldCwgMTBweCk7XG4gIGxlZnQ6IGF1dG87XG59XG4uc3dpcGVyLWJ1dHRvbi1sb2NrIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi8qIE5hdmlnYXRpb24gZm9udCBzdGFydCAqL1xuLnN3aXBlci1idXR0b24tcHJldjphZnRlcixcbi5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIge1xuICBmb250LWZhbWlseTogc3dpcGVyLWljb25zO1xuICBmb250LXNpemU6IHZhcigtLXN3aXBlci1uYXZpZ2F0aW9uLXNpemUpO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgZm9udC12YXJpYW50OiBpbml0aWFsO1xuICBsaW5lLWhlaWdodDogMTtcbn1cbi5zd2lwZXItYnV0dG9uLXByZXY6YWZ0ZXIsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1uZXh0OmFmdGVyIHtcbiAgY29udGVudDogJ3ByZXYnO1xufVxuLnN3aXBlci1idXR0b24tbmV4dCxcbi5zd2lwZXItcnRsIC5zd2lwZXItYnV0dG9uLXByZXYge1xuICByaWdodDogdmFyKC0tc3dpcGVyLW5hdmlnYXRpb24tc2lkZXMtb2Zmc2V0LCAxMHB4KTtcbiAgbGVmdDogYXV0bztcbn1cbi5zd2lwZXItYnV0dG9uLW5leHQ6YWZ0ZXIsXG4uc3dpcGVyLXJ0bCAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyIHtcbiAgY29udGVudDogJ25leHQnO1xufVxuLyogTmF2aWdhdGlvbiBmb250IGVuZCAqL1xuOnJvb3Qge1xuICAvKlxuICAtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yOiB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWxlZnQ6IGF1dG87XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tcmlnaHQ6IDhweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi1ib3R0b206IDhweDtcbiAgLS1zd2lwZXItcGFnaW5hdGlvbi10b3A6IGF1dG87XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24tY29sb3I6IGluaGVyaXQ7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItYmctY29sb3I6IHJnYmEoMCwwLDAsMC4yNSk7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItc2l6ZTogNHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1zaXplOiA4cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXdpZHRoOiA4cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWhlaWdodDogOHB4O1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1ib3JkZXItcmFkaXVzOiA1MCU7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWluYWN0aXZlLWNvbG9yOiAjMDAwO1xuICAtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1pbmFjdGl2ZS1vcGFjaXR5OiAwLjI7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LW9wYWNpdHk6IDE7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWhvcml6b250YWwtZ2FwOiA0cHg7XG4gIC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXZlcnRpY2FsLWdhcDogNnB4O1xuICAqL1xufVxuLnN3aXBlci1wYWdpbmF0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IDMwMG1zIG9wYWNpdHk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIHotaW5kZXg6IDEwO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLnN3aXBlci1wYWdpbmF0aW9uLWhpZGRlbiB7XG4gIG9wYWNpdHk6IDA7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgPiAuc3dpcGVyLXBhZ2luYXRpb24sXG4uc3dpcGVyLXBhZ2luYXRpb24uc3dpcGVyLXBhZ2luYXRpb24tZGlzYWJsZWQge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4vKiBDb21tb24gU3R5bGVzICovXG4uc3dpcGVyLXBhZ2luYXRpb24tZnJhY3Rpb24sXG4uc3dpcGVyLXBhZ2luYXRpb24tY3VzdG9tLFxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMsXG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsIHtcbiAgYm90dG9tOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1ib3R0b20sIDhweCk7XG4gIHRvcDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tdG9wLCBhdXRvKTtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4vKiBCdWxsZXRzICovXG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZm9udC1zaXplOiAwO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjMzKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW1haW4ge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWFjdGl2ZS1wcmV2IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjY2KTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtcHJldi1wcmV2IHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjMzKTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUtbmV4dCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC42Nik7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYWN0aXZlLW5leHQtbmV4dCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC4zMyk7XG59XG4uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgd2lkdGg6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC13aWR0aCwgdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXNpemUsIDhweCkpO1xuICBoZWlnaHQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1oZWlnaHQsIHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1zaXplLCA4cHgpKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtYm9yZGVyLXJhZGl1cywgNTAlKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWluYWN0aXZlLWNvbG9yLCAjMDAwKTtcbiAgb3BhY2l0eTogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LWluYWN0aXZlLW9wYWNpdHksIDAuMik7XG59XG5idXR0b24uc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgYm9yZGVyOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWNsaWNrYWJsZSAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldDpvbmx5LWNoaWxkIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUge1xuICBvcGFjaXR5OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtb3BhY2l0eSwgMSk7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyxcbi5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzIHtcbiAgcmlnaHQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLXJpZ2h0LCA4cHgpO1xuICBsZWZ0OiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1sZWZ0LCBhdXRvKTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAtNTAlLCAwKTtcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LFxuLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIG1hcmdpbjogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LXZlcnRpY2FsLWdhcCwgNnB4KSAwO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5zd2lwZXItdmVydGljYWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMsXG4uc3dpcGVyLXBhZ2luYXRpb24tdmVydGljYWwuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMge1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB3aWR0aDogOHB4O1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0LFxuLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRyYW5zaXRpb246IDIwMG1zIHRyYW5zZm9ybSxcbiAgICAgICAgMjAwbXMgdG9wO1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCxcbi5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMgLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCB7XG4gIG1hcmdpbjogMCB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQtaG9yaXpvbnRhbC1nYXAsIDRweCk7XG59XG4uc3dpcGVyLWhvcml6b250YWwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLWR5bmFtaWMsXG4uc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyB7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQsXG4uc3dpcGVyLXBhZ2luYXRpb24taG9yaXpvbnRhbC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXRzLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMtZHluYW1pYyAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgdHJhbnNpdGlvbjogMjAwbXMgdHJhbnNmb3JtLFxuICAgICAgICAyMDBtcyBsZWZ0O1xufVxuLnN3aXBlci1ob3Jpem9udGFsLnN3aXBlci1ydGwgPiAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cy1keW5hbWljIC5zd2lwZXItcGFnaW5hdGlvbi1idWxsZXQge1xuICB0cmFuc2l0aW9uOiAyMDBtcyB0cmFuc2Zvcm0sXG4gICAgMjAwbXMgcmlnaHQ7XG59XG4vKiBGcmFjdGlvbiAqL1xuLnN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uIHtcbiAgY29sb3I6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWZyYWN0aW9uLWNvbG9yLCBpbmhlcml0KTtcbn1cbi8qIFByb2dyZXNzICovXG4uc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1iZy1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjI1KSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2JhciAuc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLWNvbG9yLCB2YXIoLS1zd2lwZXItdGhlbWUtY29sb3IpKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wO1xufVxuLnN3aXBlci1ydGwgLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyIC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1maWxsIHtcbiAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wO1xufVxuLnN3aXBlci1ob3Jpem9udGFsID4gLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLFxuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLWhvcml6b250YWwsXG4uc3dpcGVyLXZlcnRpY2FsID4gLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlLFxuLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLnN3aXBlci1wYWdpbmF0aW9uLXZlcnRpY2FsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItc2l6ZSwgNHB4KTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhcixcbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi12ZXJ0aWNhbCxcbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZSxcbi5zd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci5zd2lwZXItcGFnaW5hdGlvbi1ob3Jpem9udGFsLnN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLW9wcG9zaXRlIHtcbiAgd2lkdGg6IHZhcigtLXN3aXBlci1wYWdpbmF0aW9uLXByb2dyZXNzYmFyLXNpemUsIDRweCk7XG4gIGhlaWdodDogMTAwJTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xufVxuLnN3aXBlci1wYWdpbmF0aW9uLWxvY2sge1xuICBkaXNwbGF5OiBub25lO1xufVxuOnJvb3Qge1xuICAvKlxuICAtLXN3aXBlci1zY3JvbGxiYXItYm9yZGVyLXJhZGl1czogMTBweDtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLXRvcDogYXV0bztcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLWJvdHRvbTogNHB4O1xuICAtLXN3aXBlci1zY3JvbGxiYXItbGVmdDogYXV0bztcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLXJpZ2h0OiA0cHg7XG4gIC0tc3dpcGVyLXNjcm9sbGJhci1zaWRlcy1vZmZzZXQ6IDElO1xuICAtLXN3aXBlci1zY3JvbGxiYXItYmctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLWRyYWctYmctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgLS1zd2lwZXItc2Nyb2xsYmFyLXNpemU6IDRweDtcbiAgKi9cbn1cbi5zd2lwZXItc2Nyb2xsYmFyIHtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1ib3JkZXItcmFkaXVzLCAxMHB4KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItYmctY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG4uc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZCA+IC5zd2lwZXItc2Nyb2xsYmFyLFxuLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1kaXNhYmxlZCB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5zd2lwZXItaG9yaXpvbnRhbCA+IC5zd2lwZXItc2Nyb2xsYmFyLFxuLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1ob3Jpem9udGFsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpZGVzLW9mZnNldCwgMSUpO1xuICBib3R0b206IHZhcigtLXN3aXBlci1zY3JvbGxiYXItYm90dG9tLCA0cHgpO1xuICB0b3A6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItdG9wLCBhdXRvKTtcbiAgei1pbmRleDogNTA7XG4gIGhlaWdodDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaXplLCA0cHgpO1xuICB3aWR0aDogY2FsYygxMDAlIC0gMiAqIHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2lkZXMtb2Zmc2V0LCAxJSkpO1xufVxuLnN3aXBlci12ZXJ0aWNhbCA+IC5zd2lwZXItc2Nyb2xsYmFyLFxuLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci12ZXJ0aWNhbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1sZWZ0LCBhdXRvKTtcbiAgcmlnaHQ6IHZhcigtLXN3aXBlci1zY3JvbGxiYXItcmlnaHQsIDRweCk7XG4gIHRvcDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1zaWRlcy1vZmZzZXQsIDElKTtcbiAgei1pbmRleDogNTA7XG4gIHdpZHRoOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLXNpemUsIDRweCk7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gMiAqIHZhcigtLXN3aXBlci1zY3JvbGxiYXItc2lkZXMtb2Zmc2V0LCAxJSkpO1xufVxuLnN3aXBlci1zY3JvbGxiYXItZHJhZyB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogdmFyKC0tc3dpcGVyLXNjcm9sbGJhci1kcmFnLWJnLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuNSkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd2lwZXItc2Nyb2xsYmFyLWJvcmRlci1yYWRpdXMsIDEwcHgpO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG59XG4uc3dpcGVyLXNjcm9sbGJhci1jdXJzb3ItZHJhZyB7XG4gIGN1cnNvcjogbW92ZTtcbn1cbi5zd2lwZXItc2Nyb2xsYmFyLWxvY2sge1xuICBkaXNwbGF5OiBub25lO1xufVxuLyogWm9vbSBjb250YWluZXIgc3R5bGVzIHN0YXJ0ICovXG4uc3dpcGVyLXpvb20tY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5zd2lwZXItem9vbS1jb250YWluZXIgPiBpbWcsXG4uc3dpcGVyLXpvb20tY29udGFpbmVyID4gc3ZnLFxuLnN3aXBlci16b29tLWNvbnRhaW5lciA+IGNhbnZhcyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cbi8qIFpvb20gY29udGFpbmVyIHN0eWxlcyBlbmQgKi9cbi5zd2lwZXItc2xpZGUtem9vbWVkIHtcbiAgY3Vyc29yOiBtb3ZlO1xuICB0b3VjaC1hY3Rpb246IG5vbmU7XG59XG4vKiBhMTF5ICovXG4uc3dpcGVyIC5zd2lwZXItbm90aWZpY2F0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAtMTAwMDtcbn1cbi5zd2lwZXItZnJlZS1tb2RlID4gLnN3aXBlci13cmFwcGVyIHtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xuICBtYXJnaW46IDAgYXV0bztcbn1cbi5zd2lwZXItZ3JpZCA+IC5zd2lwZXItd3JhcHBlciB7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cbi5zd2lwZXItZ3JpZC1jb2x1bW4gPiAuc3dpcGVyLXdyYXBwZXIge1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG4uc3dpcGVyLWZhZGUuc3dpcGVyLWZyZWUtbW9kZSAuc3dpcGVyLXNsaWRlIHtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xufVxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eTtcbn1cbi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItZmFkZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuLnN3aXBlci1mYWRlIC5zd2lwZXItc2xpZGUtYWN0aXZlIC5zd2lwZXItc2xpZGUtYWN0aXZlIHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG59XG4uc3dpcGVyLnN3aXBlci1jdWJlIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHotaW5kZXg6IDE7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnN3aXBlci1jdWJlLnN3aXBlci1ydGwgLnN3aXBlci1zbGlkZSB7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtYWN0aXZlLFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtbmV4dCxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXByZXYge1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cbi5zd2lwZXItY3ViZSAuc3dpcGVyLWN1YmUtc2hhZG93IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3BhY2l0eTogMC42O1xuICB6LWluZGV4OiAwO1xufVxuLnN3aXBlci1jdWJlIC5zd2lwZXItY3ViZS1zaGFkb3c6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGJhY2tncm91bmQ6ICMwMDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBmaWx0ZXI6IGJsdXIoNTBweCk7XG59XG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1uZXh0ICsgLnN3aXBlci1zbGlkZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLyogQ3ViZSBzbGlkZSBzaGFkb3dzIHN0YXJ0ICovXG4uc3dpcGVyLWN1YmUgLnN3aXBlci1zbGlkZS1zaGFkb3ctY3ViZS5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCxcbi5zd2lwZXItY3ViZSAuc3dpcGVyLXNsaWRlLXNoYWRvdy1jdWJlLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWN1YmUuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci1jdWJlIC5zd2lwZXItc2xpZGUtc2hhZG93LWN1YmUuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7XG4gIHotaW5kZXg6IDA7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi8qIEN1YmUgc2xpZGUgc2hhZG93cyBlbmQgKi9cbi5zd2lwZXIuc3dpcGVyLWZsaXAge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMTtcbn1cbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlIC5zd2lwZXItc2xpZGUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLWFjdGl2ZSxcbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLWFjdGl2ZSAuc3dpcGVyLXNsaWRlLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuLyogRmxpcCBzbGlkZSBzaGFkb3dzIHN0YXJ0ICovXG4uc3dpcGVyLWZsaXAgLnN3aXBlci1zbGlkZS1zaGFkb3ctZmxpcC5zd2lwZXItc2xpZGUtc2hhZG93LXRvcCxcbi5zd2lwZXItZmxpcCAuc3dpcGVyLXNsaWRlLXNoYWRvdy1mbGlwLnN3aXBlci1zbGlkZS1zaGFkb3ctYm90dG9tLFxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWZsaXAuc3dpcGVyLXNsaWRlLXNoYWRvdy1sZWZ0LFxuLnN3aXBlci1mbGlwIC5zd2lwZXItc2xpZGUtc2hhZG93LWZsaXAuc3dpcGVyLXNsaWRlLXNoYWRvdy1yaWdodCB7XG4gIHotaW5kZXg6IDA7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi8qIEZsaXAgc2xpZGUgc2hhZG93cyBlbmQgKi9cbi5zd2lwZXItY3JlYXRpdmUgLnN3aXBlci1zbGlkZSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5LCBoZWlnaHQ7XG59XG4uc3dpcGVyLnN3aXBlci1jYXJkcyB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLnN3aXBlci1jYXJkcyAuc3dpcGVyLXNsaWRlIHtcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwgIi8vIOyDieyDgSDrs4DsiJhcbiRjb2xvci1ib3JkZXI6ICNhMGEwOTY7XG4kY29sb3ItZGlzYWJsZWQtYmc6ICNmMGYwZjA7XG4kY29sb3ItZGlzYWJsZWQtdGV4dDogI2FiYWJhYjtcbiRjb2xvci1kaXNhYmxlZC1uZWlnaGJvcjogI2NkY2RjZDtcbiRjb2xvci1ob3Zlci1iZzogI2U2ZTZlNjtcblxuLy8g6rO17Ya1IOyKpO2DgOydvFxuLnJlYWN0LWNhbGVuZGFyLFxuLnJlYWN0LWNhbGVuZGFyICosXG4ucmVhY3QtY2FsZW5kYXIgKjpiZWZvcmUsXG4ucmVhY3QtY2FsZW5kYXIgKjphZnRlciB7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4vLyByZWFjdC1jYWxlbmRhciDquLDrs7gg7Iqk7YOA7J28XG4uZHItcm91dGluZS1ub3RlLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyO1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMTI1ZW07XG5cbiAgYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblxuICAgICY6ZW5hYmxlZDpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG4gIFxuICAmLS1kb3VibGVWaWV3IHtcbiAgICB3aWR0aDogNzAwcHg7XG5cbiAgICAucmVhY3QtY2FsZW5kYXJfX3ZpZXdDb250YWluZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIG1hcmdpbjogLTAuNWVtO1xuXG4gICAgICA+ICoge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBtYXJnaW46IDAuNWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyDrhKTruYTqsozsnbTshZhcbi5kci1yb3V0aW5lLW5vdGUtY2FsZW5kYXIgLnJlYWN0LWNhbGVuZGFyX19uYXZpZ2F0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiA0NHB4O1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG5cbiAgYnV0dG9uIHtcbiAgICBtaW4td2lkdGg6IDQ0cHg7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRpc2FibGVkLWJnO1xuICAgIH1cblxuICAgICY6ZW5hYmxlZCB7XG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ob3Zlci1iZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8g7JuULCDsmpTsnbwg67CPIOuCoOynnFxuLmRyLXJvdXRpbmUtbm90ZS1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtkYXlzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgJl9fd2Vla2RheSB7XG4gICAgcGFkZGluZzogMC41ZW07XG4gIH1cbn1cblxuLmRyLXJvdXRpbmUtbm90ZS1jYWxlbmRhciAucmVhY3QtY2FsZW5kYXJfX21vbnRoLXZpZXdfX3dlZWtOdW1iZXJzIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8vIOuCoOynnCDtg4Dsnbwg7Iqk7YOA7J28XG4uZHItcm91dGluZS1ub3RlLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5cyB7XG4gIGdhcDogMC41ZW0gMDtcblxuICAmX19kYXkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICB9XG5cbiAgYWJiciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5kci1wZXJjZW50YWdlLWNpcmNsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGNpcmNsZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC43cyBlYXNlLWluLW91dDtcbiAgICB9XG4gIH1cbn1cbi8vIOydtOybg+2VnCDri6zsnZgg64Kg7KecXG4uZHItcm91dGluZS1ub3RlLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fbW9udGgtdmlld19fZGF5c19fZGF5LS1uZWlnaGJvcmluZ01vbnRoIHtcbiAgLmRyLXBlcmNlbnRhZ2UtY2lyY2xlIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiAkY29sb3ItZGlzYWJsZWQtbmVpZ2hib3IgIWltcG9ydGFudDtcbiAgICAgIHN0cm9rZS1vcGFjaXR5OiAwLjEgIWltcG9ydGFudDtcbiAgICB9XG4gICAgdGV4dCB7XG4gICAgICBvcGFjaXR5OiAwLjI7XG4gICAgfVxuICB9XG59XG5cblxuLy8gcmVhY3QtY2FsZW5kYXIg7YOA7J28XG4uZHItcm91dGluZS1ub3RlLWNhbGVuZGFyIC5yZWFjdC1jYWxlbmRhcl9fdGlsZSB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA2ZW07XG4gIHBhZGRpbmc6IDFlbTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogMWVtO1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuN2VtO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ob3Zlci1iZztcbiAgfVxufVxuIiwgImJvZHkge1xuICAtLWNvbG9yLWFjY2VudC0xLWhzbDogY2FsYyh2YXIoLS1hY2NlbnQtaCkgLSAzKSwgY2FsYyh2YXIoLS1hY2NlbnQtcykgKiAxLjAyKSwgY2FsYyh2YXIoLS1hY2NlbnQtbCkgKiAxLjE1KTtcbiAgLS1jb2xvci1hY2NlbnQtMi1oc2w6IGNhbGModmFyKC0tYWNjZW50LWgpIC0gNSksIGNhbGModmFyKC0tYWNjZW50LXMpICogMS4wNSksIGNhbGModmFyKC0tYWNjZW50LWwpICogMS4yOSk7XG59Il0sCiAgIm1hcHBpbmdzIjogIjtBQVdFLENBQUE7QUFDRSxVQUFBOztBQUNBLENBQUE7QUFDRSxvQkFBQSxJQUFBOztBQVNOLENBQUEsaUNBQUEsQ0FBQTtBQUNFLFNBQUE7QUFDQSxhQUFBO0FBQ0EsY0FBQTtBQUVBO0lBQUEsS0FBQTtJQUFBLFNBQUE7SUFBQTtBQUNBLGVBQUE7O0FBRUEsQ0FSRixpQ0FRRSxDQVJGLGVBUUUsQ0FBQTtBQUNFLFVBQUE7QUFDQSxVQUFBO0FBQ0EsV0FBQTtBQUNBLG9CQUFBOztBQUNBLENBYkosaUNBYUksQ0FiSixlQWFJLENBTEYsb0JBS0UsUUFBQTtBQUNFLFVBQUE7O0FBTU4sQ0FBQTtBQUNFLFdBQUE7O0FBR0YsQ0F4QkEsaUNBd0JBLENBQUEsd0NBQUEsQ0FoQkU7QUFpQkEsV0FBQTtBQUNBLGVBQUE7QUFDQSxtQkFBQTtBQUNBLFFBQUE7QUFDQSxhQUFBO0FBQ0EsZUFBQTs7QUFJRixDQWxDQSxpQ0FrQ0EsQ0FBQTtBQUNFLE9BQUEsTUFBQTs7QUFFQSxDQXJDRixpQ0FxQ0UsQ0FBQTtBQUNFLFlBQUE7QUFDQSxXQUFBO0FBQ0EsY0FBQTtBQUNBLFVBQUE7O0FBR0YsQ0E1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 */