Files
PyRIGS/RIGS/static/css/bootstrap-datetimepicker.min.css
Arona Jones 3414204209 Refactor buildsystem to NPM/Gulp, port to BS4 & rewrite RIGS tests accordingly... (#412)
* Start to seperate versioning into its own app

* Start reworking invoice things

* Reduced overall font size a touch

* Improvements to generic lists

* Tweak some colours to be a bit less OTT

I need to work out if I can seperate background and primary colours like BS3 did

* Improvements to event table mobile

* First pass at mobile-ising the generic list

* Item table fixes

* Fixed fullcalendar print css not included

* Asset list table improvements

* Tweak asset list to be more in line with other lists

* Versioning template improvements

//TODO Rather than have seperate asset templates, convert 'id' into a template variable

* Tweak versioning templates to allow ID overrides

Asset specific templates begone. Still need to bring back the ID formatting for the Rigboard.

* Asset form fixes

* Use the right autocompleter.js...

* Breakout (most) user stuff to separate module

The model remains in RIGS for now, as it's pretty painful to move...

* Python Format/import opt

* Test Refactor Part 1 - Shuffle things around

* Fix migrations

TODO - need to ensure moved models are *moved* rather than deleted and recreated!

* Start on new tests

* Initial work on event create test reimpl

* Init other tests, more rigs test faffery

* Desaturate theme colors even more

Much closer to BS3

* Fix event item adding

Bit too heavy handed with the deduplication there Arona

* Initial refactor of event item testing

* Upgrade bootstrap-select

* Updated bootstrap-select for BS4

* Initial port of duplicate testing

Needs the latter half rewriting once we have an EventDetail POM

* Refactor date validation test

So close to killing test_functional.EventTest!

* Deduplication of testing code

* pep8

* Fix some tests

And some things that were actually borked

* FIX: Prevent setting access time after start time 

Cherry pick of d274ea4606. Will close #405.

* Refactor calendar tests

* FIX: Don't show asset buttons/history for basic users

* Really ought to get a pre-commit hook for pep8...

* Fully replace test_functional

* Dedupe generic search logic

* Fix the remaining tests

* Ensure submit button is scrolled to in tests

* Fix asset creation test + actually verify its results

* Make CI use latest (stable) chromedriver rather than some ancient one

Since Travis uses the latest stable chrome, should always match. Bash oneliner \o/

* Of course | is part of YAML syntax, of course...

Maybe this works.

* Update python version

Trying to get CI to match my local environment as much as possible...

* Minor test futzing

* Well that wasn't clever of me

* That was even less clever of me

* Revert to old submit wait behaviour

* What about if I did this

* Try disabling chrome cache

* Added screenshot recording of test failures

* Fixed RIGS tests not being run

* Fixed Pep8 - I promise I'll make a pre-commit hook sometime!

* Very initial work at togglable darktheme.

Dammit @alexdaniel654 just when I had my scope creep kinda under control. It'll be v. nice to have though...!

* More dark theme wangling

* Fix some asset template things

* FIX: CI Locale Issues

* Fix sample command

* Initial work at integrating the risk assessment

#136. No clever database structure as yet...

* FIX: Don't set every boolean input to radios

* Different approach to RA linking

* Move text definitions to somewhere more authoratitive

* FIX: Undo breakage causing autopep8

o.O

* Expand detail template

* Use correct view for RA history

* Initial work at coercing activity feed into showing RAs

Also shows Asset/Supplier on the homepage feed.

* Refactor activity feed template logic

Yay for removing arbitrary if/else chains!

* Initial work on caching activity feed

Server side that is. Ref #162.

* Start RA list template

* Refactor RA creation stuff, again

* Add H&S Details to Event Detail View

* Display venue notes in event detail

Notes are no use if nobody reads them. Not sure on this one.

* Add ability to filter event archive by status

Closes #168.

* Fix lingering naive time

* Use locmem cache in sqlite environments

Otherwise the tests just lock up totally. Should close #162

* Update dependencies

Mirrors/supersedes 0e67da82e2

* Add global ctrl/meta-enter shortcut for form submission

Wants rewriting for better efficiency, but hey, it works!

* Update dependencies

* Fix for a situation that should be impossible

* Fix navbar alignment

* FEAT: Improve 'omni'search

- Partialised template
- Added to assets header
- Added ability to search assets/suppliers
- Improved selection logic
- Have it display current query

* Move closemodal into PyRIGS

* Fix tests for search improvements

* Dark mode colour improvements

* Fix table colors for dry hires

* further darktheme fixes

* Remove the dark header from light theme

* Fix reload loops when CSS/JS is changed

* Move dark theme SCSS to separate file, fix inactive pagination styling

* Genercise detail pages

* Testing something re notes

I wonder if I can make that global, rather than per-template...

* Dark theme palette shenanigans

I just can't decide

* Match darktheme palette to forum darktheme palette

Why reinvent the wheel.

* Make supplier detail use the generic template

* Disable mobile event table PoC for now

* Remove the defaults from the RA fields + make them required

* More RA fixes

* Fixes to revisions for RAs

* Add bootstrap 4 test page

* Bunch of dark mode fixes from test page

* Do not use Django 'required' for radio selects

As this requires them to be True, whereas we just need to require that an option be entered.

* Properly fixed popover darktheme

* Fixed search for events

* Style fixes to asset list

* Start RA 'mark review' feature

* Add reviewing to revision history, fix RA editing not working

Also actually commit all the files, that helps

* Fix Power MIC being lost on RA edit

Why it is subtly different to the Event Update behaviour? Who knows

* Invalidate RA review if it is edited after review

* Start work on event checklist

* Add a button for creating and instantly voiding invoices

Handy dandy for when you have loads of cancelled events, like say, a pandemic

* Mooooore status chips, mooore

* Initial shenanigans on storing my overly fancy EC form

* Proof of concept for JSON parsing/storage

\o/

* Add new line functionality for vehicles/drivers

Might it have been easier to create 'dummy' models like with EventItems? Probably...

* Alter rig_count to not include un-checked-in dry hires

* Insert a divider between still-out dry hires and actually upcoming events on rigboard

* Initial work on new checklist handling. No more JSON!

* Versioning module now does magic

Automatic creation of views/urls for anything registered with reversion, with a small amount of hackage to preserve legacy stuff. (and the DAMNED asset IDs!) I would never get distracted...

* Cleanup

* Event checklist crew works

Mostly - its not happy with timezones

* Medium event power stuff done, barring worst case stuff

* Misc fixes

* Validation of power reqs

* Worst case points on checklist

* Templating improvements to RA/EC stuff

* Do event table color logic at python level

* Audit template fixes

* Restrict versioning to one level of depth for speed

Also fixed the template for nested changes

* Event properties internal/authorised always return a explicit boolean rather than sometimes None

* Use template filter for notes

* Fix list templates

TODO: Sensible place to define the 'expected answer' stuff.

* Fix cable table template

* Rethink rigboard color logic again

Also revert some broken stuff

* Test fixes

* Modify auth test so it doesn't try and test for external authorisations

Cause that's not a thing

* Why does this work

Bloody overzealous autoformatter...

* Formatting...

* Initial work on RA tests

* Pages/start of tests for EventChecklists

* Much better coverage of H&S things

* Cleanup & Squash migrations

* Fix wrong variable name in settings.py

* Fix broken invoice list template

* Add revision history to invoices/payments.

Also patches previously introduced reversion permissions hole.

Supersedes and closes #337.

* Various misc fixes

* Fix for my fix

* Curse youuuuu pep8

* Invoice template improvements

* Minor fixes

* More tweaks

* More fixes

* Major improvements/fixes to authorisation templates

* Add ability to mark event checklists as Large Event

This just disables the checks to allow the rest of it to be filled out for large events, though I expect paper forms may still be used...

* Remove database ID from generic list

* Put power threshold values in a collapse

* Use template filter for consistent removal of 'None links'

Plus cleaner template markup! More HTML-in-Python tho, which always feels a bit CSS-in-JS

* Tweak asset list markup

* Begin to change add buttons success -> primary

Also change search primary -> info to avoid clash

* Begin to improve event checklist on mobile

* Asset detail template improvements

* Fix #326 (again)

* Fix errors being squashed

* Fix rigboard validation tests

* Initial work on BS4 button templatetag

Newfeatureitis strikes again

* Allow multiple event checklists per event

TODO: Status chip now needs rethinking

* Minor event detail fixes

* Fix tests

* Rework button tag

* Mobile fixes for search

* Fix event checklist on mobile

* Redo light theme palette

* Switch rigboard new button to primary

* Kill off excess whitespace on rigboard

* Rigboard Timing display tweaks

* Fix tests

* Properly handle eventauthorisations in new versioning

It's not great, not terrible...

* Prevent creating duplicate revisions on event

Potential fix for #322 - I couldn't reproduce even before this change...

* Template improvements

* Minor test fixes

* Revert "Prevent creating duplicate revisions on event"

Apparently it was too strong at preventing dupes...

This reverts commit cce0ad0f9f.

# Conflicts:
#	RIGS/models.py

* Better approach to generic list templates + other deduplication

* Also apply better approach to generic detail pages

* One of these days I'll remember to test BEFORE pushing...

* And now the same for generic forms

* Display tick/cross rather than true/false in boolean version diffs

* Upgrade dependencies

* Fixes fixes fixes

* Fix dependency hell

Probably

* Correct handling of spaces in paperwork filenames

Also normalises display of Invoice IDs. Partial fix for #391.

* Buggerit millennium hand and shrimp

Knew I was gonna forget to fix the tests

* FIX: Set duplicated event status to provisional

Closes #398.

Flip flop. Flip flop.

* Update polyfill for datetime-local

Bloody Firefox. We love to hate you. Proper CSS of the fill to come, SoonTM.

Closes #391

* Curses!

* Minor typo fixes

* Initial pass at soop-consult confirmation screen for RAs

* Fix migration

* Make venue/date editable on EC

For multi venue, multi day events

Defaults to date and venue set on the event. Also made power MIC default to that set in RA

* Clearer logic for RA inverted fields

* (probably) fix tests

* Give keyholders supplier edit perm

* Generic list only displays edit button if user has perm

* Same perm check for generic details

* H&S Details takes up free space on non-internal events

* Remove flash of content when loading new rig page

* First pass at clearer display of asset list filters

* Fix tests / default to headless tests

(fingers crossed)

* Fix autocompleter.js to properly disable edit links again

* Move status color logic back to template

Cause that somehow makes it work better??

* Display note icon on event detail page

* Fix caching

* Put rounded corners back where they belong

* Remove lingering use of 'page-header'

BS removed that style

* More search and replace for BS changes

Thought I'd got them all. Clearly not!

* Remove enforced linebreak on status chips

* Fix horizontal-ness on some forms

* Remove animation on prefers-reduced-motion/low referesh rate devices

Also normalises handling of asset list cable table & improves its use of space on large devices

* Make version changes badges more readable

* First pass at making the calendar less crap

* Fix event table success logic

Yay for copy paste fails >.>

* Use borders rather than block colors for coloured tables under darktheme

* First pass at porting calendar from FC V3 to V5

Two major versions and all they did was rename a bunch of names...TWICE.

* Rework version name method to avoid blank names on eventchecklist vehicles/crew

* Fix cable test

* Made radio button focus much more obvious on dark theme

* Implement Jerb's wording changes

* Fix one test, break another...

* Fix recent change stream list mutation issue

* FIX: Do not naively cache event table

Not that easy, it turns out. Duh.

* FEAT: Implement #413 show associated assets on cable type detail pg

Closes #413

* Allow H&S for non-events

* Update emergency contact number

* Improvements to profile detail page

* Implement some of Jonny's suggested changes

TODO:
- Define event size at RA time, pass through to EC
- Have later power questions be context dependent

* Test fixes

* Add space for power/rigging plans to be linked to RAs

* Start move of event size logic to RA from Ec

* Javascript required shenanigans for RA power

* More moving of event size logic

* Fixing tests for new logic etc

* Why does this work

Indeed, it may not

* FIX: Stupid typo in versioning.py

* Further minor fixes to versioning

* Add icons to H&S menu items

* Should fix calendar breaking in production

* Small alignment fix in asset list

* Squash migrations

Co-authored-by: Matthew Smith <psyms13@nottingham.ac.uk>
2021-01-23 22:22:37 +00:00

249 lines
29 KiB
CSS

/*!
* Datetimepicker for Bootstrap
*
* Copyright 2012 Stefan Petre
* Improvements by Andrew Rowls
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.datetimepicker {
padding: 4px;
margin-top: 1px;
border-radius: 4px;
direction: ltr; }
.datetimepicker-inline {
width: 220px; }
.datetimepicker.datetimepicker-rtl {
direction: rtl; }
.datetimepicker.datetimepicker-rtl table tr td span {
float: right; }
.datetimepicker-dropdown, .datetimepicker-dropdown-left {
top: 0;
left: 0; }
[class*=" datetimepicker-dropdown"]:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute; }
[class*=" datetimepicker-dropdown"]:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
position: absolute; }
[class*=" datetimepicker-dropdown-top"]:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 7px solid #ccc;
border-top-color: rgba(0, 0, 0, 0.2);
border-bottom: 0; }
[class*=" datetimepicker-dropdown-top"]:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid #fff;
border-bottom: 0; }
.datetimepicker-dropdown-bottom-left:before {
top: -7px;
right: 6px; }
.datetimepicker-dropdown-bottom-left:after {
top: -6px;
right: 7px; }
.datetimepicker-dropdown-bottom-right:before {
top: -7px;
left: 6px; }
.datetimepicker-dropdown-bottom-right:after {
top: -6px;
left: 7px; }
.datetimepicker-dropdown-top-left:before {
bottom: -7px;
right: 6px; }
.datetimepicker-dropdown-top-left:after {
bottom: -6px;
right: 7px; }
.datetimepicker-dropdown-top-right:before {
bottom: -7px;
left: 6px; }
.datetimepicker-dropdown-top-right:after {
bottom: -6px;
left: 7px; }
.datetimepicker > div {
display: none; }
.datetimepicker.minutes div.datetimepicker-minutes {
display: block; }
.datetimepicker.hours div.datetimepicker-hours {
display: block; }
.datetimepicker.days div.datetimepicker-days {
display: block; }
.datetimepicker.months div.datetimepicker-months {
display: block; }
.datetimepicker.years div.datetimepicker-years {
display: block; }
.datetimepicker table {
margin: 0; }
.datetimepicker td, .datetimepicker th {
text-align: center;
width: 20px;
height: 20px;
border-radius: 4px;
border: 0; }
.table-striped .datetimepicker table tr td, .table-striped .datetimepicker table tr th {
background-color: transparent; }
.datetimepicker table tr td.minute:hover {
background: #eee;
cursor: pointer; }
.datetimepicker table tr td.hour:hover {
background: #eee;
cursor: pointer; }
.datetimepicker table tr td.day:hover {
background: #eee;
cursor: pointer; }
.datetimepicker table tr td.old, .datetimepicker table tr td.new {
color: #999; }
.datetimepicker table tr td.disabled, .datetimepicker table tr td.disabled:hover {
background: 0;
color: #999;
cursor: default; }
.datetimepicker table tr td.today, .datetimepicker table tr td.today:hover, .datetimepicker table tr td.today.disabled, .datetimepicker table tr td.today.disabled:hover {
background-color: #fde19a;
background-image: linear-gradient(to bottom, #fdd49a, #fdf59a);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a',endColorstr='#fdf59a',GradientType=0);
border-color: #fdf59a #fdf59a #fbed50;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); }
.datetimepicker table tr td.today:hover, .datetimepicker table tr td.today:hover:hover, .datetimepicker table tr td.today.disabled:hover, .datetimepicker table tr td.today.disabled:hover:hover, .datetimepicker table tr td.today:active, .datetimepicker table tr td.today:hover:active, .datetimepicker table tr td.today.disabled:active, .datetimepicker table tr td.today.disabled:hover:active, .datetimepicker table tr td.today.active, .datetimepicker table tr td.today:hover.active, .datetimepicker table tr td.today.disabled.active, .datetimepicker table tr td.today.disabled:hover.active, .datetimepicker table tr td.today.disabled, .datetimepicker table tr td.today:hover.disabled, .datetimepicker table tr td.today.disabled.disabled, .datetimepicker table tr td.today.disabled:hover.disabled, .datetimepicker table tr td.today[disabled], .datetimepicker table tr td.today:hover[disabled], .datetimepicker table tr td.today.disabled[disabled], .datetimepicker table tr td.today.disabled:hover[disabled] {
background-color: #fdf59a; }
.datetimepicker table tr td.today:active, .datetimepicker table tr td.today:hover:active, .datetimepicker table tr td.today.disabled:active, .datetimepicker table tr td.today.disabled:hover:active, .datetimepicker table tr td.today.active, .datetimepicker table tr td.today:hover.active, .datetimepicker table tr td.today.disabled.active, .datetimepicker table tr td.today.disabled:hover.active {
background-color: #fbf069; }
.datetimepicker table tr td.active, .datetimepicker table tr td.active:hover, .datetimepicker table tr td.active.disabled, .datetimepicker table tr td.active.disabled:hover {
background-color: #006dcc;
background-image: linear-gradient(to bottom, #08c, #04c);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);
border-color: #04c #04c #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
.datetimepicker table tr td.active:hover, .datetimepicker table tr td.active:hover:hover, .datetimepicker table tr td.active.disabled:hover, .datetimepicker table tr td.active.disabled:hover:hover, .datetimepicker table tr td.active:active, .datetimepicker table tr td.active:hover:active, .datetimepicker table tr td.active.disabled:active, .datetimepicker table tr td.active.disabled:hover:active, .datetimepicker table tr td.active.active, .datetimepicker table tr td.active:hover.active, .datetimepicker table tr td.active.disabled.active, .datetimepicker table tr td.active.disabled:hover.active, .datetimepicker table tr td.active.disabled, .datetimepicker table tr td.active:hover.disabled, .datetimepicker table tr td.active.disabled.disabled, .datetimepicker table tr td.active.disabled:hover.disabled, .datetimepicker table tr td.active[disabled], .datetimepicker table tr td.active:hover[disabled], .datetimepicker table tr td.active.disabled[disabled], .datetimepicker table tr td.active.disabled:hover[disabled] {
background-color: #04c; }
.datetimepicker table tr td.active:active, .datetimepicker table tr td.active:hover:active, .datetimepicker table tr td.active.disabled:active, .datetimepicker table tr td.active.disabled:hover:active, .datetimepicker table tr td.active.active, .datetimepicker table tr td.active:hover.active, .datetimepicker table tr td.active.disabled.active, .datetimepicker table tr td.active.disabled:hover.active {
background-color: #039; }
.datetimepicker table tr td span {
display: block;
width: 23%;
height: 54px;
line-height: 54px;
float: left;
margin: 1%;
cursor: pointer;
border-radius: 4px; }
.datetimepicker .datetimepicker-hours span {
height: 26px;
line-height: 26px; }
.datetimepicker .datetimepicker-hours table tr td span.hour_am, .datetimepicker .datetimepicker-hours table tr td span.hour_pm {
width: 14.6%; }
.datetimepicker .datetimepicker-hours fieldset legend, .datetimepicker .datetimepicker-minutes fieldset legend {
margin-bottom: inherit;
line-height: 30px; }
.datetimepicker .datetimepicker-minutes span {
height: 26px;
line-height: 26px; }
.datetimepicker table tr td span:hover {
background: #eee; }
.datetimepicker table tr td span.disabled, .datetimepicker table tr td span.disabled:hover {
background: 0;
color: #999;
cursor: default; }
.datetimepicker table tr td span.active, .datetimepicker table tr td span.active:hover, .datetimepicker table tr td span.active.disabled, .datetimepicker table tr td span.active.disabled:hover {
background-color: #006dcc;
background-image: linear-gradient(to bottom, #08c, #04c);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);
border-color: #04c #04c #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); }
.datetimepicker table tr td span.active:hover, .datetimepicker table tr td span.active:hover:hover, .datetimepicker table tr td span.active.disabled:hover, .datetimepicker table tr td span.active.disabled:hover:hover, .datetimepicker table tr td span.active:active, .datetimepicker table tr td span.active:hover:active, .datetimepicker table tr td span.active.disabled:active, .datetimepicker table tr td span.active.disabled:hover:active, .datetimepicker table tr td span.active.active, .datetimepicker table tr td span.active:hover.active, .datetimepicker table tr td span.active.disabled.active, .datetimepicker table tr td span.active.disabled:hover.active, .datetimepicker table tr td span.active.disabled, .datetimepicker table tr td span.active:hover.disabled, .datetimepicker table tr td span.active.disabled.disabled, .datetimepicker table tr td span.active.disabled:hover.disabled, .datetimepicker table tr td span.active[disabled], .datetimepicker table tr td span.active:hover[disabled], .datetimepicker table tr td span.active.disabled[disabled], .datetimepicker table tr td span.active.disabled:hover[disabled] {
background-color: #04c; }
.datetimepicker table tr td span.active:active, .datetimepicker table tr td span.active:hover:active, .datetimepicker table tr td span.active.disabled:active, .datetimepicker table tr td span.active.disabled:hover:active, .datetimepicker table tr td span.active.active, .datetimepicker table tr td span.active:hover.active, .datetimepicker table tr td span.active.disabled.active, .datetimepicker table tr td span.active.disabled:hover.active {
background-color: #039; }
.datetimepicker table tr td span.old {
color: #999; }
.datetimepicker th.switch {
width: 145px; }
.datetimepicker th span.glyphicon {
pointer-events: none; }
.datetimepicker thead tr:first-child th, .datetimepicker tfoot th {
cursor: pointer; }
.datetimepicker thead tr:first-child th:hover, .datetimepicker tfoot th:hover {
background: #eee; }
.input-append.date .add-on i, .input-prepend.date .add-on i, .input-group.date .input-group-addon span {
cursor: pointer;
width: 14px;
height: 14px; }
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJvb3RzdHJhcC1kYXRldGltZXBpY2tlci5taW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztFQVFFO0FBQUM7RUFBZ0IsWUFBVztFQUFDLGVBQWM7RUFBa0Qsa0JBQWlCO0VBQUMsY0FBYSxFQUFBOztBQUFDO0VBQXVCLFlBQVcsRUFBQTs7QUFBQztFQUFtQyxjQUFhLEVBQUE7O0FBQUM7RUFBb0QsWUFBVyxFQUFBOztBQUFDO0VBQXVELE1BQUs7RUFBQyxPQUFNLEVBQUE7O0FBc0J0VjtFQXRCa1ksV0FBVTtFQUFDLHFCQUFvQjtFQUFDLGtDQUFpQztFQUFDLG1DQUFrQztFQUFDLDZCQUE0QjtFQUFDLHVDQUFtQztFQUFDLGtCQUFpQixFQUFBOztBQStCempCO0VBL0JvbUIsV0FBVTtFQUFDLHFCQUFvQjtFQUFDLGtDQUFpQztFQUFDLG1DQUFrQztFQUFDLDZCQUE0QjtFQUFDLGtCQUFpQixFQUFBOztBQXVDdnZCO0VBdkN1eUIsV0FBVTtFQUFDLHFCQUFvQjtFQUFDLGtDQUFpQztFQUFDLG1DQUFrQztFQUFDLDBCQUF5QjtFQUFDLG9DQUFnQztFQUFDLGdCQUFlLEVBQUE7O0FBZ0R0OUI7RUFoRHFnQyxXQUFVO0VBQUMscUJBQW9CO0VBQUMsa0NBQWlDO0VBQUMsbUNBQWtDO0VBQUMsMEJBQXlCO0VBQUMsZ0JBQWUsRUFBQTs7QUFBQztFQUE0QyxTQUFRO0VBQUMsVUFBUyxFQUFBOztBQUFDO0VBQTJDLFNBQVE7RUFBQyxVQUFTLEVBQUE7O0FBQUM7RUFBNkMsU0FBUTtFQUFDLFNBQVEsRUFBQTs7QUFBQztFQUE0QyxTQUFRO0VBQUMsU0FBUSxFQUFBOztBQUFDO0VBQXlDLFlBQVc7RUFBQyxVQUFTLEVBQUE7O0FBQUM7RUFBd0MsWUFBVztFQUFDLFVBQVMsRUFBQTs7QUFBQztFQUEwQyxZQUFXO0VBQUMsU0FBUSxFQUFBOztBQUFDO0VBQXlDLFlBQVc7RUFBQyxTQUFRLEVBQUE7O0FBQUM7RUFBb0IsYUFBWSxFQUFBOztBQUFDO0VBQW1ELGNBQWEsRUFBQTs7QUFBQztFQUErQyxjQUFhLEVBQUE7O0FBQUM7RUFBNkMsY0FBYSxFQUFBOztBQUFDO0VBQWlELGNBQWEsRUFBQTs7QUFBQztFQUErQyxjQUFhLEVBQUE7O0FBQUM7RUFBc0IsU0FBUSxFQUFBOztBQUFDO0VBQXNDLGtCQUFpQjtFQUFDLFdBQVU7RUFBQyxZQUFXO0VBQWtELGtCQUFpQjtFQUFDLFNBQVEsRUFBQTs7QUFBQztFQUFzRiw2QkFBNEIsRUFBQTs7QUFBQztFQUF5QyxnQkFBZTtFQUFDLGVBQWMsRUFBQTs7QUFBQztFQUF1QyxnQkFBZTtFQUFDLGVBQWMsRUFBQTs7QUFBQztFQUFzQyxnQkFBZTtFQUFDLGVBQWMsRUFBQTs7QUFBQztFQUFnRSxXQUFVLEVBQUE7O0FBQUM7RUFBZ0YsYUFBWTtFQUFDLFdBQVU7RUFBQyxlQUFjLEVBQUE7O0FBQUM7RUFBc0sseUJBQXdCO0VBQTRULDhEQUEyRDtFQUFDLDJCQUEwQjtFQUFDLGdIQUErRztFQUFDLHFDQUFvQztFQUFDLHVFQUE2RDtFQUFDLGlFQUFnRSxFQUFBOztBQUFDO0VBQTA5Qix5QkFBd0IsRUFBQTs7QUFBQztFQUFvWSx5QkFBd0IsRUFBQTs7QUFBQztFQUEwSyx5QkFBd0I7RUFBOFIsd0RBQXFEO0VBQUMsMkJBQTBCO0VBQUMsZ0hBQStHO0VBQUMsK0JBQThCO0VBQUMsdUVBQTZEO0VBQUMsaUVBQWdFO0VBQUMsV0FBVTtFQUFDLHlDQUFxQyxFQUFBOztBQUFDO0VBQTgrQixzQkFBcUIsRUFBQTs7QUFBQztFQUE0WSxzQkFBcUIsRUFBQTs7QUFBQztFQUFpQyxjQUFhO0VBQUMsVUFBUztFQUFDLFlBQVc7RUFBQyxpQkFBZ0I7RUFBQyxXQUFVO0VBQUMsVUFBUztFQUFDLGVBQWM7RUFBa0Qsa0JBQWlCLEVBQUE7O0FBQUM7RUFBMkMsWUFBVztFQUFDLGlCQUFnQixFQUFBOztBQUFDO0VBQThILFlBQVcsRUFBQTs7QUFBQztFQUE4RyxzQkFBcUI7RUFBQyxpQkFBZ0IsRUFBQTs7QUFBQztFQUE2QyxZQUFXO0VBQUMsaUJBQWdCLEVBQUE7O0FBQUM7RUFBdUMsZ0JBQWUsRUFBQTs7QUFBQztFQUEwRixhQUFZO0VBQUMsV0FBVTtFQUFDLGVBQWMsRUFBQTs7QUFBQztFQUE4TCx5QkFBd0I7RUFBOFIsd0RBQXFEO0VBQUMsMkJBQTBCO0VBQUMsZ0hBQStHO0VBQUMsK0JBQThCO0VBQUMsdUVBQTZEO0VBQUMsaUVBQWdFO0VBQUMsV0FBVTtFQUFDLHlDQUFxQyxFQUFBOztBQUFDO0VBQWtsQyxzQkFBcUIsRUFBQTs7QUFBQztFQUFvYixzQkFBcUIsRUFBQTs7QUFBQztFQUFxQyxXQUFVLEVBQUE7O0FBQUM7RUFBMEIsWUFBVyxFQUFBOztBQUFDO0VBQWtDLG9CQUFtQixFQUFBOztBQUFDO0VBQWlFLGVBQWMsRUFBQTs7QUFBQztFQUE2RSxnQkFBZSxFQUFBOztBQUFDO0VBQXFHLGVBQWM7RUFBQyxXQUFVO0VBQUMsWUFBVyxFQUFBIiwiZmlsZSI6ImJvb3RzdHJhcC1kYXRldGltZXBpY2tlci5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBEYXRldGltZXBpY2tlciBmb3IgQm9vdHN0cmFwXG4gKlxuICogQ29weXJpZ2h0IDIwMTIgU3RlZmFuIFBldHJlXG4gKiBJbXByb3ZlbWVudHMgYnkgQW5kcmV3IFJvd2xzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICovLmRhdGV0aW1lcGlja2Vye3BhZGRpbmc6NHB4O21hcmdpbi10b3A6MXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweDtkaXJlY3Rpb246bHRyfS5kYXRldGltZXBpY2tlci1pbmxpbmV7d2lkdGg6MjIwcHh9LmRhdGV0aW1lcGlja2VyLmRhdGV0aW1lcGlja2VyLXJ0bHtkaXJlY3Rpb246cnRsfS5kYXRldGltZXBpY2tlci5kYXRldGltZXBpY2tlci1ydGwgdGFibGUgdHIgdGQgc3BhbntmbG9hdDpyaWdodH0uZGF0ZXRpbWVwaWNrZXItZHJvcGRvd24sLmRhdGV0aW1lcGlja2VyLWRyb3Bkb3duLWxlZnR7dG9wOjA7bGVmdDowfVtjbGFzcyo9XCIgZGF0ZXRpbWVwaWNrZXItZHJvcGRvd25cIl06YmVmb3Jle2NvbnRlbnQ6Jyc7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLWxlZnQ6N3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo3cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo3cHggc29saWQgI2NjYztib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsMC4yKTtwb3NpdGlvbjphYnNvbHV0ZX1bY2xhc3MqPVwiIGRhdGV0aW1lcGlja2VyLWRyb3Bkb3duXCJdOmFmdGVye2NvbnRlbnQ6Jyc7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLWxlZnQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo2cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo2cHggc29saWQgI2ZmZjtwb3NpdGlvbjphYnNvbHV0ZX1bY2xhc3MqPVwiIGRhdGV0aW1lcGlja2VyLWRyb3Bkb3duLXRvcFwiXTpiZWZvcmV7Y29udGVudDonJztkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItbGVmdDo3cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjdweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOjdweCBzb2xpZCAjY2NjO2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwwLjIpO2JvcmRlci1ib3R0b206MH1bY2xhc3MqPVwiIGRhdGV0aW1lcGlja2VyLWRyb3Bkb3duLXRvcFwiXTphZnRlcntjb250ZW50OicnO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1sZWZ0OjZweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NnB4IHNvbGlkICNmZmY7Ym9yZGVyLWJvdHRvbTowfS5kYXRldGltZXBpY2tlci1kcm9wZG93bi1ib3R0b20tbGVmdDpiZWZvcmV7dG9wOi03cHg7cmlnaHQ6NnB4fS5kYXRldGltZXBpY2tlci1kcm9wZG93bi1ib3R0b20tbGVmdDphZnRlcnt0b3A6LTZweDtyaWdodDo3cHh9LmRhdGV0aW1lcGlja2VyLWRyb3Bkb3duLWJvdHRvbS1yaWdodDpiZWZvcmV7dG9wOi03cHg7bGVmdDo2cHh9LmRhdGV0aW1lcGlja2VyLWRyb3Bkb3duLWJvdHRvbS1yaWdodDphZnRlcnt0b3A6LTZweDtsZWZ0OjdweH0uZGF0ZXRpbWVwaWNrZXItZHJvcGRvd24tdG9wLWxlZnQ6YmVmb3Jle2JvdHRvbTotN3B4O3JpZ2h0OjZweH0uZGF0ZXRpbWVwaWNrZXItZHJvcGRvd24tdG9wLWxlZnQ6YWZ0ZXJ7Ym90dG9tOi02cHg7cmlnaHQ6N3B4fS5kYXRldGltZXBpY2tlci1kcm9wZG93bi10b3AtcmlnaHQ6YmVmb3Jle2JvdHRvbTotN3B4O2xlZnQ6NnB4fS5kYXRldGltZXBpY2tlci1kcm9wZG93bi10b3AtcmlnaHQ6YWZ0ZXJ7Ym90dG9tOi02cHg7bGVmdDo3cHh9LmRhdGV0aW1lcGlja2VyPmRpdntkaXNwbGF5Om5vbmV9LmRhdGV0aW1lcGlja2VyLm1pbnV0ZXMgZGl2LmRhdGV0aW1lcGlja2VyLW1pbnV0ZXN7ZGlzcGxheTpibG9ja30uZGF0ZXRpbWVwaWNrZXIuaG91cnMgZGl2LmRhdGV0aW1lcGlja2VyLWhvdXJze2Rpc3BsYXk6YmxvY2t9LmRhdGV0aW1lcGlja2VyLmRheXMgZGl2LmRhdGV0aW1lcGlja2VyLWRheXN7ZGlzcGxheTpibG9ja30uZGF0ZXRpbWVwaWNrZXIubW9udGhzIGRpdi5kYXRldGltZXBpY2tlci1tb250aHN7ZGlzcGxheTpibG9ja30uZGF0ZXRpbWVwaWNrZXIueWVhcnMgZGl2LmRhdGV0aW1lcGlja2VyLXllYXJze2Rpc3BsYXk6YmxvY2t9LmRhdGV0aW1lcGlja2VyIHRhYmxle21hcmdpbjowfS5kYXRldGltZXBpY2tlciB0ZCwuZGF0ZXRpbWVwaWNrZXIgdGh7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyOjB9LnRhYmxlLXN0cmlwZWQgLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLC50YWJsZS1zdHJpcGVkIC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0aHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5taW51dGU6aG92ZXJ7YmFja2dyb3VuZDojZWVlO2N1cnNvcjpwb2ludGVyfS5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5ob3VyOmhvdmVye2JhY2tncm91bmQ6I2VlZTtjdXJzb3I6cG9pbnRlcn0uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuZGF5OmhvdmVye2JhY2tncm91bmQ6I2VlZTtjdXJzb3I6cG9pbnRlcn0uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQub2xkLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5uZXd7Y29sb3I6Izk5OX0uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuZGlzYWJsZWQsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6MDtjb2xvcjojOTk5O2N1cnNvcjpkZWZhdWx0fS5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZGUxOWE7YmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2ZkZDQ5YSwjZmRmNTlhKTtiYWNrZ3JvdW5kLWltYWdlOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCNmZGQ0OWEsI2ZkZjU5YSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWdyYWRpZW50KGxpbmVhciwwIDAsMCAxMDAlLGZyb20oI2ZkZDQ5YSksdG8oI2ZkZjU5YSkpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmZGQ0OWEsI2ZkZjU5YSk7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNmZGQ0OWEsI2ZkZjU5YSk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCNmZGQ0OWEsI2ZkZjU5YSk7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmRkNDlhJyxlbmRDb2xvcnN0cj0nI2ZkZjU5YScsR3JhZGllbnRUeXBlPTApO2JvcmRlci1jb2xvcjojZmRmNTlhICNmZGY1OWEgI2ZiZWQ1MDtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwwLjEpIHJnYmEoMCwwLDAsMC4xKSByZ2JhKDAsMCwwLDAuMjUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSl9LmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlcjpob3ZlciwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyOmhvdmVyLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTphY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6YWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3ZlcjphY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIuYWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZC5hY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyLmRpc2FibGVkLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZC5kaXNhYmxlZCwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5W2Rpc2FibGVkXSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXJbZGlzYWJsZWRdLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZFtkaXNhYmxlZF0sLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZGY1OWF9LmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXI6YWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDphY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuYWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlci5hY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIuYWN0aXZle2JhY2tncm91bmQtY29sb3I6I2ZiZjA2OX0uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZCwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzAwNmRjYztiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjMDhjLCMwNGMpO2JhY2tncm91bmQtaW1hZ2U6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsIzA4YywjMDRjKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLDAgMCwwIDEwMCUsZnJvbSgjMDhjKSx0bygjMDRjKSk7YmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIzA4YywjMDRjKTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzA4YywjMDRjKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzA4YywjMDRjKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMwMDg4Y2MnLGVuZENvbG9yc3RyPScjMDA0NGNjJyxHcmFkaWVudFR5cGU9MCk7Ym9yZGVyLWNvbG9yOiMwNGMgIzA0YyAjMDAyYTgwO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDAuMSkgcmdiYSgwLDAsMCwwLjEpIHJnYmEoMCwwLDAsMC4yNSk7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTtjb2xvcjojZmZmO3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsMC4yNSl9LmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3ZlciwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmhvdmVyLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3Zlcjpob3ZlciwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIuZGlzYWJsZWQsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZC5kaXNhYmxlZCwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmVbZGlzYWJsZWRdLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXJbZGlzYWJsZWRdLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWRbZGlzYWJsZWRdLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6IzA0Y30uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiMwMzl9LmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW57ZGlzcGxheTpibG9jazt3aWR0aDoyMyU7aGVpZ2h0OjU0cHg7bGluZS1oZWlnaHQ6NTRweDtmbG9hdDpsZWZ0O21hcmdpbjoxJTtjdXJzb3I6cG9pbnRlcjstd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXJhZGl1czo0cHh9LmRhdGV0aW1lcGlja2VyIC5kYXRldGltZXBpY2tlci1ob3VycyBzcGFue2hlaWdodDoyNnB4O2xpbmUtaGVpZ2h0OjI2cHh9LmRhdGV0aW1lcGlja2VyIC5kYXRldGltZXBpY2tlci1ob3VycyB0YWJsZSB0ciB0ZCBzcGFuLmhvdXJfYW0sLmRhdGV0aW1lcGlja2VyIC5kYXRldGltZXBpY2tlci1ob3VycyB0YWJsZSB0ciB0ZCBzcGFuLmhvdXJfcG17d2lkdGg6MTQuNiV9LmRhdGV0aW1lcGlja2VyIC5kYXRldGltZXBpY2tlci1ob3VycyBmaWVsZHNldCBsZWdlbmQsLmRhdGV0aW1lcGlja2VyIC5kYXRldGltZXBpY2tlci1taW51dGVzIGZpZWxkc2V0IGxlZ2VuZHttYXJnaW4tYm90dG9tOmluaGVyaXQ7bGluZS1oZWlnaHQ6MzBweH0uZGF0ZXRpbWVwaWNrZXIgLmRhdGV0aW1lcGlja2VyLW1pbnV0ZXMgc3BhbntoZWlnaHQ6MjZweDtsaW5lLWhlaWdodDoyNnB4fS5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuOmhvdmVye2JhY2tncm91bmQ6I2VlZX0uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5kaXNhYmxlZCwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5kaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOjA7Y29sb3I6Izk5OTtjdXJzb3I6ZGVmYXVsdH0uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZCwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDA2ZGNjO2JhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCMwOGMsIzA0Yyk7YmFja2dyb3VuZC1pbWFnZTotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjMDhjLCMwNGMpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsMCAwLDAgMTAwJSxmcm9tKCMwOGMpLHRvKCMwNGMpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjMDhjLCMwNGMpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjMDhjLCMwNGMpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjMDhjLCMwNGMpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzAwODhjYycsZW5kQ29sb3JzdHI9JyMwMDQ0Y2MnLEdyYWRpZW50VHlwZT0wKTtib3JkZXItY29sb3I6IzA0YyAjMDRjICMwMDJhODA7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMC4xKSByZ2JhKDAsMCwwLDAuMSkgcmdiYSgwLDAsMCwwLjI1KTtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwwLjI1KX0uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXIsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyOmhvdmVyLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3ZlciwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6aG92ZXIsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXI6YWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDphY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuYWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3Zlci5hY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZCwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXIuZGlzYWJsZWQsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkLmRpc2FibGVkLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZCwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmVbZGlzYWJsZWRdLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcltkaXNhYmxlZF0sLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRde2JhY2tncm91bmQtY29sb3I6IzA0Y30uZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6YWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcjphY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5hY3RpdmUsLmRhdGV0aW1lcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLmFjdGl2ZSwuZGF0ZXRpbWVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQuYWN0aXZlLC5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojMDM5fS5kYXRldGltZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLm9sZHtjb2xvcjojOTk5fS5kYXRldGltZXBpY2tlciB0aC5zd2l0Y2h7d2lkdGg6MTQ1cHh9LmRhdGV0aW1lcGlja2VyIHRoIHNwYW4uZ2x5cGhpY29ue3BvaW50ZXItZXZlbnRzOm5vbmV9LmRhdGV0aW1lcGlja2VyIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoLC5kYXRldGltZXBpY2tlciB0Zm9vdCB0aHtjdXJzb3I6cG9pbnRlcn0uZGF0ZXRpbWVwaWNrZXIgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6aG92ZXIsLmRhdGV0aW1lcGlja2VyIHRmb290IHRoOmhvdmVye2JhY2tncm91bmQ6I2VlZX0uaW5wdXQtYXBwZW5kLmRhdGUgLmFkZC1vbiBpLC5pbnB1dC1wcmVwZW5kLmRhdGUgLmFkZC1vbiBpLC5pbnB1dC1ncm91cC5kYXRlIC5pbnB1dC1ncm91cC1hZGRvbiBzcGFue2N1cnNvcjpwb2ludGVyO3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHh9Il19 */