.puffIn {
  -webkit-animation-name: puffIn;
  -o-animation-name: puffIn;
  animation-name: puffIn;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes puffIn {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(2px);
    filter: blur(2px); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); } }

@-o-keyframes puffIn {
  0% {
    opacity: 0;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    filter: blur(2px); }
  100% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    filter: blur(0px); } }

@keyframes puffIn {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(2px);
    filter: blur(2px); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); } }

.puffOut {
  -webkit-animation-name: puffOut;
  -o-animation-name: puffOut;
  animation-name: puffOut;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes puffOut {
  0% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(2px);
    filter: blur(2px); } }

@-o-keyframes puffOut {
  0% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    filter: blur(0px); }
  100% {
    opacity: 0;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    filter: blur(2px); } }

@keyframes puffOut {
  0% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(2px);
    filter: blur(2px); } }

.vanishIn {
  -webkit-animation-name: vanishIn;
  -o-animation-name: vanishIn;
  animation-name: vanishIn;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes vanishIn {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(90px);
    filter: blur(90px); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); } }

@-o-keyframes vanishIn {
  0% {
    opacity: 0;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    filter: blur(90px); }
  100% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    filter: blur(0px); } }

@keyframes vanishIn {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(90px);
    filter: blur(90px); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); } }

.vanishOut {
  -webkit-animation-name: vanishOut;
  -o-animation-name: vanishOut;
  animation-name: vanishOut;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes vanishOut {
  0% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(20px);
    filter: blur(20px); } }

@-o-keyframes vanishOut {
  0% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    filter: blur(0px); }
  100% {
    opacity: 0;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    filter: blur(20px); } }

@keyframes vanishOut {
  0% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1);
    -webkit-filter: blur(0px);
    filter: blur(0px); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(2, 2);
    -o-transform: scale(2, 2);
    transform: scale(2, 2);
    -webkit-filter: blur(20px);
    filter: blur(20px); } }

.boingInUp {
  -webkit-animation-name: boingInUp;
  -o-animation-name: boingInUp;
  animation-name: boingInUp;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes boingInUp {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(-90deg);
    transform: perspective(800px) rotateX(-90deg); }
  50% {
    opacity: 1;
    -webkit-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(50deg);
    transform: perspective(800px) rotateX(50deg); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); } }

@-o-keyframes boingInUp {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 0%;
    -o-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(-90deg);
    transform: perspective(800px) rotateX(-90deg); }
  50% {
    opacity: 1;
    -webkit-transform-origin: 50% 0%;
    -o-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(50deg);
    transform: perspective(800px) rotateX(50deg); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 0%;
    -o-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); } }

@keyframes boingInUp {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 0%;
    -o-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(-90deg);
    transform: perspective(800px) rotateX(-90deg); }
  50% {
    opacity: 1;
    -webkit-transform-origin: 50% 0%;
    -o-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(50deg);
    transform: perspective(800px) rotateX(50deg); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 0%;
    -o-transform-origin: 50% 0%;
    transform-origin: 50% 0%;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); } }

.boingOutDown {
  -webkit-animation-name: boingOutDown;
  -o-animation-name: boingOutDown;
  animation-name: boingOutDown;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes boingOutDown {
  0% {
    opacity: 1;
    -webkit-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(0deg);
    transform: perspective(800px) rotateX(0deg) rotateY(0deg); }
  20% {
    opacity: 1;
    -webkit-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(10deg);
    transform: perspective(800px) rotateX(0deg) rotateY(10deg); }
  30% {
    opacity: 1;
    -webkit-transform-origin: 0% 100%;
    transform-origin: 0% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(0deg);
    transform: perspective(800px) rotateX(0deg) rotateY(0deg); }
  40% {
    opacity: 1;
    -webkit-transform-origin: 0% 100%;
    transform-origin: 0% 100%;
    -webkit-transform: perspective(800px) rotateX(10deg) rotateY(10deg);
    transform: perspective(800px) rotateX(10deg) rotateY(10deg); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(90deg) rotateY(0deg);
    transform: perspective(800px) rotateX(90deg) rotateY(0deg); } }

@-o-keyframes boingOutDown {
  0% {
    opacity: 1;
    -webkit-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(0deg);
    transform: perspective(800px) rotateX(0deg) rotateY(0deg); }
  20% {
    opacity: 1;
    -webkit-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(10deg);
    transform: perspective(800px) rotateX(0deg) rotateY(10deg); }
  30% {
    opacity: 1;
    -webkit-transform-origin: 0% 100%;
    -o-transform-origin: 0% 100%;
    transform-origin: 0% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(0deg);
    transform: perspective(800px) rotateX(0deg) rotateY(0deg); }
  40% {
    opacity: 1;
    -webkit-transform-origin: 0% 100%;
    -o-transform-origin: 0% 100%;
    transform-origin: 0% 100%;
    -webkit-transform: perspective(800px) rotateX(10deg) rotateY(10deg);
    transform: perspective(800px) rotateX(10deg) rotateY(10deg); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(90deg) rotateY(0deg);
    transform: perspective(800px) rotateX(90deg) rotateY(0deg); } }

@keyframes boingOutDown {
  0% {
    opacity: 1;
    -webkit-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(0deg);
    transform: perspective(800px) rotateX(0deg) rotateY(0deg); }
  20% {
    opacity: 1;
    -webkit-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(10deg);
    transform: perspective(800px) rotateX(0deg) rotateY(10deg); }
  30% {
    opacity: 1;
    -webkit-transform-origin: 0% 100%;
    -o-transform-origin: 0% 100%;
    transform-origin: 0% 100%;
    -webkit-transform: perspective(800px) rotateX(0deg) rotateY(0deg);
    transform: perspective(800px) rotateX(0deg) rotateY(0deg); }
  40% {
    opacity: 1;
    -webkit-transform-origin: 0% 100%;
    -o-transform-origin: 0% 100%;
    transform-origin: 0% 100%;
    -webkit-transform: perspective(800px) rotateX(10deg) rotateY(10deg);
    transform: perspective(800px) rotateX(10deg) rotateY(10deg); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -webkit-transform: perspective(800px) rotateX(90deg) rotateY(0deg);
    transform: perspective(800px) rotateX(90deg) rotateY(0deg); } }

svg.dash .path {
  stroke-dasharray: 1000;
  stroke-dashoffset: 0; }
  svg.dash .path.circle {
    -webkit-animation-name: dash;
    -o-animation-name: dash;
    animation-name: dash;
    -webkit-animation-duration: 0.9s;
    -o-animation-duration: 0.9s;
    animation-duration: 0.9s;
    -webkit-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out; }
  svg.dash .path.line {
    stroke-dashoffset: 1000;
    -webkit-animation-name: dash;
    -o-animation-name: dash;
    animation-name: dash;
    -webkit-animation-duration: 0.9s;
    -o-animation-duration: 0.9s;
    animation-duration: 0.9s;
    -webkit-animation-delay: 0.35s;
    -o-animation-delay: 0.35s;
    animation-delay: 0.35s;
    -webkit-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
    -webkit-animation-fill-mode: forwards;
    -o-animation-fill-mode: forwards;
    animation-fill-mode: forwards; }
  svg.dash .path.check {
    stroke-dashoffset: -100;
    -webkit-animation-name: dash-check;
    -o-animation-name: dash-check;
    animation-name: dash-check;
    -webkit-animation-duration: 0.9s;
    -o-animation-duration: 0.9s;
    animation-duration: 0.9s;
    -webkit-animation-delay: 0.35s;
    -o-animation-delay: 0.35s;
    animation-delay: 0.35s;
    -webkit-animation-timing-function: ease-in-out;
    -o-animation-timing-function: ease-in-out;
    animation-timing-function: ease-in-out;
    -webkit-animation-fill-mode: forwards;
    -o-animation-fill-mode: forwards;
    animation-fill-mode: forwards; }

@-webkit-keyframes dash {
  0% {
    stroke-dashoffset: 1000; }
  100% {
    stroke-dashoffset: 0; } }

@-o-keyframes dash {
  0% {
    stroke-dashoffset: 1000; }
  100% {
    stroke-dashoffset: 0; } }

@keyframes dash {
  0% {
    stroke-dashoffset: 1000; }
  100% {
    stroke-dashoffset: 0; } }

@-webkit-keyframes dash-check {
  0% {
    stroke-dashoffset: -100; }
  100% {
    stroke-dashoffset: 900; } }

@-o-keyframes dash-check {
  0% {
    stroke-dashoffset: -100; }
  100% {
    stroke-dashoffset: 900; } }

@keyframes dash-check {
  0% {
    stroke-dashoffset: -100; }
  100% {
    stroke-dashoffset: 900; } }

.swashIn {
  -webkit-animation-name: swashIn;
  -o-animation-name: swashIn;
  animation-name: swashIn;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes swashIn {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0, 0);
    transform: scale(0, 0); }
  90% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    transform: scale(1, 1); } }

@-o-keyframes swashIn {
  0% {
    opacity: 0;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(0, 0);
    transform: scale(0, 0); }
  90% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9); }
  100% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(1, 1);
    transform: scale(1, 1); } }

@keyframes swashIn {
  0% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0, 0);
    -o-transform: scale(0, 0);
    transform: scale(0, 0); }
  90% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9); }
  100% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1); } }

.swashOut {
  -webkit-animation-name: swashOut;
  -o-animation-name: swashOut;
  animation-name: swashOut;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes swashOut {
  0% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    transform: scale(1, 1); }
  80% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0, 0);
    transform: scale(0, 0); } }

@-o-keyframes swashOut {
  0% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(1, 1);
    transform: scale(1, 1); }
  80% {
    opacity: 1;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9); }
  100% {
    opacity: 0;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -o-transform: scale(0, 0);
    transform: scale(0, 0); } }

@keyframes swashOut {
  0% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(1, 1);
    -o-transform: scale(1, 1);
    transform: scale(1, 1); }
  80% {
    opacity: 1;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0.9, 0.9);
    -o-transform: scale(0.9, 0.9);
    transform: scale(0.9, 0.9); }
  100% {
    opacity: 0;
    -webkit-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    -webkit-transform: scale(0, 0);
    -o-transform: scale(0, 0);
    transform: scale(0, 0); } }

.perspectiveDown {
  -webkit-animation-name: perspectiveDown;
  -o-animation-name: perspectiveDown;
  animation-name: perspectiveDown;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveDown {
  0% {
    -webkit-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); }
  100% {
    -webkit-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(-180deg);
    transform: perspective(800px) rotateX(-180deg); } }

@-o-keyframes perspectiveDown {
  0% {
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    transform: perspective(800px) rotateX(0deg); }
  100% {
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    transform: perspective(800px) rotateX(-180deg); } }

@keyframes perspectiveDown {
  0% {
    -webkit-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); }
  100% {
    -webkit-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(-180deg);
    transform: perspective(800px) rotateX(-180deg); } }

.perspectiveDownReturn {
  -webkit-animation-name: perspectiveDownReturn;
  -o-animation-name: perspectiveDownReturn;
  animation-name: perspectiveDownReturn;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveDownReturn {
  0% {
    -webkit-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(-180deg);
    transform: perspective(800px) rotateX(-180deg); }
  100% {
    -webkit-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); } }

@-o-keyframes perspectiveDownReturn {
  0% {
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    transform: perspective(800px) rotateX(-180deg); }
  100% {
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    transform: perspective(800px) rotateX(0deg); } }

@keyframes perspectiveDownReturn {
  0% {
    -webkit-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(-180deg);
    transform: perspective(800px) rotateX(-180deg); }
  100% {
    -webkit-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); } }

.perspectiveLeft {
  -webkit-animation-name: perspectiveLeft;
  -o-animation-name: perspectiveLeft;
  animation-name: perspectiveLeft;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveLeft {
  0% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); }
  100% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(-180deg);
    transform: perspective(800px) rotateY(-180deg); } }

@-o-keyframes perspectiveLeft {
  0% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateY(0deg); }
  100% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateY(-180deg); } }

@keyframes perspectiveLeft {
  0% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); }
  100% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(-180deg);
    transform: perspective(800px) rotateY(-180deg); } }

.perspectiveLeftReturn {
  -webkit-animation-name: perspectiveLeftReturn;
  -o-animation-name: perspectiveLeftReturn;
  animation-name: perspectiveLeftReturn;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveLeftReturn {
  0% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(-180deg);
    transform: perspective(800px) rotateY(-180deg); }
  100% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); } }

@-o-keyframes perspectiveLeftReturn {
  0% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateY(-180deg); }
  100% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateY(0deg); } }

@keyframes perspectiveLeftReturn {
  0% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(-180deg);
    transform: perspective(800px) rotateY(-180deg); }
  100% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); } }

.perspectiveRight {
  -webkit-animation-name: perspectiveRight;
  -o-animation-name: perspectiveRight;
  animation-name: perspectiveRight;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveRight {
  0% {
    -webkit-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); }
  100% {
    -webkit-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(180deg);
    transform: perspective(800px) rotateY(180deg); } }

@-o-keyframes perspectiveRight {
  0% {
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    transform: perspective(800px) rotateY(0deg); }
  100% {
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    transform: perspective(800px) rotateY(180deg); } }

@keyframes perspectiveRight {
  0% {
    -webkit-transform-origin: 100% 0;
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); }
  100% {
    -webkit-transform-origin: 100% 0;
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(180deg);
    transform: perspective(800px) rotateY(180deg); } }

.perspectiveRightReturn {
  -webkit-animation-name: perspectiveRightReturn;
  -o-animation-name: perspectiveRightReturn;
  animation-name: perspectiveRightReturn;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveRightReturn {
  0% {
    -webkit-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(180deg);
    transform: perspective(800px) rotateY(180deg); }
  100% {
    -webkit-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); } }

@-o-keyframes perspectiveRightReturn {
  0% {
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    transform: perspective(800px) rotateY(180deg); }
  100% {
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    transform: perspective(800px) rotateY(0deg); } }

@keyframes perspectiveRightReturn {
  0% {
    -webkit-transform-origin: 100% 0;
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(180deg);
    transform: perspective(800px) rotateY(180deg); }
  100% {
    -webkit-transform-origin: 100% 0;
    -o-transform-origin: 100% 0;
    transform-origin: 100% 0;
    -webkit-transform: perspective(800px) rotateY(0deg);
    transform: perspective(800px) rotateY(0deg); } }

.perspectiveUp {
  -webkit-animation-name: perspectiveUp;
  -o-animation-name: perspectiveUp;
  animation-name: perspectiveUp;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveUp {
  0% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); }
  100% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(180deg);
    transform: perspective(800px) rotateX(180deg); } }

@-o-keyframes perspectiveUp {
  0% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateX(0deg); }
  100% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateX(180deg); } }

@keyframes perspectiveUp {
  0% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); }
  100% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(180deg);
    transform: perspective(800px) rotateX(180deg); } }

.perspectiveUpReturn {
  -webkit-animation-name: perspectiveUpReturn;
  -o-animation-name: perspectiveUpReturn;
  animation-name: perspectiveUpReturn;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes perspectiveUpReturn {
  0% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(180deg);
    transform: perspective(800px) rotateX(180deg); }
  100% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); } }

@-o-keyframes perspectiveUpReturn {
  0% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateX(180deg); }
  100% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    transform: perspective(800px) rotateX(0deg); } }

@keyframes perspectiveUpReturn {
  0% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(180deg);
    transform: perspective(800px) rotateX(180deg); }
  100% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: perspective(800px) rotateX(0deg);
    transform: perspective(800px) rotateX(0deg); } }

.effect-slideDown {
  -webkit-animation-name: slideDown;
  -o-animation-name: slideDown;
  animation-name: slideDown;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes slideDown {
  0% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(0%);
    transform: translateY(0%); }
  100% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(200%);
    transform: translateY(200%); } }

@-o-keyframes slideDown {
  0% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -o-transform: translateY(0%);
    transform: translateY(0%); }
  100% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -o-transform: translateY(200%);
    transform: translateY(200%); } }

@keyframes slideDown {
  0% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(0%);
    -o-transform: translateY(0%);
    transform: translateY(0%); }
  100% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(200%);
    -o-transform: translateY(200%);
    transform: translateY(200%); } }

.effect-slideUp {
  -webkit-animation-name: slideUp;
  -o-animation-name: slideUp;
  animation-name: slideUp;
  -webkit-animation-duration: 1s;
  -o-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  -o-animation-fill-mode: both;
  animation-fill-mode: both; }

@-webkit-keyframes slideUp {
  0% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(100%);
    transform: translateY(100%); }
  100% {
    -webkit-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(0);
    transform: translateY(0); } }

@-o-keyframes slideUp {
  0% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -o-transform: translateY(100%);
    transform: translateY(100%); }
  100% {
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -o-transform: translateY(0);
    transform: translateY(0); } }

@keyframes slideUp {
  0% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(100%);
    -o-transform: translateY(100%);
    transform: translateY(100%); }
  100% {
    -webkit-transform-origin: 0 0;
    -o-transform-origin: 0 0;
    transform-origin: 0 0;
    -webkit-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0); } }

.alert-poppin {
  display: none;
  position: fixed;
  bottom: 0;
  width: 100%;
  max-width: 100%;
  margin-bottom: 0;
  -webkit-box-shadow: 0px -2px 8px 0px rgba(0, 0, 0, 0.3);
  box-shadow: 0px -2px 8px 0px rgba(0, 0, 0, 0.3);
  z-index: 10000; }
  .alert-poppin.alert-dismissible {
    padding-right: 1rem; }
  .alert-poppin .alert-wrapper {
    position: relative;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
    max-height: 50vh; }
    .alert-poppin .alert-wrapper .alert-content {
      padding-right: 0.9rem;
      margin-right: -0.9rem;
      overflow-x: hidden;
      overflow-y: auto; }
  @media (min-width: 576px) {
    .alert-poppin {
      bottom: 1rem;
      right: 1rem;
      width: 350px; }
      .alert-poppin .alert-wrapper {
        max-height: 70vh; } }

div.popinWindowPadding {
  padding: 20px;
  z-index: 1950 !important; }

div.popinWindowContainer {
  padding: 1px;
  border-radius: 4px;
  background-color: #95a5a6; }

div.popinWindowToolsContainer {
  position: absolute;
  right: 0px;
  width: 58px; }

div.popinWindowPrintBtn {
  position: relative;
  float: left;
  cursor: pointer;
  height: 19px;
  width: 28px;
  background-color: #a3b1b2; }

div.popinWindowPrintBtn:hover {
  background-color: #ccdedf; }

div.popinWindowPrintBtn div.printIcon {
  background-image: url(images/popin/printer.png);
  background-position: center;
  background-repeat: no-repeat;
  -webkit-background-size: 16px 16px;
  background-size: 16px;
  width: 100%;
  height: 100%; }

div.popinWindowCloseBtn {
  height: 19px;
  width: 28px;
  float: right;
  position: relative;
  cursor: pointer;
  border-top-right-radius: 4px;
  background-color: #a3b1b2; }

div.popinWindowCloseBtn:hover {
  background-color: #ccdedf; }

div.popinWindowCloseBtn div.closeIcon {
  background-image: url(images/popin/cross.png);
  background-position: center;
  background-repeat: no-repeat;
  -webkit-background-size: 14px 14px;
  background-size: 14px;
  width: 100%;
  height: 100%; }

div.popinWindowTitleBar {
  position: relative;
  height: 21px;
  background-color: #95a5a6; }

div.popinWindowTitleContainer {
  padding-left: 5px;
  margin-right: 10px;
  font-weight: bold;
  font-size: 14px;
  color: #fff;
  float: left; }

div.popinWindowContent {
  background: #ecf0f1;
  padding: 5px;
  color: #333;
  border-bottom-right-radius: 4px;
  border-bottom-left-radius: 4px; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHBlcnMvZWZmZWN0cy9ibGluZy9fcHVmZkluLnNjc3MiLCJoZWxwZXJzL2VmZmVjdHMvX2VmZmVjdHMuc2NzcyIsImhlbHBlcnMvZWZmZWN0cy9ibGluZy9fcHVmZk91dC5zY3NzIiwiaGVscGVycy9lZmZlY3RzL2JsaW5nL192YW5pc2hJbi5zY3NzIiwiaGVscGVycy9lZmZlY3RzL2JsaW5nL192YW5pc2hPdXQuc2NzcyIsImhlbHBlcnMvZWZmZWN0cy9ib2luZy9fYm9pbmdJblVwLnNjc3MiLCJoZWxwZXJzL2VmZmVjdHMvYm9pbmcvX2JvaW5nT3V0RG93bi5zY3NzIiwiaGVscGVycy9lZmZlY3RzL2Rhc2gvX2Rhc2guc2NzcyIsImhlbHBlcnMvZWZmZWN0cy9tYXRoL19zd2FzaEluLnNjc3MiLCJoZWxwZXJzL2VmZmVjdHMvbWF0aC9fc3dhc2hPdXQuc2NzcyIsImhlbHBlcnMvZWZmZWN0cy9wZXJzcGVjdGl2ZS9fcGVyc3BlY3RpdmVEb3duLnNjc3MiLCJoZWxwZXJzL2VmZmVjdHMvcGVyc3BlY3RpdmUvX3BlcnNwZWN0aXZlRG93blJldHVybi5zY3NzIiwiaGVscGVycy9lZmZlY3RzL3BlcnNwZWN0aXZlL19wZXJzcGVjdGl2ZUxlZnQuc2NzcyIsImhlbHBlcnMvZWZmZWN0cy9wZXJzcGVjdGl2ZS9fcGVyc3BlY3RpdmVMZWZ0UmV0dXJuLnNjc3MiLCJoZWxwZXJzL2VmZmVjdHMvcGVyc3BlY3RpdmUvX3BlcnNwZWN0aXZlUmlnaHQuc2NzcyIsImhlbHBlcnMvZWZmZWN0cy9wZXJzcGVjdGl2ZS9fcGVyc3BlY3RpdmVSaWdodFJldHVybi5zY3NzIiwiaGVscGVycy9lZmZlY3RzL3BlcnNwZWN0aXZlL19wZXJzcGVjdGl2ZVVwLnNjc3MiLCJoZWxwZXJzL2VmZmVjdHMvcGVyc3BlY3RpdmUvX3BlcnNwZWN0aXZlVXBSZXR1cm4uc2NzcyIsImhlbHBlcnMvZWZmZWN0cy9zbGlkZS9fc2xpZGVEb3duLnNjc3MiLCJoZWxwZXJzL2VmZmVjdHMvc2xpZGUvX3NsaWRlVXAuc2NzcyIsInBvcGluV2luZG93LnNjc3MiLCJoZWxwZXJzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VDQXZCLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FERzFCO0VBQ0U7SUFDRSxVQUFVO0lBQ1YsaUNBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLHlCQUFpQjtJQUFqQixpQkFBaUIsRUFBQTtFQUVuQjtJQUNFLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIseUJBQWlCO0lBQWpCLGlCQUFpQixFQUFBLEVBQUE7O0FBWHJCO0VBQ0U7SUFDRSxVQUFVO0lBQ1YsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qix5QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFBO0VBRW5CO0lBQ0UsVUFBVTtJQUNWLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIseUJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0QixpQkFBaUIsRUFBQSxFQUFBOztBQVhyQjtFQUNFO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qiw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0Qix5QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLHlCQUFpQjtJQUFqQixpQkFBaUIsRUFBQTtFQUVuQjtJQUNFLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIseUJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0Qix5QkFBaUI7SUFBakIsaUJBQWlCLEVBQUEsRUFBQTs7QUVoQnJCO0VBQ0UsK0JBQXVCO0VBQXZCLDBCQUF1QjtFQUF2Qix1QkFBdUI7RURBeEIsOEJBQXNCO0VBQXRCLHlCQUFzQjtFQUF0QixzQkFBc0I7RUFDdEIsaUNBQXlCO0VBQXpCLDRCQUF5QjtFQUF6Qix5QkFBeUIsRUFBQTs7QUNHMUI7RUFDRTtJQUNFLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIseUJBQWlCO0lBQWpCLGlCQUFpQixFQUFBO0VBRW5CO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsOEJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0Qix5QkFBaUI7SUFBakIsaUJBQWlCLEVBQUEsRUFBQTs7QUFYckI7RUFDRTtJQUNFLFVBQVU7SUFDViw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLHlCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIsaUJBQWlCLEVBQUE7RUFFbkI7SUFDRSxVQUFVO0lBQ1YsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qix5QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFBLEVBQUE7O0FBWHJCO0VBQ0U7SUFDRSxVQUFVO0lBQ1YsaUNBQXlCO0lBQXpCLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsOEJBQXNCO0lBQXRCLHlCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIseUJBQWlCO0lBQWpCLGlCQUFpQixFQUFBO0VBRW5CO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qiw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0Qix5QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLHlCQUFpQjtJQUFqQixpQkFBaUIsRUFBQSxFQUFBOztBQ2hCckI7RUFDRSxnQ0FBd0I7RUFBeEIsMkJBQXdCO0VBQXhCLHdCQUF3QjtFRkF6Qiw4QkFBc0I7RUFBdEIseUJBQXNCO0VBQXRCLHNCQUFzQjtFQUN0QixpQ0FBeUI7RUFBekIsNEJBQXlCO0VBQXpCLHlCQUF5QixFQUFBOztBRUcxQjtFQUNFO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsOEJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0QiwwQkFBa0I7SUFBbEIsa0JBQWtCLEVBQUE7RUFFcEI7SUFDRSxVQUFVO0lBQ1YsaUNBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLHlCQUFpQjtJQUFqQixpQkFBaUIsRUFBQSxFQUFBOztBQVhyQjtFQUNFO0lBQ0UsVUFBVTtJQUNWLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIseUJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0QixrQkFBa0IsRUFBQTtFQUVwQjtJQUNFLFVBQVU7SUFDViw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLHlCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIsaUJBQWlCLEVBQUEsRUFBQTs7QUFYckI7RUFDRTtJQUNFLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIseUJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0QiwwQkFBa0I7SUFBbEIsa0JBQWtCLEVBQUE7RUFFcEI7SUFDRSxVQUFVO0lBQ1YsaUNBQXlCO0lBQXpCLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsOEJBQXNCO0lBQXRCLHlCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIseUJBQWlCO0lBQWpCLGlCQUFpQixFQUFBLEVBQUE7O0FDaEJyQjtFQUNFLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCO0VIQTFCLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FHRzFCO0VBQ0U7SUFDRSxVQUFVO0lBQ1YsaUNBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLHlCQUFpQjtJQUFqQixpQkFBaUIsRUFBQTtFQUVuQjtJQUNFLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIsMEJBQWtCO0lBQWxCLGtCQUFrQixFQUFBLEVBQUE7O0FBWHRCO0VBQ0U7SUFDRSxVQUFVO0lBQ1YsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qix5QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFBO0VBRW5CO0lBQ0UsVUFBVTtJQUNWLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIseUJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0QixrQkFBa0IsRUFBQSxFQUFBOztBQVh0QjtFQUNFO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qiw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0Qix5QkFBc0I7SUFBdEIsc0JBQXNCO0lBQ3RCLHlCQUFpQjtJQUFqQixpQkFBaUIsRUFBQTtFQUVuQjtJQUNFLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIseUJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0QiwwQkFBa0I7SUFBbEIsa0JBQWtCLEVBQUEsRUFBQTs7QUNoQnRCO0VBQ0UsaUNBQXlCO0VBQXpCLDRCQUF5QjtFQUF6Qix5QkFBeUI7RUpBMUIsOEJBQXNCO0VBQXRCLHlCQUFzQjtFQUF0QixzQkFBc0I7RUFDdEIsaUNBQXlCO0VBQXpCLDRCQUF5QjtFQUF6Qix5QkFBeUIsRUFBQTs7QUlHMUI7RUFDRTtJQUNFLFVBQVU7SUFDVixnQ0FBZ0M7SUFDaEMsd0JBQXdCO0lBQ3hCLHFEQUFxRDtJQUNyRCw2Q0FBNkMsRUFBQTtFQUUvQztJQUNFLFVBQVU7SUFDVixnQ0FBZ0M7SUFDaEMsd0JBQXdCO0lBQ3hCLG9EQUFvRDtJQUNwRCw0Q0FBNEMsRUFBQTtFQUU5QztJQUNFLFVBQVU7SUFDVixnQ0FBZ0M7SUFDaEMsd0JBQXdCO0lBQ3hCLG1EQUFtRDtJQUNuRCwyQ0FBMkMsRUFBQSxFQUFBOztBQUkvQztFQUNFO0lBQ0UsVUFBVTtJQUNWLGdDQUFnQztJQUNoQywyQkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLHFEQUFxRDtJQUNyRCw2Q0FBNkMsRUFBQTtFQUUvQztJQUNFLFVBQVU7SUFDVixnQ0FBZ0M7SUFDaEMsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixvREFBb0Q7SUFDcEQsNENBQTRDLEVBQUE7RUFFOUM7SUFDRSxVQUFVO0lBQ1YsZ0NBQWdDO0lBQ2hDLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsbURBQW1EO0lBQ25ELDJDQUEyQyxFQUFBLEVBQUE7O0FBcEIvQztFQUNFO0lBQ0UsVUFBVTtJQUNWLGdDQUFnQztJQUNoQywyQkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLHFEQUFxRDtJQUNyRCw2Q0FBNkMsRUFBQTtFQUUvQztJQUNFLFVBQVU7SUFDVixnQ0FBZ0M7SUFDaEMsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixvREFBb0Q7SUFDcEQsNENBQTRDLEVBQUE7RUFFOUM7SUFDRSxVQUFVO0lBQ1YsZ0NBQWdDO0lBQ2hDLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsbURBQW1EO0lBQ25ELDJDQUEyQyxFQUFBLEVBQUE7O0FDakQvQztFQUNFLG9DQUE0QjtFQUE1QiwrQkFBNEI7RUFBNUIsNEJBQTRCO0VMQTdCLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FLRTFCO0VBQ0U7SUFDRSxVQUFVO0lBQ1YsbUNBQW1DO0lBQ25DLDJCQUEyQjtJQUMzQixpRUFBaUU7SUFDakUseURBQXlELEVBQUE7RUFHM0Q7SUFDRSxVQUFVO0lBQ1YsbUNBQW1DO0lBQ25DLDJCQUEyQjtJQUMzQixrRUFBa0U7SUFDbEUsMERBQTBELEVBQUE7RUFHNUQ7SUFDRSxVQUFVO0lBQ1YsaUNBQWlDO0lBQ2pDLHlCQUF5QjtJQUN6QixpRUFBaUU7SUFDakUseURBQXlELEVBQUE7RUFHM0Q7SUFDRSxVQUFVO0lBQ1YsaUNBQWlDO0lBQ2pDLHlCQUF5QjtJQUN6QixtRUFBbUU7SUFDbkUsMkRBQTJELEVBQUE7RUFHN0Q7SUFDRSxVQUFVO0lBQ1YsbUNBQW1DO0lBQ25DLDJCQUEyQjtJQUMzQixrRUFBa0U7SUFDbEUsMERBQTBELEVBQUEsRUFBQTs7QUFHOUQ7RUFDRTtJQUNFLFVBQVU7SUFDVixtQ0FBbUM7SUFDbkMsOEJBQTJCO0lBQTNCLDJCQUEyQjtJQUMzQixpRUFBaUU7SUFDakUseURBQXlELEVBQUE7RUFHM0Q7SUFDRSxVQUFVO0lBQ1YsbUNBQW1DO0lBQ25DLDhCQUEyQjtJQUEzQiwyQkFBMkI7SUFDM0Isa0VBQWtFO0lBQ2xFLDBEQUEwRCxFQUFBO0VBRzVEO0lBQ0UsVUFBVTtJQUNWLGlDQUFpQztJQUNqQyw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLGlFQUFpRTtJQUNqRSx5REFBeUQsRUFBQTtFQUczRDtJQUNFLFVBQVU7SUFDVixpQ0FBaUM7SUFDakMsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6QixtRUFBbUU7SUFDbkUsMkRBQTJELEVBQUE7RUFHN0Q7SUFDRSxVQUFVO0lBQ1YsbUNBQW1DO0lBQ25DLDhCQUEyQjtJQUEzQiwyQkFBMkI7SUFDM0Isa0VBQWtFO0lBQ2xFLDBEQUEwRCxFQUFBLEVBQUE7O0FBdEM5RDtFQUNFO0lBQ0UsVUFBVTtJQUNWLG1DQUFtQztJQUNuQyw4QkFBMkI7SUFBM0IsMkJBQTJCO0lBQzNCLGlFQUFpRTtJQUNqRSx5REFBeUQsRUFBQTtFQUczRDtJQUNFLFVBQVU7SUFDVixtQ0FBbUM7SUFDbkMsOEJBQTJCO0lBQTNCLDJCQUEyQjtJQUMzQixrRUFBa0U7SUFDbEUsMERBQTBELEVBQUE7RUFHNUQ7SUFDRSxVQUFVO0lBQ1YsaUNBQWlDO0lBQ2pDLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsaUVBQWlFO0lBQ2pFLHlEQUF5RCxFQUFBO0VBRzNEO0lBQ0UsVUFBVTtJQUNWLGlDQUFpQztJQUNqQyw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLG1FQUFtRTtJQUNuRSwyREFBMkQsRUFBQTtFQUc3RDtJQUNFLFVBQVU7SUFDVixtQ0FBbUM7SUFDbkMsOEJBQTJCO0lBQTNCLDJCQUEyQjtJQUMzQixrRUFBa0U7SUFDbEUsMERBQTBELEVBQUEsRUFBQTs7QUNuRjlEO0VBRUUsc0JBQXNCO0VBQ3RCLG9CQUFvQixFQUFBO0VBSHRCO0lBTUcsNEJBQW9CO0lBQXBCLHVCQUFvQjtJQUFwQixvQkFBb0I7SUFDcEIsZ0NBQXdCO0lBQXhCLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsOENBQXNDO0lBQXRDLHlDQUFzQztJQUF0QyxzQ0FBc0MsRUFBQTtFQVJ6QztJQVlHLHVCQUF1QjtJQUV2Qiw0QkFBb0I7SUFBcEIsdUJBQW9CO0lBQXBCLG9CQUFvQjtJQUNwQixnQ0FBd0I7SUFBeEIsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4Qiw4QkFBc0I7SUFBdEIseUJBQXNCO0lBQXRCLHNCQUFzQjtJQUN0Qiw4Q0FBc0M7SUFBdEMseUNBQXNDO0lBQXRDLHNDQUFzQztJQUN0QyxxQ0FBNkI7SUFBN0IsZ0NBQTZCO0lBQTdCLDZCQUE2QixFQUFBO0VBbEJoQztJQXNCRyx1QkFBdUI7SUFDdkIsa0NBQTBCO0lBQTFCLDZCQUEwQjtJQUExQiwwQkFBMEI7SUFDMUIsZ0NBQXdCO0lBQXhCLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsOEJBQXNCO0lBQXRCLHlCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIsOENBQXNDO0lBQXRDLHlDQUFzQztJQUF0QyxzQ0FBc0M7SUFDdEMscUNBQTZCO0lBQTdCLGdDQUE2QjtJQUE3Qiw2QkFBNkIsRUFBQTs7QUFLaEM7RUFDQztJQUNDLHVCQUF1QixFQUFBO0VBRXhCO0lBQ0Msb0JBQW9CLEVBQUEsRUFBQTs7QUFMdEI7RUFDQztJQUNDLHVCQUF1QixFQUFBO0VBRXhCO0lBQ0Msb0JBQW9CLEVBQUEsRUFBQTs7QUFMdEI7RUFDQztJQUNDLHVCQUF1QixFQUFBO0VBRXhCO0lBQ0Msb0JBQW9CLEVBQUEsRUFBQTs7QUFJdEI7RUFDQztJQUNDLHVCQUF1QixFQUFBO0VBRXhCO0lBQ0Msc0JBQXNCLEVBQUEsRUFBQTs7QUFMeEI7RUFDQztJQUNDLHVCQUF1QixFQUFBO0VBRXhCO0lBQ0Msc0JBQXNCLEVBQUEsRUFBQTs7QUFMeEI7RUFDQztJQUNDLHVCQUF1QixFQUFBO0VBRXhCO0lBQ0Msc0JBQXNCLEVBQUEsRUFBQTs7QUM5Q3hCO0VBQ0MsK0JBQXVCO0VBQXZCLDBCQUF1QjtFQUF2Qix1QkFBdUI7RVBBdkIsOEJBQXNCO0VBQXRCLHlCQUFzQjtFQUF0QixzQkFBc0I7RUFDdEIsaUNBQXlCO0VBQXpCLDRCQUF5QjtFQUF6Qix5QkFBeUIsRUFBQTs7QU9HMUI7RUFDQztJQUNDLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0QixzQkFBc0IsRUFBQTtFQUd2QjtJQUNDLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIseUJBQXlCO0lBQ3pCLGtDQUEwQjtJQUExQiwwQkFBMEIsRUFBQTtFQUczQjtJQUNDLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0QixzQkFBc0IsRUFBQSxFQUFBOztBQWhCeEI7RUFDQztJQUNDLFVBQVU7SUFDViw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLHlCQUFzQjtJQUF0QixzQkFBc0IsRUFBQTtFQUd2QjtJQUNDLFVBQVU7SUFDViw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDZCQUEwQjtJQUExQiwwQkFBMEIsRUFBQTtFQUczQjtJQUNDLFVBQVU7SUFDViw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLHlCQUFzQjtJQUF0QixzQkFBc0IsRUFBQSxFQUFBOztBQWhCeEI7RUFDQztJQUNDLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIseUJBQXNCO0lBQXRCLHNCQUFzQixFQUFBO0VBR3ZCO0lBQ0MsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qiw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLGtDQUEwQjtJQUExQiw2QkFBMEI7SUFBMUIsMEJBQTBCLEVBQUE7RUFHM0I7SUFDQyxVQUFVO0lBQ1YsaUNBQXlCO0lBQXpCLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsOEJBQXNCO0lBQXRCLHlCQUFzQjtJQUF0QixzQkFBc0IsRUFBQSxFQUFBOztBQ3JCeEI7RUFDRSxnQ0FBd0I7RUFBeEIsMkJBQXdCO0VBQXhCLHdCQUF3QjtFUkF6Qiw4QkFBc0I7RUFBdEIseUJBQXNCO0VBQXRCLHNCQUFzQjtFQUN0QixpQ0FBeUI7RUFBekIsNEJBQXlCO0VBQXpCLHlCQUF5QixFQUFBOztBUUcxQjtFQUNFO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsOEJBQXNCO0lBQXRCLHNCQUFzQixFQUFBO0VBR3hCO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsa0NBQTBCO0lBQTFCLDBCQUEwQixFQUFBO0VBRzVCO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsOEJBQXNCO0lBQXRCLHNCQUFzQixFQUFBLEVBQUE7O0FBaEIxQjtFQUNFO0lBQ0UsVUFBVTtJQUNWLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIseUJBQXNCO0lBQXRCLHNCQUFzQixFQUFBO0VBR3hCO0lBQ0UsVUFBVTtJQUNWLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsNkJBQTBCO0lBQTFCLDBCQUEwQixFQUFBO0VBRzVCO0lBQ0UsVUFBVTtJQUNWLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIseUJBQXNCO0lBQXRCLHNCQUFzQixFQUFBLEVBQUE7O0FBaEIxQjtFQUNFO0lBQ0UsVUFBVTtJQUNWLGlDQUF5QjtJQUF6Qiw0QkFBeUI7SUFBekIseUJBQXlCO0lBQ3pCLDhCQUFzQjtJQUF0Qix5QkFBc0I7SUFBdEIsc0JBQXNCLEVBQUE7RUFHeEI7SUFDRSxVQUFVO0lBQ1YsaUNBQXlCO0lBQXpCLDRCQUF5QjtJQUF6Qix5QkFBeUI7SUFDekIsa0NBQTBCO0lBQTFCLDZCQUEwQjtJQUExQiwwQkFBMEIsRUFBQTtFQUc1QjtJQUNFLFVBQVU7SUFDVixpQ0FBeUI7SUFBekIsNEJBQXlCO0lBQXpCLHlCQUF5QjtJQUN6Qiw4QkFBc0I7SUFBdEIseUJBQXNCO0lBQXRCLHNCQUFzQixFQUFBLEVBQUE7O0FDckIxQjtFQUNFLHVDQUErQjtFQUEvQixrQ0FBK0I7RUFBL0IsK0JBQStCO0VUQWhDLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FTRzFCO0VBQ0U7SUFDRSxnQ0FBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLG1EQUEyQztJQUEzQywyQ0FBMkMsRUFBQTtFQUc3QztJQUNFLGdDQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsc0RBQThDO0lBQTlDLDhDQUE4QyxFQUFBLEVBQUE7O0FBUmxEO0VBQ0U7SUFDRSwyQkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLDJDQUEyQyxFQUFBO0VBRzdDO0lBQ0UsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4Qiw4Q0FBOEMsRUFBQSxFQUFBOztBQVJsRDtFQUNFO0lBQ0UsZ0NBQXdCO0lBQXhCLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsbURBQTJDO0lBQTNDLDJDQUEyQyxFQUFBO0VBRzdDO0lBQ0UsZ0NBQXdCO0lBQXhCLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsc0RBQThDO0lBQTlDLDhDQUE4QyxFQUFBLEVBQUE7O0FDYmxEO0VBQ0UsNkNBQXFDO0VBQXJDLHdDQUFxQztFQUFyQyxxQ0FBcUM7RVZBdEMsOEJBQXNCO0VBQXRCLHlCQUFzQjtFQUF0QixzQkFBc0I7RUFDdEIsaUNBQXlCO0VBQXpCLDRCQUF5QjtFQUF6Qix5QkFBeUIsRUFBQTs7QVVHMUI7RUFDRTtJQUNFLGdDQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsc0RBQThDO0lBQTlDLDhDQUE4QyxFQUFBO0VBR2hEO0lBQ0UsZ0NBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixtREFBMkM7SUFBM0MsMkNBQTJDLEVBQUEsRUFBQTs7QUFSL0M7RUFDRTtJQUNFLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsOENBQThDLEVBQUE7RUFHaEQ7SUFDRSwyQkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLDJDQUEyQyxFQUFBLEVBQUE7O0FBUi9DO0VBQ0U7SUFDRSxnQ0FBd0I7SUFBeEIsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixzREFBOEM7SUFBOUMsOENBQThDLEVBQUE7RUFHaEQ7SUFDRSxnQ0FBd0I7SUFBeEIsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixtREFBMkM7SUFBM0MsMkNBQTJDLEVBQUEsRUFBQTs7QUNiL0M7RUFDRSx1Q0FBK0I7RUFBL0Isa0NBQStCO0VBQS9CLCtCQUErQjtFWEFoQyw4QkFBc0I7RUFBdEIseUJBQXNCO0VBQXRCLHNCQUFzQjtFQUN0QixpQ0FBeUI7RUFBekIsNEJBQXlCO0VBQXpCLHlCQUF5QixFQUFBOztBV0cxQjtFQUNFO0lBQ0UsNkJBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQixtREFBMkM7SUFBM0MsMkNBQTJDLEVBQUE7RUFHN0M7SUFDRSw2QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLHNEQUE4QztJQUE5Qyw4Q0FBOEMsRUFBQSxFQUFBOztBQVJsRDtFQUNFO0lBQ0Usd0JBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQiwyQ0FBMkMsRUFBQTtFQUc3QztJQUNFLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsOENBQThDLEVBQUEsRUFBQTs7QUFSbEQ7RUFDRTtJQUNFLDZCQUFxQjtJQUFyQix3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLG1EQUEyQztJQUEzQywyQ0FBMkMsRUFBQTtFQUc3QztJQUNFLDZCQUFxQjtJQUFyQix3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLHNEQUE4QztJQUE5Qyw4Q0FBOEMsRUFBQSxFQUFBOztBQ2JsRDtFQUNFLDZDQUFxQztFQUFyQyx3Q0FBcUM7RUFBckMscUNBQXFDO0VaQXRDLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FZRzFCO0VBQ0U7SUFDRSw2QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLHNEQUE4QztJQUE5Qyw4Q0FBOEMsRUFBQTtFQUdoRDtJQUNFLDZCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsbURBQTJDO0lBQTNDLDJDQUEyQyxFQUFBLEVBQUE7O0FBUi9DO0VBQ0U7SUFDRSx3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLDhDQUE4QyxFQUFBO0VBR2hEO0lBQ0Usd0JBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQiwyQ0FBMkMsRUFBQSxFQUFBOztBQVIvQztFQUNFO0lBQ0UsNkJBQXFCO0lBQXJCLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsc0RBQThDO0lBQTlDLDhDQUE4QyxFQUFBO0VBR2hEO0lBQ0UsNkJBQXFCO0lBQXJCLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsbURBQTJDO0lBQTNDLDJDQUEyQyxFQUFBLEVBQUE7O0FDYi9DO0VBQ0Usd0NBQWdDO0VBQWhDLG1DQUFnQztFQUFoQyxnQ0FBZ0M7RWJBakMsOEJBQXNCO0VBQXRCLHlCQUFzQjtFQUF0QixzQkFBc0I7RUFDdEIsaUNBQXlCO0VBQXpCLDRCQUF5QjtFQUF6Qix5QkFBeUIsRUFBQTs7QWFHMUI7RUFDRTtJQUNFLGdDQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsbURBQTJDO0lBQTNDLDJDQUEyQyxFQUFBO0VBRzdDO0lBQ0UsZ0NBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixxREFBNkM7SUFBN0MsNkNBQTZDLEVBQUEsRUFBQTs7QUFSakQ7RUFDRTtJQUNFLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsMkNBQTJDLEVBQUE7RUFHN0M7SUFDRSwyQkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLDZDQUE2QyxFQUFBLEVBQUE7O0FBUmpEO0VBQ0U7SUFDRSxnQ0FBd0I7SUFBeEIsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixtREFBMkM7SUFBM0MsMkNBQTJDLEVBQUE7RUFHN0M7SUFDRSxnQ0FBd0I7SUFBeEIsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixxREFBNkM7SUFBN0MsNkNBQTZDLEVBQUEsRUFBQTs7QUNiakQ7RUFDRSw4Q0FBc0M7RUFBdEMseUNBQXNDO0VBQXRDLHNDQUFzQztFZEF2Qyw4QkFBc0I7RUFBdEIseUJBQXNCO0VBQXRCLHNCQUFzQjtFQUN0QixpQ0FBeUI7RUFBekIsNEJBQXlCO0VBQXpCLHlCQUF5QixFQUFBOztBY0cxQjtFQUNFO0lBQ0UsZ0NBQXdCO0lBQXhCLHdCQUF3QjtJQUN4QixxREFBNkM7SUFBN0MsNkNBQTZDLEVBQUE7RUFHL0M7SUFDRSxnQ0FBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLG1EQUEyQztJQUEzQywyQ0FBMkMsRUFBQSxFQUFBOztBQVIvQztFQUNFO0lBQ0UsMkJBQXdCO0lBQXhCLHdCQUF3QjtJQUN4Qiw2Q0FBNkMsRUFBQTtFQUcvQztJQUNFLDJCQUF3QjtJQUF4Qix3QkFBd0I7SUFDeEIsMkNBQTJDLEVBQUEsRUFBQTs7QUFSL0M7RUFDRTtJQUNFLGdDQUF3QjtJQUF4QiwyQkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLHFEQUE2QztJQUE3Qyw2Q0FBNkMsRUFBQTtFQUcvQztJQUNFLGdDQUF3QjtJQUF4QiwyQkFBd0I7SUFBeEIsd0JBQXdCO0lBQ3hCLG1EQUEyQztJQUEzQywyQ0FBMkMsRUFBQSxFQUFBOztBQ2IvQztFQUNFLHFDQUE2QjtFQUE3QixnQ0FBNkI7RUFBN0IsNkJBQTZCO0VmQTlCLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FlRzFCO0VBQ0U7SUFDRSw2QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLG1EQUEyQztJQUEzQywyQ0FBMkMsRUFBQTtFQUc3QztJQUNFLDZCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIscURBQTZDO0lBQTdDLDZDQUE2QyxFQUFBLEVBQUE7O0FBUmpEO0VBQ0U7SUFDRSx3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLDJDQUEyQyxFQUFBO0VBRzdDO0lBQ0Usd0JBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQiw2Q0FBNkMsRUFBQSxFQUFBOztBQVJqRDtFQUNFO0lBQ0UsNkJBQXFCO0lBQXJCLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsbURBQTJDO0lBQTNDLDJDQUEyQyxFQUFBO0VBRzdDO0lBQ0UsNkJBQXFCO0lBQXJCLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIscURBQTZDO0lBQTdDLDZDQUE2QyxFQUFBLEVBQUE7O0FDYmpEO0VBQ0UsMkNBQW1DO0VBQW5DLHNDQUFtQztFQUFuQyxtQ0FBbUM7RWhCQXBDLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FnQkcxQjtFQUNFO0lBQ0UsNkJBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQixxREFBNkM7SUFBN0MsNkNBQTZDLEVBQUE7RUFHL0M7SUFDRSw2QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLG1EQUEyQztJQUEzQywyQ0FBMkMsRUFBQSxFQUFBOztBQVIvQztFQUNFO0lBQ0Usd0JBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQiw2Q0FBNkMsRUFBQTtFQUcvQztJQUNFLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsMkNBQTJDLEVBQUEsRUFBQTs7QUFSL0M7RUFDRTtJQUNFLDZCQUFxQjtJQUFyQix3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLHFEQUE2QztJQUE3Qyw2Q0FBNkMsRUFBQTtFQUcvQztJQUNFLDZCQUFxQjtJQUFyQix3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLG1EQUEyQztJQUEzQywyQ0FBMkMsRUFBQSxFQUFBOztBQ2IvQztFQUNFLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCO0VqQkExQiw4QkFBc0I7RUFBdEIseUJBQXNCO0VBQXRCLHNCQUFzQjtFQUN0QixpQ0FBeUI7RUFBekIsNEJBQXlCO0VBQXpCLHlCQUF5QixFQUFBOztBaUJHMUI7RUFDRTtJQUNFLDZCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsaUNBQXlCO0lBQXpCLHlCQUF5QixFQUFBO0VBRzNCO0lBQ0UsNkJBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQixtQ0FBMkI7SUFBM0IsMkJBQTJCLEVBQUEsRUFBQTs7QUFSL0I7RUFDRTtJQUNFLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsNEJBQXlCO0lBQXpCLHlCQUF5QixFQUFBO0VBRzNCO0lBQ0Usd0JBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQiw4QkFBMkI7SUFBM0IsMkJBQTJCLEVBQUEsRUFBQTs7QUFSL0I7RUFDRTtJQUNFLDZCQUFxQjtJQUFyQix3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLGlDQUF5QjtJQUF6Qiw0QkFBeUI7SUFBekIseUJBQXlCLEVBQUE7RUFHM0I7SUFDRSw2QkFBcUI7SUFBckIsd0JBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQixtQ0FBMkI7SUFBM0IsOEJBQTJCO0lBQTNCLDJCQUEyQixFQUFBLEVBQUE7O0FDYi9CO0VBQ0UsK0JBQXVCO0VBQXZCLDBCQUF1QjtFQUF2Qix1QkFBdUI7RWxCQXhCLDhCQUFzQjtFQUF0Qix5QkFBc0I7RUFBdEIsc0JBQXNCO0VBQ3RCLGlDQUF5QjtFQUF6Qiw0QkFBeUI7RUFBekIseUJBQXlCLEVBQUE7O0FrQkcxQjtFQUNFO0lBQ0UsNkJBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQixtQ0FBMkI7SUFBM0IsMkJBQTJCLEVBQUE7RUFHN0I7SUFDRSw2QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLGdDQUF3QjtJQUF4Qix3QkFBd0IsRUFBQSxFQUFBOztBQVI1QjtFQUNFO0lBQ0Usd0JBQXFCO0lBQXJCLHFCQUFxQjtJQUNyQiw4QkFBMkI7SUFBM0IsMkJBQTJCLEVBQUE7RUFHN0I7SUFDRSx3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLDJCQUF3QjtJQUF4Qix3QkFBd0IsRUFBQSxFQUFBOztBQVI1QjtFQUNFO0lBQ0UsNkJBQXFCO0lBQXJCLHdCQUFxQjtJQUFyQixxQkFBcUI7SUFDckIsbUNBQTJCO0lBQTNCLDhCQUEyQjtJQUEzQiwyQkFBMkIsRUFBQTtFQUc3QjtJQUNFLDZCQUFxQjtJQUFyQix3QkFBcUI7SUFBckIscUJBQXFCO0lBQ3JCLGdDQUF3QjtJQUF4QiwyQkFBd0I7SUFBeEIsd0JBQXdCLEVBQUEsRUFBQTs7QUNYNUI7RUFDQyxhQUFhO0VBQ2IsZUFBZTtFQUNmLFNBQVM7RUFDVCxXQUFXO0VBQ1gsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQix1REFBdUM7RUFBdkMsK0NBQXVDO0VBQ3ZDLGNBQWMsRUFBQTtFQVJmO0lBV0UsbUJBQW1CLEVBQUE7RUFYckI7SUFlRSxrQkFBa0I7SUFDbEIsb0JBQWE7SUFBYixxQkFBYTtJQUFiLG9CQUFhO0lBQWIsYUFBYTtJQUNiLDRCQUFzQjtJQUF0Qiw2QkFBc0I7SUFBdEIsOEJBQXNCO0lBQXRCLDBCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIsZ0JBQWdCLEVBQUE7SUFsQmxCO01BcUJHLHFCQUFxQjtNQUNyQixxQkFBcUI7TUFDckIsa0JBQWtCO01BQ2xCLGdCQUFnQixFQUFBO0VDQ2pCO0lEekJGO01BNkJFLFlBQVk7TUFDWixXQUFXO01BQ1gsWUFBWSxFQUFBO01BL0JkO1FBa0NHLGdCQUFnQixFQUFBLEVBQ2hCOztBQUlIO0VBQ0MsYUFBYTtFQUNiLHdCQUF3QixFQUFBOztBQUd6QjtFQUNDLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIseUJBQXlCLEVBQUE7O0FBRzFCO0VBQ0Msa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixXQUFXLEVBQUE7O0FBR1o7RUFDQyxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLGVBQWU7RUFDZixZQUFZO0VBQ1osV0FBVztFQUNYLHlCQUF5QixFQUFBOztBQUcxQjtFQUNDLHlCQUF5QixFQUFBOztBQUcxQjtFQUNDLCtDQUErQztFQUMvQywyQkFBMkI7RUFDM0IsNEJBQTRCO0VBQzVCLGtDQUFxQjtFQUFyQixxQkFBcUI7RUFDckIsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFHYjtFQUNDLFlBQVk7RUFDWixXQUFXO0VBQ1gsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsNEJBQTRCO0VBQzVCLHlCQUF5QixFQUFBOztBQUcxQjtFQUNDLHlCQUF5QixFQUFBOztBQUcxQjtFQUNDLDZDQUE2QztFQUM3QywyQkFBMkI7RUFDM0IsNEJBQTRCO0VBQzVCLGtDQUFxQjtFQUFyQixxQkFBcUI7RUFDckIsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFHYjtFQUNDLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1oseUJBQXlCLEVBQUE7O0FBRzFCO0VBQ0MsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLFdBQVc7RUFDWCxXQUFXLEVBQUE7O0FBR1o7RUFDQyxtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLFdBQVc7RUFDWCwrQkFBK0I7RUFDL0IsOEJBQThCLEVBQUEiLCJmaWxlIjoicG9waW5XaW5kb3cuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnB1ZmZJbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBwdWZmSW47XG4gIEBpbmNsdWRlIGluaXRFZmZlY3Q7XG59XG5cbkBrZXlmcmFtZXMgcHVmZkluIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDIsIDIpO1xuICAgIGZpbHRlcjogYmx1cigycHgpO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuICAgIGZpbHRlcjogYmx1cigwcHgpO1xuICB9XG59XG4iLCJAbWl4aW4gaW5pdEVmZmVjdCB7XHJcblx0YW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcclxuXHRhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xyXG59XHJcblxyXG4vLyAgQmxpbmdcclxuQGltcG9ydCBcImJsaW5nL3B1ZmZJblwiO1xyXG5AaW1wb3J0IFwiYmxpbmcvcHVmZk91dFwiO1xyXG5AaW1wb3J0IFwiYmxpbmcvdmFuaXNoSW5cIjtcclxuQGltcG9ydCBcImJsaW5nL3ZhbmlzaE91dFwiO1xyXG5cclxuLy8gIEJvaW5nXHJcbkBpbXBvcnQgXCJib2luZy9ib2luZ0luVXBcIjtcclxuQGltcG9ydCBcImJvaW5nL2JvaW5nT3V0RG93blwiO1xyXG5cclxuLy8gIERhc2hcclxuQGltcG9ydCBcImRhc2gvZGFzaFwiO1xyXG5cclxuLy8gIE1hdGhcclxuQGltcG9ydCBcIm1hdGgvc3dhc2hJblwiO1xyXG5AaW1wb3J0IFwibWF0aC9zd2FzaE91dFwiO1xyXG5cclxuLy8gIFBlcnNwZWN0aXZlXHJcbkBpbXBvcnQgXCJwZXJzcGVjdGl2ZS9wZXJzcGVjdGl2ZURvd25cIjtcclxuQGltcG9ydCBcInBlcnNwZWN0aXZlL3BlcnNwZWN0aXZlRG93blJldHVyblwiO1xyXG5AaW1wb3J0IFwicGVyc3BlY3RpdmUvcGVyc3BlY3RpdmVMZWZ0XCI7XHJcbkBpbXBvcnQgXCJwZXJzcGVjdGl2ZS9wZXJzcGVjdGl2ZUxlZnRSZXR1cm5cIjtcclxuQGltcG9ydCBcInBlcnNwZWN0aXZlL3BlcnNwZWN0aXZlUmlnaHRcIjtcclxuQGltcG9ydCBcInBlcnNwZWN0aXZlL3BlcnNwZWN0aXZlUmlnaHRSZXR1cm5cIjtcclxuQGltcG9ydCBcInBlcnNwZWN0aXZlL3BlcnNwZWN0aXZlVXBcIjtcclxuQGltcG9ydCBcInBlcnNwZWN0aXZlL3BlcnNwZWN0aXZlVXBSZXR1cm5cIjtcclxuXHJcbi8vICBTbGlkZVxyXG5AaW1wb3J0IFwic2xpZGUvc2xpZGVEb3duXCI7XHJcbkBpbXBvcnQgXCJzbGlkZS9zbGlkZVVwXCI7XHJcbiIsIi5wdWZmT3V0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHB1ZmZPdXQ7XG4gIEBpbmNsdWRlIGluaXRFZmZlY3Q7XG59XG5cbkBrZXlmcmFtZXMgcHVmZk91dCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICBmaWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgyLCAyKTtcbiAgICBmaWx0ZXI6IGJsdXIoMnB4KTtcbiAgfVxufVxuIiwiLnZhbmlzaEluIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHZhbmlzaEluO1xuICBAaW5jbHVkZSBpbml0RWZmZWN0O1xufVxuXG5Aa2V5ZnJhbWVzIHZhbmlzaEluIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDIsIDIpO1xuICAgIGZpbHRlcjogYmx1cig5MHB4KTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTtcbiAgICBmaWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxufVxuIiwiLnZhbmlzaE91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiB2YW5pc2hPdXQ7XG4gIEBpbmNsdWRlIGluaXRFZmZlY3Q7XG59XG5cbkBrZXlmcmFtZXMgdmFuaXNoT3V0IHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuICAgIGZpbHRlcjogYmx1cigwcHgpO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDIsIDIpO1xuICAgIGZpbHRlcjogYmx1cigyMHB4KTtcbiAgfVxufVxuIiwiLmJvaW5nSW5VcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib2luZ0luVXA7XG4gIEBpbmNsdWRlIGluaXRFZmZlY3Q7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBib2luZ0luVXAge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKC05MGRlZyk7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgtOTBkZWcpO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDUwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDUwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDAlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMGRlZyk7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgwZGVnKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJvaW5nSW5VcCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDAlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoLTkwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKC05MGRlZyk7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDAlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoNTBkZWcpO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoNTBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDBkZWcpO1xuICB9XG59XG4iLCIuYm9pbmdPdXREb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvaW5nT3V0RG93bjtcbiAgQGluY2x1ZGUgaW5pdEVmZmVjdDtcbn1cbkAtd2Via2l0LWtleWZyYW1lcyBib2luZ091dERvd24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZyk7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgwZGVnKSByb3RhdGVZKDBkZWcpO1xuICB9XG5cbiAgMjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMGRlZykgcm90YXRlWSgxMGRlZyk7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgwZGVnKSByb3RhdGVZKDEwZGVnKTtcbiAgfVxuXG4gIDMwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAlIDEwMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMTAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMGRlZykgcm90YXRlWSgwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZyk7XG4gIH1cblxuICA0MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwJSAxMDAlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAlIDEwMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDEwZGVnKSByb3RhdGVZKDEwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDEwZGVnKSByb3RhdGVZKDEwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCg5MGRlZykgcm90YXRlWSgwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDkwZGVnKSByb3RhdGVZKDBkZWcpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIGJvaW5nT3V0RG93biB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMGRlZykgcm90YXRlWSgwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZyk7XG4gIH1cblxuICAyMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgwZGVnKSByb3RhdGVZKDEwZGVnKTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMTBkZWcpO1xuICB9XG5cbiAgMzAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCUgMTAwJTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwJSAxMDAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgwZGVnKSByb3RhdGVZKDBkZWcpO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMGRlZykgcm90YXRlWSgwZGVnKTtcbiAgfVxuXG4gIDQwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAlIDEwMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCUgMTAwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMTBkZWcpIHJvdGF0ZVkoMTBkZWcpO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMTBkZWcpIHJvdGF0ZVkoMTBkZWcpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMTAwJTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDkwZGVnKSByb3RhdGVZKDBkZWcpO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoOTBkZWcpIHJvdGF0ZVkoMGRlZyk7XG4gIH1cbn1cbiIsInN2Zy5kYXNoIHtcclxuXHQucGF0aCB7XHJcblx0XHRzdHJva2UtZGFzaGFycmF5OiAxMDAwO1xyXG5cdFx0c3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XHJcblxyXG5cdFx0Ji5jaXJjbGUge1xyXG5cdFx0XHRhbmltYXRpb24tbmFtZTogZGFzaDtcclxuXHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAwLjlzO1xyXG5cdFx0XHRhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcclxuXHRcdH1cclxuXHJcblx0XHQmLmxpbmUge1xyXG5cdFx0XHRzdHJva2UtZGFzaG9mZnNldDogMTAwMDtcclxuXHJcblx0XHRcdGFuaW1hdGlvbi1uYW1lOiBkYXNoO1xyXG5cdFx0XHRhbmltYXRpb24tZHVyYXRpb246IDAuOXM7XHJcblx0XHRcdGFuaW1hdGlvbi1kZWxheTogMC4zNXM7XHJcblx0XHRcdGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xyXG5cdFx0XHRhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ji5jaGVjayB7XHJcblx0XHRcdHN0cm9rZS1kYXNob2Zmc2V0OiAtMTAwO1xyXG5cdFx0XHRhbmltYXRpb24tbmFtZTogZGFzaC1jaGVjaztcclxuXHRcdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAwLjlzO1xyXG5cdFx0XHRhbmltYXRpb24tZGVsYXk6IDAuMzVzO1xyXG5cdFx0XHRhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcclxuXHRcdFx0YW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGRhc2gge1xyXG5cdDAlIHtcclxuXHRcdHN0cm9rZS1kYXNob2Zmc2V0OiAxMDAwO1xyXG5cdH1cclxuXHQxMDAlIHtcclxuXHRcdHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xyXG5cdH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBkYXNoLWNoZWNrIHtcclxuXHQwJSB7XHJcblx0XHRzdHJva2UtZGFzaG9mZnNldDogLTEwMDtcclxuXHR9XHJcblx0MTAwJSB7XHJcblx0XHRzdHJva2UtZGFzaG9mZnNldDogOTAwO1xyXG5cdH1cclxufVxyXG4iLCIuc3dhc2hJbiB7XG5cdGFuaW1hdGlvbi1uYW1lOiBzd2FzaEluO1xuXHRAaW5jbHVkZSBpbml0RWZmZWN0O1xufVxuXG5Aa2V5ZnJhbWVzIHN3YXNoSW4ge1xuXHQwJSB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xuXHRcdHRyYW5zZm9ybTogc2NhbGUoMCwgMCk7XG5cdH1cblxuXHQ5MCUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuOSwgMC45KTtcblx0fVxuXG5cdDEwMCUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEsIDEpO1xuXHR9XG59XG4iLCIuc3dhc2hPdXQge1xuICBhbmltYXRpb24tbmFtZTogc3dhc2hPdXQ7XG4gIEBpbmNsdWRlIGluaXRFZmZlY3Q7XG59XG5cbkBrZXlmcmFtZXMgc3dhc2hPdXQge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7XG4gIH1cblxuICA4MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSwgMC45KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApO1xuICB9XG59XG4iLCIucGVyc3BlY3RpdmVEb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHBlcnNwZWN0aXZlRG93bjtcbiAgQGluY2x1ZGUgaW5pdEVmZmVjdDtcbn1cblxuQGtleWZyYW1lcyBwZXJzcGVjdGl2ZURvd24ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAxMDAlO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMGRlZyk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDEwMCU7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgtMTgwZGVnKTtcbiAgfVxufVxuIiwiLnBlcnNwZWN0aXZlRG93blJldHVybiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBwZXJzcGVjdGl2ZURvd25SZXR1cm47XG4gIEBpbmNsdWRlIGluaXRFZmZlY3Q7XG59XG5cbkBrZXlmcmFtZXMgcGVyc3BlY3RpdmVEb3duUmV0dXJuIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMTAwJTtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKC0xODBkZWcpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAxMDAlO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMGRlZyk7XG4gIH1cbn1cbiIsIi5wZXJzcGVjdGl2ZUxlZnQge1xuICBhbmltYXRpb24tbmFtZTogcGVyc3BlY3RpdmVMZWZ0O1xuICBAaW5jbHVkZSBpbml0RWZmZWN0O1xufVxuXG5Aa2V5ZnJhbWVzIHBlcnNwZWN0aXZlTGVmdCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWSgwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVZKC0xODBkZWcpO1xuICB9XG59XG4iLCIucGVyc3BlY3RpdmVMZWZ0UmV0dXJuIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHBlcnNwZWN0aXZlTGVmdFJldHVybjtcbiAgQGluY2x1ZGUgaW5pdEVmZmVjdDtcbn1cblxuQGtleWZyYW1lcyBwZXJzcGVjdGl2ZUxlZnRSZXR1cm4ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVkoLTE4MGRlZyk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWSgwZGVnKTtcbiAgfVxufVxuIiwiLnBlcnNwZWN0aXZlUmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogcGVyc3BlY3RpdmVSaWdodDtcbiAgQGluY2x1ZGUgaW5pdEVmZmVjdDtcbn1cblxuQGtleWZyYW1lcyBwZXJzcGVjdGl2ZVJpZ2h0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVZKDBkZWcpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVkoMTgwZGVnKTtcbiAgfVxufVxuIiwiLnBlcnNwZWN0aXZlUmlnaHRSZXR1cm4ge1xuICBhbmltYXRpb24tbmFtZTogcGVyc3BlY3RpdmVSaWdodFJldHVybjtcbiAgQGluY2x1ZGUgaW5pdEVmZmVjdDtcbn1cblxuQGtleWZyYW1lcyBwZXJzcGVjdGl2ZVJpZ2h0UmV0dXJuIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMDtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVZKDE4MGRlZyk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDA7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWSgwZGVnKTtcbiAgfVxufVxuIiwiLnBlcnNwZWN0aXZlVXAge1xuICBhbmltYXRpb24tbmFtZTogcGVyc3BlY3RpdmVVcDtcbiAgQGluY2x1ZGUgaW5pdEVmZmVjdDtcbn1cblxuQGtleWZyYW1lcyBwZXJzcGVjdGl2ZVVwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDBkZWcpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoODAwcHgpIHJvdGF0ZVgoMTgwZGVnKTtcbiAgfVxufVxuIiwiLnBlcnNwZWN0aXZlVXBSZXR1cm4ge1xuICBhbmltYXRpb24tbmFtZTogcGVyc3BlY3RpdmVVcFJldHVybjtcbiAgQGluY2x1ZGUgaW5pdEVmZmVjdDtcbn1cblxuQGtleWZyYW1lcyBwZXJzcGVjdGl2ZVVwUmV0dXJuIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDgwMHB4KSByb3RhdGVYKDE4MGRlZyk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg4MDBweCkgcm90YXRlWCgwZGVnKTtcbiAgfVxufVxuIiwiLmVmZmVjdC1zbGlkZURvd24ge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVEb3duO1xuICBAaW5jbHVkZSBpbml0RWZmZWN0O1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlRG93biB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwJSk7XG4gIH1cbn1cbiIsIi5lZmZlY3Qtc2xpZGVVcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZVVwO1xuICBAaW5jbHVkZSBpbml0RWZmZWN0O1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlVXAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJoZWxwZXJzL2hlbHBlcnNcIjtcclxuXHJcbi5hbGVydC1wb3BwaW4ge1xyXG5cdGRpc3BsYXk6IG5vbmU7XHJcblx0cG9zaXRpb246IGZpeGVkO1xyXG5cdGJvdHRvbTogMDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRtYXgtd2lkdGg6IDEwMCU7XHJcblx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRib3gtc2hhZG93OiAwcHggLTJweCA4cHggMHB4IHJnYmEoYmxhY2ssIDAuMyk7XHJcblx0ei1pbmRleDogMTAwMDA7XHJcblxyXG5cdCYuYWxlcnQtZGlzbWlzc2libGUge1xyXG5cdFx0cGFkZGluZy1yaWdodDogMXJlbTtcclxuXHR9XHJcblxyXG5cdC5hbGVydC13cmFwcGVyIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0bWF4LWhlaWdodDogNTB2aDtcclxuXHJcblx0XHQuYWxlcnQtY29udGVudCB7XHJcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDAuOXJlbTtcclxuXHRcdFx0bWFyZ2luLXJpZ2h0OiAtMC45cmVtO1xyXG5cdFx0XHRvdmVyZmxvdy14OiBoaWRkZW47XHJcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRAaW5jbHVkZSBtaW4tbWVkaWEoXCJzbVwiKSB7XHJcblx0XHRib3R0b206IDFyZW07XHJcblx0XHRyaWdodDogMXJlbTtcclxuXHRcdHdpZHRoOiAzNTBweDtcclxuXHJcblx0XHQuYWxlcnQtd3JhcHBlciB7XHJcblx0XHRcdG1heC1oZWlnaHQ6IDcwdmg7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5kaXYucG9waW5XaW5kb3dQYWRkaW5nIHtcclxuXHRwYWRkaW5nOiAyMHB4O1xyXG5cdHotaW5kZXg6IDE5NTAgIWltcG9ydGFudDtcclxufVxyXG5cclxuZGl2LnBvcGluV2luZG93Q29udGFpbmVyIHtcclxuXHRwYWRkaW5nOiAxcHg7XHJcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICM5NWE1YTY7XHJcbn1cclxuXHJcbmRpdi5wb3BpbldpbmRvd1Rvb2xzQ29udGFpbmVyIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0cmlnaHQ6IDBweDtcclxuXHR3aWR0aDogNThweDtcclxufVxyXG5cclxuZGl2LnBvcGluV2luZG93UHJpbnRCdG4ge1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRmbG9hdDogbGVmdDtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0aGVpZ2h0OiAxOXB4O1xyXG5cdHdpZHRoOiAyOHB4O1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNhM2IxYjI7XHJcbn1cclxuXHJcbmRpdi5wb3BpbldpbmRvd1ByaW50QnRuOmhvdmVyIHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjY2NkZWRmO1xyXG59XHJcblxyXG5kaXYucG9waW5XaW5kb3dQcmludEJ0biBkaXYucHJpbnRJY29uIHtcclxuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3BvcGluL3ByaW50ZXIucG5nKTtcclxuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuXHRiYWNrZ3JvdW5kLXNpemU6IDE2cHg7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0aGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG5kaXYucG9waW5XaW5kb3dDbG9zZUJ0biB7XHJcblx0aGVpZ2h0OiAxOXB4O1xyXG5cdHdpZHRoOiAyOHB4O1xyXG5cdGZsb2F0OiByaWdodDtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2EzYjFiMjtcclxufVxyXG5cclxuZGl2LnBvcGluV2luZG93Q2xvc2VCdG46aG92ZXIge1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNjY2RlZGY7XHJcbn1cclxuXHJcbmRpdi5wb3BpbldpbmRvd0Nsb3NlQnRuIGRpdi5jbG9zZUljb24ge1xyXG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvcG9waW4vY3Jvc3MucG5nKTtcclxuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuXHRiYWNrZ3JvdW5kLXNpemU6IDE0cHg7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0aGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG5kaXYucG9waW5XaW5kb3dUaXRsZUJhciB7XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdGhlaWdodDogMjFweDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjOTVhNWE2O1xyXG59XHJcblxyXG5kaXYucG9waW5XaW5kb3dUaXRsZUNvbnRhaW5lciB7XHJcblx0cGFkZGluZy1sZWZ0OiA1cHg7XHJcblx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZvbnQtc2l6ZTogMTRweDtcclxuXHRjb2xvcjogI2ZmZjtcclxuXHRmbG9hdDogbGVmdDtcclxufVxyXG5cclxuZGl2LnBvcGluV2luZG93Q29udGVudCB7XHJcblx0YmFja2dyb3VuZDogI2VjZjBmMTtcclxuXHRwYWRkaW5nOiA1cHg7XHJcblx0Y29sb3I6ICMzMzM7XHJcblx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcclxuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7XHJcbn1cclxuIiwiQG1peGluIG1hdGVyaWFsSWNvbigpIHtcclxuXHRmb250LWZhbWlseTogJG1hdGVyaWFsLWZvbnQ7XHJcblx0Zm9udC1zaXplOiAxMjAlO1xyXG5cdGNvbG9yOiBpbmhlcml0O1xyXG59XHJcblxyXG5AbWl4aW4gY29udGVudEljb24oJGljb24pIHtcclxuXHRAaW5jbHVkZSBtYXRlcmlhbEljb24oKTtcclxuXHJcblx0Y29udGVudDogXCIjeyRpY29ufVwiO1xyXG59XHJcblxyXG5AbWl4aW4gY2VudGVyUm90YXRpb24oJHdyYXBwZXItc2l6ZSwgJHNpemUpIHtcclxuXHQkcHl0aGFnb3JlYW46IFB5dGhhZ29yZWFuVGhlb3JlbSgkc2l6ZSwgJHNpemUpO1xyXG5cdCRzaXplT3ZlcmZsb3c6ICgkcHl0aGFnb3JlYW4gLSAkc2l6ZSkgLyAyO1xyXG5cclxuXHQkcG9zaXRpb246ICgkd3JhcHBlci1zaXplIC8gMikgLSAoJHB5dGhhZ29yZWFuIC8gMikgKyAkc2l6ZU92ZXJmbG93O1xyXG5cclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAjeyRwb3NpdGlvbn1weDtcclxuXHRsZWZ0OiAjeyRwb3NpdGlvbn1weDtcclxuXHRoZWlnaHQ6ICN7JHNpemV9cHg7XHJcblx0d2lkdGg6ICN7JHNpemV9cHg7XHJcbn1cclxuXHJcbkBtaXhpbiBtaW4tbWVkaWEoJGJyZWFrcG9pbnQpIHtcclxuXHRAaWYgbWFwLWhhcy1rZXkoJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50KSB7XHJcblx0XHRAbWVkaWEgKG1pbi13aWR0aDogI3ttYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCl9KSB7XHJcblx0XHRcdEBjb250ZW50O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuQG1peGluIG1heC1tZWRpYSgkYnJlYWtwb2ludCkge1xyXG5cdEBpZiBtYXAtaGFzLWtleSgkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQpIHtcclxuXHRcdCRwcmV2LWVsZW1lbnQ6IG1hcC1nZXQtbmV4dCgkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQpO1xyXG5cdFx0XHJcblx0XHRAaWYgKCRwcmV2LWVsZW1lbnQpIHtcclxuXHRcdFx0JHdpZHRoOiBtYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCAkcHJldi1lbGVtZW50KSAtIDFweDtcclxuXHJcblx0XHRcdEBtZWRpYSAobWF4LXdpZHRoOiAjeyR3aWR0aH0pIHtcclxuXHRcdFx0XHRAY29udGVudDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuQG1peGluIGFwcGVhci1kaXNhcHBlYXIge1xyXG5cdG9wYWNpdHk6IDE7XHJcblx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xyXG5cclxuXHQmLmRpc2FibGVkLFxyXG5cdCY6ZGlzYWJsZWQge1xyXG5cdFx0b3BhY2l0eTogMDtcclxuXHR9XHJcbn1cclxuIl19 */
