Skip to content

Instantly share code, notes, and snippets.

@gistlyn
Created Aug 7, 2020
Embed
What would you like to do?
Vue Blazor WASM Clone Desktop App
{{
var MaterialIcons = {
'action/home.svg': 'home',
'content/add.svg': 'add',
'av/loop.svg': 'loop',
}
}}
{{#each MaterialIcons}}
{{`/lib/svg/material/${it.Key}` |> svgAddFile(it.Value,'app')}}
{{/each}}
{{#svg loading app}}
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="24px" height="30px" viewBox="0 0 24 30" style="enable-background:new 0 0 50 50">
<rect x="0" y="10" width="4" height="10" fill="#333" opacity="0.2">
<animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0s" dur="0.6s" repeatCount="indefinite" />
</rect>
<rect x="8" y="10" width="4" height="10" fill="#333" opacity="0.2">
<animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.15s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.15s" dur="0.6s" repeatCount="indefinite" />
</rect>
<rect x="16" y="10" width="4" height="10" fill="#333" opacity="0.2">
<animate attributeName="opacity" attributeType="XML" values="0.2; 1; .2" begin="0.3s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="height" attributeType="XML" values="10; 20; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite" />
<animate attributeName="y" attributeType="XML" values="10; 5; 10" begin="0.3s" dur="0.6s" repeatCount="indefinite" />
</rect>
</svg>
{{/svg}}
{{#svg logo app}}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69" style="height:100px;">
<g transform="matrix(1.3333 0 0 -1.3333 -76.311 313.34)">
<g transform="translate(178.06 235.01)">
<path fill="#41B883" d="m0 0-22.669-39.264-22.669 39.264h-75.491l98.16-170.02 98.16 170.02z" stroke-width="6" stroke="#fff"/>
</g>
<g transform="translate(178.06 235.01)">
<path fill="#34495e" d="m0 0-22.669-39.264-22.669 39.264h-36.227l58.896-102.01 58.896 102.01z" stroke-width="6" stroke="#fff"/>
</g>
</g>
</svg>
{{/svg}}
{{htmlError}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="/favicon.png" rel="icon">
<link rel="stylesheet" href="/lib/css/bootstrap/bootstrap.css">
<title>{{ title ?? 'Vue App' }}</title>
</head>
<body>
{{ 'buttons,buttons-svg' |> cssIncludes }}
{{ 'app' |> cssIncludes |> svgFill('#444') }}
{{#if fileExists('/bundle.css') }}
<link rel="stylesheet" href="/bundle.css">
{{else}}
{{ 'content:/src/css/' |> bundleCss({ minify:false, cache:false, out:'/app.bundle.css' }) }}
{{/if}}
<style>
{{ {
'.home-nav': ['home','#fff'],
'.add-nav': ['add','#fff'],
'.loop-nav': ['loop','#fff'],
} |> toList |> map => `${it.Key} { ${it.Value[0].svgBackgroundImageCss(it.Value[1])} }` |> joinln |> raw }}
.text-close::after { content:'\00D7'; }
</style>
<i hidden>{{ '/js/hot-fileloader.js' |> ifDebugIncludeScript }}</i>
<script>
CONFIG = {
debug: {{ debugMode |> json }},
desktop: {{ desktopInfo |> json }}
}
</script>
<noscript>You need to enable JavaScript to run this app.</noscript>
{{page}}
{{ [
`/lib/js/vue/vue.min.js`,
`/lib/js/vue-router/vue-router.min.js`,
`/lib/js/vue-class-component/vue-class-component.min.js`,
`/lib/js/vue-property-decorator/vue-property-decorator.min.js`,
`/lib/js/@servicestack/desktop/servicestack-desktop.min.js`,
`/lib/js/@servicestack/client/servicestack-client.min.js`,
`/lib/js/@servicestack/vue/servicestack-vue.min.js`,
] |> map => `<script src="${it}"></script>` |> joinln |> raw }}
<script>
var ALIASES = {
'vue': { default: Vue },
'vue-router': { default: VueRouter },
'vue-class-component': VueClassComponent,
'vue-property-decorator': VuePropertyDecorator,
'@servicestack/vue': ServiceStackVue
};
var global = window;
window.exports = {};
window.require = function(name) {
return ALIASES[name] || exports[name] || window[name] || exports;
};
Object.assign(window, window["@servicestack/desktop"], window["@servicestack/client"]);
</script>
{{#if fileExists('/bundle.js') }}
<script src="/bundle.js"></script>
{{else}}
{{ [
'content:/src/components/',
'content:/src/shared/',
'content:/src/',
] |> bundleJs({ minify:false, cache:false, iife:true, out:`/app.bundle.js` }) }}
{{/if}}
{{ scripts |> raw }}
{{initError |> htmlError}}
{{htmlError}}
</body>
</html>
debug false
name Vue Desktop
CefConfig { Width:1037, Height:770 }
# Optional: Publish App Settings to global App Directory
appName vuedesktop
description Vue Blazor WASM Clone Desktop App
#app{position:relative;display:flex;flex-direction:column}.top-row{height:3.5rem;display:flex;align-items:center}.main{flex:1}.main .top-row{background-color:#f7f7f7;border-bottom:1px solid #d6d5d5;justify-content:flex-end}.main .top-row>a,.main .top-row .btn-link{white-space:nowrap;margin-left:1.5rem}.main .top-row a:first-child{overflow:hidden;text-overflow:ellipsis}.sidebar{background-image:linear-gradient(180deg,#052767 0%,#3a0647 70%)}.sidebar .top-row{background-color:rgba(0,0,0,.4)}.sidebar .navbar-brand{font-size:1.1rem}.sidebar .oi{width:2rem;font-size:1.1rem;vertical-align:text-top;top:-2px}.sidebar .nav-item{font-size:.9rem;padding-bottom:.5rem}.sidebar .nav-item:first-of-type{padding-top:1rem}.sidebar .nav-item:last-of-type{padding-bottom:1rem}.sidebar .nav-item a{color:#d7d7d7;border-radius:4px;height:3rem;display:flex;align-items:center;line-height:3rem}.sidebar .nav-item a.active{background-color:rgba(255,255,255,.25);color:#fff}.sidebar .nav-item a:hover{background-color:rgba(255,255,255,.1);color:#fff}@media(max-width:767.98px){.main .top-row:not(.auth){display:none}.main .top-row.auth{justify-content:space-between}.main .top-row a,.main .top-row .btn-link{margin-left:0}}@media(min-width:768px){#app{flex-direction:row}.sidebar{width:250px;height:100vh;position:sticky;top:0}.main .top-row{position:sticky;top:0}.main>div{padding-left:2rem !important;padding-right:1.5rem !important}.navbar-toggler{display:none}.sidebar .collapse{display:block}}
html,body{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif}a,.btn-link{color:#0366d6}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac}.content{padding-top:1.1rem}.navbar-toggler{background-color:rgba(255,255,255,.1)}.valid.modified:not([type=checkbox]){outline:1px solid #26b050}.invalid{outline:1px solid #f00}.validation-message{color:#f00}.form-inline input[type=number]{width:100px}.form-inline input[type=date]{width:145px}
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});exports.Counter=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),Counter=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.currentCount=0,t}return __extends(t,n),t.prototype.incrementCount=function(){this.currentCount++},__decorate([vue_property_decorator_1.Component({template:'\n<div>\n <h1>Counter<\/h1>\n \n <p>Current count: {{currentCount}}<\/p>\n \n <button class="btn btn-primary" @click="incrementCount()">Click me<\/button>\n \n<\/div>'})],t)}(vue_1.default);exports.Counter=Counter;
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.FetchData=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("../shared"),dtos_1=require("../shared/dtos"),FetchData=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.forecasts=null,t.id="",t.beforeDate="",t.afterDate="",t.belowTemp="",t.aboveTemp="",t}return __extends(t,n),t.prototype.mounted=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,this.reset()];case 1:return n.sent(),[2]}})})},t.prototype.reset=function(){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(t){switch(t.label){case 0:return n=this,[4,shared_1.client.get(new dtos_1.QueryWeatherForecasts)];case 1:return n.forecasts=t.sent().results,this.id="",this.afterDate="2018-05-01",this.beforeDate="2018-05-30",this.aboveTemp="-20",this.belowTemp="20",[2]}})})},t.prototype.filter=function(){return __awaiter(this,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:return n=new dtos_1.QueryWeatherForecasts,this.id&&(n.id=parseInt(this.id)),this.beforeDate&&(n.beforeDate=this.beforeDate),this.afterDate&&(n.afterDate=this.afterDate),this.belowTemp&&(n.belowTemperatureC=parseInt(this.belowTemp)),this.aboveTemp&&(n.aboveTemperatureC=parseInt(this.aboveTemp)),t=this,[4,shared_1.client.get(n)];case 1:return t.forecasts=i.sent().results,[2]}})})},__decorate([vue_property_decorator_1.Component({template:'\n<div>\n <h1>Weather forecast<\/h1>\n \n <p>This component demonstrates fetching data from the server.<\/p>\n \n <p v-if="!forecasts"><em><i class="svg-2x svg-loading"><\/i>Loading...<\/em><\/p>\n \n <div v-else>\n \n <form class="form-inline mb-2" @submit.prevent="">\n <label for="txtId">Filters: <\/label>\n <input class="form-control form-control-sm mx-1" type="number" placeholder="[Id]" v-model="id" @input="filter"> \n <input type="date" v-model="afterDate" @change="filter">\n <input type="date" v-model="beforeDate" @change="filter">\n <input class="form-control form-control-sm mx-1" type="number" placeholder="Above (C)" v-model="aboveTemp" @input="filter">\n <input class="form-control form-control-sm mr-1" type="number" placeholder="Below (C)" v-model="belowTemp" @input="filter"> \n <button class="btn btn-secondary btn-sm" @click="reset">reset<\/button>\n <\/form>\n \n <table class="table">\n <thead>\n <tr>\n <th>Date<\/th>\n <th>Temp. (C)<\/th>\n <th>Temp. (F)<\/th>\n <th>Summary<\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <tr v-for="forecast in forecasts">\n <td>{{ forecast.date | shortDateString }}<\/td>\n <td>{{ forecast.temperatureC }}<\/td>\n <td>{{ forecast.temperatureF }}<\/td>\n <td>{{ forecast.summary }}<\/td>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n\n<\/div>'})],t)}(vue_1.default);exports.FetchData=FetchData;
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.Home=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),dtos_1=require("../shared/dtos"),shared_1=require("../shared"),Home=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.txtName="",t.result="",t}return __extends(t,n),t.prototype.onNameChanged=function(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return[4,this.nameChanged(n)];case 1:return t.sent(),[2]}})})},t.prototype.nameChanged=function(n){return __awaiter(this,void 0,void 0,function(){var t,i;return __generator(this,function(r){switch(r.label){case 0:return n?(t=new dtos_1.Hello,t.name=n,[4,shared_1.client.get(t)]):[3,2];case 1:return i=r.sent(),this.result=i.result,[3,3];case 2:this.result="";r.label=3;case 3:return[2]}})})},__decorate([vue_property_decorator_1.Watch("txtName")],t.prototype,"onNameChanged",null),__decorate([vue_property_decorator_1.Component({template:'\n<div>\n <h1>Hello, world!<\/h1>\n Welcome to your new app.\n \n <div class="row mt-4 p-0">\n <div class="col col-3">\n <v-input placeholder="Your name" v-model="txtName" />\n <\/div>\n <h3 class="col col-5 result mt-2">{{ result }}<\/h3>\n <\/div>\n<\/div>'})],t)}(vue_1.default);exports.Home=Home;
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});exports.NavMenu=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),router_1=require("../shared/router"),NavMenu=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.collapseNavMenu=!0,t}return __extends(t,n),Object.defineProperty(t.prototype,"navMenuCssClass",{get:function(){return this.collapseNavMenu?"collapse":null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"routes",{get:function(){return router_1.routes.filter(function(n){return n.hide!==!0})},enumerable:!1,configurable:!0}),t.prototype.btnClass=function(n){return"oi svg-lg "+n},t.prototype.toggleNavMenu=function(){this.collapseNavMenu=!this.collapseNavMenu},__decorate([vue_property_decorator_1.Component({template:'\n<div>\n <div class="top-row pl-4 navbar navbar-dark">\n <v-link tag="a" class="navbar-brand" to="/">\n <i class="svg-logo svg-lg"><\/i>\n Vue App<\/v-link>\n <button class="navbar-toggler" @click="toggleNavMenu()">\n <span class="navbar-toggler-icon"><\/span>\n <\/button>\n <\/div>\n <div :class="navMenuCssClass" @click="toggleNavMenu()">\n <ul class="nav flex-column">\n <li v-for="route in routes" class="nav-item px-3">\n <v-link class="nav-link" :to="route.path" :exact="route.exact">\n <span :class="btnClass(route.icon)" aria-hidden="true"><\/span> {{route.label}}\n <\/v-link>\n <\/li>\n <\/ul> \n <\/div> \n<\/div>'})],t)}(vue_1.default);exports.NavMenu=NavMenu;vue_1.default.component("nav-menu",NavMenu);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),ResponseError,ResponseStatus,QueryBase,QueryDb,WeatherForecast,HelloResponse,QueryResponse,Hello,QueryWeatherForecasts;Object.defineProperty(exports,"__esModule",{value:!0});exports.QueryWeatherForecasts=exports.Hello=exports.QueryResponse=exports.HelloResponse=exports.WeatherForecast=exports.QueryDb=exports.QueryBase=exports.ResponseStatus=exports.ResponseError=void 0;ResponseError=function(){function n(n){Object.assign(this,n)}return n}();exports.ResponseError=ResponseError;ResponseStatus=function(){function n(n){Object.assign(this,n)}return n}();exports.ResponseStatus=ResponseStatus;QueryBase=function(){function n(n){Object.assign(this,n)}return n}();exports.QueryBase=QueryBase;QueryDb=function(n){function t(t){var i=n.call(this,t)||this;return Object.assign(i,t),i}return __extends(t,n),t}(QueryBase);exports.QueryDb=QueryDb;WeatherForecast=function(){function n(n){Object.assign(this,n)}return n}();exports.WeatherForecast=WeatherForecast;HelloResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.HelloResponse=HelloResponse;QueryResponse=function(){function n(n){Object.assign(this,n)}return n}();exports.QueryResponse=QueryResponse;Hello=function(){function n(n){Object.assign(this,n)}return n.prototype.createResponse=function(){return new HelloResponse},n.prototype.getTypeName=function(){return"Hello"},n}();exports.Hello=Hello;QueryWeatherForecasts=function(n){function t(t){var i=n.call(this,t)||this;return Object.assign(i,t),i}return __extends(t,n),t.prototype.createResponse=function(){return new QueryResponse},t.prototype.getTypeName=function(){return"QueryWeatherForecasts"},t}(QueryDb);exports.QueryWeatherForecasts=QueryWeatherForecasts;
})();
(function(){
"use strict";function log(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return exports.store.debug&&console.log.apply(console,arguments),t}function openUrl(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return exports.store.desktop?[4,desktop_1.evaluateCode("openUrl('"+n+"')")]:[3,2];case 1:return t.sent(),[3,3];case 2:window.open(n);t.label=3;case 3:return[2]}})})}function exec(n,t){return __awaiter(this,void 0,void 0,function(){var i;return __generator(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,3,4]),n.loading=!0,n.responseStatus=null,[4,t()];case 1:return[2,r.sent()];case 2:return i=r.sent(),log(i),n.responseStatus=i.responseStatus||(typeof i=="string"?{errorCode:"Error",message:i}:null)||i,n.$emit("error",n.responseStatus),[3,4];case 3:return n.loading=!1,[7];case 4:return[2]}})})}var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},Roles,EventBus;Object.defineProperty(exports,"__esModule",{value:!0});exports.exec=exports.openUrl=exports.log=exports.bus=exports.store=exports.Roles=exports.client=void 0;var vue_1=require("vue"),client_1=require("@servicestack/client"),desktop_1=require("@servicestack/desktop");exports.client=new client_1.JsonServiceClient("/"),function(n){n.Admin="Admin"}(Roles=exports.Roles||(exports.Roles={}));exports.store={debug:global.CONFIG.debug,desktop:global.CONFIG.desktop};EventBus=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.store=exports.store,t}return __extends(t,n),t}(vue_1.default);exports.bus=new EventBus({data:exports.store});exports.log=log;exports.openUrl=openUrl;exports.exec=exec;vue_1.default.filter("shortDateString",function(n){var t=client_1.toDate(n);return t.getDate()+"/"+(t.getMonth()+1)+"/"+t.getFullYear()}),function(){return __awaiter(void 0,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),n=exports.store,[4,desktop_1.desktopInfo()];case 1:return n.desktop=i.sent(),log("In Desktop app:",exports.store.desktop),[3,3];case 2:return t=i.sent(),log("Not in Desktop app:",t),[3,3];case 3:return[2]}})})}();
})();
(function(){
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.redirect=exports.router=exports.routes=exports.Routes=void 0;var vue_1=require("vue"),vue_router_1=require("vue-router"),vue_2=require("@servicestack/vue"),Home_1=require("../components/Home"),Counter_1=require("../components/Counter"),FetchData_1=require("../components/FetchData"),Routes;(function(n){n.Home="/";n.Counter="/counter";n.FetchData="/fetchdata";n.Forbidden="/forbidden"})(Routes=exports.Routes||(exports.Routes={}));vue_1.default.use(vue_router_1.default);exports.routes=[{path:Routes.Home,component:Home_1.Home,label:"Home",icon:"home-nav",exact:!0},{path:Routes.Counter,component:Counter_1.Counter,label:"Counter",icon:"add-nav"},{path:Routes.FetchData,component:FetchData_1.FetchData,label:"Fetch data",icon:"loop-nav"},{path:Routes.Forbidden,component:vue_2.Forbidden,hide:!0},{path:"*",redirect:"/",hide:!0},];exports.router=new vue_router_1.default({mode:"history",linkActiveClass:"active",routes:exports.routes});exports.default=exports.router;exports.redirect=function(n){var t=n.indexOf("://")>=0;t?location.href=n:exports.router.push({path:n})};
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.App=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),desktop_1=require("@servicestack/desktop"),shared_1=require("./shared"),App=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.bgColor="",t}return __extends(t,n),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sidebarStyle",{get:function(){return this.bgColor?"background:"+this.bgColor:""},enumerable:!1,configurable:!0}),t.prototype.doColor=function(){return __awaiter(this,void 0,void 0,function(){var t,n;return __generator(this,function(i){switch(i.label){case 0:return(t=this,!this.bgColor)?[3,2]:[4,desktop_1.evaluateCode("chooseColor("+desktop_1.quote(this.bgColor)+")")];case 1:return n=i.sent(),[3,4];case 2:return[4,desktop_1.evaluateCode("chooseColor()")];case 3:n=i.sent();i.label=4;case 4:return t.bgColor=n,[2]}})})},__decorate([vue_property_decorator_1.Component({template:'\n<div id="app">\n <div class="sidebar" :style="sidebarStyle">\n <nav-menu />\n \n <div v-if="store.desktop" class="ml-5 mt-5">\n <button class="btn btn-outline-light" @click="doColor()">Choose Color<\/button>\n <\/div>\n <\/div>\n \n <div class="main">\n <div class="top-row px-4">\n <a href="https://sharpscript.net/sharp-apps/" target="_blank" class="ml-md-auto">About<\/a>\n <\/div>\n \n <div class="content px-4">\n <router-view><\/router-view>\n <\/div>\n <\/div>\n<\/div>'})],t)}(vue_1.default);exports.App=App;exports.default=App;
})();
(function(){
"use strict";var app;Object.defineProperty(exports,"__esModule",{value:!0});require("./app.scss");require("es6-shim");var vue_1=require("vue"),vue_2=require("@servicestack/vue"),router_1=require("./shared/router"),App_1=require("./App");vue_1.default.use(vue_2.default);app=new vue_1.default({el:"#app",render:function(n){return n(App_1.App)},router:router_1.router});
})();
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TUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MTwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NDI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxMy0xMS0xNlQwODoxMToyMzwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAyLjIuMTwveG1wOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4Kpcq+GAAAAsFJREFUWAnVl19oj1EYx2f+lxmFpESZ0hrFhfwp2YU/F6zWSq3kwg3SolyQcqGE4krkguTSlUVJwi1Js7mQi9ViYvOn2VjNzPD52u+t0+l3znvO3td+vz312fu+53me83z3/jnn+VVUTBKbGqGzkthdMA964A9MmMUIlbBZcB+aoBo+wlcoSzuJKokWEnkTNkPZmR79G0jE6vgL7sJWKCs7jRpTaHIuwbdgdbmorUXIECQC7eMAPv0zVVBS0wrwBGyB9nUbMVtKqpTi5wKESrjuvD7AaVASa6SqfQd9163ELyqF0jqKjkaKfUn8hH9o8ynaHilUd/w95P7eTmFSCXKZ1tQW6ALfY7d9fcTvgNxMQpvhAZyADaBt1LaFDJyBAbBFua77id0OuZmWIi3iKvgbXsFF2AR2r7CGMfUCLnH2+BdiN0JutoSZesEsJNFP4RAsgMQk/gh8AzPedf6WuBrIzc4yk6/YKfyLjWrrOddX7soxx58RV23kZjpdS/ZPMAvY5+/wH4M5INO7exvsuGLXN4jTN5HZ9BF1QrEi9tgL4nYWKmpHuhyYt7+Qk/nwMLCghKuTugRJY3I+IPczMSshs4U+RvMOP6eqVgPZBTB9xc7vEKOVJpPdI7vY5Gljn8jbXah8PWCOPYXYcR207HQEFHGJ/kHuPtA8j1PmeY0/eWU4jbPlhH8Hl5CQ8RHy94K6KK0Qvpyj+MdlB8jyTRzqG2aebaDt09d9deFXLxFlM4nWkhMqJi1OW6d2o6spcx7EH2XaEtOKx/r1U2YFfPDM3YZvBgSZfrPHdEUxgtWRtYArR/1EPaSaRKrRdU2UdVytnrqwTk+Na/icNh3PYdBEWcWk5V+hxnFPnW58c+GfaSeYDXrB1bZ1QFqBvPxqdBpg0FOzIelWpHgZrAL1nrKkUxq7+n9/tQE8gnWw1FGm/S9DpCdmD6gwqwAAAABJRU5ErkJggg==
{{#raw}}
<div id="app">
<div class="container">
<div class="row p-4">
<div id="content">
<router-view></router-view>
</div>
</div>
</div>
</div>
{{/raw}}
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dmVUZW1wZXJhdHVyZUMAZ2V0X0JlbG93VGVtcGVyYXR1cmVDAHNldF9CZWxvd1RlbXBlcmF0dXJlQwBnZXRfVGVtcGVyYXR1cmVGAFNlcnZpY2VTdGFjay5JTwBTZXJ2aWNlU3RhY2suRGF0YQBTeXN0ZW0uRGF0YQBTZWVkRGF0YQBsQ3VzdERhdGEAPD5jAGNjAFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljAERiU2NyaXB0c0FzeW5jAENDSG9va1Byb2MAZ2V0X0lkAHNldF9JZABBZGQAPFRlbXBlcmF0dXJlQz5rX19CYWNraW5nRmllbGQAPEFib3ZlVGVtcGVyYXR1cmVDPmtfX0JhY2tpbmdGaWVsZAA8QmVsb3dUZW1wZXJhdHVyZUM+a19fQmFja2luZ0ZpZWxkADxJZD5rX19CYWNraW5nRmllbGQAPE5hbWU+a19fQmFja2luZ0ZpZWxkADxEYXRlPmtfX0JhY2tpbmdGaWVsZAA8QmVmb3JlRGF0ZT5rX19CYWNraW5nRmllbGQAPEFmdGVyRGF0ZT5rX19CYWNraW5nRmllbGQAPENvbmZpZ3VyYXRpb24+a19fQmFja2luZ0ZpZWxkADxSZXNwb25zZVN0YXR1cz5rX19CYWNraW5nRmllbGQAPFJlc3VsdD5rX19CYWNraW5nRmllbGQAPFN1bW1hcnk+a19fQmFja2luZ0ZpZWxkAEJ1aWxkAGhXbmQAbWV0aG9kAFZ1ZUFwcC5TZXJ2aWNlSW50ZXJmYWNlAFNlcnZpY2UAaEluc3RhbmNlAGdldF9EZWJ1Z01vZGUAc2V0X0RlYnVnTW9kZQBFbmRJbnZva2UAQmVnaW5JbnZva2UASURpc3Bvc2FibGUAUnVudGltZUZpZWxkSGFuZGxlAFJ1bnRpbWVUeXBlSGFuZGxlAEVuYWJsZVRlbXBsYXRlSGFuZGxlAEdldFR5cGVGcm9tSGFuZGxlAHNldF9BY2Nlc3NSb2xlAGdldF9OYW1lAHNldF9OYW1lAGxwVGVtcGxhdGVOYW1lAHNldF9BcHBOYW1lAERhdGVUaW1lAFN5c3RlbS5SdW50aW1lAHNjb3BlAFZhbHVlVHlwZQBNaWNyb3NvZnQuQXNwTmV0Q29yZQBDb25maWd1cmUASG90UmVsb2FkRmVhdHVyZQBEZXNrdG9wRmVhdHVyZQBTaGFycFBhZ2VzRmVhdHVyZQBBdXRvUXVlcnlGZWF0dXJlAEFwcEhvc3RCYXNlAEhlbGxvUmVzcG9uc2UARGlzcG9zZQBnZXRfRGF0ZQBzZXRfRGF0ZQBnZXRfQmVmb3JlRGF0ZQBzZXRfQmVmb3JlRGF0ZQBnZXRfQWZ0ZXJEYXRlAHNldF9BZnRlckRhdGUATXVsdGljYXN0RGVsZWdhdGUARW5hYmxlVGVtcGxhdGUAU2VydmljZVN0YWNrLk9ybUxpdGUAU2VydmljZVN0YWNrLk9ybUxpdGUuU3FsaXRlAENvbXBpbGVyR2VuZXJhdGVkQXR0cmlidXRlAERlYnVnZ2FibGVBdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBSb3V0ZUF0dHJpYnV0ZQBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBBc3NlbWJseUluZm9ybWF0aW9uYWxWZXJzaW9uQXR0cmlidXRlAEFzc2VtYmx5Q29uZmlndXJhdGlvbkF0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBdXRvSW5jcmVtZW50QXR0cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQB2YWx1ZQBSZXNvbHZlAGxTdHJ1Y3RTaXplAFNpemVPZgBnZXRfQ29uZmlnAFNldENvbmZpZwBIb3N0Q29uZmlnAFN5c3RlbS5SdW50aW1lLlZlcnNpb25pbmcAU3RyaW5nAE1pY3Jvc29mdC5Bc3BOZXRDb3JlLkhvc3RpbmcATWljcm9zb2Z0LkV4dGVuc2lvbnMuSG9zdGluZwBTeXN0ZW0uRHJhd2luZwBtc2cAT3JtTGl0ZVNjaGVtYUFwaQBPcm1MaXRlV3JpdGVBcGkAQXN5bmNDYWxsYmFjawBzZXRfRW5hYmxlU3BhRmFsbGJhY2sAY2FsbGJhY2sAVXNlU2VydmljZVN0YWNrAEVuYWJsZUhvb2sAbHBmbkhvb2sATWFyc2hhbABWdWVBcHAuU2VydmljZU1vZGVsAENvbURsZzMyLmRsbABWdWVBcHAuZGxsAEZyb21IdG1sAFRvSHRtbABsUGFyYW0Ad1BhcmFtAFByb2dyYW0AQWxsb2NDb1Rhc2tNZW0ARnJlZUNvVGFza01lbQBTeXN0ZW0AUHJldmVudEZ1bGxPcGVuAE1haW4ASVBsdWdpbgBTZXJ2aWNlU3RhY2suQ29uZmlndXJhdGlvbgBNaWNyb3NvZnQuRXh0ZW5zaW9ucy5Db25maWd1cmF0aW9uAElDb25maWd1cmF0aW9uAGdldF9Db25maWd1cmF0aW9uAGNvbmZpZ3VyYXRpb24ATWljcm9zb2Z0LkV4dGVuc2lvbnMuRGVwZW5kZW5jeUluamVjdGlvbgBTeXN0ZW0uUmVmbGVjdGlvbgBJU2VydmljZUNvbGxlY3Rpb24ASURiQ29ubmVjdGlvbgBTeXN0ZW0uRGF0YS5Db21tb24AU2VydmljZVN0YWNrLkNvbW1vbgBBbGxvd0Fub24ASVJldHVybgBSdW4ASGVsbG8AU2hvd0hlbHAAU2VydmljZVN0YWNrLkRlc2t0b3AAVnVlQXBwAGFwcABVc2VTdGFydHVwAEZ1bnEAZ2V0X1Byb3ZpZGVyAElWaXJ0dWFsUGF0aFByb3ZpZGVyAElPcm1MaXRlRGlhbGVjdFByb3ZpZGVyAE1pY3Jvc29mdC5Bc3BOZXRDb3JlLkJ1aWxkZXIAd2ViQnVpbGRlcgBJQXBwbGljYXRpb25CdWlsZGVyAENyZWF0ZURlZmF1bHRCdWlsZGVyAElIb3N0QnVpbGRlcgBJV2ViSG9zdEJ1aWxkZXIAQ3JlYXRlSG9zdEJ1aWxkZXIAQ29udGFpbmVyAGNvbnRhaW5lcgBod25kT3duZXIAUmVnaXN0ZXIAU2VydmljZVN0YWNrLlNlcnZlcgBTb2xpZENvbG9yAENob29zZUNvbG9yAGNob29zZUNvbG9yAGRlZmF1bHRDb2xvcgBBbnlDb2xvcgBDb21tRGxnRXh0ZW5kZWRFcnJvcgBDb2xvclRyYW5zbGF0b3IALmN0b3IALmNjdG9yAFN5c3RlbS5EaWFnbm9zdGljcwBDdXN0b21NZXRob2RzAGdldF9TY3JpcHRNZXRob2RzAFNlcnZpY2VTdGFjay5JbnRlcmZhY2VzAENvbmZpZ3VyZVNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzAE15U2VydmljZXMAc2VydmljZXMARGVidWdnaW5nTW9kZXMASVZpcnR1YWxGaWxlcwBnZXRfVmlydHVhbEZpbGVzAHNldF9WaXJ0dWFsRmlsZXMAUm9sZU5hbWVzAFN5c3RlbS5EcmF3aW5nLlByaW1pdGl2ZXMAQ2hvb3NlQ29sb3JGbGFncwBJQXBwU2V0dGluZ3MAZ2V0X0FwcFNldHRpbmdzAHNldF9BcHBTZXR0aW5ncwBOZXRDb3JlQXBwU2V0dGluZ3MAYXJncwA8PjRfX3RoaXMARGVza3RvcFV0aWxzAGdldF9QbHVnaW5zAFdlYkhvc3RCdWlsZGVyRXh0ZW5zaW9ucwBHZW5lcmljSG9zdEJ1aWxkZXJFeHRlbnNpb25zAEhvc3RpbmdFbnZpcm9ubWVudEV4dGVuc2lvbnMATmV0Q29yZUFwcEhvc3RFeHRlbnNpb25zAEhvc3RpbmdBYnN0cmFjdGlvbnNIb3N0RXh0ZW5zaW9ucwBPcm1MaXRlQ29ubmVjdGlvbkZhY3RvcnlFeHRlbnNpb25zAFNlcnZpY2VTdGFjay5EYXRhQW5ub3RhdGlvbnMATWljcm9zb2Z0LkFzcE5ldENvcmUuSG9zdGluZy5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkV4dGVuc2lvbnMuSG9zdGluZy5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkV4dGVuc2lvbnMuQ29uZmlndXJhdGlvbi5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkV4dGVuc2lvbnMuRGVwZW5kZW5jeUluamVjdGlvbi5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkFzcE5ldENvcmUuSHR0cC5BYnN0cmFjdGlvbnMAU3lzdGVtLkNvbGxlY3Rpb25zAFJ1bnRpbWVIZWxwZXJzAGN1c3RvbUNvbG9ycwBscEN1c3RDb2xvcnMAQ29uZmlndXJlV2ViSG9zdERlZmF1bHRzAFF1ZXJ5V2VhdGhlckZvcmVjYXN0cwBDcmVhdGVUYWJsZUlmTm90RXhpc3RzAGdldF9SZXNwb25zZVN0YXR1cwBzZXRfUmVzcG9uc2VTdGF0dXMAQ29u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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment