diff --git a/src/sunstone/public/css/app.css b/src/sunstone/public/css/app.css deleted file mode 100644 index 9936e582fc..0000000000 --- a/src/sunstone/public/css/app.css +++ /dev/null @@ -1 +0,0 @@ -@import url("../bower_components/fontawesome/css/font-awesome.min.css");@import url("../bower_components/jgrowl/jquery.jgrowl.min.css");meta.foundation-version {font-family:"/5.5.1/";}meta.foundation-mq-small {font-family:"/only screen/";width:0;}meta.foundation-mq-small-only {font-family:"/only screen and (max-width: 40em)/";width:0;}meta.foundation-mq-medium {font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}meta.foundation-mq-medium-only {font-family:"/only screen and (min-width:40.063em) and (max-width:64em)/";width:40.063em;}meta.foundation-mq-large {font-family:"/only screen and (min-width:64.063em)/";width:64.063em;}meta.foundation-mq-large-only {font-family:"/only screen and (min-width:64.063em) and (max-width:90em)/";width:64.063em;}meta.foundation-mq-xlarge {font-family:"/only screen and (min-width:90.063em)/";width:90.063em;}meta.foundation-mq-xlarge-only {font-family:"/only screen and (min-width:90.063em) and (max-width:120em)/";width:90.063em;}meta.foundation-mq-xxlarge {font-family:"/only screen and (min-width:120.063em)/";width:120.063em;}meta.foundation-data-attribute-namespace {font-family:false;}html ,body {height:100%;}* ,*:before ,*:after {-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html ,body {font-size:100%;}body {background:#ffffff;color:#555555;padding:0;margin:0;font-family:"Open Sans",sans-serif;font-weight:normal;font-style:normal;line-height:1.5;position:relative;cursor:auto;}a:hover {cursor:pointer;}img {max-width:100%;height:auto;}img {-ms-interpolation-mode:bicubic;}#map_canvas img ,#map_canvas embed ,#map_canvas object ,.map_canvas img ,.map_canvas embed ,.map_canvas object {max-width:none !important;}.left {float:left !important;}.right {float:right !important;}.clearfix:before ,.clearfix:after {content:" ";display:table;}.clearfix:after {clear:both;}.hide {display:none;}.invisible {visibility:hidden;}.antialiased {-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}img {display:inline-block;vertical-align:middle;}textarea {height:auto;min-height:50px;}select {width:100%;}.row {width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:75rem;}.row:before ,.row:after {content:" ";display:table;}.row:after {clear:both;}.row.collapse>.column ,.row.collapse>.columns {padding-left:0;padding-right:0;}.row.collapse .row {margin-left:0;margin-right:0;}.row .row {width:auto;margin-left:-0.9375rem;margin-right:-0.9375rem;margin-top:0;margin-bottom:0;max-width:none;}.row .row:before ,.row .row:after {content:" ";display:table;}.row .row:after {clear:both;}.row .row.collapse {width:auto;margin:0;max-width:none;}.row .row.collapse:before ,.row .row.collapse:after {content:" ";display:table;}.row .row.collapse:after {clear:both;}.column ,.columns {padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left;}[class*="column"]+[class*="column"]:last-child {float:right;}[class*="column"]+[class*="column"].end {float:left;}@media only screen{.small-push-0 {position:relative;left:0%;right:auto;}.small-pull-0 {position:relative;right:0%;left:auto;}.small-push-1 {position:relative;left:8.33333%;right:auto;}.small-pull-1 {position:relative;right:8.33333%;left:auto;}.small-push-2 {position:relative;left:16.66667%;right:auto;}.small-pull-2 {position:relative;right:16.66667%;left:auto;}.small-push-3 {position:relative;left:25%;right:auto;}.small-pull-3 {position:relative;right:25%;left:auto;}.small-push-4 {position:relative;left:33.33333%;right:auto;}.small-pull-4 {position:relative;right:33.33333%;left:auto;}.small-push-5 {position:relative;left:41.66667%;right:auto;}.small-pull-5 {position:relative;right:41.66667%;left:auto;}.small-push-6 {position:relative;left:50%;right:auto;}.small-pull-6 {position:relative;right:50%;left:auto;}.small-push-7 {position:relative;left:58.33333%;right:auto;}.small-pull-7 {position:relative;right:58.33333%;left:auto;}.small-push-8 {position:relative;left:66.66667%;right:auto;}.small-pull-8 {position:relative;right:66.66667%;left:auto;}.small-push-9 {position:relative;left:75%;right:auto;}.small-pull-9 {position:relative;right:75%;left:auto;}.small-push-10 {position:relative;left:83.33333%;right:auto;}.small-pull-10 {position:relative;right:83.33333%;left:auto;}.small-push-11 {position:relative;left:91.66667%;right:auto;}.small-pull-11 {position:relative;right:91.66667%;left:auto;}.column ,.columns {position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.small-1 {width:8.33333%;}.small-2 {width:16.66667%;}.small-3 {width:25%;}.small-4 {width:33.33333%;}.small-5 {width:41.66667%;}.small-6 {width:50%;}.small-7 {width:58.33333%;}.small-8 {width:66.66667%;}.small-9 {width:75%;}.small-10 {width:83.33333%;}.small-11 {width:91.66667%;}.small-12 {width:100%;}.small-offset-0 {margin-left:0% !important;}.small-offset-1 {margin-left:8.33333% !important;}.small-offset-2 {margin-left:16.66667% !important;}.small-offset-3 {margin-left:25% !important;}.small-offset-4 {margin-left:33.33333% !important;}.small-offset-5 {margin-left:41.66667% !important;}.small-offset-6 {margin-left:50% !important;}.small-offset-7 {margin-left:58.33333% !important;}.small-offset-8 {margin-left:66.66667% !important;}.small-offset-9 {margin-left:75% !important;}.small-offset-10 {margin-left:83.33333% !important;}.small-offset-11 {margin-left:91.66667% !important;}.small-reset-order {margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.small-centered ,.columns.small-centered {margin-left:auto;margin-right:auto;float:none;}.column.small-uncentered ,.columns.small-uncentered {margin-left:0;margin-right:0;float:left;}.column.small-centered:last-child ,.columns.small-centered:last-child {float:none;}.column.small-uncentered:last-child ,.columns.small-uncentered:last-child {float:left;}.column.small-uncentered.opposite ,.columns.small-uncentered.opposite {float:right;}.row.small-collapse>.column ,.row.small-collapse>.columns {padding-left:0;padding-right:0;}.row.small-collapse .row {margin-left:0;margin-right:0;}.row.small-uncollapse>.column ,.row.small-uncollapse>.columns {padding-left:0.9375rem;padding-right:0.9375rem;float:left;}}@media only screen and (min-width:40.063em){.medium-push-0 {position:relative;left:0%;right:auto;}.medium-pull-0 {position:relative;right:0%;left:auto;}.medium-push-1 {position:relative;left:8.33333%;right:auto;}.medium-pull-1 {position:relative;right:8.33333%;left:auto;}.medium-push-2 {position:relative;left:16.66667%;right:auto;}.medium-pull-2 {position:relative;right:16.66667%;left:auto;}.medium-push-3 {position:relative;left:25%;right:auto;}.medium-pull-3 {position:relative;right:25%;left:auto;}.medium-push-4 {position:relative;left:33.33333%;right:auto;}.medium-pull-4 {position:relative;right:33.33333%;left:auto;}.medium-push-5 {position:relative;left:41.66667%;right:auto;}.medium-pull-5 {position:relative;right:41.66667%;left:auto;}.medium-push-6 {position:relative;left:50%;right:auto;}.medium-pull-6 {position:relative;right:50%;left:auto;}.medium-push-7 {position:relative;left:58.33333%;right:auto;}.medium-pull-7 {position:relative;right:58.33333%;left:auto;}.medium-push-8 {position:relative;left:66.66667%;right:auto;}.medium-pull-8 {position:relative;right:66.66667%;left:auto;}.medium-push-9 {position:relative;left:75%;right:auto;}.medium-pull-9 {position:relative;right:75%;left:auto;}.medium-push-10 {position:relative;left:83.33333%;right:auto;}.medium-pull-10 {position:relative;right:83.33333%;left:auto;}.medium-push-11 {position:relative;left:91.66667%;right:auto;}.medium-pull-11 {position:relative;right:91.66667%;left:auto;}.column ,.columns {position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.medium-1 {width:8.33333%;}.medium-2 {width:16.66667%;}.medium-3 {width:25%;}.medium-4 {width:33.33333%;}.medium-5 {width:41.66667%;}.medium-6 {width:50%;}.medium-7 {width:58.33333%;}.medium-8 {width:66.66667%;}.medium-9 {width:75%;}.medium-10 {width:83.33333%;}.medium-11 {width:91.66667%;}.medium-12 {width:100%;}.medium-offset-0 {margin-left:0% !important;}.medium-offset-1 {margin-left:8.33333% !important;}.medium-offset-2 {margin-left:16.66667% !important;}.medium-offset-3 {margin-left:25% !important;}.medium-offset-4 {margin-left:33.33333% !important;}.medium-offset-5 {margin-left:41.66667% !important;}.medium-offset-6 {margin-left:50% !important;}.medium-offset-7 {margin-left:58.33333% !important;}.medium-offset-8 {margin-left:66.66667% !important;}.medium-offset-9 {margin-left:75% !important;}.medium-offset-10 {margin-left:83.33333% !important;}.medium-offset-11 {margin-left:91.66667% !important;}.medium-reset-order {margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.medium-centered ,.columns.medium-centered {margin-left:auto;margin-right:auto;float:none;}.column.medium-uncentered ,.columns.medium-uncentered {margin-left:0;margin-right:0;float:left;}.column.medium-centered:last-child ,.columns.medium-centered:last-child {float:none;}.column.medium-uncentered:last-child ,.columns.medium-uncentered:last-child {float:left;}.column.medium-uncentered.opposite ,.columns.medium-uncentered.opposite {float:right;}.row.medium-collapse>.column ,.row.medium-collapse>.columns {padding-left:0;padding-right:0;}.row.medium-collapse .row {margin-left:0;margin-right:0;}.row.medium-uncollapse>.column ,.row.medium-uncollapse>.columns {padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.push-0 {position:relative;left:0%;right:auto;}.pull-0 {position:relative;right:0%;left:auto;}.push-1 {position:relative;left:8.33333%;right:auto;}.pull-1 {position:relative;right:8.33333%;left:auto;}.push-2 {position:relative;left:16.66667%;right:auto;}.pull-2 {position:relative;right:16.66667%;left:auto;}.push-3 {position:relative;left:25%;right:auto;}.pull-3 {position:relative;right:25%;left:auto;}.push-4 {position:relative;left:33.33333%;right:auto;}.pull-4 {position:relative;right:33.33333%;left:auto;}.push-5 {position:relative;left:41.66667%;right:auto;}.pull-5 {position:relative;right:41.66667%;left:auto;}.push-6 {position:relative;left:50%;right:auto;}.pull-6 {position:relative;right:50%;left:auto;}.push-7 {position:relative;left:58.33333%;right:auto;}.pull-7 {position:relative;right:58.33333%;left:auto;}.push-8 {position:relative;left:66.66667%;right:auto;}.pull-8 {position:relative;right:66.66667%;left:auto;}.push-9 {position:relative;left:75%;right:auto;}.pull-9 {position:relative;right:75%;left:auto;}.push-10 {position:relative;left:83.33333%;right:auto;}.pull-10 {position:relative;right:83.33333%;left:auto;}.push-11 {position:relative;left:91.66667%;right:auto;}.pull-11 {position:relative;right:91.66667%;left:auto;}}@media only screen and (min-width:64.063em){.large-push-0 {position:relative;left:0%;right:auto;}.large-pull-0 {position:relative;right:0%;left:auto;}.large-push-1 {position:relative;left:8.33333%;right:auto;}.large-pull-1 {position:relative;right:8.33333%;left:auto;}.large-push-2 {position:relative;left:16.66667%;right:auto;}.large-pull-2 {position:relative;right:16.66667%;left:auto;}.large-push-3 {position:relative;left:25%;right:auto;}.large-pull-3 {position:relative;right:25%;left:auto;}.large-push-4 {position:relative;left:33.33333%;right:auto;}.large-pull-4 {position:relative;right:33.33333%;left:auto;}.large-push-5 {position:relative;left:41.66667%;right:auto;}.large-pull-5 {position:relative;right:41.66667%;left:auto;}.large-push-6 {position:relative;left:50%;right:auto;}.large-pull-6 {position:relative;right:50%;left:auto;}.large-push-7 {position:relative;left:58.33333%;right:auto;}.large-pull-7 {position:relative;right:58.33333%;left:auto;}.large-push-8 {position:relative;left:66.66667%;right:auto;}.large-pull-8 {position:relative;right:66.66667%;left:auto;}.large-push-9 {position:relative;left:75%;right:auto;}.large-pull-9 {position:relative;right:75%;left:auto;}.large-push-10 {position:relative;left:83.33333%;right:auto;}.large-pull-10 {position:relative;right:83.33333%;left:auto;}.large-push-11 {position:relative;left:91.66667%;right:auto;}.large-pull-11 {position:relative;right:91.66667%;left:auto;}.column ,.columns {position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.large-1 {width:8.33333%;}.large-2 {width:16.66667%;}.large-3 {width:25%;}.large-4 {width:33.33333%;}.large-5 {width:41.66667%;}.large-6 {width:50%;}.large-7 {width:58.33333%;}.large-8 {width:66.66667%;}.large-9 {width:75%;}.large-10 {width:83.33333%;}.large-11 {width:91.66667%;}.large-12 {width:100%;}.large-offset-0 {margin-left:0% !important;}.large-offset-1 {margin-left:8.33333% !important;}.large-offset-2 {margin-left:16.66667% !important;}.large-offset-3 {margin-left:25% !important;}.large-offset-4 {margin-left:33.33333% !important;}.large-offset-5 {margin-left:41.66667% !important;}.large-offset-6 {margin-left:50% !important;}.large-offset-7 {margin-left:58.33333% !important;}.large-offset-8 {margin-left:66.66667% !important;}.large-offset-9 {margin-left:75% !important;}.large-offset-10 {margin-left:83.33333% !important;}.large-offset-11 {margin-left:91.66667% !important;}.large-reset-order {margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.large-centered ,.columns.large-centered {margin-left:auto;margin-right:auto;float:none;}.column.large-uncentered ,.columns.large-uncentered {margin-left:0;margin-right:0;float:left;}.column.large-centered:last-child ,.columns.large-centered:last-child {float:none;}.column.large-uncentered:last-child ,.columns.large-uncentered:last-child {float:left;}.column.large-uncentered.opposite ,.columns.large-uncentered.opposite {float:right;}.row.large-collapse>.column ,.row.large-collapse>.columns {padding-left:0;padding-right:0;}.row.large-collapse .row {margin-left:0;margin-right:0;}.row.large-uncollapse>.column ,.row.large-uncollapse>.columns {padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.push-0 {position:relative;left:0%;right:auto;}.pull-0 {position:relative;right:0%;left:auto;}.push-1 {position:relative;left:8.33333%;right:auto;}.pull-1 {position:relative;right:8.33333%;left:auto;}.push-2 {position:relative;left:16.66667%;right:auto;}.pull-2 {position:relative;right:16.66667%;left:auto;}.push-3 {position:relative;left:25%;right:auto;}.pull-3 {position:relative;right:25%;left:auto;}.push-4 {position:relative;left:33.33333%;right:auto;}.pull-4 {position:relative;right:33.33333%;left:auto;}.push-5 {position:relative;left:41.66667%;right:auto;}.pull-5 {position:relative;right:41.66667%;left:auto;}.push-6 {position:relative;left:50%;right:auto;}.pull-6 {position:relative;right:50%;left:auto;}.push-7 {position:relative;left:58.33333%;right:auto;}.pull-7 {position:relative;right:58.33333%;left:auto;}.push-8 {position:relative;left:66.66667%;right:auto;}.pull-8 {position:relative;right:66.66667%;left:auto;}.push-9 {position:relative;left:75%;right:auto;}.pull-9 {position:relative;right:75%;left:auto;}.push-10 {position:relative;left:83.33333%;right:auto;}.pull-10 {position:relative;right:83.33333%;left:auto;}.push-11 {position:relative;left:91.66667%;right:auto;}.pull-11 {position:relative;right:91.66667%;left:auto;}}.accordion {margin-bottom:0;}.accordion:before ,.accordion:after {content:" ";display:table;}.accordion:after {clear:both;}.accordion .accordion-navigation ,.accordion dd {display:block;margin-bottom:0 !important;}.accordion .accordion-navigation.active>a ,.accordion dd.active>a {background:#f0f0f0;}.accordion .accordion-navigation>a ,.accordion dd>a {background:#f7f7f7;color:#333333;padding:1rem;display:block;font-family:"Open Sans",sans-serif;font-size:1rem;}.accordion .accordion-navigation > a:hover ,.accordion dd > a:hover {background:#ebebeb;}.accordion .accordion-navigation>.content ,.accordion dd>.content {display:none;padding:0px 10px;}.accordion .accordion-navigation > .content.active ,.accordion dd > .content.active {display:block;background:#ffffff;}.alert-box {border-style:solid;border-width:1px;display:block;font-weight:normal;margin-bottom:1.25rem;position:relative;padding:0.875rem 1.5rem 0.875rem 0.875rem;font-size:0.8125rem;transition:opacity 300ms ease-out;background-color:#0098c3;border-color:#0083a8;color:#ffffff;}.alert-box .close {font-size:1.375rem;padding:0 6px 4px;line-height:0.9;position:absolute;top:50%;margin-top:-0.6875rem;right:0.25rem;color:#333333;opacity:0.3;background:inherit;}.alert-box .close:hover ,.alert-box .close:focus {opacity:0.5;}.alert-box.radius {border-radius:3px;}.alert-box.round {border-radius:1000px;}.alert-box.success {background-color:#43ac6a;border-color:#3a945b;color:#ffffff;}.alert-box.alert {background-color:#f04124;border-color:#de2b0f;color:#ffffff;}.alert-box.secondary {background-color:#f7f7f7;border-color:#d4d4d4;color:#545454;}.alert-box.warning {background-color:#f08a24;border-color:#de770f;color:#ffffff;}.alert-box.info {background-color:#a0d3e8;border-color:#74bfdd;color:#545454;}.alert-box.alert-close {opacity:0;}[class*="block-grid-"] {display:block;padding:0;margin:0 -0.625rem;}[class*="block-grid-"]:before ,[class*="block-grid-"]:after {content:" ";display:table;}[class*="block-grid-"]:after {clear:both;}[class*="block-grid-"]>li {display:block;height:auto;float:left;padding:0 0.625rem 1.25rem;}@media only screen{.small-block-grid-1>li {width:100%;list-style:none;}.small-block-grid-1 > li:nth-of-type(1n) {clear:none;}.small-block-grid-1 > li:nth-of-type(1n+1) {clear:both;}.small-block-grid-2>li {width:50%;list-style:none;}.small-block-grid-2 > li:nth-of-type(1n) {clear:none;}.small-block-grid-2 > li:nth-of-type(2n+1) {clear:both;}.small-block-grid-3>li {width:33.33333%;list-style:none;}.small-block-grid-3 > li:nth-of-type(1n) {clear:none;}.small-block-grid-3 > li:nth-of-type(3n+1) {clear:both;}.small-block-grid-4>li {width:25%;list-style:none;}.small-block-grid-4 > li:nth-of-type(1n) {clear:none;}.small-block-grid-4 > li:nth-of-type(4n+1) {clear:both;}.small-block-grid-5>li {width:20%;list-style:none;}.small-block-grid-5 > li:nth-of-type(1n) {clear:none;}.small-block-grid-5 > li:nth-of-type(5n+1) {clear:both;}.small-block-grid-6>li {width:16.66667%;list-style:none;}.small-block-grid-6 > li:nth-of-type(1n) {clear:none;}.small-block-grid-6 > li:nth-of-type(6n+1) {clear:both;}.small-block-grid-7>li {width:14.28571%;list-style:none;}.small-block-grid-7 > li:nth-of-type(1n) {clear:none;}.small-block-grid-7 > li:nth-of-type(7n+1) {clear:both;}.small-block-grid-8>li {width:12.5%;list-style:none;}.small-block-grid-8 > li:nth-of-type(1n) {clear:none;}.small-block-grid-8 > li:nth-of-type(8n+1) {clear:both;}.small-block-grid-9>li {width:11.11111%;list-style:none;}.small-block-grid-9 > li:nth-of-type(1n) {clear:none;}.small-block-grid-9 > li:nth-of-type(9n+1) {clear:both;}.small-block-grid-10>li {width:10%;list-style:none;}.small-block-grid-10 > li:nth-of-type(1n) {clear:none;}.small-block-grid-10 > li:nth-of-type(10n+1) {clear:both;}.small-block-grid-11>li {width:9.09091%;list-style:none;}.small-block-grid-11 > li:nth-of-type(1n) {clear:none;}.small-block-grid-11 > li:nth-of-type(11n+1) {clear:both;}.small-block-grid-12>li {width:8.33333%;list-style:none;}.small-block-grid-12 > li:nth-of-type(1n) {clear:none;}.small-block-grid-12 > li:nth-of-type(12n+1) {clear:both;}}@media only screen and (min-width:40.063em){.medium-block-grid-1>li {width:100%;list-style:none;}.medium-block-grid-1 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-1 > li:nth-of-type(1n+1) {clear:both;}.medium-block-grid-2>li {width:50%;list-style:none;}.medium-block-grid-2 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-2 > li:nth-of-type(2n+1) {clear:both;}.medium-block-grid-3>li {width:33.33333%;list-style:none;}.medium-block-grid-3 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-3 > li:nth-of-type(3n+1) {clear:both;}.medium-block-grid-4>li {width:25%;list-style:none;}.medium-block-grid-4 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-4 > li:nth-of-type(4n+1) {clear:both;}.medium-block-grid-5>li {width:20%;list-style:none;}.medium-block-grid-5 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-5 > li:nth-of-type(5n+1) {clear:both;}.medium-block-grid-6>li {width:16.66667%;list-style:none;}.medium-block-grid-6 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-6 > li:nth-of-type(6n+1) {clear:both;}.medium-block-grid-7>li {width:14.28571%;list-style:none;}.medium-block-grid-7 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-7 > li:nth-of-type(7n+1) {clear:both;}.medium-block-grid-8>li {width:12.5%;list-style:none;}.medium-block-grid-8 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-8 > li:nth-of-type(8n+1) {clear:both;}.medium-block-grid-9>li {width:11.11111%;list-style:none;}.medium-block-grid-9 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-9 > li:nth-of-type(9n+1) {clear:both;}.medium-block-grid-10>li {width:10%;list-style:none;}.medium-block-grid-10 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-10 > li:nth-of-type(10n+1) {clear:both;}.medium-block-grid-11>li {width:9.09091%;list-style:none;}.medium-block-grid-11 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-11 > li:nth-of-type(11n+1) {clear:both;}.medium-block-grid-12>li {width:8.33333%;list-style:none;}.medium-block-grid-12 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-12 > li:nth-of-type(12n+1) {clear:both;}}@media only screen and (min-width:64.063em){.large-block-grid-1>li {width:100%;list-style:none;}.large-block-grid-1 > li:nth-of-type(1n) {clear:none;}.large-block-grid-1 > li:nth-of-type(1n+1) {clear:both;}.large-block-grid-2>li {width:50%;list-style:none;}.large-block-grid-2 > li:nth-of-type(1n) {clear:none;}.large-block-grid-2 > li:nth-of-type(2n+1) {clear:both;}.large-block-grid-3>li {width:33.33333%;list-style:none;}.large-block-grid-3 > li:nth-of-type(1n) {clear:none;}.large-block-grid-3 > li:nth-of-type(3n+1) {clear:both;}.large-block-grid-4>li {width:25%;list-style:none;}.large-block-grid-4 > li:nth-of-type(1n) {clear:none;}.large-block-grid-4 > li:nth-of-type(4n+1) {clear:both;}.large-block-grid-5>li {width:20%;list-style:none;}.large-block-grid-5 > li:nth-of-type(1n) {clear:none;}.large-block-grid-5 > li:nth-of-type(5n+1) {clear:both;}.large-block-grid-6>li {width:16.66667%;list-style:none;}.large-block-grid-6 > li:nth-of-type(1n) {clear:none;}.large-block-grid-6 > li:nth-of-type(6n+1) {clear:both;}.large-block-grid-7>li {width:14.28571%;list-style:none;}.large-block-grid-7 > li:nth-of-type(1n) {clear:none;}.large-block-grid-7 > li:nth-of-type(7n+1) {clear:both;}.large-block-grid-8>li {width:12.5%;list-style:none;}.large-block-grid-8 > li:nth-of-type(1n) {clear:none;}.large-block-grid-8 > li:nth-of-type(8n+1) {clear:both;}.large-block-grid-9>li {width:11.11111%;list-style:none;}.large-block-grid-9 > li:nth-of-type(1n) {clear:none;}.large-block-grid-9 > li:nth-of-type(9n+1) {clear:both;}.large-block-grid-10>li {width:10%;list-style:none;}.large-block-grid-10 > li:nth-of-type(1n) {clear:none;}.large-block-grid-10 > li:nth-of-type(10n+1) {clear:both;}.large-block-grid-11>li {width:9.09091%;list-style:none;}.large-block-grid-11 > li:nth-of-type(1n) {clear:none;}.large-block-grid-11 > li:nth-of-type(11n+1) {clear:both;}.large-block-grid-12>li {width:8.33333%;list-style:none;}.large-block-grid-12 > li:nth-of-type(1n) {clear:none;}.large-block-grid-12 > li:nth-of-type(12n+1) {clear:both;}}.breadcrumbs {display:block;padding:0.5625rem 0.875rem 0.5625rem;overflow:hidden;margin-left:0;list-style:none;border-style:solid;border-width:1px;background-color:#fbfbfb;border-color:#e2e2e2;border-radius:3px;}.breadcrumbs>* {margin:0;float:left;font-size:0.6875rem;line-height:0.6875rem;text-transform:uppercase;color:#0098c3;}.breadcrumbs > *:hover a ,.breadcrumbs > *:focus a {text-decoration:underline;}.breadcrumbs > * a {color:#0098c3;}.breadcrumbs > *.current {cursor:default;color:#333333;}.breadcrumbs > *.current a {cursor:default;color:#333333;}.breadcrumbs > *.current:hover ,.breadcrumbs > *.current:hover a ,.breadcrumbs > *.current:focus ,.breadcrumbs > *.current:focus a {text-decoration:none;}.breadcrumbs > *.unavailable {color:#999999;}.breadcrumbs > *.unavailable a {color:#999999;}.breadcrumbs > *.unavailable:hover ,.breadcrumbs > *.unavailable:hover a ,.breadcrumbs > *.unavailable:focus ,.breadcrumbs > *.unavailable a:focus {text-decoration:none;color:#999999;cursor:not-allowed;}.breadcrumbs > *:before {content:"/";color:#aaaaaa;margin:0 0.75rem;position:relative;top:1px;}.breadcrumbs > *:first-child:before {content:" ";margin:0;}[aria-label="breadcrumbs"] [aria-hidden="true"]:after {content:"/";}button ,.button {border-style:solid;border-width:0px;cursor:pointer;font-family:"Open Sans",sans-serif;font-weight:normal;line-height:normal;margin:0 0 0.3125rem;position:relative;text-decoration:none;text-align:center;-webkit-appearance:none;-moz-appearance:none;border-radius:0;display:inline-block;padding-top:0.5rem;padding-right:1rem;padding-bottom:0.5625rem;padding-left:1rem;font-size:1rem;background-color:#0098c3;border-color:#007a9c;color:#ffffff;transition:background-color 300ms ease-out;}button:hover ,button:focus ,.button:hover ,.button:focus {background-color:#007a9c;}button:hover ,button:focus ,.button:hover ,.button:focus {color:#ffffff;}button.secondary ,.button.secondary {background-color:#f7f7f7;border-color:#efefef;color:#333333;}button.secondary:hover ,button.secondary:focus ,.button.secondary:hover ,.button.secondary:focus {background-color:#c6c6c6;}button.secondary:hover ,button.secondary:focus ,.button.secondary:hover ,.button.secondary:focus {color:#333333;}button.success ,.button.success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;}button.success:hover ,button.success:focus ,.button.success:hover ,.button.success:focus {background-color:#368a54;}button.success:hover ,button.success:focus ,.button.success:hover ,.button.success:focus {color:#ffffff;}button.alert ,.button.alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;}button.alert:hover ,button.alert:focus ,.button.alert:hover ,.button.alert:focus {background-color:#cf280e;}button.alert:hover ,button.alert:focus ,.button.alert:hover ,.button.alert:focus {color:#ffffff;}button.warning ,.button.warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}button.warning:hover ,button.warning:focus ,.button.warning:hover ,.button.warning:focus {background-color:#cf6e0e;}button.warning:hover ,button.warning:focus ,.button.warning:hover ,.button.warning:focus {color:#ffffff;}button.info ,.button.info {background-color:#a0d3e8;border-color:#61b7d9;color:#333333;}button.info:hover ,button.info:focus ,.button.info:hover ,.button.info:focus {background-color:#61b7d9;}button.info:hover ,button.info:focus ,.button.info:hover ,.button.info:focus {color:#ffffff;}button.large ,.button.large {padding-top:0.5625rem;padding-right:1.125rem;padding-bottom:0.625rem;padding-left:1.125rem;font-size:1.25rem;}button.small ,.button.small {padding-top:0.4375rem;padding-right:0.875rem;padding-bottom:0.5rem;padding-left:0.875rem;font-size:0.8125rem;}button.tiny ,.button.tiny {padding-top:0.3125rem;padding-right:0.625rem;padding-bottom:0.375rem;padding-left:0.625rem;font-size:0.6875rem;}button.expand ,.button.expand {padding-right:0;padding-left:0;width:100%;}button.left-align ,.button.left-align {text-align:left;text-indent:0.75rem;}button.right-align ,.button.right-align {text-align:right;padding-right:0.75rem;}button.radius ,.button.radius {border-radius:3px;}button.round ,.button.round {border-radius:1000px;}button.disabled ,button[disabled] ,.button.disabled ,.button[disabled] {background-color:#0098c3;border-color:#007a9c;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus {background-color:#007a9c;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus {color:#ffffff;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus {background-color:#0098c3;}button.disabled.secondary ,button[disabled].secondary ,.button.disabled.secondary ,.button[disabled].secondary {background-color:#f7f7f7;border-color:#efefef;color:#333333;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus {background-color:#c6c6c6;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus {color:#333333;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus {background-color:#f7f7f7;}button.disabled.success ,button[disabled].success ,.button.disabled.success ,.button[disabled].success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus {background-color:#368a54;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus {color:#ffffff;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus {background-color:#43ac6a;}button.disabled.alert ,button[disabled].alert ,.button.disabled.alert ,.button[disabled].alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus {background-color:#cf280e;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus {color:#ffffff;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus {background-color:#f04124;}button.disabled.warning ,button[disabled].warning ,.button.disabled.warning ,.button[disabled].warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus {background-color:#cf6e0e;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus {color:#ffffff;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus {background-color:#f08a24;}button.disabled.info ,button[disabled].info ,.button.disabled.info ,.button[disabled].info {background-color:#a0d3e8;border-color:#61b7d9;color:#333333;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus {background-color:#61b7d9;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus {color:#ffffff;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus {background-color:#a0d3e8;}button::-moz-focus-inner {border:0;padding:0;}@media only screen and (min-width:40.063em){button ,.button {display:inline-block;}}.button-group {list-style:none;margin:0;left:0;}.button-group:before ,.button-group:after {content:" ";display:table;}.button-group:after {clear:both;}.button-group.even-2 li {margin:0 -2px;display:inline-block;width:50%;}.button-group.even-2 li>button ,.button-group.even-2 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-2 li:first-child button ,.button-group.even-2 li:first-child .button {border-left:0;}.button-group.even-2 li button ,.button-group.even-2 li .button {width:100%;}.button-group.even-3 li {margin:0 -2px;display:inline-block;width:33.33333%;}.button-group.even-3 li>button ,.button-group.even-3 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-3 li:first-child button ,.button-group.even-3 li:first-child .button {border-left:0;}.button-group.even-3 li button ,.button-group.even-3 li .button {width:100%;}.button-group.even-4 li {margin:0 -2px;display:inline-block;width:25%;}.button-group.even-4 li>button ,.button-group.even-4 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-4 li:first-child button ,.button-group.even-4 li:first-child .button {border-left:0;}.button-group.even-4 li button ,.button-group.even-4 li .button {width:100%;}.button-group.even-5 li {margin:0 -2px;display:inline-block;width:20%;}.button-group.even-5 li>button ,.button-group.even-5 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-5 li:first-child button ,.button-group.even-5 li:first-child .button {border-left:0;}.button-group.even-5 li button ,.button-group.even-5 li .button {width:100%;}.button-group.even-6 li {margin:0 -2px;display:inline-block;width:16.66667%;}.button-group.even-6 li>button ,.button-group.even-6 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-6 li:first-child button ,.button-group.even-6 li:first-child .button {border-left:0;}.button-group.even-6 li button ,.button-group.even-6 li .button {width:100%;}.button-group.even-7 li {margin:0 -2px;display:inline-block;width:14.28571%;}.button-group.even-7 li>button ,.button-group.even-7 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-7 li:first-child button ,.button-group.even-7 li:first-child .button {border-left:0;}.button-group.even-7 li button ,.button-group.even-7 li .button {width:100%;}.button-group.even-8 li {margin:0 -2px;display:inline-block;width:12.5%;}.button-group.even-8 li>button ,.button-group.even-8 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-8 li:first-child button ,.button-group.even-8 li:first-child .button {border-left:0;}.button-group.even-8 li button ,.button-group.even-8 li .button {width:100%;}.button-group>li {margin:0 -2px;display:inline-block;}.button-group > li>button ,.button-group > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group > li:first-child button ,.button-group > li:first-child .button {border-left:0;}.button-group.stack>li {margin:0 -2px;display:inline-block;display:block;margin:0;float:none;}.button-group.stack > li>button ,.button-group.stack > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.stack > li:first-child button ,.button-group.stack > li:first-child .button {border-left:0;}.button-group.stack > li>button ,.button-group.stack > li .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0;margin:0;display:block;}.button-group.stack > li>button {width:100%;}.button-group.stack > li:first-child button ,.button-group.stack > li:first-child .button {border-top:0;}.button-group.stack-for-small>li {margin:0 -2px;display:inline-block;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button {border-left:0;}@media only screen and (max-width: 40em){.button-group.stack-for-small>li {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button {border-left:0;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0;margin:0;display:block;}.button-group.stack-for-small > li>button {width:100%;}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button {border-top:0;}}.button-group.radius>* {margin:0 -2px;display:inline-block;}.button-group.radius > *>button ,.button-group.radius > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius > *:first-child button ,.button-group.radius > *:first-child .button {border-left:0;}.button-group.radius > * ,.button-group.radius > *>a ,.button-group.radius > *>button ,.button-group.radius > *>.button {border-radius:0;}.button-group.radius > *:first-child ,.button-group.radius > *:first-child>a ,.button-group.radius > *:first-child>button ,.button-group.radius > *:first-child>.button {-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.button-group.radius > *:last-child ,.button-group.radius > *:last-child>a ,.button-group.radius > *:last-child>button ,.button-group.radius > *:last-child>.button {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.radius.stack > *>button ,.button-group.radius.stack > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius.stack > *:first-child button ,.button-group.radius.stack > *:first-child .button {border-left:0;}.button-group.radius.stack > *>button ,.button-group.radius.stack > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0;margin:0;display:block;}.button-group.radius.stack > *>button {width:100%;}.button-group.radius.stack > *:first-child button ,.button-group.radius.stack > *:first-child .button {border-top:0;}.button-group.radius.stack > * ,.button-group.radius.stack > *>a ,.button-group.radius.stack > *>button ,.button-group.radius.stack > *>.button {border-radius:0;}.button-group.radius.stack > *:first-child ,.button-group.radius.stack > *:first-child>a ,.button-group.radius.stack > *:first-child>button ,.button-group.radius.stack > *:first-child>.button {-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack > *:last-child ,.button-group.radius.stack > *:last-child>a ,.button-group.radius.stack > *:last-child>button ,.button-group.radius.stack > *:last-child>.button {-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}@media only screen and (min-width:40.063em){.button-group.radius.stack-for-small>* {margin:0 -2px;display:inline-block;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button {border-left:0;}.button-group.radius.stack-for-small > * ,.button-group.radius.stack-for-small > *>a ,.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > *>.button {border-radius:0;}.button-group.radius.stack-for-small > *:first-child ,.button-group.radius.stack-for-small > *:first-child>a ,.button-group.radius.stack-for-small > *:first-child>button ,.button-group.radius.stack-for-small > *:first-child>.button {-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.button-group.radius.stack-for-small > *:last-child ,.button-group.radius.stack-for-small > *:last-child>a ,.button-group.radius.stack-for-small > *:last-child>button ,.button-group.radius.stack-for-small > *:last-child>.button {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}}@media only screen and (max-width: 40em){.button-group.radius.stack-for-small>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button {border-left:0;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0;margin:0;display:block;}.button-group.radius.stack-for-small > *>button {width:100%;}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button {border-top:0;}.button-group.radius.stack-for-small > * ,.button-group.radius.stack-for-small > *>a ,.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > *>.button {border-radius:0;}.button-group.radius.stack-for-small > *:first-child ,.button-group.radius.stack-for-small > *:first-child>a ,.button-group.radius.stack-for-small > *:first-child>button ,.button-group.radius.stack-for-small > *:first-child>.button {-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack-for-small > *:last-child ,.button-group.radius.stack-for-small > *:last-child>a ,.button-group.radius.stack-for-small > *:last-child>button ,.button-group.radius.stack-for-small > *:last-child>.button {-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}}.button-group.round>* {margin:0 -2px;display:inline-block;}.button-group.round > *>button ,.button-group.round > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round > *:first-child button ,.button-group.round > *:first-child .button {border-left:0;}.button-group.round > * ,.button-group.round > *>a ,.button-group.round > *>button ,.button-group.round > *>.button {border-radius:0;}.button-group.round > *:first-child ,.button-group.round > *:first-child>a ,.button-group.round > *:first-child>button ,.button-group.round > *:first-child>.button {-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.button-group.round > *:last-child ,.button-group.round > *:last-child>a ,.button-group.round > *:last-child>button ,.button-group.round > *:last-child>.button {-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}.button-group.round.stack>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.round.stack > *>button ,.button-group.round.stack > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round.stack > *:first-child button ,.button-group.round.stack > *:first-child .button {border-left:0;}.button-group.round.stack > *>button ,.button-group.round.stack > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0;margin:0;display:block;}.button-group.round.stack > *>button {width:100%;}.button-group.round.stack > *:first-child button ,.button-group.round.stack > *:first-child .button {border-top:0;}.button-group.round.stack > * ,.button-group.round.stack > *>a ,.button-group.round.stack > *>button ,.button-group.round.stack > *>.button {border-radius:0;}.button-group.round.stack > *:first-child ,.button-group.round.stack > *:first-child>a ,.button-group.round.stack > *:first-child>button ,.button-group.round.stack > *:first-child>.button {-webkit-top-left-radius:0.5rem;-webkit-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;}.button-group.round.stack > *:last-child ,.button-group.round.stack > *:last-child>a ,.button-group.round.stack > *:last-child>button ,.button-group.round.stack > *:last-child>.button {-webkit-bottom-left-radius:0.5rem;-webkit-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;}@media only screen and (min-width:40.063em){.button-group.round.stack-for-small>* {margin:0 -2px;display:inline-block;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button {border-left:0;}.button-group.round.stack-for-small > * ,.button-group.round.stack-for-small > *>a ,.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > *>.button {border-radius:0;}.button-group.round.stack-for-small > *:first-child ,.button-group.round.stack-for-small > *:first-child>a ,.button-group.round.stack-for-small > *:first-child>button ,.button-group.round.stack-for-small > *:first-child>.button {-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.button-group.round.stack-for-small > *:last-child ,.button-group.round.stack-for-small > *:last-child>a ,.button-group.round.stack-for-small > *:last-child>button ,.button-group.round.stack-for-small > *:last-child>.button {-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}}@media only screen and (max-width: 40em){.button-group.round.stack-for-small>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button {border-left:0;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0;margin:0;display:block;}.button-group.round.stack-for-small > *>button {width:100%;}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button {border-top:0;}.button-group.round.stack-for-small > * ,.button-group.round.stack-for-small > *>a ,.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > *>.button {border-radius:0;}.button-group.round.stack-for-small > *:first-child ,.button-group.round.stack-for-small > *:first-child>a ,.button-group.round.stack-for-small > *:first-child>button ,.button-group.round.stack-for-small > *:first-child>.button {-webkit-top-left-radius:0.5rem;-webkit-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;}.button-group.round.stack-for-small > *:last-child ,.button-group.round.stack-for-small > *:last-child>a ,.button-group.round.stack-for-small > *:last-child>button ,.button-group.round.stack-for-small > *:last-child>.button {-webkit-bottom-left-radius:0.5rem;-webkit-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;}}.button-bar:before ,.button-bar:after {content:" ";display:table;}.button-bar:after {clear:both;}.button-bar .button-group {float:left;margin-right:0.625rem;}.button-bar .button-group div {overflow:hidden;}.clearing-thumbs ,[data-clearing] {margin-bottom:0;margin-left:0;list-style:none;}.clearing-thumbs:before ,.clearing-thumbs:after ,[data-clearing]:before ,[data-clearing]:after {content:" ";display:table;}.clearing-thumbs:after ,[data-clearing]:after {clear:both;}.clearing-thumbs li ,[data-clearing] li {float:left;margin-right:10px;}.clearing-thumbs[class*="block-grid-"] li ,[data-clearing][class*="block-grid-"] li {margin-right:0;}.clearing-blackout {background:#333333;position:fixed;width:100%;height:100%;top:0;left:0;z-index:998;}.clearing-blackout .clearing-close {display:block;}.clearing-container {position:relative;z-index:998;height:100%;overflow:hidden;margin:0;}.clearing-touch-label {position:absolute;top:50%;left:50%;color:#aaaaaa;font-size:0.6em;}.visible-img {height:95%;position:relative;}.visible-img img {position:absolute;left:50%;top:50%;transform:translateY(-50%) translateX(-50%);-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);max-height:100%;max-width:100%;}.clearing-caption {color:#cccccc;font-size:0.875em;line-height:1.3;margin-bottom:0;text-align:center;bottom:0;background:#333333;width:100%;padding:10px 30px 20px;position:absolute;left:0;}.clearing-close {z-index:999;padding-left:20px;padding-top:10px;font-size:30px;line-height:1;color:#cccccc;display:none;}.clearing-close:hover ,.clearing-close:focus {color:#cccccc;}.clearing-assembled .clearing-container {height:100%;}.clearing-assembled .clearing-container .carousel>ul {display:none;}.clearing-feature li {display:none;}.clearing-feature li.clearing-featured-img {display:block;}@media only screen and (min-width:40.063em){.clearing-main-prev ,.clearing-main-next {position:absolute;height:100%;width:40px;top:0;}.clearing-main-prev>span ,.clearing-main-next>span {position:absolute;top:50%;display:block;width:0;height:0;border:solid 12px;}.clearing-main-prev > span:hover ,.clearing-main-next > span:hover {opacity:0.8;}.clearing-main-prev {left:0;}.clearing-main-prev>span {left:5px;border-color:transparent;border-right-color:#cccccc;}.clearing-main-next {right:0;}.clearing-main-next>span {border-color:transparent;border-left-color:#cccccc;}.clearing-main-prev.disabled ,.clearing-main-next.disabled {opacity:0.3;}.clearing-assembled .clearing-container .carousel {background:rgba(51, 51, 51, 0.8);height:120px;margin-top:10px;text-align:center;}.clearing-assembled .clearing-container .carousel>ul {display:inline-block;z-index:999;height:100%;position:relative;float:none;}.clearing-assembled .clearing-container .carousel > ul li {display:block;width:120px;min-height:inherit;float:left;overflow:hidden;margin-right:0;padding:0;position:relative;cursor:pointer;opacity:0.4;clear:none;}.clearing-assembled .clearing-container .carousel > ul li.fix-height img {height:100%;max-width:none;}.clearing-assembled .clearing-container .carousel > ul li a.th {border:none;box-shadow:none;display:block;}.clearing-assembled .clearing-container .carousel > ul li img {cursor:pointer !important;width:100% !important;}.clearing-assembled .clearing-container .carousel > ul li.visible {opacity:1;}.clearing-assembled .clearing-container .carousel > ul li:hover {opacity:0.8;}.clearing-assembled .clearing-container .visible-img {background:#333333;overflow:hidden;height:85%;}.clearing-close {position:absolute;top:10px;right:20px;padding-left:0;padding-top:0;}}.f-dropdown {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:2px;max-width:200px;}.f-dropdown>*:first-child {margin-top:0;}.f-dropdown>*:last-child {margin-bottom:0;}.f-dropdown:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent #ffffff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89;}.f-dropdown:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent #cccccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88;}.f-dropdown.right:before {left:auto;right:10px;}.f-dropdown.right:after {left:auto;right:9px;}.f-dropdown.drop-right {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:2px;max-width:200px;}.f-dropdown.drop-right>*:first-child {margin-top:0;}.f-dropdown.drop-right>*:last-child {margin-bottom:0;}.f-dropdown.drop-right:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent #ffffff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89;}.f-dropdown.drop-right:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent #cccccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88;}.f-dropdown.drop-left {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:-2px;max-width:200px;}.f-dropdown.drop-left>*:first-child {margin-top:0;}.f-dropdown.drop-left>*:last-child {margin-bottom:0;}.f-dropdown.drop-left:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent transparent #ffffff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89;}.f-dropdown.drop-left:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent transparent #cccccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88;}.f-dropdown.drop-top {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:-2px;margin-left:0;max-width:200px;}.f-dropdown.drop-top>*:first-child {margin-top:0;}.f-dropdown.drop-top>*:last-child {margin-bottom:0;}.f-dropdown.drop-top:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:#ffffff transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-12px;left:10px;right:auto;z-index:89;}.f-dropdown.drop-top:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:#cccccc transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-14px;left:9px;right:auto;z-index:88;}.f-dropdown li {font-size:0.875rem;cursor:pointer;line-height:1.125rem;margin:0;}.f-dropdown li:hover ,.f-dropdown li:focus {background:#eeeeee;}.f-dropdown li.radius {border-radius:3px;}.f-dropdown li a {display:block;padding:0.5rem;color:#555555;}.f-dropdown.content {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;padding:0.3125rem;width:100%;height:auto;max-height:none;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;max-width:200px;}.f-dropdown.content>*:first-child {margin-top:0;}.f-dropdown.content>*:last-child {margin-bottom:0;}.f-dropdown.tiny {max-width:200px;}.f-dropdown.small {max-width:300px;}.f-dropdown.medium {max-width:500px;}.f-dropdown.large {max-width:800px;}.f-dropdown.mega {width:100% !important;max-width:100% !important;}.f-dropdown.mega.open {left:0 !important;}.dropdown.button ,button.dropdown {position:relative;outline:none;padding-right:3.5625rem;}.dropdown.button::after ,button.dropdown::after {position:absolute;content:"";width:0;height:0;display:block;border-style:solid;border-color:#cfcfcf transparent transparent transparent;top:50%;}.dropdown.button::after ,button.dropdown::after {border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem;}.dropdown.button::after ,button.dropdown::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.tiny ,button.dropdown.tiny {padding-right:2.625rem;}.dropdown.button.tiny:after ,button.dropdown.tiny:after {border-width:0.375rem;right:1.125rem;margin-top:-0.125rem;}.dropdown.button.tiny::after ,button.dropdown.tiny::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.small ,button.dropdown.small {padding-right:2.1875rem;}.dropdown.button.small::after ,button.dropdown.small::after {border-width:0.3125rem;right:0.9375rem;margin-top:-0.09375rem;}.dropdown.button.small::after ,button.dropdown.small::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.large ,button.dropdown.large {padding-right:3.625rem;}.dropdown.button.large::after ,button.dropdown.large::after {border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem;}.dropdown.button.large::after ,button.dropdown.large::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.secondary:after ,button.dropdown.secondary:after {border-color:#cfcfcf transparent transparent transparent;}.flex-video {position:relative;padding-top:1.5625rem;padding-bottom:67.5%;height:0;margin-bottom:1rem;overflow:hidden;}.flex-video.widescreen {padding-bottom:56.34%;}.flex-video.vimeo {padding-top:0;}.flex-video iframe ,.flex-video object ,.flex-video embed ,.flex-video video {position:absolute;top:0;left:0;width:100%;height:100%;}form {margin:0 0 1rem;}form .row .row {margin:0 -0.5rem;}form .row .row .column ,form .row .row .columns {padding:0 0.5rem;}form .row .row.collapse {margin:0;}form .row .row.collapse .column ,form .row .row.collapse .columns {padding:0;}form .row .row.collapse input {-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0;}form .row input.column ,form .row input.columns ,form .row textarea.column ,form .row textarea.columns {padding-left:0.5rem;}label {font-size:0.875rem;color:#4d4d4d;cursor:pointer;display:block;font-weight:normal;line-height:1.5;margin-bottom:0;}label.right {float:none !important;text-align:right;}label.inline {margin:0 0 1rem 0;padding:0.5625rem 0;}label small {text-transform:capitalize;color:#686868;}.prefix ,.postfix {display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;border-style:solid;border-width:1px;overflow:visible;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem;}.postfix.button {padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;border:none;}.prefix.button {padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;border:none;}.prefix.button.radius {border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.postfix.button.radius {border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.prefix.button.round {border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.postfix.button.round {border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}span.prefix ,label.prefix {background:#f2f2f2;border-right:none;color:#333333;border-color:#cccccc;}span.postfix ,label.postfix {background:#f2f2f2;border-left:none;color:#333333;border-color:#cccccc;}input[type="text"] ,input[type="password"] ,input[type="date"] ,input[type="datetime"] ,input[type="datetime-local"] ,input[type="month"] ,input[type="week"] ,input[type="email"] ,input[type="number"] ,input[type="search"] ,input[type="tel"] ,input[type="time"] ,input[type="url"] ,input[type="color"] ,textarea {-webkit-appearance:none;border-radius:0;background-color:#ffffff;font-family:inherit;border-style:solid;border-width:1px;border-color:#d3d3d3;box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);color:rgba(0, 0, 0, 0.75);display:block;font-size:0.875rem;margin:0 0 1rem 0;padding:0.5rem;height:2.3125rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;transition:all 0.15s linear;}input[type="text"]:focus ,input[type="password"]:focus ,input[type="date"]:focus ,input[type="datetime"]:focus ,input[type="datetime-local"]:focus ,input[type="month"]:focus ,input[type="week"]:focus ,input[type="email"]:focus ,input[type="number"]:focus ,input[type="search"]:focus ,input[type="tel"]:focus ,input[type="time"]:focus ,input[type="url"]:focus ,input[type="color"]:focus ,textarea:focus {background:#fafafa;border-color:#999999;outline:none;}input[type="text"]:disabled ,input[type="password"]:disabled ,input[type="date"]:disabled ,input[type="datetime"]:disabled ,input[type="datetime-local"]:disabled ,input[type="month"]:disabled ,input[type="week"]:disabled ,input[type="email"]:disabled ,input[type="number"]:disabled ,input[type="search"]:disabled ,input[type="tel"]:disabled ,input[type="time"]:disabled ,input[type="url"]:disabled ,input[type="color"]:disabled ,textarea:disabled {background-color:#dddddd;cursor:default;}input[type="text"][disabled] ,input[type="text"][readonly] ,fieldset[disabled] input[type="text"] ,input[type="password"][disabled] ,input[type="password"][readonly] ,fieldset[disabled] input[type="password"] ,input[type="date"][disabled] ,input[type="date"][readonly] ,fieldset[disabled] input[type="date"] ,input[type="datetime"][disabled] ,input[type="datetime"][readonly] ,fieldset[disabled] input[type="datetime"] ,input[type="datetime-local"][disabled] ,input[type="datetime-local"][readonly] ,fieldset[disabled] input[type="datetime-local"] ,input[type="month"][disabled] ,input[type="month"][readonly] ,fieldset[disabled] input[type="month"] ,input[type="week"][disabled] ,input[type="week"][readonly] ,fieldset[disabled] input[type="week"] ,input[type="email"][disabled] ,input[type="email"][readonly] ,fieldset[disabled] input[type="email"] ,input[type="number"][disabled] ,input[type="number"][readonly] ,fieldset[disabled] input[type="number"] ,input[type="search"][disabled] ,input[type="search"][readonly] ,fieldset[disabled] input[type="search"] ,input[type="tel"][disabled] ,input[type="tel"][readonly] ,fieldset[disabled] input[type="tel"] ,input[type="time"][disabled] ,input[type="time"][readonly] ,fieldset[disabled] input[type="time"] ,input[type="url"][disabled] ,input[type="url"][readonly] ,fieldset[disabled] input[type="url"] ,input[type="color"][disabled] ,input[type="color"][readonly] ,fieldset[disabled] input[type="color"] ,textarea[disabled] ,textarea[readonly] ,fieldset[disabled] textarea {background-color:#dddddd;cursor:default;}input[type="text"].radius ,input[type="password"].radius ,input[type="date"].radius ,input[type="datetime"].radius ,input[type="datetime-local"].radius ,input[type="month"].radius ,input[type="week"].radius ,input[type="email"].radius ,input[type="number"].radius ,input[type="search"].radius ,input[type="tel"].radius ,input[type="time"].radius ,input[type="url"].radius ,input[type="color"].radius ,textarea.radius {border-radius:3px;}form .row .prefix-radius.row.collapse input ,form .row .prefix-radius.row.collapse textarea ,form .row .prefix-radius.row.collapse select ,form .row .prefix-radius.row.collapse button {border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}form .row .prefix-radius.row.collapse .prefix {border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}form .row .postfix-radius.row.collapse input ,form .row .postfix-radius.row.collapse textarea ,form .row .postfix-radius.row.collapse select ,form .row .postfix-radius.row.collapse button {border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}form .row .postfix-radius.row.collapse .postfix {border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}form .row .prefix-round.row.collapse input ,form .row .prefix-round.row.collapse textarea ,form .row .prefix-round.row.collapse select ,form .row .prefix-round.row.collapse button {border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}form .row .prefix-round.row.collapse .prefix {border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}form .row .postfix-round.row.collapse input ,form .row .postfix-round.row.collapse textarea ,form .row .postfix-round.row.collapse select ,form .row .postfix-round.row.collapse button {border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}form .row .postfix-round.row.collapse .postfix {border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}input[type="submit"] {-webkit-appearance:none;border-radius:0;}textarea[rows] {height:auto;}textarea {max-width:100%;}select {-webkit-appearance:none !important;border-radius:0;background-color:#fafafa;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#d3d3d3;padding:0.5rem;font-size:0.875rem;font-family:"Open Sans",sans-serif;color:rgba(0, 0, 0, 0.75);line-height:normal;border-radius:0;height:2.3125rem;}select::-ms-expand {display:none;}select.radius {border-radius:3px;}select:hover {background-color:#f3f3f3;border-color:#999999;}select:disabled {background-color:#dddddd;cursor:default;}select[multiple] {height:auto;}input[type="file"] ,input[type="checkbox"] ,input[type="radio"] ,select {margin:0 0 1rem 0;}input[type="checkbox"]+label ,input[type="radio"]+label {display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline;}input[type="file"] {width:100%;}fieldset {border:1px solid #efefef;padding:1.25rem;margin:1.125rem 0;}fieldset legend {font-weight:bold;background:#ffffff;padding:0 0.1875rem;margin:0;margin-left:-0.1875rem;}[data-abide] .error small.error ,[data-abide] .error span.error ,[data-abide] span.error ,[data-abide] small.error {display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}[data-abide] span.error ,[data-abide] small.error {display:none;}span.error ,small.error {display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}.error input ,.error textarea ,.error select {margin-bottom:0;}.error input[type="checkbox"] ,.error input[type="radio"] {margin-bottom:1rem;}.error label ,.error label.error {color:#f04124;}.error small.error {display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}.error > label>small {color:#686868;background:transparent;padding:0;text-transform:capitalize;font-style:normal;font-size:60%;margin:0;display:inline;}.error span.error-message {display:block;}input.error ,textarea.error ,select.error {margin-bottom:0;}label.error {color:#f04124;}.icon-bar {width:100%;font-size:0;display:inline-block;background:#333333;}.icon-bar>* {text-align:center;font-size:1rem;width:25%;margin:0 auto;display:block;padding:1.25rem;float:left;}.icon-bar > * i ,.icon-bar > * img {display:block;margin:0 auto;}.icon-bar > * i+label ,.icon-bar > * img+label {margin-top:0.0625rem;}.icon-bar > * i {font-size:1.875rem;vertical-align:middle;}.icon-bar > * img {width:1.875rem;height:1.875rem;}.icon-bar.label-right > * i ,.icon-bar.label-right > * img {margin:0 0.0625rem 0 0;display:inline-block;}.icon-bar.label-right > * i+label ,.icon-bar.label-right > * img+label {margin-top:0;}.icon-bar.label-right > * label {display:inline-block;}.icon-bar.vertical.label-right>* {text-align:left;}.icon-bar.vertical ,.icon-bar.small-vertical {height:100%;width:auto;}.icon-bar.vertical .item ,.icon-bar.small-vertical .item {width:auto;margin:auto;float:none;}@media only screen and (min-width:40.063em){.icon-bar.medium-vertical {height:100%;width:auto;}.icon-bar.medium-vertical .item {width:auto;margin:auto;float:none;}}@media only screen and (min-width:64.063em){.icon-bar.large-vertical {height:100%;width:auto;}.icon-bar.large-vertical .item {width:auto;margin:auto;float:none;}}.icon-bar>* {font-size:1rem;padding:1.25rem;}.icon-bar > * i+label ,.icon-bar > * img+label {margin-top:0.0625rem;}.icon-bar > * i {font-size:1.875rem;}.icon-bar > * img {width:1.875rem;height:1.875rem;}.icon-bar > * label {color:#ffffff;}.icon-bar > * i {color:#ffffff;}.icon-bar>a:hover {background:#0098c3;}.icon-bar > a:hover label {color:#ffffff;}.icon-bar > a:hover i {color:#ffffff;}.icon-bar>a.active {background:#0098c3;}.icon-bar > a.active label {color:#ffffff;}.icon-bar > a.active i {color:#ffffff;}.icon-bar .item.disabled {opacity:0.7;cursor:not-allowed;pointer-events:none;}.icon-bar .item.disabled>* {opacity:0.7;cursor:not-allowed;}.icon-bar.two-up .item {width:50%;}.icon-bar.two-up.vertical .item ,.icon-bar.two-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.two-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.two-up.large-vertical .item {width:auto;}}.icon-bar.three-up .item {width:33.3333%;}.icon-bar.three-up.vertical .item ,.icon-bar.three-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.three-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.three-up.large-vertical .item {width:auto;}}.icon-bar.four-up .item {width:25%;}.icon-bar.four-up.vertical .item ,.icon-bar.four-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.four-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.four-up.large-vertical .item {width:auto;}}.icon-bar.five-up .item {width:20%;}.icon-bar.five-up.vertical .item ,.icon-bar.five-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.five-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.five-up.large-vertical .item {width:auto;}}.icon-bar.six-up .item {width:16.66667%;}.icon-bar.six-up.vertical .item ,.icon-bar.six-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.six-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.six-up.large-vertical .item {width:auto;}}.icon-bar.seven-up .item {width:14.28571%;}.icon-bar.seven-up.vertical .item ,.icon-bar.seven-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.seven-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.seven-up.large-vertical .item {width:auto;}}.icon-bar.eight-up .item {width:12.5%;}.icon-bar.eight-up.vertical .item ,.icon-bar.eight-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.eight-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.eight-up.large-vertical .item {width:auto;}}.inline-list {margin:0 auto 1.0625rem auto;margin-left:-1.375rem;margin-right:0;padding:0;list-style:none;overflow:hidden;}.inline-list>li {list-style:none;float:left;margin-left:1.375rem;display:block;}.inline-list > li>* {display:block;}.joyride-list {display:none;}.joyride-tip-guide {display:none;position:absolute;background:#333333;color:#ffffff;z-index:101;top:0;left:2.5%;font-family:inherit;font-weight:normal;width:95%;}.lt-ie9 .joyride-tip-guide {max-width:800px;left:50%;margin-left:-400px;}.joyride-content-wrapper {width:100%;padding:1.125rem 1.25rem 1.5rem;}.joyride-content-wrapper .button {margin-bottom:0 !important;}.joyride-content-wrapper .joyride-prev-tip {margin-right:10px;}.joyride-tip-guide .joyride-nub {display:block;position:absolute;left:22px;width:0;height:0;border:10px solid #333333;}.joyride-tip-guide .joyride-nub.top {border-top-style:solid;border-color:#333333;border-top-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px;}.joyride-tip-guide .joyride-nub.bottom {border-bottom-style:solid;border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px;}.joyride-tip-guide .joyride-nub.right {right:-20px;}.joyride-tip-guide .joyride-nub.left {left:-20px;}.joyride-tip-guide h1 ,.joyride-tip-guide h2 ,.joyride-tip-guide h3 ,.joyride-tip-guide h4 ,.joyride-tip-guide h5 ,.joyride-tip-guide h6 {line-height:1.25;margin:0;font-weight:bold;color:#ffffff;}.joyride-tip-guide p {margin:0 0 1.125rem 0;font-size:0.875rem;line-height:1.3;}.joyride-timer-indicator-wrap {width:50px;height:3px;border:solid 1px #555555;position:absolute;right:1.0625rem;bottom:1rem;}.joyride-timer-indicator {display:block;width:0;height:inherit;background:#666666;}.joyride-close-tip {position:absolute;right:12px;top:10px;color:#777777 !important;text-decoration:none;font-size:24px;font-weight:normal;line-height:0.5 !important;}.joyride-close-tip:hover ,.joyride-close-tip:focus {color:#eeeeee !important;}.joyride-modal-bg {position:fixed;height:100%;width:100%;background:transparent;background:rgba(0, 0, 0, 0.5);z-index:100;display:none;top:0;left:0;cursor:pointer;}.joyride-expose-wrapper {background-color:#ffffff;position:absolute;border-radius:3px;z-index:102;box-shadow:0 0 15px #ffffff;}.joyride-expose-cover {background:transparent;border-radius:3px;position:absolute;z-index:9999;top:0;left:0;}@media only screen and (min-width:40.063em){.joyride-tip-guide {width:300px;left:inherit;}.joyride-tip-guide .joyride-nub.bottom {border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px;}.joyride-tip-guide .joyride-nub.right {border-color:#333333 !important;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:auto;right:-20px;}.joyride-tip-guide .joyride-nub.left {border-color:#333333 !important;border-top-color:transparent !important;border-left-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:-20px;right:auto;}}.keystroke ,kbd {background-color:#ededed;border-color:#dcdcdc;color:#222222;border-style:solid;border-width:1px;margin:0;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;padding:0.125rem 0.25rem 0;border-radius:3px;}.label {font-weight:normal;font-family:"Open Sans",sans-serif;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline-block;position:relative;margin-bottom:auto;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#0098c3;color:#ffffff;}.label.radius {border-radius:3px;}.label.round {border-radius:1000px;}.label.alert {background-color:#f04124;color:#ffffff;}.label.warning {background-color:#f08a24;color:#ffffff;}.label.success {background-color:#43ac6a;color:#ffffff;}.label.secondary {background-color:#f7f7f7;color:#333333;}.label.info {background-color:#a0d3e8;color:#333333;}[data-magellan-expedition] ,[data-magellan-expedition-clone] {background:#ffffff;z-index:50;min-width:100%;padding:10px;}[data-magellan-expedition] .sub-nav ,[data-magellan-expedition-clone] .sub-nav {margin-bottom:0;}[data-magellan-expedition] .sub-nav dd ,[data-magellan-expedition-clone] .sub-nav dd {margin-bottom:0;}[data-magellan-expedition] .sub-nav a ,[data-magellan-expedition-clone] .sub-nav a {line-height:1.8em;}@-webkit-keyframes rotate {from {-webkit-transform:rotate(0deg);}to {-webkit-transform:rotate(360deg);}}@-moz-keyframes rotate {from {-moz-transform:rotate(0deg);}to {-moz-transform:rotate(360deg);}}@-o-keyframes rotate {from {-o-transform:rotate(0deg);}to {-o-transform:rotate(360deg);}}@keyframes rotate {from {transform:rotate(0deg);}to {transform:rotate(360deg);}}.slideshow-wrapper {position:relative;}.slideshow-wrapper ul {list-style-type:none;margin:0;}.slideshow-wrapper ul li ,.slideshow-wrapper ul li .orbit-caption {display:none;}.slideshow-wrapper ul li:first-child {display:block;}.slideshow-wrapper .orbit-container {background-color:transparent;}.slideshow-wrapper .orbit-container li {display:block;}.slideshow-wrapper .orbit-container li .orbit-caption {display:block;}.slideshow-wrapper .orbit-container .orbit-bullets li {display:inline-block;}.slideshow-wrapper .preloader {display:block;width:40px;height:40px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px;border:solid 3px;border-color:#555555 #ffffff;border-radius:1000px;animation-name:rotate;animation-duration:1.5s;animation-iteration-count:infinite;animation-timing-function:linear;}.orbit-container {overflow:hidden;width:100%;position:relative;background:none;}.orbit-container .orbit-slides-container {list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0);}.orbit-container .orbit-slides-container img {display:block;max-width:100%;}.orbit-container .orbit-slides-container>* {position:absolute;top:0;width:100%;margin-left:100%;}.orbit-container .orbit-slides-container > *:first-child {margin-left:0;}.orbit-container .orbit-slides-container > * .orbit-caption {position:absolute;bottom:0;background-color:rgba(51, 51, 51, 0.8);color:#ffffff;width:100%;padding:0.625rem 0.875rem;font-size:0.875rem;}.orbit-container .orbit-slide-number {position:absolute;top:10px;left:10px;font-size:12px;color:#ffffff;background:rgba(0, 0, 0, 0);z-index:10;}.orbit-container .orbit-slide-number span {font-weight:700;padding:0.3125rem;}.orbit-container .orbit-timer {position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10;}.orbit-container .orbit-timer .orbit-progress {height:3px;background-color:rgba(255, 255, 255, 0.3);display:block;width:0;position:relative;right:20px;top:5px;}.orbit-container .orbit-timer>span {display:none;position:absolute;top:0;right:0;width:11px;height:14px;border:solid 4px #ffffff;border-top:none;border-bottom:none;}.orbit-container .orbit-timer.paused>span {right:-4px;top:0;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#ffffff;}.orbit-container .orbit-timer.paused > span.dark {border-left-color:#333333;}.orbit-container:hover .orbit-timer>span {display:block;}.orbit-container .orbit-prev ,.orbit-container .orbit-next {position:absolute;top:45%;margin-top:-25px;width:36px;height:60px;line-height:50px;color:white;background-color:transparent;text-indent:-9999px !important;z-index:10;}.orbit-container .orbit-prev:hover ,.orbit-container .orbit-next:hover {background-color:rgba(0, 0, 0, 0.3);}.orbit-container .orbit-prev>span ,.orbit-container .orbit-next>span {position:absolute;top:50%;margin-top:-10px;display:block;width:0;height:0;border:inset 10px;}.orbit-container .orbit-prev {left:0;}.orbit-container .orbit-prev>span {border-right-style:solid;border-color:transparent;border-right-color:#ffffff;}.orbit-container .orbit-prev:hover>span {border-right-color:#ffffff;}.orbit-container .orbit-next {right:0;}.orbit-container .orbit-next>span {border-color:transparent;border-left-style:solid;border-left-color:#ffffff;left:50%;margin-left:-4px;}.orbit-container .orbit-next:hover>span {border-left-color:#ffffff;}.orbit-bullets-container {text-align:center;}.orbit-bullets {margin:0 auto 30px auto;overflow:hidden;position:relative;top:10px;float:none;text-align:center;display:block;}.orbit-bullets li {cursor:pointer;display:inline-block;width:0.5625rem;height:0.5625rem;background:#cccccc;float:none;margin-right:6px;border-radius:1000px;}.orbit-bullets li.active {background:#999999;}.orbit-bullets li:last-child {margin-right:0;}.touch .orbit-container .orbit-prev ,.touch .orbit-container .orbit-next {display:none;}.touch .orbit-bullets {display:none;}@media only screen and (min-width:40.063em){.touch .orbit-container .orbit-prev ,.touch .orbit-container .orbit-next {display:inherit;}.touch .orbit-bullets {display:block;}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container {height:auto !important;}.orbit-stack-on-small .orbit-slides-container>* {position:relative;margin:0 !important;opacity:1 !important;}.orbit-stack-on-small .orbit-slide-number {display:none;}.orbit-timer {display:none;}.orbit-next ,.orbit-prev {display:none;}.orbit-bullets {display:none;}}ul.pagination {display:block;min-height:1.5rem;margin-left:-0.3125rem;}ul.pagination li {height:1.5rem;color:#222222;font-size:0.875rem;margin-left:0.3125rem;}ul.pagination li a ,ul.pagination li button {display:block;padding:0.0625rem 0.625rem 0.0625rem;color:#999999;background:none;border-radius:3px;font-weight:normal;font-size:1em;line-height:inherit;transition:background-color 300ms ease-out;}ul.pagination li:hover a ,ul.pagination li a:focus ,ul.pagination li:hover button ,ul.pagination li button:focus {background:#e6e6e6;}ul.pagination li.unavailable a ,ul.pagination li.unavailable button {cursor:default;color:#999999;}ul.pagination li.unavailable:hover a ,ul.pagination li.unavailable a:focus ,ul.pagination li.unavailable:hover button ,ul.pagination li.unavailable button:focus {background:transparent;}ul.pagination li.current a ,ul.pagination li.current button {background:#0098c3;color:#ffffff;font-weight:bold;cursor:default;}ul.pagination li.current a:hover ,ul.pagination li.current a:focus ,ul.pagination li.current button:hover ,ul.pagination li.current button:focus {background:#0098c3;}ul.pagination li {float:left;display:block;}.pagination-centered {text-align:center;}.pagination-centered ul.pagination li {float:none;display:inline-block;}.panel {border-style:solid;border-width:1px;border-color:#dcdcdc;margin-bottom:1.25rem;padding:1.25rem;background:#f7f7f7;color:#333333;}.panel>:first-child {margin-top:0;}.panel>:last-child {margin-bottom:0;}.panel h1 ,.panel h2 ,.panel h3 ,.panel h4 ,.panel h5 ,.panel h6 ,.panel p ,.panel li ,.panel dl {color:#333333;}.panel h1 ,.panel h2 ,.panel h3 ,.panel h4 ,.panel h5 ,.panel h6 {line-height:1;margin-bottom:0.625rem;}.panel h1.subheader ,.panel h2.subheader ,.panel h3.subheader ,.panel h4.subheader ,.panel h5.subheader ,.panel h6.subheader {line-height:1.4;}.panel.callout {border-style:solid;border-width:1px;border-color:#b6f0ff;margin-bottom:1.25rem;padding:1.25rem;background:#ecfbff;color:#333333;}.panel.callout>:first-child {margin-top:0;}.panel.callout>:last-child {margin-bottom:0;}.panel.callout h1 ,.panel.callout h2 ,.panel.callout h3 ,.panel.callout h4 ,.panel.callout h5 ,.panel.callout h6 ,.panel.callout p ,.panel.callout li ,.panel.callout dl {color:#333333;}.panel.callout h1 ,.panel.callout h2 ,.panel.callout h3 ,.panel.callout h4 ,.panel.callout h5 ,.panel.callout h6 {line-height:1;margin-bottom:0.625rem;}.panel.callout h1.subheader ,.panel.callout h2.subheader ,.panel.callout h3.subheader ,.panel.callout h4.subheader ,.panel.callout h5.subheader ,.panel.callout h6.subheader {line-height:1.4;}.panel.callout a:not(.button) {color:#0098c3;}.panel.callout a:not(.button):hover ,.panel.callout a:not(.button):focus {color:#0083a8;}.panel.radius {border-radius:3px;}.pricing-table {border:1px;margin-left:0;margin-bottom:0;}.pricing-table * {list-style:none;line-height:1;}.pricing-table .title {background-color:#f7f7f7;padding:0.625rem;text-align:center;color:#555555;font-weight:bold;font-size:1rem;font-family:"Open Sans",sans-serif;}.pricing-table .price {background-color:#f6f6f6;padding:0.9375rem 1.25rem;text-align:center;color:#333333;font-weight:normal;font-size:2rem;font-family:"Open Sans",sans-serif;}.pricing-table .description {background-color:#ffffff;padding:0.625rem;text-align:center;color:#999999;font-size:0.75rem;font-weight:normal;line-height:1.4;border-bottom:none;}.pricing-table .bullet-item {background-color:#ffffff;padding:0.3125rem;text-align:center;color:#777777;font-size:0.875rem;font-weight:normal;border-bottom:none;}.pricing-table .cta-button {background-color:#ffffff;text-align:center;padding:1.25rem 1.25rem 0;}.progress {background-color:#f6f6f6;height:0.625rem;border:1px solid #ffffff;padding:0.125rem;margin-bottom:0.625rem;}.progress .meter {background:#0098c3;height:100%;display:block;}.progress.secondary .meter {background:#f7f7f7;height:100%;display:block;}.progress.success .meter {background:#43ac6a;height:100%;display:block;}.progress.alert .meter {background:#f04124;height:100%;display:block;}.progress.radius {border-radius:3px;}.progress.radius .meter {border-radius:2px;}.progress.round {border-radius:1000px;}.progress.round .meter {border-radius:999px;}.range-slider {position:relative;border:1px solid #bfbfbf;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:block;width:100%;height:0.75rem;background:#ffffff;}.range-slider.vertical-range {position:relative;border:1px solid #bfbfbf;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:inline-block;width:1rem;height:12.5rem;}.range-slider.vertical-range .range-slider-handle {margin-top:0;margin-left:-0.5rem;position:absolute;bottom:-10.5rem;}.range-slider.vertical-range .range-slider-active-segment {width:0.625rem;height:auto;bottom:0;}.range-slider.radius {background:#ffffff;border-radius:3px;}.range-slider.radius .range-slider-handle {background:#0098c3;border-radius:3px;}.range-slider.radius .range-slider-handle:hover {background:#0086ac;}.range-slider.round {background:#ffffff;border-radius:1000px;}.range-slider.round .range-slider-handle {background:#0098c3;border-radius:1000px;}.range-slider.round .range-slider-handle:hover {background:#0086ac;}.range-slider.disabled ,.range-slider[disabled] {background:#ffffff;cursor:not-allowed;opacity:0.7;}.range-slider.disabled .range-slider-handle ,.range-slider[disabled] .range-slider-handle {background:#0098c3;cursor:default;opacity:0.7;}.range-slider.disabled .range-slider-handle:hover ,.range-slider[disabled] .range-slider-handle:hover {background:#0086ac;}.range-slider-active-segment {display:inline-block;position:absolute;height:0.625rem;background:#f5f5f5;}.range-slider-handle {display:inline-block;position:absolute;z-index:1;top:-0.3125rem;width:2rem;height:1.375rem;border:1px solid none;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;background:#0098c3;}.range-slider-handle:hover {background:#0086ac;}.reveal-modal-bg {position:fixed;top:0;bottom:0;left:0;right:0;background:#000000;background:rgba(0, 0, 0, 0.45);z-index:1004;display:none;left:0;}.reveal-modal {visibility:hidden;display:none;position:absolute;z-index:1005;width:100%;top:0;border-radius:3px;left:0;background-color:#ffffff;padding:2.34375rem;border:solid 1px #666666;box-shadow:0 0 10px rgba(0, 0, 0, 0.4);}@media only screen and (max-width: 40em){.reveal-modal {min-height:100vh;}}.reveal-modal .column ,.reveal-modal .columns {min-width:0;}.reveal-modal>:first-child {margin-top:0;}.reveal-modal>:last-child {margin-bottom:0;}@media only screen and (min-width:40.063em){.reveal-modal {width:30%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal {top:30px;}}.reveal-modal.radius {border-radius:3px;}.reveal-modal.round {border-radius:1000px;}.reveal-modal.collapse {padding:0;}@media only screen and (min-width:40.063em){.reveal-modal.tiny {width:30%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.small {width:40%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.medium {width:60%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.large {width:70%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.xlarge {width:95%;max-width:75rem;left:0;right:0;margin:0 auto;}}.reveal-modal.full {top:0;left:0;height:100%;height:100vh;min-height:100vh;max-width:none !important;margin-left:0 !important;}@media only screen and (min-width:40.063em){.reveal-modal.full {width:100%;max-width:75rem;left:0;right:0;margin:0 auto;}}.reveal-modal.toback {z-index:1003;}.reveal-modal .close-reveal-modal {font-size:1.5rem;line-height:1;position:absolute;top:0.625rem;right:1.375rem;color:#aaaaaa;font-weight:bold;cursor:pointer;}.side-nav {display:block;margin:0;padding:0.875rem 0;list-style-type:none;list-style-position:outside;font-family:"Open Sans",sans-serif;}.side-nav li {margin:0 0 0 0;font-size:0.875rem;font-weight:normal;}.side-nav li a:not(.button) {display:block;color:#0098c3;margin:0;padding:0.4375rem 0.875rem;}.side-nav li a:not(.button):hover ,.side-nav li a:not(.button):focus {background:rgba(0, 0, 0, 0.025);color:#22cfff;}.side-nav li.active>a:first-child:not(.button) {color:#22cfff;font-weight:normal;font-family:"Open Sans",sans-serif;}.side-nav li.divider {border-top:1px solid;height:0;padding:0;list-style:none;border-top-color:#ffffff;}.side-nav li.heading {color:#0098c3;font-size:0.875rem;font-weight:bold;text-transform:uppercase;}.split.button {position:relative;padding-right:5.0625rem;}.split.button span {display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px;}.split.button span:after {position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%;}.split.button span:active {background-color:rgba(0, 0, 0, 0.1);}.split.button span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button span {width:3.09375rem;}.split.button span:after {border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem;}.split.button span:after {border-color:#ffffff transparent transparent transparent;}.split.button.secondary span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button.secondary span:after {border-color:#ffffff transparent transparent transparent;}.split.button.alert span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button.success span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button.tiny {padding-right:3.75rem;}.split.button.tiny span {width:2.25rem;}.split.button.tiny span:after {border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem;}.split.button.small {padding-right:3.125rem;}.split.button.small span {width:1.875rem;}.split.button.small span:after {border-top-style:solid;border-width:0.3125rem;top:48%;margin-left:-0.375rem;}.split.button.large {padding-right:5.5rem;}.split.button.large span {width:3.4375rem;}.split.button.large span:after {border-top-style:solid;border-width:0.3125rem;top:48%;margin-left:-0.375rem;}.split.button.expand {padding-left:2rem;}.split.button.secondary span:after {border-color:#333333 transparent transparent transparent;}.split.button.radius span {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.split.button.round span {-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}.split.button.no-pip span:before {border-style:none;}.split.button.no-pip span:after {border-style:none;}.split.button.no-pip span>i {top:50%;display:block;position:absolute;left:50%;margin-left:-0.28889em;margin-top:-0.48889em;}.sub-nav {display:block;width:auto;overflow:hidden;margin-bottom:-0.25rem 0 1.125rem;padding-top:0.25rem;}.sub-nav dt {text-transform:uppercase;}.sub-nav dt ,.sub-nav dd ,.sub-nav li {float:left;margin-left:1rem;margin-bottom:0;font-family:"Open Sans",sans-serif;font-weight:normal;font-size:0.875rem;color:#999999;}.sub-nav dt a ,.sub-nav dd a ,.sub-nav li a {text-decoration:none;color:#999999;padding:0.1875rem 1rem;}.sub-nav dt a:hover ,.sub-nav dd a:hover ,.sub-nav li a:hover {color:#737373;}.sub-nav dt.active a ,.sub-nav dd.active a ,.sub-nav li.active a {border-radius:3px;font-weight:normal;background:#0098c3;padding:0.1875rem 1rem;cursor:default;color:#ffffff;}.sub-nav dt.active a:hover ,.sub-nav dd.active a:hover ,.sub-nav li.active a:hover {background:#0083a8;}.switch {padding:0;border:none;position:relative;outline:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;}.switch label {display:block;margin-bottom:1rem;position:relative;color:transparent;background:#dddddd;text-indent:100%;width:4rem;height:2rem;cursor:pointer;transition:left 0.15s ease-out;}.switch input {opacity:0;position:absolute;top:9px;left:10px;padding:0;}.switch input+label {margin-left:0;margin-right:0;}.switch label:after {content:"";display:block;background:#ffffff;position:absolute;top:0.25rem;left:0.25rem;width:1.5rem;height:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:translate3d(0, 0, 0);transition:left 0.15s ease-out;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);}.switch input:checked+label {background:#0098c3;}.switch input:checked+label:after {left:2.25rem;}.switch label {width:4rem;height:2rem;}.switch label:after {width:1.5rem;height:1.5rem;}.switch input:checked+label:after {left:2.25rem;}.switch label {color:transparent;background:#dddddd;}.switch label:after {background:#ffffff;}.switch input:checked+label {background:#0098c3;}.switch.large label {width:5rem;height:2.5rem;}.switch.large label:after {width:2rem;height:2rem;}.switch.large input:checked+label:after {left:2.75rem;}.switch.small label {width:3.5rem;height:1.75rem;}.switch.small label:after {width:1.25rem;height:1.25rem;}.switch.small input:checked+label:after {left:2rem;}.switch.tiny label {width:3rem;height:1.5rem;}.switch.tiny label:after {width:1rem;height:1rem;}.switch.tiny input:checked+label:after {left:1.75rem;}.switch.radius label {border-radius:4px;}.switch.radius label:after {border-radius:3px;}.switch.round {border-radius:1000px;}.switch.round label {border-radius:2rem;}.switch.round label:after {border-radius:2rem;}table {background:#ffffff;margin-bottom:1.25rem;border:solid 1px #dddddd;table-layout:auto;}table caption {background:transparent;color:#222222;font-size:1rem;font-weight:bold;}table thead {background:#f5f5f5;}table thead tr th ,table thead tr td {padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222222;}table tfoot {background:#f5f5f5;}table tfoot tr th ,table tfoot tr td {padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222222;}table tr th ,table tr td {padding:0.5625rem 0.625rem;font-size:0.875rem;color:#222222;text-align:left;}table tr.even ,table tr.alt ,table tr:nth-of-type(even) {background:#f9f9f9;}table thead tr th ,table tfoot tr th ,table tfoot tr td ,table tbody tr th ,table tbody tr td ,table tr td {display:table-cell;line-height:1.125rem;}.tabs {margin-bottom:0 !important;margin-left:0;}.tabs:before ,.tabs:after {content:" ";display:table;}.tabs:after {clear:both;}.tabs dd ,.tabs .tab-title {position:relative;margin-bottom:0 !important;list-style:none;float:left;}.tabs dd>a ,.tabs .tab-title>a {display:block;background-color:#f7f7f7;color:#333333;padding:0.5rem 1rem;font-family:"Open Sans",sans-serif;font-size:0.875rem;}.tabs dd > a:hover ,.tabs .tab-title > a:hover {background-color:#e8e8e8;}.tabs dd > a:focus ,.tabs .tab-title > a:focus {outline:none;}.tabs dd.active a ,.tabs .tab-title.active a {background-color:#ffffff;color:#333333;}.tabs.radius dd:first-child a ,.tabs.radius .tab:first-child a {-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.tabs.radius dd:last-child a ,.tabs.radius .tab:last-child a {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.tabs.vertical dd ,.tabs.vertical .tab-title {position:inherit;float:none;display:block;top:auto;}.tabs-content {margin-bottom:0;width:100%;}.tabs-content:before ,.tabs-content:after {content:" ";display:table;}.tabs-content:after {clear:both;}.tabs-content>.content {display:none;float:left;padding:0.9375rem 0;width:100%;}.tabs-content > .content.active {display:block;float:none;}.tabs-content > .content.contained {padding:0.9375rem;}.tabs-content.vertical {display:block;}.tabs-content.vertical>.content {padding:0 0.9375rem;}@media only screen and (min-width:40.063em){.tabs.vertical {width:20%;max-width:20%;float:left;margin:0 0 1.25rem;}.tabs-content.vertical {width:80%;max-width:80%;float:left;margin-left:-1px;padding-left:1rem;}}.no-js .tabs-content>.content {display:block;float:none;}.th {line-height:0;display:inline-block;border:solid 4px #ffffff;max-width:100%;box-shadow:0 0 0 1px rgba(0, 0, 0, 0.2);transition:all 200ms ease-out;}.th:hover ,.th:focus {box-shadow:0 0 6px 1px rgba(0, 152, 195, 0.5);}.th.radius {border-radius:3px;}.has-tip {border-bottom:none;cursor:help;font-weight:bold;color:#333333;}.has-tip:hover ,.has-tip:focus {border-bottom:none;color:#0098c3;}.has-tip.tip-left ,.has-tip.tip-right {float:none !important;}.tooltip {display:none;position:absolute;z-index:1006;font-weight:normal;font-size:0.875rem;line-height:1.3;padding:0.75rem;max-width:300px;left:50%;width:100%;color:#ffffff;background:#333333;}.tooltip>.nub {display:block;left:5px;position:absolute;width:0;height:0;border:solid 5px;border-color:transparent transparent #333333 transparent;top:-10px;pointer-events:none;}.tooltip > .nub.rtl {left:auto;right:5px;}.tooltip.radius {border-radius:3px;}.tooltip.round {border-radius:1000px;}.tooltip.round>.nub {left:2rem;}.tooltip.opened {color:#0098c3 !important;border-bottom:none !important;}.tap-to-close {display:block;font-size:0.625rem;color:#777777;font-weight:normal;}@media only screen and (min-width:40.063em){.tooltip>.nub {border-color:transparent transparent #333333 transparent;top:-10px;}.tooltip.tip-top>.nub {border-color:#333333 transparent transparent transparent;top:auto;bottom:-10px;}.tooltip.tip-left ,.tooltip.tip-right {float:none !important;}.tooltip.tip-left>.nub {border-color:transparent transparent transparent #333333;right:-10px;left:auto;top:50%;margin-top:-5px;}.tooltip.tip-right>.nub {border-color:transparent #333333 transparent transparent;right:auto;left:-10px;top:50%;margin-top:-5px;}}meta.foundation-mq-topbar {font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}.contain-to-grid {width:100%;background:#333333;}.contain-to-grid .top-bar {margin-bottom:0;}.fixed {width:100%;left:0;position:fixed;top:0;z-index:99;}.fixed.expanded:not(.top-bar) {overflow-y:auto;height:auto;width:100%;max-height:100%;}.fixed.expanded:not(.top-bar) .title-area {position:fixed;width:100%;z-index:99;}.fixed.expanded:not(.top-bar) .top-bar-section {z-index:98;margin-top:2.8125rem;}.top-bar {overflow:hidden;height:2.8125rem;line-height:2.8125rem;position:relative;background:#333333;margin-bottom:0;}.top-bar ul {margin-bottom:0;list-style:none;}.top-bar .row {max-width:none;}.top-bar form ,.top-bar input {margin-bottom:0;}.top-bar input {height:1.75rem;padding-top:0.35rem;padding-bottom:0.35rem;font-size:0.75rem;}.top-bar .button ,.top-bar button {padding-top:0.4125rem;padding-bottom:0.4125rem;margin-bottom:0;font-size:0.75rem;}@media only screen and (max-width: 40em){.top-bar .button ,.top-bar button {position:relative;top:-1px;}}.top-bar .title-area {position:relative;margin:0;}.top-bar .name {height:2.8125rem;margin:0;font-size:16px;}.top-bar .name h1 ,.top-bar .name h2 ,.top-bar .name h3 ,.top-bar .name h4 ,.top-bar .name p ,.top-bar .name span {line-height:2.8125rem;font-size:1.0625rem;margin:0;}.top-bar .name h1 a ,.top-bar .name h2 a ,.top-bar .name h3 a ,.top-bar .name h4 a ,.top-bar .name p a ,.top-bar .name span a {font-weight:normal;color:#ffffff;width:75%;display:block;padding:0 0.9375rem;}.top-bar .toggle-topbar {position:absolute;right:0;top:0;}.top-bar .toggle-topbar a {color:#ffffff;text-transform:uppercase;font-size:0.8125rem;font-weight:bold;position:relative;display:block;padding:0 0.9375rem;height:2.8125rem;line-height:2.8125rem;}.top-bar .toggle-topbar.menu-icon {top:50%;margin-top:-16px;}.top-bar .toggle-topbar.menu-icon a {height:34px;line-height:33px;padding:0 2.5rem 0 0.9375rem;color:#ffffff;position:relative;}.top-bar .toggle-topbar.menu-icon a span::after {content:"";position:absolute;display:block;height:0;top:50%;margin-top:-8px;right:0.9375rem;box-shadow:0 0 0 1px #ffffff,0 7px 0 1px #ffffff,0 14px 0 1px #ffffff;width:16px;}.top-bar .toggle-topbar.menu-icon a span:hover:after {box-shadow:0 0 0 1px "",0 7px 0 1px "",0 14px 0 1px "";}.top-bar.expanded {height:auto;background:transparent;}.top-bar.expanded .title-area {background:#333333;}.top-bar.expanded .toggle-topbar a {color:#888888;}.top-bar.expanded .toggle-topbar a span::after {box-shadow:0 0 0 1px #888888,0 7px 0 1px #888888,0 14px 0 1px #888888;}.top-bar-section {left:0;position:relative;width:auto;transition:left 300ms ease-out;}.top-bar-section ul {padding:0;width:100%;height:auto;display:block;font-size:16px;margin:0;}.top-bar-section .divider ,.top-bar-section [role="separator"] {border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%;}.top-bar-section ul li {background:#333333;}.top-bar-section ul li>a {display:block;width:100%;color:#ffffff;padding:12px 0 12px 0;padding-left:0.9375rem;font-family:"Open Sans",sans-serif;font-size:0.8125rem;font-weight:normal;text-transform:none;}.top-bar-section ul li > a.button {font-size:0.8125rem;padding-right:0.9375rem;padding-left:0.9375rem;background-color:#0098c3;border-color:#007a9c;color:#ffffff;}.top-bar-section ul li > a.button:hover ,.top-bar-section ul li > a.button:focus {background-color:#007a9c;}.top-bar-section ul li > a.button:hover ,.top-bar-section ul li > a.button:focus {color:#ffffff;}.top-bar-section ul li > a.button.secondary {background-color:#f7f7f7;border-color:#c6c6c6;color:#333333;}.top-bar-section ul li > a.button.secondary:hover ,.top-bar-section ul li > a.button.secondary:focus {background-color:#c6c6c6;}.top-bar-section ul li > a.button.secondary:hover ,.top-bar-section ul li > a.button.secondary:focus {color:#333333;}.top-bar-section ul li > a.button.success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;}.top-bar-section ul li > a.button.success:hover ,.top-bar-section ul li > a.button.success:focus {background-color:#368a54;}.top-bar-section ul li > a.button.success:hover ,.top-bar-section ul li > a.button.success:focus {color:#ffffff;}.top-bar-section ul li > a.button.alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;}.top-bar-section ul li > a.button.alert:hover ,.top-bar-section ul li > a.button.alert:focus {background-color:#cf280e;}.top-bar-section ul li > a.button.alert:hover ,.top-bar-section ul li > a.button.alert:focus {color:#ffffff;}.top-bar-section ul li > a.button.warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}.top-bar-section ul li > a.button.warning:hover ,.top-bar-section ul li > a.button.warning:focus {background-color:#cf6e0e;}.top-bar-section ul li > a.button.warning:hover ,.top-bar-section ul li > a.button.warning:focus {color:#ffffff;}.top-bar-section ul li>button {font-size:0.8125rem;padding-right:0.9375rem;padding-left:0.9375rem;background-color:#0098c3;border-color:#007a9c;color:#ffffff;}.top-bar-section ul li > button:hover ,.top-bar-section ul li > button:focus {background-color:#007a9c;}.top-bar-section ul li > button:hover ,.top-bar-section ul li > button:focus {color:#ffffff;}.top-bar-section ul li > button.secondary {background-color:#f7f7f7;border-color:#c6c6c6;color:#333333;}.top-bar-section ul li > button.secondary:hover ,.top-bar-section ul li > button.secondary:focus {background-color:#c6c6c6;}.top-bar-section ul li > button.secondary:hover ,.top-bar-section ul li > button.secondary:focus {color:#333333;}.top-bar-section ul li > button.success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;}.top-bar-section ul li > button.success:hover ,.top-bar-section ul li > button.success:focus {background-color:#368a54;}.top-bar-section ul li > button.success:hover ,.top-bar-section ul li > button.success:focus {color:#ffffff;}.top-bar-section ul li > button.alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;}.top-bar-section ul li > button.alert:hover ,.top-bar-section ul li > button.alert:focus {background-color:#cf280e;}.top-bar-section ul li > button.alert:hover ,.top-bar-section ul li > button.alert:focus {color:#ffffff;}.top-bar-section ul li > button.warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}.top-bar-section ul li > button.warning:hover ,.top-bar-section ul li > button.warning:focus {background-color:#cf6e0e;}.top-bar-section ul li > button.warning:hover ,.top-bar-section ul li > button.warning:focus {color:#ffffff;}.top-bar-section ul li:hover:not(.has-form)>a {background-color:#555555;background:#333333;color:#ffffff;}.top-bar-section ul li.active>a {background:#0098c3;color:#ffffff;}.top-bar-section ul li.active > a:hover {background:#0083a8;color:#ffffff;}.top-bar-section .has-form {padding:0.9375rem;}.top-bar-section .has-dropdown {position:relative;}.top-bar-section .has-dropdown > a:after {content:"";display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent rgba(255, 255, 255, 0.4);border-left-style:solid;margin-right:0.9375rem;margin-top:-4.5px;position:absolute;top:50%;right:0;}.top-bar-section .has-dropdown.moved {position:static;}.top-bar-section .has-dropdown.moved>.dropdown {display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;width:100%;}.top-bar-section .has-dropdown.moved>a:after {display:none;}.top-bar-section .dropdown {padding:0;position:absolute;left:100%;top:0;z-index:99;display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}.top-bar-section .dropdown li {width:100%;height:auto;}.top-bar-section .dropdown li a {font-weight:normal;padding:8px 0.9375rem;}.top-bar-section .dropdown li a.parent-link {font-weight:normal;}.top-bar-section .dropdown li.title h5 ,.top-bar-section .dropdown li.parent-link {margin-bottom:0;margin-top:0;font-size:1.125rem;}.top-bar-section .dropdown li.title h5 a ,.top-bar-section .dropdown li.parent-link a {color:#ffffff;display:block;}.top-bar-section .dropdown li.title h5 a:hover ,.top-bar-section .dropdown li.parent-link a:hover {background:none;}.top-bar-section .dropdown li.has-form {padding:8px 0.9375rem;}.top-bar-section .dropdown li .button ,.top-bar-section .dropdown li button {top:auto;}.top-bar-section .dropdown label {padding:8px 0.9375rem 2px;margin-bottom:0;text-transform:uppercase;color:#777777;font-weight:bold;font-size:0.625rem;}.js-generated {display:block;}@media only screen and (min-width:40.063em){.top-bar {background:#333333;overflow:visible;}.top-bar:before ,.top-bar:after {content:" ";display:table;}.top-bar:after {clear:both;}.top-bar .toggle-topbar {display:none;}.top-bar .title-area {float:left;}.top-bar .name h1 a ,.top-bar .name h2 a ,.top-bar .name h3 a ,.top-bar .name h4 a ,.top-bar .name h5 a ,.top-bar .name h6 a {width:auto;}.top-bar input ,.top-bar .button ,.top-bar button {font-size:0.875rem;position:relative;height:1.75rem;top:0.53125rem;}.top-bar.expanded {background:#333333;}.contain-to-grid .top-bar {max-width:75rem;margin:0 auto;margin-bottom:0;}.top-bar-section {transition:none 0 0;left:0 !important;}.top-bar-section ul {width:auto;height:auto !important;display:inline;}.top-bar-section ul li {float:left;}.top-bar-section ul li .js-generated {display:none;}.top-bar-section li.hover>a:not(.button) {background-color:#555555;background:#333333;color:#ffffff;}.top-bar-section li:not(.has-form) a:not(.button) {padding:0 0.9375rem;line-height:2.8125rem;background:#333333;}.top-bar-section li:not(.has-form) a:not(.button):hover {background-color:#555555;background:#333333;}.top-bar-section li.active:not(.has-form) a:not(.button) {padding:0 0.9375rem;line-height:2.8125rem;color:#ffffff;background:#0098c3;}.top-bar-section li.active:not(.has-form) a:not(.button):hover {background:#0083a8;color:#ffffff;}.top-bar-section .has-dropdown>a {padding-right:2.1875rem !important;}.top-bar-section .has-dropdown > a:after {content:"";display:block;width:0;height:0;border:inset 5px;border-color:rgba(255, 255, 255, 0.4) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:1.40625rem;}.top-bar-section .has-dropdown.moved {position:relative;}.top-bar-section .has-dropdown.moved>.dropdown {display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}.top-bar-section .has-dropdown.hover>.dropdown ,.top-bar-section .has-dropdown.not-click:hover>.dropdown {display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}.top-bar-section .has-dropdown>a:focus+.dropdown {display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}.top-bar-section .has-dropdown .dropdown li.has-dropdown > a:after {border:none;content:"\00bb";top:1rem;margin-top:-1px;right:5px;line-height:1.2;}.top-bar-section .dropdown {left:0;top:auto;background:transparent;min-width:100%;}.top-bar-section .dropdown li a {color:#ffffff;line-height:2.8125rem;white-space:nowrap;padding:12px 0.9375rem;background:#333333;}.top-bar-section .dropdown li:not(.has-form):not(.active)>a:not(.button) {color:#ffffff;background:#333333;}.top-bar-section .dropdown li:not(.has-form):not(.active):hover>a:not(.button) {color:#ffffff;background-color:#555555;background:#333333;}.top-bar-section .dropdown li label {white-space:nowrap;background:#333333;}.top-bar-section .dropdown li .dropdown {left:100%;top:0;}.top-bar-section>ul>.divider ,.top-bar-section>ul>[role="separator"] {border-bottom:none;border-top:none;border-right:solid 1px #4e4e4e;clear:none;height:2.8125rem;width:0;}.top-bar-section .has-form {background:#333333;padding:0 0.9375rem;height:2.8125rem;}.top-bar-section .right li .dropdown {left:auto;right:0;}.top-bar-section .right li .dropdown li .dropdown {right:100%;}.top-bar-section .left li .dropdown {right:auto;left:0;}.top-bar-section .left li .dropdown li .dropdown {left:100%;}.no-js .top-bar-section ul li:hover>a {background-color:#555555;background:#333333;color:#ffffff;}.no-js .top-bar-section ul li:active>a {background:#0098c3;color:#ffffff;}.no-js .top-bar-section .has-dropdown:hover>.dropdown {display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}.no-js .top-bar-section .has-dropdown>a:focus+.dropdown {display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}}.text-left {text-align:left !important;}.text-right {text-align:right !important;}.text-center {text-align:center !important;}.text-justify {text-align:justify !important;}@media only screen and (max-width: 40em){.small-only-text-left {text-align:left !important;}.small-only-text-right {text-align:right !important;}.small-only-text-center {text-align:center !important;}.small-only-text-justify {text-align:justify !important;}}@media only screen{.small-text-left {text-align:left !important;}.small-text-right {text-align:right !important;}.small-text-center {text-align:center !important;}.small-text-justify {text-align:justify !important;}}@media only screen and (min-width:40.063em) and (max-width:64em){.medium-only-text-left {text-align:left !important;}.medium-only-text-right {text-align:right !important;}.medium-only-text-center {text-align:center !important;}.medium-only-text-justify {text-align:justify !important;}}@media only screen and (min-width:40.063em){.medium-text-left {text-align:left !important;}.medium-text-right {text-align:right !important;}.medium-text-center {text-align:center !important;}.medium-text-justify {text-align:justify !important;}}@media only screen and (min-width:64.063em) and (max-width:90em){.large-only-text-left {text-align:left !important;}.large-only-text-right {text-align:right !important;}.large-only-text-center {text-align:center !important;}.large-only-text-justify {text-align:justify !important;}}@media only screen and (min-width:64.063em){.large-text-left {text-align:left !important;}.large-text-right {text-align:right !important;}.large-text-center {text-align:center !important;}.large-text-justify {text-align:justify !important;}}@media only screen and (min-width:90.063em) and (max-width:120em){.xlarge-only-text-left {text-align:left !important;}.xlarge-only-text-right {text-align:right !important;}.xlarge-only-text-center {text-align:center !important;}.xlarge-only-text-justify {text-align:justify !important;}}@media only screen and (min-width:90.063em){.xlarge-text-left {text-align:left !important;}.xlarge-text-right {text-align:right !important;}.xlarge-text-center {text-align:center !important;}.xlarge-text-justify {text-align:justify !important;}}@media only screen and (min-width:120.063em) and (max-width:99999999em){.xxlarge-only-text-left {text-align:left !important;}.xxlarge-only-text-right {text-align:right !important;}.xxlarge-only-text-center {text-align:center !important;}.xxlarge-only-text-justify {text-align:justify !important;}}@media only screen and (min-width:120.063em){.xxlarge-text-left {text-align:left !important;}.xxlarge-text-right {text-align:right !important;}.xxlarge-text-center {text-align:center !important;}.xxlarge-text-justify {text-align:justify !important;}}div ,dl ,dt ,dd ,ul ,ol ,li ,h1 ,h2 ,h3 ,h4 ,h5 ,h6 ,pre ,form ,p ,blockquote ,th ,td {margin:0;padding:0;}a {color:#0098c3;text-decoration:none;line-height:inherit;}a:hover ,a:focus {color:#0083a8;}a img {border:none;}p {font-family:inherit;font-weight:normal;font-size:1rem;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility;}p.lead {font-size:1.21875rem;line-height:1.6;}p aside {font-size:0.875rem;line-height:1.35;font-style:italic;}h1 ,h2 ,h3 ,h4 ,h5 ,h6 {font-family:"Open Sans",sans-serif;font-weight:normal;font-style:normal;color:#222222;text-rendering:optimizeLegibility;margin-top:0.2rem;margin-bottom:0.5rem;line-height:1.4;}h1 small ,h2 small ,h3 small ,h4 small ,h5 small ,h6 small {font-size:60%;color:#6f6f6f;line-height:0;}h1 {font-size:2.125rem;}h2 {font-size:1.25rem;}h3 {font-size:1.1875rem;}h4 {font-size:1.125rem;}h5 {font-size:1.125rem;}h6 {font-size:1rem;}.subheader {line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem;}hr {border:solid #dddddd;border-width:1px 0 0;clear:both;margin:1.25rem 0 1.1875rem;height:0;}em ,i {font-style:italic;line-height:inherit;}strong ,b {font-weight:bold;line-height:inherit;}small {font-size:60%;line-height:inherit;}code {font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;color:#333333;background-color:#fdfdfd;border-width:1px;border-style:solid;border-color:#e4e4e4;padding:0.125rem 0.3125rem 0.0625rem;}ul ,ol ,dl {font-size:1rem;line-height:1.6;margin-bottom:1.25rem;list-style-position:outside;font-family:inherit;}ul {margin-left:1.1rem;}ul.no-bullet {margin-left:0;}ul.no-bullet li ul ,ul.no-bullet li ol {margin-left:1.25rem;margin-bottom:0;list-style:none;}ul li ul ,ul li ol {margin-left:1.25rem;margin-bottom:0;}ul.square li ul ,ul.circle li ul ,ul.disc li ul {list-style:inherit;}ul.square {list-style-type:square;margin-left:1.1rem;}ul.circle {list-style-type:circle;margin-left:1.1rem;}ul.disc {list-style-type:disc;margin-left:1.1rem;}ul.no-bullet {list-style:none;}ol {margin-left:1.4rem;}ol li ul ,ol li ol {margin-left:1.25rem;margin-bottom:0;}dl dt {margin-bottom:0.3rem;font-weight:bold;}dl dd {margin-bottom:0.75rem;}abbr ,acronym {text-transform:uppercase;font-size:90%;color:#555555;cursor:help;}abbr {text-transform:none;}abbr[title] {border-bottom:1px dotted #dddddd;}blockquote {margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #dddddd;}blockquote cite {display:block;font-size:0.8125rem;color:#555555;}blockquote cite:before {content:"\2014 \0020";}blockquote cite a ,blockquote cite a:visited {color:#555555;}blockquote ,blockquote p {line-height:1.6;color:#6f6f6f;}.vcard {display:inline-block;margin:0 0 1.25rem 0;border:1px solid #dddddd;padding:0.625rem 0.75rem;}.vcard li {margin:0;display:block;}.vcard .fn {font-weight:bold;font-size:0.9375rem;}.vevent .summary {font-weight:bold;}.vevent abbr {cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem;}@media only screen and (min-width:40.063em){h1 ,h2 ,h3 ,h4 ,h5 ,h6 {line-height:1.4;}h1 {font-size:2.75rem;}h2 {font-size:1.875rem;}h3 {font-size:1.5rem;}h4 {font-size:1.4375rem;}h5 {font-size:1.125rem;}h6 {font-size:1rem;}}.off-canvas-wrap {-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden;}.off-canvas-wrap.move-right ,.off-canvas-wrap.move-left {min-height:100%;-webkit-overflow-scrolling:touch;}.inner-wrap {position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease;}.inner-wrap:before ,.inner-wrap:after {content:" ";display:table;}.inner-wrap:after {clear:both;}.tab-bar {-webkit-backface-visibility:hidden;background:#333333;color:#ffffff;height:2.8125rem;line-height:2.8125rem;position:relative;}.tab-bar h1 ,.tab-bar h2 ,.tab-bar h3 ,.tab-bar h4 ,.tab-bar h5 ,.tab-bar h6 {color:#ffffff;font-weight:bold;line-height:2.8125rem;margin:0;}.tab-bar h1 ,.tab-bar h2 ,.tab-bar h3 ,.tab-bar h4 {font-size:1.125rem;}.left-small {width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-right:solid 1px #1a1a1a;left:0;}.right-small {width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-left:solid 1px #1a1a1a;right:0;}.tab-bar-section {padding:0 0.625rem;position:absolute;text-align:center;height:2.8125rem;top:0;}@media only screen and (min-width:40.063em){.tab-bar-section.left {text-align:left;}.tab-bar-section.right {text-align:right;}}.tab-bar-section.left {left:0;right:2.8125rem;}.tab-bar-section.right {left:2.8125rem;right:0;}.tab-bar-section.middle {left:2.8125rem;right:2.8125rem;}.tab-bar .menu-icon {text-indent:2.1875rem;width:2.8125rem;height:2.8125rem;display:block;padding:0;color:#ffffff;position:relative;transform:translate3d(0, 0, 0);}.tab-bar .menu-icon span::after {content:"";position:absolute;display:block;height:0;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0 0 1px #ffffff,0 7px 0 1px #ffffff,0 14px 0 1px #ffffff;width:1rem;}.tab-bar .menu-icon span:hover:after {box-shadow:0 0 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3;}.left-off-canvas-menu {-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;-ms-transform:translate(-100%, 0);-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;}.left-off-canvas-menu * {-webkit-backface-visibility:hidden;}.right-off-canvas-menu {-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;-ms-transform:translate(100%, 0);-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;}.right-off-canvas-menu * {-webkit-backface-visibility:hidden;}ul.off-canvas-list {list-style-type:none;padding:0;margin:0;}ul.off-canvas-list li label {display:block;padding:0.3rem 0.9375rem;color:#999999;text-transform:uppercase;font-size:0.75rem;font-weight:bold;background:#444444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0;}ul.off-canvas-list li a {display:block;padding:0.66667rem;color:rgba(255, 255, 255, 0.7);border-bottom:1px solid #262626;transition:background 300ms ease;}ul.off-canvas-list li a:hover {background:#242424;}.move-right>.inner-wrap {-ms-transform:translate(15.625rem, 0);-webkit-transform:translate3d(15.625rem, 0, 0);-moz-transform:translate3d(15.625rem, 0, 0);-ms-transform:translate3d(15.625rem, 0, 0);-o-transform:translate3d(15.625rem, 0, 0);transform:translate3d(15.625rem, 0, 0);}.move-right .exit-off-canvas {-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0, 0, 0, 0.5),4px 0 4px rgba(0, 0, 0, 0.5);display:block;position:absolute;background:rgba(255, 255, 255, 0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);}@media only screen and (min-width:40.063em){.move-right .exit-off-canvas:hover {background:rgba(255, 255, 255, 0.05);}}.move-left>.inner-wrap {-ms-transform:translate(-15.625rem, 0);-webkit-transform:translate3d(-15.625rem, 0, 0);-moz-transform:translate3d(-15.625rem, 0, 0);-ms-transform:translate3d(-15.625rem, 0, 0);-o-transform:translate3d(-15.625rem, 0, 0);transform:translate3d(-15.625rem, 0, 0);}.move-left .exit-off-canvas {-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0, 0, 0, 0.5),4px 0 4px rgba(0, 0, 0, 0.5);display:block;position:absolute;background:rgba(255, 255, 255, 0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);}@media only screen and (min-width:40.063em){.move-left .exit-off-canvas:hover {background:rgba(255, 255, 255, 0.05);}}.offcanvas-overlap .left-off-canvas-menu ,.offcanvas-overlap .right-off-canvas-menu {-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003;}.offcanvas-overlap .exit-off-canvas {-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0, 0, 0, 0.5),4px 0 4px rgba(0, 0, 0, 0.5);display:block;position:absolute;background:rgba(255, 255, 255, 0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);}@media only screen and (min-width:40.063em){.offcanvas-overlap .exit-off-canvas:hover {background:rgba(255, 255, 255, 0.05);}}.offcanvas-overlap-left .right-off-canvas-menu {-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003;}.offcanvas-overlap-left .exit-off-canvas {-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0, 0, 0, 0.5),4px 0 4px rgba(0, 0, 0, 0.5);display:block;position:absolute;background:rgba(255, 255, 255, 0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);}@media only screen and (min-width:40.063em){.offcanvas-overlap-left .exit-off-canvas:hover {background:rgba(255, 255, 255, 0.05);}}.offcanvas-overlap-right .left-off-canvas-menu {-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003;}.offcanvas-overlap-right .exit-off-canvas {-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0, 0, 0, 0.5),4px 0 4px rgba(0, 0, 0, 0.5);display:block;position:absolute;background:rgba(255, 255, 255, 0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);}@media only screen and (min-width:40.063em){.offcanvas-overlap-right .exit-off-canvas:hover {background:rgba(255, 255, 255, 0.05);}}.no-csstransforms .left-off-canvas-menu {left:-15.625rem;}.no-csstransforms .right-off-canvas-menu {right:-15.625rem;}.no-csstransforms .move-left>.inner-wrap {right:15.625rem;}.no-csstransforms .move-right>.inner-wrap {left:15.625rem;}.left-submenu {-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;margin:0;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1002;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-transform:translate(-100%, 0);-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease;}.left-submenu * {-webkit-backface-visibility:hidden;}.left-submenu .back>a {padding:0.3rem 0.9375rem;color:#999999;text-transform:uppercase;font-weight:bold;background:#444444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0;}.left-submenu .back > a:hover {background:#303030;border-top:1px solid #5e5e5e;border-bottom:none;}.left-submenu .back > a:before {content:"\AB";margin-right:0.5rem;display:inline;}.left-submenu.move-right ,.left-submenu.offcanvas-overlap-right ,.left-submenu.offcanvas-overlap {-ms-transform:translate(0%, 0);-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0);}.right-submenu {-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;margin:0;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1002;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-transform:translate(100%, 0);-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease;}.right-submenu * {-webkit-backface-visibility:hidden;}.right-submenu .back>a {padding:0.3rem 0.9375rem;color:#999999;text-transform:uppercase;font-weight:bold;background:#444444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0;}.right-submenu .back > a:hover {background:#303030;border-top:1px solid #5e5e5e;border-bottom:none;}.right-submenu .back > a:after {content:"\BB";margin-left:0.5rem;display:inline;}.right-submenu.move-left ,.right-submenu.offcanvas-overlap-left ,.right-submenu.offcanvas-overlap {-ms-transform:translate(0%, 0);-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0);}.left-off-canvas-menu ul.off-canvas-list li.has-submenu>a:after {content:"\BB";margin-left:0.5rem;display:inline;}.right-off-canvas-menu ul.off-canvas-list li.has-submenu>a:before {content:"\AB";margin-right:0.5rem;display:inline;}@media only screen{.show-for-small-only ,.show-for-small-up ,.show-for-small ,.show-for-small-down ,.hide-for-medium-only ,.hide-for-medium-up ,.hide-for-medium ,.show-for-medium-down ,.hide-for-large-only ,.hide-for-large-up ,.hide-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up {display:inherit !important;}.hide-for-small-only ,.hide-for-small-up ,.hide-for-small ,.hide-for-small-down ,.show-for-medium-only ,.show-for-medium-up ,.show-for-medium ,.hide-for-medium-down ,.show-for-large-only ,.show-for-large-up ,.show-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up {display:none !important;}.visible-for-small-only ,.visible-for-small-up ,.visible-for-small ,.visible-for-small-down ,.hidden-for-medium-only ,.hidden-for-medium-up ,.hidden-for-medium ,.visible-for-medium-down ,.hidden-for-large-only ,.hidden-for-large-up ,.hidden-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up {position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.hidden-for-small-only ,.hidden-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.visible-for-medium-only ,.visible-for-medium-up ,.visible-for-medium ,.hidden-for-medium-down ,.visible-for-large-only ,.visible-for-large-up ,.visible-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up {position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}table.show-for-small-only ,table.show-for-small-up ,table.show-for-small ,table.show-for-small-down ,table.hide-for-medium-only ,table.hide-for-medium-up ,table.hide-for-medium ,table.show-for-medium-down ,table.hide-for-large-only ,table.hide-for-large-up ,table.hide-for-large ,table.show-for-large-down ,table.hide-for-xlarge-only ,table.hide-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up {display:table !important;}thead.show-for-small-only ,thead.show-for-small-up ,thead.show-for-small ,thead.show-for-small-down ,thead.hide-for-medium-only ,thead.hide-for-medium-up ,thead.hide-for-medium ,thead.show-for-medium-down ,thead.hide-for-large-only ,thead.hide-for-large-up ,thead.hide-for-large ,thead.show-for-large-down ,thead.hide-for-xlarge-only ,thead.hide-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up {display:table-header-group !important;}tbody.show-for-small-only ,tbody.show-for-small-up ,tbody.show-for-small ,tbody.show-for-small-down ,tbody.hide-for-medium-only ,tbody.hide-for-medium-up ,tbody.hide-for-medium ,tbody.show-for-medium-down ,tbody.hide-for-large-only ,tbody.hide-for-large-up ,tbody.hide-for-large ,tbody.show-for-large-down ,tbody.hide-for-xlarge-only ,tbody.hide-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up {display:table-row-group !important;}tr.show-for-small-only ,tr.show-for-small-up ,tr.show-for-small ,tr.show-for-small-down ,tr.hide-for-medium-only ,tr.hide-for-medium-up ,tr.hide-for-medium ,tr.show-for-medium-down ,tr.hide-for-large-only ,tr.hide-for-large-up ,tr.hide-for-large ,tr.show-for-large-down ,tr.hide-for-xlarge-only ,tr.hide-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up {display:table-row;}th.show-for-small-only ,td.show-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.show-for-small ,td.show-for-small ,th.show-for-small-down ,td.show-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.hide-for-medium-up ,td.hide-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.show-for-medium-down ,td.show-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.hide-for-large-up ,td.hide-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.show-for-large-down ,td.show-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.hide-for-xlarge-up ,td.hide-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up {display:table-cell !important;}}@media only screen and (min-width:40.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.show-for-medium-only ,.show-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.hide-for-large-only ,.hide-for-large-up ,.hide-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up {display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.hide-for-medium-only ,.hide-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.show-for-large-only ,.show-for-large-up ,.show-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up {display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.visible-for-medium-only ,.visible-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.hidden-for-large-only ,.hidden-for-large-up ,.hidden-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up {position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.hidden-for-medium-only ,.hidden-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.visible-for-large-only ,.visible-for-large-up ,.visible-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up {position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.show-for-medium-only ,table.show-for-medium-up ,table.show-for-medium ,table.show-for-medium-down ,table.hide-for-large-only ,table.hide-for-large-up ,table.hide-for-large ,table.show-for-large-down ,table.hide-for-xlarge-only ,table.hide-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up {display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.show-for-medium-only ,thead.show-for-medium-up ,thead.show-for-medium ,thead.show-for-medium-down ,thead.hide-for-large-only ,thead.hide-for-large-up ,thead.hide-for-large ,thead.show-for-large-down ,thead.hide-for-xlarge-only ,thead.hide-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up {display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.show-for-medium-only ,tbody.show-for-medium-up ,tbody.show-for-medium ,tbody.show-for-medium-down ,tbody.hide-for-large-only ,tbody.hide-for-large-up ,tbody.hide-for-large ,tbody.show-for-large-down ,tbody.hide-for-xlarge-only ,tbody.hide-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up {display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.show-for-medium-only ,tr.show-for-medium-up ,tr.show-for-medium ,tr.show-for-medium-down ,tr.hide-for-large-only ,tr.hide-for-large-up ,tr.hide-for-large ,tr.show-for-large-down ,tr.hide-for-xlarge-only ,tr.hide-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up {display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.show-for-medium-only ,td.show-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.show-for-medium ,td.show-for-medium ,th.show-for-medium-down ,td.show-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.hide-for-large-up ,td.hide-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.show-for-large-down ,td.show-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.hide-for-xlarge-up ,td.hide-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up {display:table-cell !important;}}@media only screen and (min-width:64.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.hide-for-medium-only ,.show-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.show-for-large-only ,.show-for-large-up ,.show-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up {display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.show-for-medium-only ,.hide-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.hide-for-large-only ,.hide-for-large-up ,.hide-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up {display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.hidden-for-medium-only ,.visible-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.visible-for-large-only ,.visible-for-large-up ,.visible-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up {position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.visible-for-medium-only ,.hidden-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.hidden-for-large-only ,.hidden-for-large-up ,.hidden-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up {position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.hide-for-medium-only ,table.show-for-medium-up ,table.hide-for-medium ,table.hide-for-medium-down ,table.show-for-large-only ,table.show-for-large-up ,table.show-for-large ,table.show-for-large-down ,table.hide-for-xlarge-only ,table.hide-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up {display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.hide-for-medium-only ,thead.show-for-medium-up ,thead.hide-for-medium ,thead.hide-for-medium-down ,thead.show-for-large-only ,thead.show-for-large-up ,thead.show-for-large ,thead.show-for-large-down ,thead.hide-for-xlarge-only ,thead.hide-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up {display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.hide-for-medium-only ,tbody.show-for-medium-up ,tbody.hide-for-medium ,tbody.hide-for-medium-down ,tbody.show-for-large-only ,tbody.show-for-large-up ,tbody.show-for-large ,tbody.show-for-large-down ,tbody.hide-for-xlarge-only ,tbody.hide-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up {display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.hide-for-medium-only ,tr.show-for-medium-up ,tr.hide-for-medium ,tr.hide-for-medium-down ,tr.show-for-large-only ,tr.show-for-large-up ,tr.show-for-large ,tr.show-for-large-down ,tr.hide-for-xlarge-only ,tr.hide-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up {display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.hide-for-medium-down ,td.hide-for-medium-down ,th.show-for-large-only ,td.show-for-large-only ,th.show-for-large-up ,td.show-for-large-up ,th.show-for-large ,td.show-for-large ,th.show-for-large-down ,td.show-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.hide-for-xlarge-up ,td.hide-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up {display:table-cell !important;}}@media only screen and (min-width:90.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.hide-for-medium-only ,.show-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.hide-for-large-only ,.show-for-large-up ,.hide-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up {display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.show-for-medium-only ,.hide-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.show-for-large-only ,.hide-for-large-up ,.show-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up {display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.hidden-for-medium-only ,.visible-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.hidden-for-large-only ,.visible-for-large-up ,.hidden-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up {position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.visible-for-medium-only ,.hidden-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.visible-for-large-only ,.hidden-for-large-up ,.visible-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up {position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.hide-for-medium-only ,table.show-for-medium-up ,table.hide-for-medium ,table.hide-for-medium-down ,table.hide-for-large-only ,table.show-for-large-up ,table.hide-for-large ,table.hide-for-large-down ,table.show-for-xlarge-only ,table.show-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up {display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.hide-for-medium-only ,thead.show-for-medium-up ,thead.hide-for-medium ,thead.hide-for-medium-down ,thead.hide-for-large-only ,thead.show-for-large-up ,thead.hide-for-large ,thead.hide-for-large-down ,thead.show-for-xlarge-only ,thead.show-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up {display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.hide-for-medium-only ,tbody.show-for-medium-up ,tbody.hide-for-medium ,tbody.hide-for-medium-down ,tbody.hide-for-large-only ,tbody.show-for-large-up ,tbody.hide-for-large ,tbody.hide-for-large-down ,tbody.show-for-xlarge-only ,tbody.show-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up {display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.hide-for-medium-only ,tr.show-for-medium-up ,tr.hide-for-medium ,tr.hide-for-medium-down ,tr.hide-for-large-only ,tr.show-for-large-up ,tr.hide-for-large ,tr.hide-for-large-down ,tr.show-for-xlarge-only ,tr.show-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up {display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.hide-for-medium-down ,td.hide-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.show-for-large-up ,td.show-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.hide-for-large-down ,td.hide-for-large-down ,th.show-for-xlarge-only ,td.show-for-xlarge-only ,th.show-for-xlarge-up ,td.show-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up {display:table-cell !important;}}@media only screen and (min-width:120.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.hide-for-medium-only ,.show-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.hide-for-large-only ,.show-for-large-up ,.hide-for-large ,.hide-for-large-down ,.hide-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up {display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.show-for-medium-only ,.hide-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.show-for-large-only ,.hide-for-large-up ,.show-for-large ,.show-for-large-down ,.show-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up {display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.hidden-for-medium-only ,.visible-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.hidden-for-large-only ,.visible-for-large-up ,.hidden-for-large ,.hidden-for-large-down ,.hidden-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up {position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.visible-for-medium-only ,.hidden-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.visible-for-large-only ,.hidden-for-large-up ,.visible-for-large ,.visible-for-large-down ,.visible-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up {position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.hide-for-medium-only ,table.show-for-medium-up ,table.hide-for-medium ,table.hide-for-medium-down ,table.hide-for-large-only ,table.show-for-large-up ,table.hide-for-large ,table.hide-for-large-down ,table.hide-for-xlarge-only ,table.show-for-xlarge-up ,table.show-for-xxlarge-only ,table.show-for-xxlarge-up {display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.hide-for-medium-only ,thead.show-for-medium-up ,thead.hide-for-medium ,thead.hide-for-medium-down ,thead.hide-for-large-only ,thead.show-for-large-up ,thead.hide-for-large ,thead.hide-for-large-down ,thead.hide-for-xlarge-only ,thead.show-for-xlarge-up ,thead.show-for-xxlarge-only ,thead.show-for-xxlarge-up {display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.hide-for-medium-only ,tbody.show-for-medium-up ,tbody.hide-for-medium ,tbody.hide-for-medium-down ,tbody.hide-for-large-only ,tbody.show-for-large-up ,tbody.hide-for-large ,tbody.hide-for-large-down ,tbody.hide-for-xlarge-only ,tbody.show-for-xlarge-up ,tbody.show-for-xxlarge-only ,tbody.show-for-xxlarge-up {display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.hide-for-medium-only ,tr.show-for-medium-up ,tr.hide-for-medium ,tr.hide-for-medium-down ,tr.hide-for-large-only ,tr.show-for-large-up ,tr.hide-for-large ,tr.hide-for-large-down ,tr.hide-for-xlarge-only ,tr.show-for-xlarge-up ,tr.show-for-xxlarge-only ,tr.show-for-xxlarge-up {display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.hide-for-medium-down ,td.hide-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.show-for-large-up ,td.show-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.hide-for-large-down ,td.hide-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.show-for-xlarge-up ,td.show-for-xlarge-up ,th.show-for-xxlarge-only ,td.show-for-xxlarge-only ,th.show-for-xxlarge-up ,td.show-for-xxlarge-up {display:table-cell !important;}}.show-for-landscape ,.hide-for-portrait {display:inherit !important;}.hide-for-landscape ,.show-for-portrait {display:none !important;}table.hide-for-landscape ,table.show-for-portrait {display:table !important;}thead.hide-for-landscape ,thead.show-for-portrait {display:table-header-group !important;}tbody.hide-for-landscape ,tbody.show-for-portrait {display:table-row-group !important;}tr.hide-for-landscape ,tr.show-for-portrait {display:table-row !important;}td.hide-for-landscape ,td.show-for-portrait ,th.hide-for-landscape ,th.show-for-portrait {display:table-cell !important;}@media only screen and (orientation: landscape){.show-for-landscape ,.hide-for-portrait {display:inherit !important;}.hide-for-landscape ,.show-for-portrait {display:none !important;}table.show-for-landscape ,table.hide-for-portrait {display:table !important;}thead.show-for-landscape ,thead.hide-for-portrait {display:table-header-group !important;}tbody.show-for-landscape ,tbody.hide-for-portrait {display:table-row-group !important;}tr.show-for-landscape ,tr.hide-for-portrait {display:table-row !important;}td.show-for-landscape ,td.hide-for-portrait ,th.show-for-landscape ,th.hide-for-portrait {display:table-cell !important;}}@media only screen and (orientation: portrait){.show-for-portrait ,.hide-for-landscape {display:inherit !important;}.hide-for-portrait ,.show-for-landscape {display:none !important;}table.show-for-portrait ,table.hide-for-landscape {display:table !important;}thead.show-for-portrait ,thead.hide-for-landscape {display:table-header-group !important;}tbody.show-for-portrait ,tbody.hide-for-landscape {display:table-row-group !important;}tr.show-for-portrait ,tr.hide-for-landscape {display:table-row !important;}td.show-for-portrait ,td.hide-for-landscape ,th.show-for-portrait ,th.hide-for-landscape {display:table-cell !important;}}.show-for-touch {display:none !important;}.hide-for-touch {display:inherit !important;}.touch .show-for-touch {display:inherit !important;}.touch .hide-for-touch {display:none !important;}table.hide-for-touch {display:table !important;}.touch table.show-for-touch {display:table !important;}thead.hide-for-touch {display:table-header-group !important;}.touch thead.show-for-touch {display:table-header-group !important;}tbody.hide-for-touch {display:table-row-group !important;}.touch tbody.show-for-touch {display:table-row-group !important;}tr.hide-for-touch {display:table-row !important;}.touch tr.show-for-touch {display:table-row !important;}td.hide-for-touch {display:table-cell !important;}.touch td.show-for-touch {display:table-cell !important;}th.hide-for-touch {display:table-cell !important;}.touch th.show-for-touch {display:table-cell !important;}.print-only {display:none !important;}@media print{@page{margin:0.5cm;}* {background:transparent !important;color:#000000 !important;box-shadow:none !important;text-shadow:none !important;}.show-for-print {display:block;}.hide-for-print {display:none;}table.show-for-print {display:table !important;}thead.show-for-print {display:table-header-group !important;}tbody.show-for-print {display:table-row-group !important;}tr.show-for-print {display:table-row !important;}td.show-for-print {display:table-cell !important;}th.show-for-print {display:table-cell !important;}a ,a:visited {text-decoration:underline;}a[href]:after {content:" (" attr(href) ")";}abbr[title]:after {content:" (" attr(title) ")";}.ir a:after ,a[href^="javascript:"]:after ,a[href^="#"]:after {content:"";}pre ,blockquote {border:1px solid #999999;page-break-inside:avoid;}thead {display:table-header-group;}tr ,img {page-break-inside:avoid;}img {max-width:100% !important;}p ,h2 ,h3 {orphans:3;widows:3;}h2 ,h3 {page-break-after:avoid;}.hide-on-print {display:none !important;}.print-only {display:block !important;}.hide-for-print {display:none !important;}.show-for-print {display:inherit !important;}}@media print{.show-for-print {display:block;}.hide-for-print {display:none;}table.show-for-print {display:table !important;}thead.show-for-print {display:table-header-group !important;}tbody.show-for-print {display:table-row-group !important;}tr.show-for-print {display:table-row !important;}td.show-for-print {display:table-cell !important;}th.show-for-print {display:table-cell !important;}}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;font-stretch:condensed;src:local('Open Sans'),local('OpenSans'),url('opensans.woff') format('woff');}.hidden {display:none;}#footer {margin-top:20px;margin-bottom:10px;font-size:12px;color:#999999;}#footer a {color:#999999;}#footer a:hover {color:#333333;}.left-content {padding-top:40px;padding-left:20px;}.right-content {padding-top:10px;padding-left:50px;padding-right:50px;}.right-info {margin-top:15px;}.log-tab {background:#6f6f6f;color:#f2f2f2;padding:20px;font-size:14px;}table {border:0px;border-collapse:collapse;border-spacing:0;}table th {font-weight:normal !important;font-size:16px !important;background-color:#ffffff !important;border-bottom:1px solid #efefef !important;color:#333333 !important;}table td {font-size:0.8125rem;color:#555555 !important;}table tfoot {background-color:#ffffff !important;}table.dataTable td ,table.dataTable th {font-size:0.8125rem;text-align:left;padding:5px 10px;}table.dataTable td .button ,table.dataTable th .button {margin:0px;}table.dataTable input[type="checkbox"] {margin:3px 0.5ex !important;}table.dataTable textarea {min-height:33px !important;height:33px;padding:5px 10px;margin:0px !important;}table.dataTable select ,table.dataTable input[type="text"] {margin:0px !important;}table:not(.no-hover) tr.odd:hover td:not(.dataTables_empty) {background-color:#2ba6cb !important;cursor:pointer;color:#ffffff !important;}table:not(.no-hover) tr.even:hover td:not(.dataTables_empty) {background-color:#2ba6cb !important;cursor:pointer;color:#ffffff !important;}td.open-control:hover {cursor:pointer;}input.search {margin:0px;}.markrow {background-color:#cdebf5 !important;}.markrowselected {background-color:#2ba6cb !important;color:#ffffff;}.markrowchecked {background-color:#cdebf5;}.user-zone-container {position:relative;}.user-zone-container .user-zone-info {position:absolute;top:0px;right:0px;z-index:1;}.user-zone-container .user-zone-info .button {background:#ffffff;border:none;}.user-zone-container .user-zone-info .button:hover {background:#f5f5f5;}.white_button {background-color:#ffffff !important;border:none;}.white_button:hover {color:#0098c3 !important;}#logo {margin-top:10px;}.side-nav {padding-bottom:5px;padding-top:0px;border-right:1px solid #efefef;}.side-nav .topTab {margin-top:10px;margin-bottom:5px;}.side-nav .topTab a {color:#333333 !important;}.side-nav .subTab {margin-left:25px;border-left:2px solid #efefef;}.side-nav .subTab:hover {border-left:2px solid #999999;}.side-nav .subTab a {color:#777777 !important;}.side-nav .subTab a:hover {color:#555555 !important;}.side-nav li {font-size:0.75rem;}.side-nav li a {padding:0.2323rem 0.875rem !important;}.side-nav .navigation-active-li {border-left:2px solid #008cba !important;}.side-nav .navigation-active-li a {color:#222222 !important;}.side-nav i {margin-right:3px;}.header-row {margin-bottom:20px !important;margin-top:25px !important;}.header-row .resource-id {color:#999999;}.header-row .resource-info-header {color:#777777;}input[type="text"] ,select {height:2.0625rem !important;padding:0.3125rem !important;color:rgba(0, 0, 0, 0.75) !important;}.subheader {color:#555555;}.header-info {margin-top:-5px;margin-bottom:5px;}.button.secondary {color:#555555;}.button {margin-right:3px;}.f-dropdown {text-align:left;}.f-dropdown li {padding:0px 10px;}.fa-question-circle {color:#afafaf !important;}.value_td {text-overflow:ellipsis;word-break:break-all;width:100%;}.key_td {color:#999999 !important;}.configuration_attrs .key_td {width:30%;}.reveal-modal fieldset {margin-bottom:30px !important;}.has-tip {margin-left:10px;color:#555555;font-weight:normal;}.dashboard-widget-footer {margin-bottom:50px !important;}.totals-info span {color:#777777;}.totals-info a {color:#777777 !important;}.totals-info a:hover {color:#0098c3 !important;}.totals-info small {color:#acacac;}.noUiSlider {border:none;margin-top:12px;}.noUiSlider.horizontal {width:100% !important;}fieldset {margin-top:0px;margin-bottom:20px;-webkit-border-radius:3px;border-radius:3px;padding:15px;}fieldset legend {font-weight:normal !important;font-size:16px !important;color:#555555;}.label.allocated {background-color:#2ba6cb;color:#ffffff;}.label.real {background-color:#707d85;color:#ffffff;}.label.total {background-color:#ac5a62;color:#ffffff;}.success-color {color:#43ac6a !important;}.alert-color {color:#ac5a62 !important;}.tabs dd {border:1px solid #efefef;}.tabs dd.active a {font-weight:bold !important;}.tabs.wizard_tabs dd {border:1px solid #dfdfdf !important;}.bordered-tabs .tabs-content {border-right:0px;border-bottom:0px;border-left:0px;border-radius:3px;min-height:300px;}.bordered-tabs .tabs-content.vertical {border-left:1px solid #cfcfcf;}.bordered-tabs .tabs-content:not(.vertical) {border-top:1px solid #cfcfcf;margin-top:-2px;}.bordered-tabs dl dd {border:0px;}.bordered-tabs dl.vertical .remove-tab {float:right !important;margin-top:4px;}.bordered-tabs dl.vertical dd.active {border-left:3px solid #008cba;}.bordered-tabs dl.vertical dd:not(.active) {border-left:3px solid #ffffff;}.bordered-tabs dl.vertical dd:not(.active):hover {border-left:3px solid #999999;}.bordered-tabs dl:not(.vertical) dd.active {border-bottom:2px solid #008cba;}.bordered-tabs dl:not(.vertical) dd:not(.active):hover {border-bottom:2px solid #999999;}.bordered-tabs dl dd.active a {background:#ffffff;color:#222222;font-weight:normal !important;}.bordered-tabs dl dd:not(.active) a {color:#777777 !important;background:#ffffff;}.bordered-tabs dl dd:not(.active) a:hover {color:#333333 !important;}.remove-tab:hover {color:#f04124;cursor:pointer;}.right-info-tabs dd {width:84px;}.right-info-tabs i {font-size:20px;margin-bottom:-10px;}.right-info-tabs a {color:#555555 !important;padding:10px 0px !important;font-size:12px !important;}.right-info-tabs dd.active a {color:#333333 !important;}.reveal-modal h3 {margin-left:-20px;margin-bottom:25px !important;}.reveal-body {padding:5px 20px;}.form_buttons {padding-top:30px;}.quotas fieldset {padding-top:5px;padding-bottom:0px;}.provision-bullet-item .progress {height:10px;border:1px solid #efefef;margin-bottom:0px;}.provision-header {font-size:0.875rem;border-bottom:1px solid #efefef;}.provision-header li {padding-bottom:5px;}.provision-header li.active {border-bottom:2px solid #0098c3;}.quota_table {margin-top:0px !important;margin-bottom:0px !important;clear:both;max-width:none !important;width:100%;}ul.pagination li a {background:#f5f5f5;border:1px solid #efefef;color:#555555;}ul.pagination li.unavailable a {background:#ffffff;border:0px;color:#999999;}ul.pagination li.current a {background:#ffffff;border:1px solid #efefef;color:#333333;}ul.pagination li.current a:hover {background:#ffffff;border:1px solid #efefef;color:#333333;}div.dataTables_length label ,div.dataTables_filter label ,div.dataTables_info {color:#999999;font-weight:normal;}div.dataTables_length label {float:left;text-align:left;margin-bottom:0;}div.dataTables_length {float:right !important;}div.dataTables_length select {width:75px;margin-bottom:0;font-size:10px !important;height:26px !important;margin-left:15px;}div.dataTables_filter label {float:right;margin-bottom:0;}div.dataTables_filter input {display:inline-block !important;width:auto !important;margin-bottom:0;}div.dataTables_info {padding-top:2px;font-size:0.875em;}div.dataTables_paginate {float:right;margin:0;}table.dataTable {clear:both;margin:0.5em 0 !important;max-width:none !important;width:100%;}table.dataTable tr {background:none !important;}table.dataTable thead .sorting ,table.dataTable thead .sorting_asc ,table.dataTable thead .sorting_desc ,table.dataTable thead .sorting_asc_disabled ,table.dataTable thead .sorting_desc_disabled {cursor:pointer;*cursor:hand;}table.dataTable thead .sorting_asc {background:url('../images/sort_asc.png') no-repeat center right;}table.dataTable thead .sorting_desc {background:url('../images/sort_desc.png') no-repeat center right;}table.dataTable th:active {outline:none;}div.dataTables_scrollHead table {margin-bottom:0 !important;}div.dataTables_scrollBody table {border-top:none;margin-top:0 !important;margin-bottom:0 !important;}div.dataTables_scrollBody tbody tr:first-child th ,div.dataTables_scrollBody tbody tr:first-child td {border-top:none;}div.dataTables_scrollFoot table {margin-top:0 !important;border-top:none;}.jGrowl-notification h1 {display:none !important;}.jGrowl-notification ,.jGrowl-notify-submit {background-color:#dfdfdf !important;color:#333333;width:335px !important;}.jGrowl-notify-error {background-color:#f39999 !important;color:#660000;}.jGrowl-closer {background-color:#555555 !important;width:335px !important;}.jGrowl-close {font-size:1.5em !important;}.alert-box-error {border:0px !important;background-color:#f39999 !important;color:#660000;}.custom-panel {border-style:solid;border-width:1px;border-color:#dcdcdc;margin-bottom:1.25rem;padding:1.25rem;background:#f7f7f7;color:#333333;border-color:#efefef;margin-bottom:0px;}.custom-panel>:first-child {margin-top:0;}.custom-panel>:last-child {margin-bottom:0;}.custom-panel h1 ,.custom-panel h2 ,.custom-panel h3 ,.custom-panel h4 ,.custom-panel h5 ,.custom-panel h6 ,.custom-panel p ,.custom-panel li ,.custom-panel dl {color:#333333;}.custom-panel h1 ,.custom-panel h2 ,.custom-panel h3 ,.custom-panel h4 ,.custom-panel h5 ,.custom-panel h6 {line-height:1;margin-bottom:0.625rem;}.custom-panel h1.subheader ,.custom-panel h2.subheader ,.custom-panel h3.subheader ,.custom-panel h4.subheader ,.custom-panel h5.subheader ,.custom-panel h6.subheader {line-height:1.4;}.provision-pricing-table {border:1px;margin-left:0;margin-bottom:0;border:1px solid #efefef !important;background:#ffffff !important;padding-bottom:5px !important;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;background:#f7f7f7;}.provision-pricing-table * {list-style:none;line-height:1;}.provision-pricing-table .provision-title {background-color:#f7f7f7;padding:0.625rem;text-align:center;color:#555555;font-weight:bold;font-size:1rem;font-family:"Open Sans",sans-serif;background-color:#f8f8f8 !important;border-bottom:1px solid #efefef;font-size:0.875rem;margin-bottom:5px;font-weight:normal;color:#555555;}.provision-pricing-table .provision-price {background-color:#f6f6f6;padding:0.9375rem 1.25rem;text-align:center;color:#333333;font-weight:normal;font-size:2rem;font-family:"Open Sans",sans-serif;font-size:0.8125rem;}.provision-pricing-table .provision-description {background-color:#ffffff;padding:0.625rem;text-align:center;color:#999999;font-size:0.75rem;font-weight:normal;line-height:1.4;border-bottom:none;font-size:0.8125rem;}.provision-pricing-table .provision-bullet-item {background-color:#ffffff;padding:0.3125rem;text-align:center;color:#777777;font-size:0.875rem;font-weight:normal;border-bottom:none;font-size:0.8125rem;padding:5px 10px;}.provision-pricing-table .provision-bullet-item-last {background-color:#ffffff;padding:0.3125rem;text-align:center;color:#777777;font-size:0.875rem;font-weight:normal;border-bottom:none;font-size:0.8125rem;color:#999999;margin-top:10px;padding:5px 10px;}.provision-pricing-table .provision-cta {background-color:#ffffff;text-align:center;padding:1.25rem 1.25rem 0;font-size:0.8125rem;}.provision-pricing-table li {background:none !important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.provision-pricing-table.hoverable.only-one:not(.selected):hover {cursor:pointer;}.provision-pricing-table.hoverable.more-than-one:hover {cursor:pointer;}.provision-pricing-table .only-on-hover {color:#cfcfcf !important;}.provision-pricing-table:not(.selected):hover {border-color:#afafaf !important;}.provision-pricing-table:not(.selected):hover .only-on-hover {color:#0099c3 !important;}.provision-pricing-table.selected {border:1px solid #0099c3 !important;}.provision-pricing-table_vm_info li ,.provision-pricing-table_flow_info li ,.provision-pricing-table_user_info li {padding:5px 0px !important;font-size:0.875rem !important;}.deploying-bg {background-color:#c7731f !important;}.error-bg {background-color:#cf280e !important;}.powering_off-bg {background-color:#cf280e !important;}.off-bg {background-color:#999999;}.running-bg {background-color:#368a54 !important;}.deploying-color {color:#c7731f;}.error-color {color:#cf280e;}.powering_off-color {color:#cf280e;}.off-color {color:#555555;}.running-color {color:#368a54;}.provision_back ,.provision_show_vm_accordion ,.provision_show_user_accordion ,.provision_show_flow_accordion {padding:0px !important;}.provision-input {border-color:#dfdfdf;border-radius:3px;}.provision-search-input {width:200px !important;height:34px !important;border-radius:3px;border-color:#efefef;margin:0px !important;}#provision_list_vms_filter select ,#provision_list_templates_filter select ,#provision_list_flows_filter select {width:200px !important;height:35px !important;border-radius:3px;border-color:#efefef;float:right !important;margin:5px 10px 0px 0px;}.accordion a.accordion-a {border:1px solid #efefef;background:#f7f7f7;border-radius:5px;color:#555555 !important;}.alert-box.secondary {margin-top:10px;}hr {border-color:#dfdfdf;}.provision-logo img {padding:10px;border-radius:3px;height:80px;}.provision_action_icons {margin-bottom:5px;font-size:14px;}.provision_action_icons .white {color:#007d9c;background:#ffffff;border-color:#0098c3;}.provision_action_icons .button {margin-right:3px;}.provision_action_icons a {font-weight:bold;}.policies_table th {font-size:14px !important;}.accordion_advanced {margin-bottom:10px;}.accordion_advanced>a {padding:10px 20px;font-size:13px;color:#555555;background:#f7f7f7;border:1px solid #f7f7f7;}.accordion_advanced > a .fa {margin-right:10px;color:#777777;}.accordion_advanced > a.active {background:#ffffff;border:0px;border-bottom:2px solid #008cba;font-weight:bold;}.accordion_advanced > a.active .fa-chevron-down {display:none;}.accordion_advanced > a:not(.active) {border:1px solid #efefef;border-radius:3px;}.accordion_advanced > a:not(.active) .fa-chevron-up {display:none;}.accordion_advanced > a:hover {background:#dfdfdf;color:#333333;}.accordion_advanced>.content {border-top:1px solid #cfcfcf;padding:20px;margin-top:8px;}.accordion dd.active .only-not-active {display:none;}.accordion dd.active .only-active {display:inline-block;}.accordion dd:not(.active) .only-active {display:none;}.accordion dd:not(.active) .only-not-active {display:inline-block;}.accordion_list dd>a {padding:0px;background:#ffffff !important;}.accordion_list dd>.content {padding-top:5px !important;padding:0px !important;}.accordion_list dd:first-child>h3 {border-bottom:1px solid #efefef;padding-bottom:10px;}.accordion_list dd:first-child > h3 .button {margin:0px 3px;}.accordion_list dd:first-child > h3 select {height:33px !important;margin:0px 5px 0px 0px !important;float:right !important;width:auto !important;}.accordion_list dd:first-child > h3 input {margin:0px !important;}.vm_info_inline_list .fa:not(.fa-square) {color:#afafaf;}.vm_info_inline_list li {margin-right:30px;}.range-slider-active-segment {background:#cfcfcf;}.tooltip {z-index:2000;}.flot-tick-label {color:#999999;}#li_support-tab {background:#f7f7f7;border-radius:3px;padding:5px 0px;margin-top:30px;}#li_support-tab .support_title {color:#333333;}#li_support-tab .support_info {margin-top:10px;width:100%;}#li_support-tab .support_pending {color:#777777;}#li_support-tab .support_open {color:#777777;}#li_support-tab .support_button {margin-top:15px;}#li_support-tab .support_connect {margin-top:10px;width:100%;color:#777777;}#li_support-tab .support_connect_button {margin-top:15px;}#user_ssh_public_key_text ,#config_ssh_public_key_text {font-size:0.875rem;color:#777777;padding:0px 10px;overflow-x:hidden;text-overflow:ellipsis;height:120px;}.vm-action-disabled {color:#cfcfcf !important;cursor:default !important;}.inline-list {margin:0px;}.inline-list li:not(.right) {margin-left:0px;margin-right:1.375rem;}.inline-list li.right {margin-left:0px;margin-right:0px;}#loading {width:100%;height:100%;top:0px;left:0px;position:fixed;display:block;opacity:0.7;background-color:#ffffff;z-index:99;text-align:center;}#loading-content {position:absolute;top:200px;z-index:100;}.actions_row input {height:34px;}.nowrap {white-space:nowrap;}.tree ,.tree ul {font:inherit;list-style-type:none;margin-left:1em;padding:0;position:relative;}.tree li {margin:0;padding:0 1em;position:relative;}.tree li::before ,.tree li::after {content:'';position:absolute;left:0;}.tree li::before {border-top:1px solid #999999;top:0.5em;width:10px;height:0;}.tree li:after {border-left:1px solid #999999;height:100%;width:0px;top:-0.5em;}.tree>li::after {top:0.5em;}.tree>li:last-child::after {display:none;}.tree ul:last-child li:last-child:after {height:1em;} \ No newline at end of file diff --git a/src/sunstone/public/css/app.min.css b/src/sunstone/public/css/app.min.css deleted file mode 100644 index e9aa38b2fc..0000000000 --- a/src/sunstone/public/css/app.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font:SIL OFL 1.1,CSS:MIT License) */@font-face{font-family:'FontAwesome';src:url(../bower_components/fontawesome/fonts/fontawesome-webfont.eot?v=4.3.0);src:url(../bower_components/fontawesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../bower_components/fontawesome/fonts/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../bower_components/fontawesome/fonts/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../bower_components/fontawesome/fonts/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../bower_components/fontawesome/fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.jGrowl{z-index:9999;color:#fff;font-size:12px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:fixed}.jGrowl.top-left{left:0;top:0}.jGrowl.top-right{right:0;top:0}.jGrowl.bottom-left{left:0;bottom:0}.jGrowl.bottom-right{right:0;bottom:0}.jGrowl.center{top:0;width:50%;left:25%}.jGrowl.center .jGrowl-closer,.jGrowl.center .jGrowl-notification{margin-left:auto;margin-right:auto}.jGrowl-notification{background-color:#000;opacity:.9;-ms-filter:alpha(90);filter:alpha(90);zoom:1;width:250px;padding:10px;margin:10px;text-align:left;display:none;border-radius:5px;word-break:break-all;min-height:40px}.jGrowl-notification .ui-state-highlight,.jGrowl-notification .ui-widget-content .ui-state-highlight,.jGrowl-notification .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}.jGrowl-notification .jGrowl-header{font-weight:700;font-size:.85em}.jGrowl-notification .jGrowl-close{background-color:transparent;color:inherit;border:none;z-index:99;float:right;font-weight:700;font-size:1em;cursor:pointer}.jGrowl-closer{background-color:#000;opacity:.9;-ms-filter:alpha(90);filter:alpha(90);zoom:1;width:250px;padding:10px;margin:10px;display:none;border-radius:5px;word-break:break-all;padding-top:4px;padding-bottom:4px;cursor:pointer;font-size:.9em;font-weight:700;text-align:center}.jGrowl-closer .ui-state-highlight,.jGrowl-closer .ui-widget-content .ui-state-highlight,.jGrowl-closer .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}@media print{.jGrowl{display:none}}.noUiSlider,.noUiSlider *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:block;cursor:default;}.noUiSlider{position:relative;}.noUiSlider a{position:absolute;z-index:1;}.noUiSlider a:nth-child(2){background:inherit !important;}.noUiSlider.vertical a{width:100%;bottom:0;}.noUiSlider.horizontal a{height:100%;right:0;}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.noUiSlider:before,body.TOUCH,.noUiSlider div{-ms-touch-action:none;}.noUiSlider:before{display:block;position:absolute;width:150%;left:-25%;height:400%;top:-150%;content:"";z-index:-1;}.noUiSlider.vertical:before{width:400%;left:-150%;height:150%;top:-25%;}}.noUiSlider{border:1px solid #908d84;border-radius:3px;}.noUiSlider.connect a,.noUiSlider.connect.lower{background:#2ba6cb;}.noUiSlider,.noUiSlider.connect.lower a{background:#cdebf5;}.noUiSlider.disabled,.noUiSlider.disabled.connect.lower a{background:#ccc;box-shadow:none;}.noUiSlider div{height:18px;width:18px;border:1px solid #99968f;border-radius:3px;background:#e9e9e9;}.noUiSlider.disabled div{background:transparent;}.noUiSlider.horizontal{width:300px;height:10px;}.noUiSlider.horizontal div{margin:-5px 0 0 -9px;}.noUiSlider.vertical{width:10px;height:300px;}.noUiSlider.vertical div{margin:-9px 0 0 -5px;}meta.foundation-version{font-family:"/5.5.1/";}meta.foundation-mq-small{font-family:"/only screen/";width:0;}meta.foundation-mq-small-only{font-family:"/only screen and (max-width:40em)/";width:0;}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}meta.foundation-mq-medium-only{font-family:"/only screen and (min-width:40.063em) and (max-width:64em)/";width:40.063em;}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.063em)/";width:64.063em;}meta.foundation-mq-large-only{font-family:"/only screen and (min-width:64.063em) and (max-width:90em)/";width:64.063em;}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.063em)/";width:90.063em;}meta.foundation-mq-xlarge-only{font-family:"/only screen and (min-width:90.063em) and (max-width:120em)/";width:90.063em;}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.063em)/";width:120.063em;}meta.foundation-data-attribute-namespace{font-family:false;}html ,body{height:100%;}* ,*:before ,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html ,body{font-size:100%;}body{background:#ffffff;color:#555555;padding:0;margin:0;font-family:"Open Sans",sans-serif;font-weight:normal;font-style:normal;line-height:1.5;position:relative;cursor:auto;}a:hover{cursor:pointer;}img{max-width:100%;height:auto;}img{-ms-interpolation-mode:bicubic;}#map_canvas img ,#map_canvas embed ,#map_canvas object ,.map_canvas img ,.map_canvas embed ,.map_canvas object{max-width:none !important;}.left{float:left !important;}.right{float:right !important;}.clearfix:before ,.clearfix:after{content:" ";display:table;}.clearfix:after{clear:both;}.hide{display:none;}.invisible{visibility:hidden;}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}img{display:inline-block;vertical-align:middle;}textarea{height:auto;min-height:50px;}select{width:100%;}.row{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:75rem;}.row:before ,.row:after{content:" ";display:table;}.row:after{clear:both;}.row.collapse>.column ,.row.collapse>.columns{padding-left:0;padding-right:0;}.row.collapse .row{margin-left:0;margin-right:0;}.row .row{width:auto;margin-left:-0.9375rem;margin-right:-0.9375rem;margin-top:0;margin-bottom:0;max-width:none;}.row .row:before ,.row .row:after{content:" ";display:table;}.row .row:after{clear:both;}.row .row.collapse{width:auto;margin:0;max-width:none;}.row .row.collapse:before ,.row .row.collapse:after{content:" ";display:table;}.row .row.collapse:after{clear:both;}.column ,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left;}[class*="column"]+[class*="column"]:last-child{float:right;}[class*="column"]+[class*="column"].end{float:left;}@media only screen{.small-push-0{position:relative;left:0%;right:auto;}.small-pull-0{position:relative;right:0%;left:auto;}.small-push-1{position:relative;left:8.33333%;right:auto;}.small-pull-1{position:relative;right:8.33333%;left:auto;}.small-push-2{position:relative;left:16.66667%;right:auto;}.small-pull-2{position:relative;right:16.66667%;left:auto;}.small-push-3{position:relative;left:25%;right:auto;}.small-pull-3{position:relative;right:25%;left:auto;}.small-push-4{position:relative;left:33.33333%;right:auto;}.small-pull-4{position:relative;right:33.33333%;left:auto;}.small-push-5{position:relative;left:41.66667%;right:auto;}.small-pull-5{position:relative;right:41.66667%;left:auto;}.small-push-6{position:relative;left:50%;right:auto;}.small-pull-6{position:relative;right:50%;left:auto;}.small-push-7{position:relative;left:58.33333%;right:auto;}.small-pull-7{position:relative;right:58.33333%;left:auto;}.small-push-8{position:relative;left:66.66667%;right:auto;}.small-pull-8{position:relative;right:66.66667%;left:auto;}.small-push-9{position:relative;left:75%;right:auto;}.small-pull-9{position:relative;right:75%;left:auto;}.small-push-10{position:relative;left:83.33333%;right:auto;}.small-pull-10{position:relative;right:83.33333%;left:auto;}.small-push-11{position:relative;left:91.66667%;right:auto;}.small-pull-11{position:relative;right:91.66667%;left:auto;}.column ,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.small-1{width:8.33333%;}.small-2{width:16.66667%;}.small-3{width:25%;}.small-4{width:33.33333%;}.small-5{width:41.66667%;}.small-6{width:50%;}.small-7{width:58.33333%;}.small-8{width:66.66667%;}.small-9{width:75%;}.small-10{width:83.33333%;}.small-11{width:91.66667%;}.small-12{width:100%;}.small-offset-0{margin-left:0% !important;}.small-offset-1{margin-left:8.33333% !important;}.small-offset-2{margin-left:16.66667% !important;}.small-offset-3{margin-left:25% !important;}.small-offset-4{margin-left:33.33333% !important;}.small-offset-5{margin-left:41.66667% !important;}.small-offset-6{margin-left:50% !important;}.small-offset-7{margin-left:58.33333% !important;}.small-offset-8{margin-left:66.66667% !important;}.small-offset-9{margin-left:75% !important;}.small-offset-10{margin-left:83.33333% !important;}.small-offset-11{margin-left:91.66667% !important;}.small-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.small-centered ,.columns.small-centered{margin-left:auto;margin-right:auto;float:none;}.column.small-uncentered ,.columns.small-uncentered{margin-left:0;margin-right:0;float:left;}.column.small-centered:last-child ,.columns.small-centered:last-child{float:none;}.column.small-uncentered:last-child ,.columns.small-uncentered:last-child{float:left;}.column.small-uncentered.opposite ,.columns.small-uncentered.opposite{float:right;}.row.small-collapse>.column ,.row.small-collapse>.columns{padding-left:0;padding-right:0;}.row.small-collapse .row{margin-left:0;margin-right:0;}.row.small-uncollapse>.column ,.row.small-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left;}}@media only screen and (min-width:40.063em){.medium-push-0{position:relative;left:0%;right:auto;}.medium-pull-0{position:relative;right:0%;left:auto;}.medium-push-1{position:relative;left:8.33333%;right:auto;}.medium-pull-1{position:relative;right:8.33333%;left:auto;}.medium-push-2{position:relative;left:16.66667%;right:auto;}.medium-pull-2{position:relative;right:16.66667%;left:auto;}.medium-push-3{position:relative;left:25%;right:auto;}.medium-pull-3{position:relative;right:25%;left:auto;}.medium-push-4{position:relative;left:33.33333%;right:auto;}.medium-pull-4{position:relative;right:33.33333%;left:auto;}.medium-push-5{position:relative;left:41.66667%;right:auto;}.medium-pull-5{position:relative;right:41.66667%;left:auto;}.medium-push-6{position:relative;left:50%;right:auto;}.medium-pull-6{position:relative;right:50%;left:auto;}.medium-push-7{position:relative;left:58.33333%;right:auto;}.medium-pull-7{position:relative;right:58.33333%;left:auto;}.medium-push-8{position:relative;left:66.66667%;right:auto;}.medium-pull-8{position:relative;right:66.66667%;left:auto;}.medium-push-9{position:relative;left:75%;right:auto;}.medium-pull-9{position:relative;right:75%;left:auto;}.medium-push-10{position:relative;left:83.33333%;right:auto;}.medium-pull-10{position:relative;right:83.33333%;left:auto;}.medium-push-11{position:relative;left:91.66667%;right:auto;}.medium-pull-11{position:relative;right:91.66667%;left:auto;}.column ,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.medium-1{width:8.33333%;}.medium-2{width:16.66667%;}.medium-3{width:25%;}.medium-4{width:33.33333%;}.medium-5{width:41.66667%;}.medium-6{width:50%;}.medium-7{width:58.33333%;}.medium-8{width:66.66667%;}.medium-9{width:75%;}.medium-10{width:83.33333%;}.medium-11{width:91.66667%;}.medium-12{width:100%;}.medium-offset-0{margin-left:0% !important;}.medium-offset-1{margin-left:8.33333% !important;}.medium-offset-2{margin-left:16.66667% !important;}.medium-offset-3{margin-left:25% !important;}.medium-offset-4{margin-left:33.33333% !important;}.medium-offset-5{margin-left:41.66667% !important;}.medium-offset-6{margin-left:50% !important;}.medium-offset-7{margin-left:58.33333% !important;}.medium-offset-8{margin-left:66.66667% !important;}.medium-offset-9{margin-left:75% !important;}.medium-offset-10{margin-left:83.33333% !important;}.medium-offset-11{margin-left:91.66667% !important;}.medium-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.medium-centered ,.columns.medium-centered{margin-left:auto;margin-right:auto;float:none;}.column.medium-uncentered ,.columns.medium-uncentered{margin-left:0;margin-right:0;float:left;}.column.medium-centered:last-child ,.columns.medium-centered:last-child{float:none;}.column.medium-uncentered:last-child ,.columns.medium-uncentered:last-child{float:left;}.column.medium-uncentered.opposite ,.columns.medium-uncentered.opposite{float:right;}.row.medium-collapse>.column ,.row.medium-collapse>.columns{padding-left:0;padding-right:0;}.row.medium-collapse .row{margin-left:0;margin-right:0;}.row.medium-uncollapse>.column ,.row.medium-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.push-0{position:relative;left:0%;right:auto;}.pull-0{position:relative;right:0%;left:auto;}.push-1{position:relative;left:8.33333%;right:auto;}.pull-1{position:relative;right:8.33333%;left:auto;}.push-2{position:relative;left:16.66667%;right:auto;}.pull-2{position:relative;right:16.66667%;left:auto;}.push-3{position:relative;left:25%;right:auto;}.pull-3{position:relative;right:25%;left:auto;}.push-4{position:relative;left:33.33333%;right:auto;}.pull-4{position:relative;right:33.33333%;left:auto;}.push-5{position:relative;left:41.66667%;right:auto;}.pull-5{position:relative;right:41.66667%;left:auto;}.push-6{position:relative;left:50%;right:auto;}.pull-6{position:relative;right:50%;left:auto;}.push-7{position:relative;left:58.33333%;right:auto;}.pull-7{position:relative;right:58.33333%;left:auto;}.push-8{position:relative;left:66.66667%;right:auto;}.pull-8{position:relative;right:66.66667%;left:auto;}.push-9{position:relative;left:75%;right:auto;}.pull-9{position:relative;right:75%;left:auto;}.push-10{position:relative;left:83.33333%;right:auto;}.pull-10{position:relative;right:83.33333%;left:auto;}.push-11{position:relative;left:91.66667%;right:auto;}.pull-11{position:relative;right:91.66667%;left:auto;}}@media only screen and (min-width:64.063em){.large-push-0{position:relative;left:0%;right:auto;}.large-pull-0{position:relative;right:0%;left:auto;}.large-push-1{position:relative;left:8.33333%;right:auto;}.large-pull-1{position:relative;right:8.33333%;left:auto;}.large-push-2{position:relative;left:16.66667%;right:auto;}.large-pull-2{position:relative;right:16.66667%;left:auto;}.large-push-3{position:relative;left:25%;right:auto;}.large-pull-3{position:relative;right:25%;left:auto;}.large-push-4{position:relative;left:33.33333%;right:auto;}.large-pull-4{position:relative;right:33.33333%;left:auto;}.large-push-5{position:relative;left:41.66667%;right:auto;}.large-pull-5{position:relative;right:41.66667%;left:auto;}.large-push-6{position:relative;left:50%;right:auto;}.large-pull-6{position:relative;right:50%;left:auto;}.large-push-7{position:relative;left:58.33333%;right:auto;}.large-pull-7{position:relative;right:58.33333%;left:auto;}.large-push-8{position:relative;left:66.66667%;right:auto;}.large-pull-8{position:relative;right:66.66667%;left:auto;}.large-push-9{position:relative;left:75%;right:auto;}.large-pull-9{position:relative;right:75%;left:auto;}.large-push-10{position:relative;left:83.33333%;right:auto;}.large-pull-10{position:relative;right:83.33333%;left:auto;}.large-push-11{position:relative;left:91.66667%;right:auto;}.large-pull-11{position:relative;right:91.66667%;left:auto;}.column ,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.large-1{width:8.33333%;}.large-2{width:16.66667%;}.large-3{width:25%;}.large-4{width:33.33333%;}.large-5{width:41.66667%;}.large-6{width:50%;}.large-7{width:58.33333%;}.large-8{width:66.66667%;}.large-9{width:75%;}.large-10{width:83.33333%;}.large-11{width:91.66667%;}.large-12{width:100%;}.large-offset-0{margin-left:0% !important;}.large-offset-1{margin-left:8.33333% !important;}.large-offset-2{margin-left:16.66667% !important;}.large-offset-3{margin-left:25% !important;}.large-offset-4{margin-left:33.33333% !important;}.large-offset-5{margin-left:41.66667% !important;}.large-offset-6{margin-left:50% !important;}.large-offset-7{margin-left:58.33333% !important;}.large-offset-8{margin-left:66.66667% !important;}.large-offset-9{margin-left:75% !important;}.large-offset-10{margin-left:83.33333% !important;}.large-offset-11{margin-left:91.66667% !important;}.large-reset-order{margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.large-centered ,.columns.large-centered{margin-left:auto;margin-right:auto;float:none;}.column.large-uncentered ,.columns.large-uncentered{margin-left:0;margin-right:0;float:left;}.column.large-centered:last-child ,.columns.large-centered:last-child{float:none;}.column.large-uncentered:last-child ,.columns.large-uncentered:last-child{float:left;}.column.large-uncentered.opposite ,.columns.large-uncentered.opposite{float:right;}.row.large-collapse>.column ,.row.large-collapse>.columns{padding-left:0;padding-right:0;}.row.large-collapse .row{margin-left:0;margin-right:0;}.row.large-uncollapse>.column ,.row.large-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left;}.push-0{position:relative;left:0%;right:auto;}.pull-0{position:relative;right:0%;left:auto;}.push-1{position:relative;left:8.33333%;right:auto;}.pull-1{position:relative;right:8.33333%;left:auto;}.push-2{position:relative;left:16.66667%;right:auto;}.pull-2{position:relative;right:16.66667%;left:auto;}.push-3{position:relative;left:25%;right:auto;}.pull-3{position:relative;right:25%;left:auto;}.push-4{position:relative;left:33.33333%;right:auto;}.pull-4{position:relative;right:33.33333%;left:auto;}.push-5{position:relative;left:41.66667%;right:auto;}.pull-5{position:relative;right:41.66667%;left:auto;}.push-6{position:relative;left:50%;right:auto;}.pull-6{position:relative;right:50%;left:auto;}.push-7{position:relative;left:58.33333%;right:auto;}.pull-7{position:relative;right:58.33333%;left:auto;}.push-8{position:relative;left:66.66667%;right:auto;}.pull-8{position:relative;right:66.66667%;left:auto;}.push-9{position:relative;left:75%;right:auto;}.pull-9{position:relative;right:75%;left:auto;}.push-10{position:relative;left:83.33333%;right:auto;}.pull-10{position:relative;right:83.33333%;left:auto;}.push-11{position:relative;left:91.66667%;right:auto;}.pull-11{position:relative;right:91.66667%;left:auto;}}.accordion{margin-bottom:0;}.accordion:before ,.accordion:after{content:" ";display:table;}.accordion:after{clear:both;}.accordion .accordion-navigation ,.accordion dd{display:block;margin-bottom:0 !important;}.accordion .accordion-navigation.active>a ,.accordion dd.active>a{background:#f0f0f0;}.accordion .accordion-navigation>a ,.accordion dd>a{background:#f7f7f7;color:#333333;padding:1rem;display:block;font-family:"Open Sans",sans-serif;font-size:1rem;}.accordion .accordion-navigation > a:hover ,.accordion dd > a:hover{background:#ebebeb;}.accordion .accordion-navigation>.content ,.accordion dd>.content{display:none;padding:0px 10px;}.accordion .accordion-navigation > .content.active ,.accordion dd > .content.active{display:block;background:#ffffff;}.alert-box{border-style:solid;border-width:1px;display:block;font-weight:normal;margin-bottom:1.25rem;position:relative;padding:0.875rem 1.5rem 0.875rem 0.875rem;font-size:0.8125rem;transition:opacity 300ms ease-out;background-color:#0098c3;border-color:#0083a8;color:#ffffff;}.alert-box .close{font-size:1.375rem;padding:0 6px 4px;line-height:0.9;position:absolute;top:50%;margin-top:-0.6875rem;right:0.25rem;color:#333333;opacity:0.3;background:inherit;}.alert-box .close:hover ,.alert-box .close:focus{opacity:0.5;}.alert-box.radius{border-radius:3px;}.alert-box.round{border-radius:1000px;}.alert-box.success{background-color:#43ac6a;border-color:#3a945b;color:#ffffff;}.alert-box.alert{background-color:#f04124;border-color:#de2b0f;color:#ffffff;}.alert-box.secondary{background-color:#f7f7f7;border-color:#d4d4d4;color:#545454;}.alert-box.warning{background-color:#f08a24;border-color:#de770f;color:#ffffff;}.alert-box.info{background-color:#a0d3e8;border-color:#74bfdd;color:#545454;}.alert-box.alert-close{opacity:0;}[class*="block-grid-"]{display:block;padding:0;margin:0 -0.625rem;}[class*="block-grid-"]:before ,[class*="block-grid-"]:after{content:" ";display:table;}[class*="block-grid-"]:after{clear:both;}[class*="block-grid-"]>li{display:block;height:auto;float:left;padding:0 0.625rem 1.25rem;}@media only screen{.small-block-grid-1>li{width:100%;list-style:none;}.small-block-grid-1 > li:nth-of-type(1n){clear:none;}.small-block-grid-1 > li:nth-of-type(1n+1){clear:both;}.small-block-grid-2>li{width:50%;list-style:none;}.small-block-grid-2 > li:nth-of-type(1n){clear:none;}.small-block-grid-2 > li:nth-of-type(2n+1){clear:both;}.small-block-grid-3>li{width:33.33333%;list-style:none;}.small-block-grid-3 > li:nth-of-type(1n){clear:none;}.small-block-grid-3 > li:nth-of-type(3n+1){clear:both;}.small-block-grid-4>li{width:25%;list-style:none;}.small-block-grid-4 > li:nth-of-type(1n){clear:none;}.small-block-grid-4 > li:nth-of-type(4n+1){clear:both;}.small-block-grid-5>li{width:20%;list-style:none;}.small-block-grid-5 > li:nth-of-type(1n){clear:none;}.small-block-grid-5 > li:nth-of-type(5n+1){clear:both;}.small-block-grid-6>li{width:16.66667%;list-style:none;}.small-block-grid-6 > li:nth-of-type(1n){clear:none;}.small-block-grid-6 > li:nth-of-type(6n+1){clear:both;}.small-block-grid-7>li{width:14.28571%;list-style:none;}.small-block-grid-7 > li:nth-of-type(1n){clear:none;}.small-block-grid-7 > li:nth-of-type(7n+1){clear:both;}.small-block-grid-8>li{width:12.5%;list-style:none;}.small-block-grid-8 > li:nth-of-type(1n){clear:none;}.small-block-grid-8 > li:nth-of-type(8n+1){clear:both;}.small-block-grid-9>li{width:11.11111%;list-style:none;}.small-block-grid-9 > li:nth-of-type(1n){clear:none;}.small-block-grid-9 > li:nth-of-type(9n+1){clear:both;}.small-block-grid-10>li{width:10%;list-style:none;}.small-block-grid-10 > li:nth-of-type(1n){clear:none;}.small-block-grid-10 > li:nth-of-type(10n+1){clear:both;}.small-block-grid-11>li{width:9.09091%;list-style:none;}.small-block-grid-11 > li:nth-of-type(1n){clear:none;}.small-block-grid-11 > li:nth-of-type(11n+1){clear:both;}.small-block-grid-12>li{width:8.33333%;list-style:none;}.small-block-grid-12 > li:nth-of-type(1n){clear:none;}.small-block-grid-12 > li:nth-of-type(12n+1){clear:both;}}@media only screen and (min-width:40.063em){.medium-block-grid-1>li{width:100%;list-style:none;}.medium-block-grid-1 > li:nth-of-type(1n){clear:none;}.medium-block-grid-1 > li:nth-of-type(1n+1){clear:both;}.medium-block-grid-2>li{width:50%;list-style:none;}.medium-block-grid-2 > li:nth-of-type(1n){clear:none;}.medium-block-grid-2 > li:nth-of-type(2n+1){clear:both;}.medium-block-grid-3>li{width:33.33333%;list-style:none;}.medium-block-grid-3 > li:nth-of-type(1n){clear:none;}.medium-block-grid-3 > li:nth-of-type(3n+1){clear:both;}.medium-block-grid-4>li{width:25%;list-style:none;}.medium-block-grid-4 > li:nth-of-type(1n){clear:none;}.medium-block-grid-4 > li:nth-of-type(4n+1){clear:both;}.medium-block-grid-5>li{width:20%;list-style:none;}.medium-block-grid-5 > li:nth-of-type(1n){clear:none;}.medium-block-grid-5 > li:nth-of-type(5n+1){clear:both;}.medium-block-grid-6>li{width:16.66667%;list-style:none;}.medium-block-grid-6 > li:nth-of-type(1n){clear:none;}.medium-block-grid-6 > li:nth-of-type(6n+1){clear:both;}.medium-block-grid-7>li{width:14.28571%;list-style:none;}.medium-block-grid-7 > li:nth-of-type(1n){clear:none;}.medium-block-grid-7 > li:nth-of-type(7n+1){clear:both;}.medium-block-grid-8>li{width:12.5%;list-style:none;}.medium-block-grid-8 > li:nth-of-type(1n){clear:none;}.medium-block-grid-8 > li:nth-of-type(8n+1){clear:both;}.medium-block-grid-9>li{width:11.11111%;list-style:none;}.medium-block-grid-9 > li:nth-of-type(1n){clear:none;}.medium-block-grid-9 > li:nth-of-type(9n+1){clear:both;}.medium-block-grid-10>li{width:10%;list-style:none;}.medium-block-grid-10 > li:nth-of-type(1n){clear:none;}.medium-block-grid-10 > li:nth-of-type(10n+1){clear:both;}.medium-block-grid-11>li{width:9.09091%;list-style:none;}.medium-block-grid-11 > li:nth-of-type(1n){clear:none;}.medium-block-grid-11 > li:nth-of-type(11n+1){clear:both;}.medium-block-grid-12>li{width:8.33333%;list-style:none;}.medium-block-grid-12 > li:nth-of-type(1n){clear:none;}.medium-block-grid-12 > li:nth-of-type(12n+1){clear:both;}}@media only screen and (min-width:64.063em){.large-block-grid-1>li{width:100%;list-style:none;}.large-block-grid-1 > li:nth-of-type(1n){clear:none;}.large-block-grid-1 > li:nth-of-type(1n+1){clear:both;}.large-block-grid-2>li{width:50%;list-style:none;}.large-block-grid-2 > li:nth-of-type(1n){clear:none;}.large-block-grid-2 > li:nth-of-type(2n+1){clear:both;}.large-block-grid-3>li{width:33.33333%;list-style:none;}.large-block-grid-3 > li:nth-of-type(1n){clear:none;}.large-block-grid-3 > li:nth-of-type(3n+1){clear:both;}.large-block-grid-4>li{width:25%;list-style:none;}.large-block-grid-4 > li:nth-of-type(1n){clear:none;}.large-block-grid-4 > li:nth-of-type(4n+1){clear:both;}.large-block-grid-5>li{width:20%;list-style:none;}.large-block-grid-5 > li:nth-of-type(1n){clear:none;}.large-block-grid-5 > li:nth-of-type(5n+1){clear:both;}.large-block-grid-6>li{width:16.66667%;list-style:none;}.large-block-grid-6 > li:nth-of-type(1n){clear:none;}.large-block-grid-6 > li:nth-of-type(6n+1){clear:both;}.large-block-grid-7>li{width:14.28571%;list-style:none;}.large-block-grid-7 > li:nth-of-type(1n){clear:none;}.large-block-grid-7 > li:nth-of-type(7n+1){clear:both;}.large-block-grid-8>li{width:12.5%;list-style:none;}.large-block-grid-8 > li:nth-of-type(1n){clear:none;}.large-block-grid-8 > li:nth-of-type(8n+1){clear:both;}.large-block-grid-9>li{width:11.11111%;list-style:none;}.large-block-grid-9 > li:nth-of-type(1n){clear:none;}.large-block-grid-9 > li:nth-of-type(9n+1){clear:both;}.large-block-grid-10>li{width:10%;list-style:none;}.large-block-grid-10 > li:nth-of-type(1n){clear:none;}.large-block-grid-10 > li:nth-of-type(10n+1){clear:both;}.large-block-grid-11>li{width:9.09091%;list-style:none;}.large-block-grid-11 > li:nth-of-type(1n){clear:none;}.large-block-grid-11 > li:nth-of-type(11n+1){clear:both;}.large-block-grid-12>li{width:8.33333%;list-style:none;}.large-block-grid-12 > li:nth-of-type(1n){clear:none;}.large-block-grid-12 > li:nth-of-type(12n+1){clear:both;}}.breadcrumbs{display:block;padding:0.5625rem 0.875rem 0.5625rem;overflow:hidden;margin-left:0;list-style:none;border-style:solid;border-width:1px;background-color:#fbfbfb;border-color:#e2e2e2;border-radius:3px;}.breadcrumbs>*{margin:0;float:left;font-size:0.6875rem;line-height:0.6875rem;text-transform:uppercase;color:#0098c3;}.breadcrumbs > *:hover a ,.breadcrumbs > *:focus a{text-decoration:underline;}.breadcrumbs > * a{color:#0098c3;}.breadcrumbs > *.current{cursor:default;color:#333333;}.breadcrumbs > *.current a{cursor:default;color:#333333;}.breadcrumbs > *.current:hover ,.breadcrumbs > *.current:hover a ,.breadcrumbs > *.current:focus ,.breadcrumbs > *.current:focus a{text-decoration:none;}.breadcrumbs > *.unavailable{color:#999999;}.breadcrumbs > *.unavailable a{color:#999999;}.breadcrumbs > *.unavailable:hover ,.breadcrumbs > *.unavailable:hover a ,.breadcrumbs > *.unavailable:focus ,.breadcrumbs > *.unavailable a:focus{text-decoration:none;color:#999999;cursor:not-allowed;}.breadcrumbs > *:before{content:"/";color:#aaaaaa;margin:0 0.75rem;position:relative;top:1px;}.breadcrumbs > *:first-child:before{content:" ";margin:0;}[aria-label="breadcrumbs"] [aria-hidden="true"]:after{content:"/";}button ,.button{border-style:solid;border-width:0px;cursor:pointer;font-family:"Open Sans",sans-serif;font-weight:normal;line-height:normal;margin:0 0 0.3125rem;position:relative;text-decoration:none;text-align:center;-webkit-appearance:none;-moz-appearance:none;border-radius:0;display:inline-block;padding-top:0.5rem;padding-right:1rem;padding-bottom:0.5625rem;padding-left:1rem;font-size:1rem;background-color:#0098c3;border-color:#007a9c;color:#ffffff;transition:background-color 300ms ease-out;}button:hover ,button:focus ,.button:hover ,.button:focus{background-color:#007a9c;}button:hover ,button:focus ,.button:hover ,.button:focus{color:#ffffff;}button.secondary ,.button.secondary{background-color:#f7f7f7;border-color:#efefef;color:#333333;}button.secondary:hover ,button.secondary:focus ,.button.secondary:hover ,.button.secondary:focus{background-color:#c6c6c6;}button.secondary:hover ,button.secondary:focus ,.button.secondary:hover ,.button.secondary:focus{color:#333333;}button.success ,.button.success{background-color:#43ac6a;border-color:#368a54;color:#ffffff;}button.success:hover ,button.success:focus ,.button.success:hover ,.button.success:focus{background-color:#368a54;}button.success:hover ,button.success:focus ,.button.success:hover ,.button.success:focus{color:#ffffff;}button.alert ,.button.alert{background-color:#f04124;border-color:#cf280e;color:#ffffff;}button.alert:hover ,button.alert:focus ,.button.alert:hover ,.button.alert:focus{background-color:#cf280e;}button.alert:hover ,button.alert:focus ,.button.alert:hover ,.button.alert:focus{color:#ffffff;}button.warning ,.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}button.warning:hover ,button.warning:focus ,.button.warning:hover ,.button.warning:focus{background-color:#cf6e0e;}button.warning:hover ,button.warning:focus ,.button.warning:hover ,.button.warning:focus{color:#ffffff;}button.info ,.button.info{background-color:#a0d3e8;border-color:#61b7d9;color:#333333;}button.info:hover ,button.info:focus ,.button.info:hover ,.button.info:focus{background-color:#61b7d9;}button.info:hover ,button.info:focus ,.button.info:hover ,.button.info:focus{color:#ffffff;}button.large ,.button.large{padding-top:0.5625rem;padding-right:1.125rem;padding-bottom:0.625rem;padding-left:1.125rem;font-size:1.25rem;}button.small ,.button.small{padding-top:0.4375rem;padding-right:0.875rem;padding-bottom:0.5rem;padding-left:0.875rem;font-size:0.8125rem;}button.tiny ,.button.tiny{padding-top:0.3125rem;padding-right:0.625rem;padding-bottom:0.375rem;padding-left:0.625rem;font-size:0.6875rem;}button.expand ,.button.expand{padding-right:0;padding-left:0;width:100%;}button.left-align ,.button.left-align{text-align:left;text-indent:0.75rem;}button.right-align ,.button.right-align{text-align:right;padding-right:0.75rem;}button.radius ,.button.radius{border-radius:3px;}button.round ,.button.round{border-radius:1000px;}button.disabled ,button[disabled] ,.button.disabled ,.button[disabled]{background-color:#0098c3;border-color:#007a9c;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus{background-color:#007a9c;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus{color:#ffffff;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus{background-color:#0098c3;}button.disabled.secondary ,button[disabled].secondary ,.button.disabled.secondary ,.button[disabled].secondary{background-color:#f7f7f7;border-color:#efefef;color:#333333;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus{background-color:#c6c6c6;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus{color:#333333;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus{background-color:#f7f7f7;}button.disabled.success ,button[disabled].success ,.button.disabled.success ,.button[disabled].success{background-color:#43ac6a;border-color:#368a54;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus{background-color:#368a54;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus{color:#ffffff;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus{background-color:#43ac6a;}button.disabled.alert ,button[disabled].alert ,.button.disabled.alert ,.button[disabled].alert{background-color:#f04124;border-color:#cf280e;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus{background-color:#cf280e;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus{color:#ffffff;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus{background-color:#f04124;}button.disabled.warning ,button[disabled].warning ,.button.disabled.warning ,.button[disabled].warning{background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus{background-color:#cf6e0e;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus{color:#ffffff;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus{background-color:#f08a24;}button.disabled.info ,button[disabled].info ,.button.disabled.info ,.button[disabled].info{background-color:#a0d3e8;border-color:#61b7d9;color:#333333;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus{background-color:#61b7d9;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus{color:#ffffff;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus{background-color:#a0d3e8;}button::-moz-focus-inner{border:0;padding:0;}@media only screen and (min-width:40.063em){button ,.button{display:inline-block;}}.button-group{list-style:none;margin:0;left:0;}.button-group:before ,.button-group:after{content:" ";display:table;}.button-group:after{clear:both;}.button-group.even-2 li{margin:0 -2px;display:inline-block;width:50%;}.button-group.even-2 li>button ,.button-group.even-2 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.even-2 li:first-child button ,.button-group.even-2 li:first-child .button{border-left:0;}.button-group.even-2 li button ,.button-group.even-2 li .button{width:100%;}.button-group.even-3 li{margin:0 -2px;display:inline-block;width:33.33333%;}.button-group.even-3 li>button ,.button-group.even-3 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.even-3 li:first-child button ,.button-group.even-3 li:first-child .button{border-left:0;}.button-group.even-3 li button ,.button-group.even-3 li .button{width:100%;}.button-group.even-4 li{margin:0 -2px;display:inline-block;width:25%;}.button-group.even-4 li>button ,.button-group.even-4 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.even-4 li:first-child button ,.button-group.even-4 li:first-child .button{border-left:0;}.button-group.even-4 li button ,.button-group.even-4 li .button{width:100%;}.button-group.even-5 li{margin:0 -2px;display:inline-block;width:20%;}.button-group.even-5 li>button ,.button-group.even-5 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.even-5 li:first-child button ,.button-group.even-5 li:first-child .button{border-left:0;}.button-group.even-5 li button ,.button-group.even-5 li .button{width:100%;}.button-group.even-6 li{margin:0 -2px;display:inline-block;width:16.66667%;}.button-group.even-6 li>button ,.button-group.even-6 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.even-6 li:first-child button ,.button-group.even-6 li:first-child .button{border-left:0;}.button-group.even-6 li button ,.button-group.even-6 li .button{width:100%;}.button-group.even-7 li{margin:0 -2px;display:inline-block;width:14.28571%;}.button-group.even-7 li>button ,.button-group.even-7 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.even-7 li:first-child button ,.button-group.even-7 li:first-child .button{border-left:0;}.button-group.even-7 li button ,.button-group.even-7 li .button{width:100%;}.button-group.even-8 li{margin:0 -2px;display:inline-block;width:12.5%;}.button-group.even-8 li>button ,.button-group.even-8 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.even-8 li:first-child button ,.button-group.even-8 li:first-child .button{border-left:0;}.button-group.even-8 li button ,.button-group.even-8 li .button{width:100%;}.button-group>li{margin:0 -2px;display:inline-block;}.button-group > li>button ,.button-group > li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group > li:first-child button ,.button-group > li:first-child .button{border-left:0;}.button-group.stack>li{margin:0 -2px;display:inline-block;display:block;margin:0;float:none;}.button-group.stack > li>button ,.button-group.stack > li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.stack > li:first-child button ,.button-group.stack > li:first-child .button{border-left:0;}.button-group.stack > li>button ,.button-group.stack > li .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block;}.button-group.stack > li>button{width:100%;}.button-group.stack > li:first-child button ,.button-group.stack > li:first-child .button{border-top:0;}.button-group.stack-for-small>li{margin:0 -2px;display:inline-block;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button{border-left:0;}@media only screen and (max-width:40em){.button-group.stack-for-small>li{margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button{border-left:0;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block;}.button-group.stack-for-small > li>button{width:100%;}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button{border-top:0;}}.button-group.radius>*{margin:0 -2px;display:inline-block;}.button-group.radius > *>button ,.button-group.radius > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.radius > *:first-child button ,.button-group.radius > *:first-child .button{border-left:0;}.button-group.radius > * ,.button-group.radius > *>a ,.button-group.radius > *>button ,.button-group.radius > *>.button{border-radius:0;}.button-group.radius > *:first-child ,.button-group.radius > *:first-child>a ,.button-group.radius > *:first-child>button ,.button-group.radius > *:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.button-group.radius > *:last-child ,.button-group.radius > *:last-child>a ,.button-group.radius > *:last-child>button ,.button-group.radius > *:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack>*{margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.radius.stack > *>button ,.button-group.radius.stack > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.radius.stack > *:first-child button ,.button-group.radius.stack > *:first-child .button{border-left:0;}.button-group.radius.stack > *>button ,.button-group.radius.stack > * .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block;}.button-group.radius.stack > *>button{width:100%;}.button-group.radius.stack > *:first-child button ,.button-group.radius.stack > *:first-child .button{border-top:0;}.button-group.radius.stack > * ,.button-group.radius.stack > *>a ,.button-group.radius.stack > *>button ,.button-group.radius.stack > *>.button{border-radius:0;}.button-group.radius.stack > *:first-child ,.button-group.radius.stack > *:first-child>a ,.button-group.radius.stack > *:first-child>button ,.button-group.radius.stack > *:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack > *:last-child ,.button-group.radius.stack > *:last-child>a ,.button-group.radius.stack > *:last-child>button ,.button-group.radius.stack > *:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}@media only screen and (min-width:40.063em){.button-group.radius.stack-for-small>*{margin:0 -2px;display:inline-block;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button{border-left:0;}.button-group.radius.stack-for-small > * ,.button-group.radius.stack-for-small > *>a ,.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > *>.button{border-radius:0;}.button-group.radius.stack-for-small > *:first-child ,.button-group.radius.stack-for-small > *:first-child>a ,.button-group.radius.stack-for-small > *:first-child>button ,.button-group.radius.stack-for-small > *:first-child>.button{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.button-group.radius.stack-for-small > *:last-child ,.button-group.radius.stack-for-small > *:last-child>a ,.button-group.radius.stack-for-small > *:last-child>button ,.button-group.radius.stack-for-small > *:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}}@media only screen and (max-width:40em){.button-group.radius.stack-for-small>*{margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button{border-left:0;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block;}.button-group.radius.stack-for-small > *>button{width:100%;}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button{border-top:0;}.button-group.radius.stack-for-small > * ,.button-group.radius.stack-for-small > *>a ,.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > *>.button{border-radius:0;}.button-group.radius.stack-for-small > *:first-child ,.button-group.radius.stack-for-small > *:first-child>a ,.button-group.radius.stack-for-small > *:first-child>button ,.button-group.radius.stack-for-small > *:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack-for-small > *:last-child ,.button-group.radius.stack-for-small > *:last-child>a ,.button-group.radius.stack-for-small > *:last-child>button ,.button-group.radius.stack-for-small > *:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}}.button-group.round>*{margin:0 -2px;display:inline-block;}.button-group.round > *>button ,.button-group.round > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.round > *:first-child button ,.button-group.round > *:first-child .button{border-left:0;}.button-group.round > * ,.button-group.round > *>a ,.button-group.round > *>button ,.button-group.round > *>.button{border-radius:0;}.button-group.round > *:first-child ,.button-group.round > *:first-child>a ,.button-group.round > *:first-child>button ,.button-group.round > *:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.button-group.round > *:last-child ,.button-group.round > *:last-child>a ,.button-group.round > *:last-child>button ,.button-group.round > *:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}.button-group.round.stack>*{margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.round.stack > *>button ,.button-group.round.stack > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.round.stack > *:first-child button ,.button-group.round.stack > *:first-child .button{border-left:0;}.button-group.round.stack > *>button ,.button-group.round.stack > * .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block;}.button-group.round.stack > *>button{width:100%;}.button-group.round.stack > *:first-child button ,.button-group.round.stack > *:first-child .button{border-top:0;}.button-group.round.stack > * ,.button-group.round.stack > *>a ,.button-group.round.stack > *>button ,.button-group.round.stack > *>.button{border-radius:0;}.button-group.round.stack > *:first-child ,.button-group.round.stack > *:first-child>a ,.button-group.round.stack > *:first-child>button ,.button-group.round.stack > *:first-child>.button{-webkit-top-left-radius:0.5rem;-webkit-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;}.button-group.round.stack > *:last-child ,.button-group.round.stack > *:last-child>a ,.button-group.round.stack > *:last-child>button ,.button-group.round.stack > *:last-child>.button{-webkit-bottom-left-radius:0.5rem;-webkit-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;}@media only screen and (min-width:40.063em){.button-group.round.stack-for-small>*{margin:0 -2px;display:inline-block;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button{border-left:0;}.button-group.round.stack-for-small > * ,.button-group.round.stack-for-small > *>a ,.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > *>.button{border-radius:0;}.button-group.round.stack-for-small > *:first-child ,.button-group.round.stack-for-small > *:first-child>a ,.button-group.round.stack-for-small > *:first-child>button ,.button-group.round.stack-for-small > *:first-child>.button{-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.button-group.round.stack-for-small > *:last-child ,.button-group.round.stack-for-small > *:last-child>a ,.button-group.round.stack-for-small > *:last-child>button ,.button-group.round.stack-for-small > *:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}}@media only screen and (max-width:40em){.button-group.round.stack-for-small>*{margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button{border-left:1px solid;border-color:rgba(255,255,255,0.5);}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button{border-left:0;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button{border-top:1px solid;border-color:rgba(255,255,255,0.5);border-left-width:0;margin:0;display:block;}.button-group.round.stack-for-small > *>button{width:100%;}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button{border-top:0;}.button-group.round.stack-for-small > * ,.button-group.round.stack-for-small > *>a ,.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > *>.button{border-radius:0;}.button-group.round.stack-for-small > *:first-child ,.button-group.round.stack-for-small > *:first-child>a ,.button-group.round.stack-for-small > *:first-child>button ,.button-group.round.stack-for-small > *:first-child>.button{-webkit-top-left-radius:0.5rem;-webkit-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;}.button-group.round.stack-for-small > *:last-child ,.button-group.round.stack-for-small > *:last-child>a ,.button-group.round.stack-for-small > *:last-child>button ,.button-group.round.stack-for-small > *:last-child>.button{-webkit-bottom-left-radius:0.5rem;-webkit-bottom-right-radius:0.5rem;border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;}}.button-bar:before ,.button-bar:after{content:" ";display:table;}.button-bar:after{clear:both;}.button-bar .button-group{float:left;margin-right:0.625rem;}.button-bar .button-group div{overflow:hidden;}.clearing-thumbs ,[data-clearing]{margin-bottom:0;margin-left:0;list-style:none;}.clearing-thumbs:before ,.clearing-thumbs:after ,[data-clearing]:before ,[data-clearing]:after{content:" ";display:table;}.clearing-thumbs:after ,[data-clearing]:after{clear:both;}.clearing-thumbs li ,[data-clearing] li{float:left;margin-right:10px;}.clearing-thumbs[class*="block-grid-"] li ,[data-clearing][class*="block-grid-"] li{margin-right:0;}.clearing-blackout{background:#333333;position:fixed;width:100%;height:100%;top:0;left:0;z-index:998;}.clearing-blackout .clearing-close{display:block;}.clearing-container{position:relative;z-index:998;height:100%;overflow:hidden;margin:0;}.clearing-touch-label{position:absolute;top:50%;left:50%;color:#aaaaaa;font-size:0.6em;}.visible-img{height:95%;position:relative;}.visible-img img{position:absolute;left:50%;top:50%;transform:translateY(-50%) translateX(-50%);-webkit-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);max-height:100%;max-width:100%;}.clearing-caption{color:#cccccc;font-size:0.875em;line-height:1.3;margin-bottom:0;text-align:center;bottom:0;background:#333333;width:100%;padding:10px 30px 20px;position:absolute;left:0;}.clearing-close{z-index:999;padding-left:20px;padding-top:10px;font-size:30px;line-height:1;color:#cccccc;display:none;}.clearing-close:hover ,.clearing-close:focus{color:#cccccc;}.clearing-assembled .clearing-container{height:100%;}.clearing-assembled .clearing-container .carousel>ul{display:none;}.clearing-feature li{display:none;}.clearing-feature li.clearing-featured-img{display:block;}@media only screen and (min-width:40.063em){.clearing-main-prev ,.clearing-main-next{position:absolute;height:100%;width:40px;top:0;}.clearing-main-prev>span ,.clearing-main-next>span{position:absolute;top:50%;display:block;width:0;height:0;border:solid 12px;}.clearing-main-prev > span:hover ,.clearing-main-next > span:hover{opacity:0.8;}.clearing-main-prev{left:0;}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#cccccc;}.clearing-main-next{right:0;}.clearing-main-next>span{border-color:transparent;border-left-color:#cccccc;}.clearing-main-prev.disabled ,.clearing-main-next.disabled{opacity:0.3;}.clearing-assembled .clearing-container .carousel{background:rgba(51,51,51,0.8);height:120px;margin-top:10px;text-align:center;}.clearing-assembled .clearing-container .carousel>ul{display:inline-block;z-index:999;height:100%;position:relative;float:none;}.clearing-assembled .clearing-container .carousel > ul li{display:block;width:120px;min-height:inherit;float:left;overflow:hidden;margin-right:0;padding:0;position:relative;cursor:pointer;opacity:0.4;clear:none;}.clearing-assembled .clearing-container .carousel > ul li.fix-height img{height:100%;max-width:none;}.clearing-assembled .clearing-container .carousel > ul li a.th{border:none;box-shadow:none;display:block;}.clearing-assembled .clearing-container .carousel > ul li img{cursor:pointer !important;width:100% !important;}.clearing-assembled .clearing-container .carousel > ul li.visible{opacity:1;}.clearing-assembled .clearing-container .carousel > ul li:hover{opacity:0.8;}.clearing-assembled .clearing-container .visible-img{background:#333333;overflow:hidden;height:85%;}.clearing-close{position:absolute;top:10px;right:20px;padding-left:0;padding-top:0;}}.f-dropdown{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:2px;max-width:200px;}.f-dropdown>*:first-child{margin-top:0;}.f-dropdown>*:last-child{margin-bottom:0;}.f-dropdown:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent #ffffff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89;}.f-dropdown:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent #cccccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88;}.f-dropdown.right:before{left:auto;right:10px;}.f-dropdown.right:after{left:auto;right:9px;}.f-dropdown.drop-right{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:2px;max-width:200px;}.f-dropdown.drop-right>*:first-child{margin-top:0;}.f-dropdown.drop-right>*:last-child{margin-bottom:0;}.f-dropdown.drop-right:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent #ffffff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89;}.f-dropdown.drop-right:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent #cccccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88;}.f-dropdown.drop-left{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:-2px;max-width:200px;}.f-dropdown.drop-left>*:first-child{margin-top:0;}.f-dropdown.drop-left>*:last-child{margin-bottom:0;}.f-dropdown.drop-left:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent transparent #ffffff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89;}.f-dropdown.drop-left:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent transparent #cccccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88;}.f-dropdown.drop-top{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:-2px;margin-left:0;max-width:200px;}.f-dropdown.drop-top>*:first-child{margin-top:0;}.f-dropdown.drop-top>*:last-child{margin-bottom:0;}.f-dropdown.drop-top:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:#ffffff transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-12px;left:10px;right:auto;z-index:89;}.f-dropdown.drop-top:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:#cccccc transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-14px;left:9px;right:auto;z-index:88;}.f-dropdown li{font-size:0.875rem;cursor:pointer;line-height:1.125rem;margin:0;}.f-dropdown li:hover ,.f-dropdown li:focus{background:#eeeeee;}.f-dropdown li.radius{border-radius:3px;}.f-dropdown li a{display:block;padding:0.5rem;color:#555555;}.f-dropdown.content{position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;padding:0.3125rem;width:100%;height:auto;max-height:none;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;max-width:200px;}.f-dropdown.content>*:first-child{margin-top:0;}.f-dropdown.content>*:last-child{margin-bottom:0;}.f-dropdown.tiny{max-width:200px;}.f-dropdown.small{max-width:300px;}.f-dropdown.medium{max-width:500px;}.f-dropdown.large{max-width:800px;}.f-dropdown.mega{width:100% !important;max-width:100% !important;}.f-dropdown.mega.open{left:0 !important;}.dropdown.button ,button.dropdown{position:relative;outline:none;padding-right:3.5625rem;}.dropdown.button::after ,button.dropdown::after{position:absolute;content:"";width:0;height:0;display:block;border-style:solid;border-color:#cfcfcf transparent transparent transparent;top:50%;}.dropdown.button::after ,button.dropdown::after{border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem;}.dropdown.button::after ,button.dropdown::after{border-color:#ffffff transparent transparent transparent;}.dropdown.button.tiny ,button.dropdown.tiny{padding-right:2.625rem;}.dropdown.button.tiny:after ,button.dropdown.tiny:after{border-width:0.375rem;right:1.125rem;margin-top:-0.125rem;}.dropdown.button.tiny::after ,button.dropdown.tiny::after{border-color:#ffffff transparent transparent transparent;}.dropdown.button.small ,button.dropdown.small{padding-right:2.1875rem;}.dropdown.button.small::after ,button.dropdown.small::after{border-width:0.3125rem;right:0.9375rem;margin-top:-0.09375rem;}.dropdown.button.small::after ,button.dropdown.small::after{border-color:#ffffff transparent transparent transparent;}.dropdown.button.large ,button.dropdown.large{padding-right:3.625rem;}.dropdown.button.large::after ,button.dropdown.large::after{border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem;}.dropdown.button.large::after ,button.dropdown.large::after{border-color:#ffffff transparent transparent transparent;}.dropdown.button.secondary:after ,button.dropdown.secondary:after{border-color:#cfcfcf transparent transparent transparent;}.flex-video{position:relative;padding-top:1.5625rem;padding-bottom:67.5%;height:0;margin-bottom:1rem;overflow:hidden;}.flex-video.widescreen{padding-bottom:56.34%;}.flex-video.vimeo{padding-top:0;}.flex-video iframe ,.flex-video object ,.flex-video embed ,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%;}form{margin:0 0 1rem;}form .row .row{margin:0 -0.5rem;}form .row .row .column ,form .row .row .columns{padding:0 0.5rem;}form .row .row.collapse{margin:0;}form .row .row.collapse .column ,form .row .row.collapse .columns{padding:0;}form .row .row.collapse input{-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0;}form .row input.column ,form .row input.columns ,form .row textarea.column ,form .row textarea.columns{padding-left:0.5rem;}label{font-size:0.875rem;color:#4d4d4d;cursor:pointer;display:block;font-weight:normal;line-height:1.5;margin-bottom:0;}label.right{float:none !important;text-align:right;}label.inline{margin:0 0 1rem 0;padding:0.5625rem 0;}label small{text-transform:capitalize;color:#686868;}.prefix ,.postfix{display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;border-style:solid;border-width:1px;overflow:visible;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem;}.postfix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;border:none;}.prefix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;border:none;}.prefix.button.radius{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.postfix.button.radius{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.prefix.button.round{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.postfix.button.round{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}span.prefix ,label.prefix{background:#f2f2f2;border-right:none;color:#333333;border-color:#cccccc;}span.postfix ,label.postfix{background:#f2f2f2;border-left:none;color:#333333;border-color:#cccccc;}input[type="text"] ,input[type="password"] ,input[type="date"] ,input[type="datetime"] ,input[type="datetime-local"] ,input[type="month"] ,input[type="week"] ,input[type="email"] ,input[type="number"] ,input[type="search"] ,input[type="tel"] ,input[type="time"] ,input[type="url"] ,input[type="color"] ,textarea{-webkit-appearance:none;border-radius:0;background-color:#ffffff;font-family:inherit;border-style:solid;border-width:1px;border-color:#d3d3d3;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-size:0.875rem;margin:0 0 1rem 0;padding:0.5rem;height:2.3125rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;transition:all 0.15s linear;}input[type="text"]:focus ,input[type="password"]:focus ,input[type="date"]:focus ,input[type="datetime"]:focus ,input[type="datetime-local"]:focus ,input[type="month"]:focus ,input[type="week"]:focus ,input[type="email"]:focus ,input[type="number"]:focus ,input[type="search"]:focus ,input[type="tel"]:focus ,input[type="time"]:focus ,input[type="url"]:focus ,input[type="color"]:focus ,textarea:focus{background:#fafafa;border-color:#999999;outline:none;}input[type="text"]:disabled ,input[type="password"]:disabled ,input[type="date"]:disabled ,input[type="datetime"]:disabled ,input[type="datetime-local"]:disabled ,input[type="month"]:disabled ,input[type="week"]:disabled ,input[type="email"]:disabled ,input[type="number"]:disabled ,input[type="search"]:disabled ,input[type="tel"]:disabled ,input[type="time"]:disabled ,input[type="url"]:disabled ,input[type="color"]:disabled ,textarea:disabled{background-color:#dddddd;cursor:default;}input[type="text"][disabled] ,input[type="text"][readonly] ,fieldset[disabled] input[type="text"] ,input[type="password"][disabled] ,input[type="password"][readonly] ,fieldset[disabled] input[type="password"] ,input[type="date"][disabled] ,input[type="date"][readonly] ,fieldset[disabled] input[type="date"] ,input[type="datetime"][disabled] ,input[type="datetime"][readonly] ,fieldset[disabled] input[type="datetime"] ,input[type="datetime-local"][disabled] ,input[type="datetime-local"][readonly] ,fieldset[disabled] input[type="datetime-local"] ,input[type="month"][disabled] ,input[type="month"][readonly] ,fieldset[disabled] input[type="month"] ,input[type="week"][disabled] ,input[type="week"][readonly] ,fieldset[disabled] input[type="week"] ,input[type="email"][disabled] ,input[type="email"][readonly] ,fieldset[disabled] input[type="email"] ,input[type="number"][disabled] ,input[type="number"][readonly] ,fieldset[disabled] input[type="number"] ,input[type="search"][disabled] ,input[type="search"][readonly] ,fieldset[disabled] input[type="search"] ,input[type="tel"][disabled] ,input[type="tel"][readonly] ,fieldset[disabled] input[type="tel"] ,input[type="time"][disabled] ,input[type="time"][readonly] ,fieldset[disabled] input[type="time"] ,input[type="url"][disabled] ,input[type="url"][readonly] ,fieldset[disabled] input[type="url"] ,input[type="color"][disabled] ,input[type="color"][readonly] ,fieldset[disabled] input[type="color"] ,textarea[disabled] ,textarea[readonly] ,fieldset[disabled] textarea{background-color:#dddddd;cursor:default;}input[type="text"].radius ,input[type="password"].radius ,input[type="date"].radius ,input[type="datetime"].radius ,input[type="datetime-local"].radius ,input[type="month"].radius ,input[type="week"].radius ,input[type="email"].radius ,input[type="number"].radius ,input[type="search"].radius ,input[type="tel"].radius ,input[type="time"].radius ,input[type="url"].radius ,input[type="color"].radius ,textarea.radius{border-radius:3px;}form .row .prefix-radius.row.collapse input ,form .row .prefix-radius.row.collapse textarea ,form .row .prefix-radius.row.collapse select ,form .row .prefix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}form .row .prefix-radius.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}form .row .postfix-radius.row.collapse input ,form .row .postfix-radius.row.collapse textarea ,form .row .postfix-radius.row.collapse select ,form .row .postfix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}form .row .postfix-radius.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}form .row .prefix-round.row.collapse input ,form .row .prefix-round.row.collapse textarea ,form .row .prefix-round.row.collapse select ,form .row .prefix-round.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}form .row .prefix-round.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}form .row .postfix-round.row.collapse input ,form .row .postfix-round.row.collapse textarea ,form .row .postfix-round.row.collapse select ,form .row .postfix-round.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}form .row .postfix-round.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}input[type="submit"]{-webkit-appearance:none;border-radius:0;}textarea[rows]{height:auto;}textarea{max-width:100%;}select{-webkit-appearance:none !important;border-radius:0;background-color:#fafafa;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#d3d3d3;padding:0.5rem;font-size:0.875rem;font-family:"Open Sans",sans-serif;color:rgba(0,0,0,0.75);line-height:normal;border-radius:0;height:2.3125rem;}select::-ms-expand{display:none;}select.radius{border-radius:3px;}select:hover{background-color:#f3f3f3;border-color:#999999;}select:disabled{background-color:#dddddd;cursor:default;}select[multiple]{height:auto;}input[type="file"] ,input[type="checkbox"] ,input[type="radio"] ,select{margin:0 0 1rem 0;}input[type="checkbox"]+label ,input[type="radio"]+label{display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline;}input[type="file"]{width:100%;}fieldset{border:1px solid #efefef;padding:1.25rem;margin:1.125rem 0;}fieldset legend{font-weight:bold;background:#ffffff;padding:0 0.1875rem;margin:0;margin-left:-0.1875rem;}[data-abide] .error small.error ,[data-abide] .error span.error ,[data-abide] span.error ,[data-abide] small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}[data-abide] span.error ,[data-abide] small.error{display:none;}span.error ,small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}.error input ,.error textarea ,.error select{margin-bottom:0;}.error input[type="checkbox"] ,.error input[type="radio"]{margin-bottom:1rem;}.error label ,.error label.error{color:#f04124;}.error small.error{display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}.error > label>small{color:#686868;background:transparent;padding:0;text-transform:capitalize;font-style:normal;font-size:60%;margin:0;display:inline;}.error span.error-message{display:block;}input.error ,textarea.error ,select.error{margin-bottom:0;}label.error{color:#f04124;}.icon-bar{width:100%;font-size:0;display:inline-block;background:#333333;}.icon-bar>*{text-align:center;font-size:1rem;width:25%;margin:0 auto;display:block;padding:1.25rem;float:left;}.icon-bar > * i ,.icon-bar > * img{display:block;margin:0 auto;}.icon-bar > * i+label ,.icon-bar > * img+label{margin-top:0.0625rem;}.icon-bar > * i{font-size:1.875rem;vertical-align:middle;}.icon-bar > * img{width:1.875rem;height:1.875rem;}.icon-bar.label-right > * i ,.icon-bar.label-right > * img{margin:0 0.0625rem 0 0;display:inline-block;}.icon-bar.label-right > * i+label ,.icon-bar.label-right > * img+label{margin-top:0;}.icon-bar.label-right > * label{display:inline-block;}.icon-bar.vertical.label-right>*{text-align:left;}.icon-bar.vertical ,.icon-bar.small-vertical{height:100%;width:auto;}.icon-bar.vertical .item ,.icon-bar.small-vertical .item{width:auto;margin:auto;float:none;}@media only screen and (min-width:40.063em){.icon-bar.medium-vertical{height:100%;width:auto;}.icon-bar.medium-vertical .item{width:auto;margin:auto;float:none;}}@media only screen and (min-width:64.063em){.icon-bar.large-vertical{height:100%;width:auto;}.icon-bar.large-vertical .item{width:auto;margin:auto;float:none;}}.icon-bar>*{font-size:1rem;padding:1.25rem;}.icon-bar > * i+label ,.icon-bar > * img+label{margin-top:0.0625rem;}.icon-bar > * i{font-size:1.875rem;}.icon-bar > * img{width:1.875rem;height:1.875rem;}.icon-bar > * label{color:#ffffff;}.icon-bar > * i{color:#ffffff;}.icon-bar>a:hover{background:#0098c3;}.icon-bar > a:hover label{color:#ffffff;}.icon-bar > a:hover i{color:#ffffff;}.icon-bar>a.active{background:#0098c3;}.icon-bar > a.active label{color:#ffffff;}.icon-bar > a.active i{color:#ffffff;}.icon-bar .item.disabled{opacity:0.7;cursor:not-allowed;pointer-events:none;}.icon-bar .item.disabled>*{opacity:0.7;cursor:not-allowed;}.icon-bar.two-up .item{width:50%;}.icon-bar.two-up.vertical .item ,.icon-bar.two-up.small-vertical .item{width:auto;}@media only screen and (min-width:40.063em){.icon-bar.two-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.two-up.large-vertical .item{width:auto;}}.icon-bar.three-up .item{width:33.3333%;}.icon-bar.three-up.vertical .item ,.icon-bar.three-up.small-vertical .item{width:auto;}@media only screen and (min-width:40.063em){.icon-bar.three-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.three-up.large-vertical .item{width:auto;}}.icon-bar.four-up .item{width:25%;}.icon-bar.four-up.vertical .item ,.icon-bar.four-up.small-vertical .item{width:auto;}@media only screen and (min-width:40.063em){.icon-bar.four-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.four-up.large-vertical .item{width:auto;}}.icon-bar.five-up .item{width:20%;}.icon-bar.five-up.vertical .item ,.icon-bar.five-up.small-vertical .item{width:auto;}@media only screen and (min-width:40.063em){.icon-bar.five-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.five-up.large-vertical .item{width:auto;}}.icon-bar.six-up .item{width:16.66667%;}.icon-bar.six-up.vertical .item ,.icon-bar.six-up.small-vertical .item{width:auto;}@media only screen and (min-width:40.063em){.icon-bar.six-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.six-up.large-vertical .item{width:auto;}}.icon-bar.seven-up .item{width:14.28571%;}.icon-bar.seven-up.vertical .item ,.icon-bar.seven-up.small-vertical .item{width:auto;}@media only screen and (min-width:40.063em){.icon-bar.seven-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.seven-up.large-vertical .item{width:auto;}}.icon-bar.eight-up .item{width:12.5%;}.icon-bar.eight-up.vertical .item ,.icon-bar.eight-up.small-vertical .item{width:auto;}@media only screen and (min-width:40.063em){.icon-bar.eight-up.medium-vertical .item{width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.eight-up.large-vertical .item{width:auto;}}.inline-list{margin:0 auto 1.0625rem auto;margin-left:-1.375rem;margin-right:0;padding:0;list-style:none;overflow:hidden;}.inline-list>li{list-style:none;float:left;margin-left:1.375rem;display:block;}.inline-list > li>*{display:block;}.joyride-list{display:none;}.joyride-tip-guide{display:none;position:absolute;background:#333333;color:#ffffff;z-index:101;top:0;left:2.5%;font-family:inherit;font-weight:normal;width:95%;}.lt-ie9 .joyride-tip-guide{max-width:800px;left:50%;margin-left:-400px;}.joyride-content-wrapper{width:100%;padding:1.125rem 1.25rem 1.5rem;}.joyride-content-wrapper .button{margin-bottom:0 !important;}.joyride-content-wrapper .joyride-prev-tip{margin-right:10px;}.joyride-tip-guide .joyride-nub{display:block;position:absolute;left:22px;width:0;height:0;border:10px solid #333333;}.joyride-tip-guide .joyride-nub.top{border-top-style:solid;border-color:#333333;border-top-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px;}.joyride-tip-guide .joyride-nub.bottom{border-bottom-style:solid;border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px;}.joyride-tip-guide .joyride-nub.right{right:-20px;}.joyride-tip-guide .joyride-nub.left{left:-20px;}.joyride-tip-guide h1 ,.joyride-tip-guide h2 ,.joyride-tip-guide h3 ,.joyride-tip-guide h4 ,.joyride-tip-guide h5 ,.joyride-tip-guide h6{line-height:1.25;margin:0;font-weight:bold;color:#ffffff;}.joyride-tip-guide p{margin:0 0 1.125rem 0;font-size:0.875rem;line-height:1.3;}.joyride-timer-indicator-wrap{width:50px;height:3px;border:solid 1px #555555;position:absolute;right:1.0625rem;bottom:1rem;}.joyride-timer-indicator{display:block;width:0;height:inherit;background:#666666;}.joyride-close-tip{position:absolute;right:12px;top:10px;color:#777777 !important;text-decoration:none;font-size:24px;font-weight:normal;line-height:0.5 !important;}.joyride-close-tip:hover ,.joyride-close-tip:focus{color:#eeeeee !important;}.joyride-modal-bg{position:fixed;height:100%;width:100%;background:transparent;background:rgba(0,0,0,0.5);z-index:100;display:none;top:0;left:0;cursor:pointer;}.joyride-expose-wrapper{background-color:#ffffff;position:absolute;border-radius:3px;z-index:102;box-shadow:0 0 15px #ffffff;}.joyride-expose-cover{background:transparent;border-radius:3px;position:absolute;z-index:9999;top:0;left:0;}@media only screen and (min-width:40.063em){.joyride-tip-guide{width:300px;left:inherit;}.joyride-tip-guide .joyride-nub.bottom{border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px;}.joyride-tip-guide .joyride-nub.right{border-color:#333333 !important;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:auto;right:-20px;}.joyride-tip-guide .joyride-nub.left{border-color:#333333 !important;border-top-color:transparent !important;border-left-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:-20px;right:auto;}}.keystroke ,kbd{background-color:#ededed;border-color:#dcdcdc;color:#222222;border-style:solid;border-width:1px;margin:0;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;padding:0.125rem 0.25rem 0;border-radius:3px;}.label{font-weight:normal;font-family:"Open Sans",sans-serif;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline-block;position:relative;margin-bottom:auto;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#0098c3;color:#ffffff;}.label.radius{border-radius:3px;}.label.round{border-radius:1000px;}.label.alert{background-color:#f04124;color:#ffffff;}.label.warning{background-color:#f08a24;color:#ffffff;}.label.success{background-color:#43ac6a;color:#ffffff;}.label.secondary{background-color:#f7f7f7;color:#333333;}.label.info{background-color:#a0d3e8;color:#333333;}[data-magellan-expedition] ,[data-magellan-expedition-clone]{background:#ffffff;z-index:50;min-width:100%;padding:10px;}[data-magellan-expedition] .sub-nav ,[data-magellan-expedition-clone] .sub-nav{margin-bottom:0;}[data-magellan-expedition] .sub-nav dd ,[data-magellan-expedition-clone] .sub-nav dd{margin-bottom:0;}[data-magellan-expedition] .sub-nav a ,[data-magellan-expedition-clone] .sub-nav a{line-height:1.8em;}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);}to{-webkit-transform:rotate(360deg);}}@-moz-keyframes rotate{from{-moz-transform:rotate(0deg);}to{-moz-transform:rotate(360deg);}}@-o-keyframes rotate{from{-o-transform:rotate(0deg);}to{-o-transform:rotate(360deg);}}@keyframes rotate{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}.slideshow-wrapper{position:relative;}.slideshow-wrapper ul{list-style-type:none;margin:0;}.slideshow-wrapper ul li ,.slideshow-wrapper ul li .orbit-caption{display:none;}.slideshow-wrapper ul li:first-child{display:block;}.slideshow-wrapper .orbit-container{background-color:transparent;}.slideshow-wrapper .orbit-container li{display:block;}.slideshow-wrapper .orbit-container li .orbit-caption{display:block;}.slideshow-wrapper .orbit-container .orbit-bullets li{display:inline-block;}.slideshow-wrapper .preloader{display:block;width:40px;height:40px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px;border:solid 3px;border-color:#555555 #ffffff;border-radius:1000px;animation-name:rotate;animation-duration:1.5s;animation-iteration-count:infinite;animation-timing-function:linear;}.orbit-container{overflow:hidden;width:100%;position:relative;background:none;}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0);}.orbit-container .orbit-slides-container img{display:block;max-width:100%;}.orbit-container .orbit-slides-container>*{position:absolute;top:0;width:100%;margin-left:100%;}.orbit-container .orbit-slides-container > *:first-child{margin-left:0;}.orbit-container .orbit-slides-container > * .orbit-caption{position:absolute;bottom:0;background-color:rgba(51,51,51,0.8);color:#ffffff;width:100%;padding:0.625rem 0.875rem;font-size:0.875rem;}.orbit-container .orbit-slide-number{position:absolute;top:10px;left:10px;font-size:12px;color:#ffffff;background:rgba(0,0,0,0);z-index:10;}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125rem;}.orbit-container .orbit-timer{position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10;}.orbit-container .orbit-timer .orbit-progress{height:3px;background-color:rgba(255,255,255,0.3);display:block;width:0;position:relative;right:20px;top:5px;}.orbit-container .orbit-timer>span{display:none;position:absolute;top:0;right:0;width:11px;height:14px;border:solid 4px #ffffff;border-top:none;border-bottom:none;}.orbit-container .orbit-timer.paused>span{right:-4px;top:0;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#ffffff;}.orbit-container .orbit-timer.paused > span.dark{border-left-color:#333333;}.orbit-container:hover .orbit-timer>span{display:block;}.orbit-container .orbit-prev ,.orbit-container .orbit-next{position:absolute;top:45%;margin-top:-25px;width:36px;height:60px;line-height:50px;color:white;background-color:transparent;text-indent:-9999px !important;z-index:10;}.orbit-container .orbit-prev:hover ,.orbit-container .orbit-next:hover{background-color:rgba(0,0,0,0.3);}.orbit-container .orbit-prev>span ,.orbit-container .orbit-next>span{position:absolute;top:50%;margin-top:-10px;display:block;width:0;height:0;border:inset 10px;}.orbit-container .orbit-prev{left:0;}.orbit-container .orbit-prev>span{border-right-style:solid;border-color:transparent;border-right-color:#ffffff;}.orbit-container .orbit-prev:hover>span{border-right-color:#ffffff;}.orbit-container .orbit-next{right:0;}.orbit-container .orbit-next>span{border-color:transparent;border-left-style:solid;border-left-color:#ffffff;left:50%;margin-left:-4px;}.orbit-container .orbit-next:hover>span{border-left-color:#ffffff;}.orbit-bullets-container{text-align:center;}.orbit-bullets{margin:0 auto 30px auto;overflow:hidden;position:relative;top:10px;float:none;text-align:center;display:block;}.orbit-bullets li{cursor:pointer;display:inline-block;width:0.5625rem;height:0.5625rem;background:#cccccc;float:none;margin-right:6px;border-radius:1000px;}.orbit-bullets li.active{background:#999999;}.orbit-bullets li:last-child{margin-right:0;}.touch .orbit-container .orbit-prev ,.touch .orbit-container .orbit-next{display:none;}.touch .orbit-bullets{display:none;}@media only screen and (min-width:40.063em){.touch .orbit-container .orbit-prev ,.touch .orbit-container .orbit-next{display:inherit;}.touch .orbit-bullets{display:block;}}@media only screen and (max-width:40em){.orbit-stack-on-small .orbit-slides-container{height:auto !important;}.orbit-stack-on-small .orbit-slides-container>*{position:relative;margin:0 !important;opacity:1 !important;}.orbit-stack-on-small .orbit-slide-number{display:none;}.orbit-timer{display:none;}.orbit-next ,.orbit-prev{display:none;}.orbit-bullets{display:none;}}ul.pagination{display:block;min-height:1.5rem;margin-left:-0.3125rem;}ul.pagination li{height:1.5rem;color:#222222;font-size:0.875rem;margin-left:0.3125rem;}ul.pagination li a ,ul.pagination li button{display:block;padding:0.0625rem 0.625rem 0.0625rem;color:#999999;background:none;border-radius:3px;font-weight:normal;font-size:1em;line-height:inherit;transition:background-color 300ms ease-out;}ul.pagination li:hover a ,ul.pagination li a:focus ,ul.pagination li:hover button ,ul.pagination li button:focus{background:#e6e6e6;}ul.pagination li.unavailable a ,ul.pagination li.unavailable button{cursor:default;color:#999999;}ul.pagination li.unavailable:hover a ,ul.pagination li.unavailable a:focus ,ul.pagination li.unavailable:hover button ,ul.pagination li.unavailable button:focus{background:transparent;}ul.pagination li.current a ,ul.pagination li.current button{background:#0098c3;color:#ffffff;font-weight:bold;cursor:default;}ul.pagination li.current a:hover ,ul.pagination li.current a:focus ,ul.pagination li.current button:hover ,ul.pagination li.current button:focus{background:#0098c3;}ul.pagination li{float:left;display:block;}.pagination-centered{text-align:center;}.pagination-centered ul.pagination li{float:none;display:inline-block;}.panel{border-style:solid;border-width:1px;border-color:#dcdcdc;margin-bottom:1.25rem;padding:1.25rem;background:#f7f7f7;color:#333333;}.panel>:first-child{margin-top:0;}.panel>:last-child{margin-bottom:0;}.panel h1 ,.panel h2 ,.panel h3 ,.panel h4 ,.panel h5 ,.panel h6 ,.panel p ,.panel li ,.panel dl{color:#333333;}.panel h1 ,.panel h2 ,.panel h3 ,.panel h4 ,.panel h5 ,.panel h6{line-height:1;margin-bottom:0.625rem;}.panel h1.subheader ,.panel h2.subheader ,.panel h3.subheader ,.panel h4.subheader ,.panel h5.subheader ,.panel h6.subheader{line-height:1.4;}.panel.callout{border-style:solid;border-width:1px;border-color:#b6f0ff;margin-bottom:1.25rem;padding:1.25rem;background:#ecfbff;color:#333333;}.panel.callout>:first-child{margin-top:0;}.panel.callout>:last-child{margin-bottom:0;}.panel.callout h1 ,.panel.callout h2 ,.panel.callout h3 ,.panel.callout h4 ,.panel.callout h5 ,.panel.callout h6 ,.panel.callout p ,.panel.callout li ,.panel.callout dl{color:#333333;}.panel.callout h1 ,.panel.callout h2 ,.panel.callout h3 ,.panel.callout h4 ,.panel.callout h5 ,.panel.callout h6{line-height:1;margin-bottom:0.625rem;}.panel.callout h1.subheader ,.panel.callout h2.subheader ,.panel.callout h3.subheader ,.panel.callout h4.subheader ,.panel.callout h5.subheader ,.panel.callout h6.subheader{line-height:1.4;}.panel.callout a:not(.button){color:#0098c3;}.panel.callout a:not(.button):hover ,.panel.callout a:not(.button):focus{color:#0083a8;}.panel.radius{border-radius:3px;}.pricing-table{border:1px;margin-left:0;margin-bottom:0;}.pricing-table *{list-style:none;line-height:1;}.pricing-table .title{background-color:#f7f7f7;padding:0.625rem;text-align:center;color:#555555;font-weight:bold;font-size:1rem;font-family:"Open Sans",sans-serif;}.pricing-table .price{background-color:#f6f6f6;padding:0.9375rem 1.25rem;text-align:center;color:#333333;font-weight:normal;font-size:2rem;font-family:"Open Sans",sans-serif;}.pricing-table .description{background-color:#ffffff;padding:0.625rem;text-align:center;color:#999999;font-size:0.75rem;font-weight:normal;line-height:1.4;border-bottom:none;}.pricing-table .bullet-item{background-color:#ffffff;padding:0.3125rem;text-align:center;color:#777777;font-size:0.875rem;font-weight:normal;border-bottom:none;}.pricing-table .cta-button{background-color:#ffffff;text-align:center;padding:1.25rem 1.25rem 0;}.progress{background-color:#f6f6f6;height:0.625rem;border:1px solid #ffffff;padding:0.125rem;margin-bottom:0.625rem;}.progress .meter{background:#0098c3;height:100%;display:block;}.progress.secondary .meter{background:#f7f7f7;height:100%;display:block;}.progress.success .meter{background:#43ac6a;height:100%;display:block;}.progress.alert .meter{background:#f04124;height:100%;display:block;}.progress.radius{border-radius:3px;}.progress.radius .meter{border-radius:2px;}.progress.round{border-radius:1000px;}.progress.round .meter{border-radius:999px;}.range-slider{position:relative;border:1px solid #bfbfbf;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:block;width:100%;height:0.75rem;background:#ffffff;}.range-slider.vertical-range{position:relative;border:1px solid #bfbfbf;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:inline-block;width:1rem;height:12.5rem;}.range-slider.vertical-range .range-slider-handle{margin-top:0;margin-left:-0.5rem;position:absolute;bottom:-10.5rem;}.range-slider.vertical-range .range-slider-active-segment{width:0.625rem;height:auto;bottom:0;}.range-slider.radius{background:#ffffff;border-radius:3px;}.range-slider.radius .range-slider-handle{background:#0098c3;border-radius:3px;}.range-slider.radius .range-slider-handle:hover{background:#0086ac;}.range-slider.round{background:#ffffff;border-radius:1000px;}.range-slider.round .range-slider-handle{background:#0098c3;border-radius:1000px;}.range-slider.round .range-slider-handle:hover{background:#0086ac;}.range-slider.disabled ,.range-slider[disabled]{background:#ffffff;cursor:not-allowed;opacity:0.7;}.range-slider.disabled .range-slider-handle ,.range-slider[disabled] .range-slider-handle{background:#0098c3;cursor:default;opacity:0.7;}.range-slider.disabled .range-slider-handle:hover ,.range-slider[disabled] .range-slider-handle:hover{background:#0086ac;}.range-slider-active-segment{display:inline-block;position:absolute;height:0.625rem;background:#f5f5f5;}.range-slider-handle{display:inline-block;position:absolute;z-index:1;top:-0.3125rem;width:2rem;height:1.375rem;border:1px solid none;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;background:#0098c3;}.range-slider-handle:hover{background:#0086ac;}.reveal-modal-bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#000000;background:rgba(0,0,0,0.45);z-index:1004;display:none;left:0;}.reveal-modal{visibility:hidden;display:none;position:absolute;z-index:1005;width:100%;top:0;border-radius:3px;left:0;background-color:#ffffff;padding:2.34375rem;border:solid 1px #666666;box-shadow:0 0 10px rgba(0,0,0,0.4);}@media only screen and (max-width:40em){.reveal-modal{min-height:100vh;}}.reveal-modal .column ,.reveal-modal .columns{min-width:0;}.reveal-modal>:first-child{margin-top:0;}.reveal-modal>:last-child{margin-bottom:0;}@media only screen and (min-width:40.063em){.reveal-modal{width:30%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal{top:30px;}}.reveal-modal.radius{border-radius:3px;}.reveal-modal.round{border-radius:1000px;}.reveal-modal.collapse{padding:0;}@media only screen and (min-width:40.063em){.reveal-modal.tiny{width:30%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.small{width:40%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.medium{width:60%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.large{width:70%;max-width:75rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.xlarge{width:95%;max-width:75rem;left:0;right:0;margin:0 auto;}}.reveal-modal.full{top:0;left:0;height:100%;height:100vh;min-height:100vh;max-width:none !important;margin-left:0 !important;}@media only screen and (min-width:40.063em){.reveal-modal.full{width:100%;max-width:75rem;left:0;right:0;margin:0 auto;}}.reveal-modal.toback{z-index:1003;}.reveal-modal .close-reveal-modal{font-size:1.5rem;line-height:1;position:absolute;top:0.625rem;right:1.375rem;color:#aaaaaa;font-weight:bold;cursor:pointer;}.side-nav{display:block;margin:0;padding:0.875rem 0;list-style-type:none;list-style-position:outside;font-family:"Open Sans",sans-serif;}.side-nav li{margin:0 0 0 0;font-size:0.875rem;font-weight:normal;}.side-nav li a:not(.button){display:block;color:#0098c3;margin:0;padding:0.4375rem 0.875rem;}.side-nav li a:not(.button):hover ,.side-nav li a:not(.button):focus{background:rgba(0,0,0,0.025);color:#22cfff;}.side-nav li.active>a:first-child:not(.button){color:#22cfff;font-weight:normal;font-family:"Open Sans",sans-serif;}.side-nav li.divider{border-top:1px solid;height:0;padding:0;list-style:none;border-top-color:#ffffff;}.side-nav li.heading{color:#0098c3;font-size:0.875rem;font-weight:bold;text-transform:uppercase;}.split.button{position:relative;padding-right:5.0625rem;}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px;}.split.button span:after{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%;}.split.button span:active{background-color:rgba(0,0,0,0.1);}.split.button span{border-left-color:rgba(255,255,255,0.5);}.split.button span{width:3.09375rem;}.split.button span:after{border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem;}.split.button span:after{border-color:#ffffff transparent transparent transparent;}.split.button.secondary span{border-left-color:rgba(255,255,255,0.5);}.split.button.secondary span:after{border-color:#ffffff transparent transparent transparent;}.split.button.alert span{border-left-color:rgba(255,255,255,0.5);}.split.button.success span{border-left-color:rgba(255,255,255,0.5);}.split.button.tiny{padding-right:3.75rem;}.split.button.tiny span{width:2.25rem;}.split.button.tiny span:after{border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem;}.split.button.small{padding-right:3.125rem;}.split.button.small span{width:1.875rem;}.split.button.small span:after{border-top-style:solid;border-width:0.3125rem;top:48%;margin-left:-0.375rem;}.split.button.large{padding-right:5.5rem;}.split.button.large span{width:3.4375rem;}.split.button.large span:after{border-top-style:solid;border-width:0.3125rem;top:48%;margin-left:-0.375rem;}.split.button.expand{padding-left:2rem;}.split.button.secondary span:after{border-color:#333333 transparent transparent transparent;}.split.button.radius span{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.split.button.round span{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}.split.button.no-pip span:before{border-style:none;}.split.button.no-pip span:after{border-style:none;}.split.button.no-pip span>i{top:50%;display:block;position:absolute;left:50%;margin-left:-0.28889em;margin-top:-0.48889em;}.sub-nav{display:block;width:auto;overflow:hidden;margin-bottom:-0.25rem 0 1.125rem;padding-top:0.25rem;}.sub-nav dt{text-transform:uppercase;}.sub-nav dt ,.sub-nav dd ,.sub-nav li{float:left;margin-left:1rem;margin-bottom:0;font-family:"Open Sans",sans-serif;font-weight:normal;font-size:0.875rem;color:#999999;}.sub-nav dt a ,.sub-nav dd a ,.sub-nav li a{text-decoration:none;color:#999999;padding:0.1875rem 1rem;}.sub-nav dt a:hover ,.sub-nav dd a:hover ,.sub-nav li a:hover{color:#737373;}.sub-nav dt.active a ,.sub-nav dd.active a ,.sub-nav li.active a{border-radius:3px;font-weight:normal;background:#0098c3;padding:0.1875rem 1rem;cursor:default;color:#ffffff;}.sub-nav dt.active a:hover ,.sub-nav dd.active a:hover ,.sub-nav li.active a:hover{background:#0083a8;}.switch{padding:0;border:none;position:relative;outline:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;}.switch label{display:block;margin-bottom:1rem;position:relative;color:transparent;background:#dddddd;text-indent:100%;width:4rem;height:2rem;cursor:pointer;transition:left 0.15s ease-out;}.switch input{opacity:0;position:absolute;top:9px;left:10px;padding:0;}.switch input+label{margin-left:0;margin-right:0;}.switch label:after{content:"";display:block;background:#ffffff;position:absolute;top:0.25rem;left:0.25rem;width:1.5rem;height:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:translate3d(0,0,0);transition:left 0.15s ease-out;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);}.switch input:checked+label{background:#0098c3;}.switch input:checked+label:after{left:2.25rem;}.switch label{width:4rem;height:2rem;}.switch label:after{width:1.5rem;height:1.5rem;}.switch input:checked+label:after{left:2.25rem;}.switch label{color:transparent;background:#dddddd;}.switch label:after{background:#ffffff;}.switch input:checked+label{background:#0098c3;}.switch.large label{width:5rem;height:2.5rem;}.switch.large label:after{width:2rem;height:2rem;}.switch.large input:checked+label:after{left:2.75rem;}.switch.small label{width:3.5rem;height:1.75rem;}.switch.small label:after{width:1.25rem;height:1.25rem;}.switch.small input:checked+label:after{left:2rem;}.switch.tiny label{width:3rem;height:1.5rem;}.switch.tiny label:after{width:1rem;height:1rem;}.switch.tiny input:checked+label:after{left:1.75rem;}.switch.radius label{border-radius:4px;}.switch.radius label:after{border-radius:3px;}.switch.round{border-radius:1000px;}.switch.round label{border-radius:2rem;}.switch.round label:after{border-radius:2rem;}table{background:#ffffff;margin-bottom:1.25rem;border:solid 1px #dddddd;table-layout:auto;}table caption{background:transparent;color:#222222;font-size:1rem;font-weight:bold;}table thead{background:#f5f5f5;}table thead tr th ,table thead tr td{padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222222;}table tfoot{background:#f5f5f5;}table tfoot tr th ,table tfoot tr td{padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222222;}table tr th ,table tr td{padding:0.5625rem 0.625rem;font-size:0.875rem;color:#222222;text-align:left;}table tr.even ,table tr.alt ,table tr:nth-of-type(even){background:#f9f9f9;}table thead tr th ,table tfoot tr th ,table tfoot tr td ,table tbody tr th ,table tbody tr td ,table tr td{display:table-cell;line-height:1.125rem;}.tabs{margin-bottom:0 !important;margin-left:0;}.tabs:before ,.tabs:after{content:" ";display:table;}.tabs:after{clear:both;}.tabs dd ,.tabs .tab-title{position:relative;margin-bottom:0 !important;list-style:none;float:left;}.tabs dd>a ,.tabs .tab-title>a{display:block;background-color:#f7f7f7;color:#333333;padding:0.5rem 1rem;font-family:"Open Sans",sans-serif;font-size:0.875rem;}.tabs dd > a:hover ,.tabs .tab-title > a:hover{background-color:#e8e8e8;}.tabs dd > a:focus ,.tabs .tab-title > a:focus{outline:none;}.tabs dd.active a ,.tabs .tab-title.active a{background-color:#ffffff;color:#333333;}.tabs.radius dd:first-child a ,.tabs.radius .tab:first-child a{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.tabs.radius dd:last-child a ,.tabs.radius .tab:last-child a{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.tabs.vertical dd ,.tabs.vertical .tab-title{position:inherit;float:none;display:block;top:auto;}.tabs-content{margin-bottom:0;width:100%;}.tabs-content:before ,.tabs-content:after{content:" ";display:table;}.tabs-content:after{clear:both;}.tabs-content>.content{display:none;float:left;padding:0.9375rem 0;width:100%;}.tabs-content > .content.active{display:block;float:none;}.tabs-content > .content.contained{padding:0.9375rem;}.tabs-content.vertical{display:block;}.tabs-content.vertical>.content{padding:0 0.9375rem;}@media only screen and (min-width:40.063em){.tabs.vertical{width:20%;max-width:20%;float:left;margin:0 0 1.25rem;}.tabs-content.vertical{width:80%;max-width:80%;float:left;margin-left:-1px;padding-left:1rem;}}.no-js .tabs-content>.content{display:block;float:none;}.th{line-height:0;display:inline-block;border:solid 4px #ffffff;max-width:100%;box-shadow:0 0 0 1px rgba(0,0,0,0.2);transition:all 200ms ease-out;}.th:hover ,.th:focus{box-shadow:0 0 6px 1px rgba(0,152,195,0.5);}.th.radius{border-radius:3px;}.has-tip{border-bottom:none;cursor:help;font-weight:bold;color:#333333;}.has-tip:hover ,.has-tip:focus{border-bottom:none;color:#0098c3;}.has-tip.tip-left ,.has-tip.tip-right{float:none !important;}.tooltip{display:none;position:absolute;z-index:1006;font-weight:normal;font-size:0.875rem;line-height:1.3;padding:0.75rem;max-width:300px;left:50%;width:100%;color:#ffffff;background:#333333;}.tooltip>.nub{display:block;left:5px;position:absolute;width:0;height:0;border:solid 5px;border-color:transparent transparent #333333 transparent;top:-10px;pointer-events:none;}.tooltip > .nub.rtl{left:auto;right:5px;}.tooltip.radius{border-radius:3px;}.tooltip.round{border-radius:1000px;}.tooltip.round>.nub{left:2rem;}.tooltip.opened{color:#0098c3 !important;border-bottom:none !important;}.tap-to-close{display:block;font-size:0.625rem;color:#777777;font-weight:normal;}@media only screen and (min-width:40.063em){.tooltip>.nub{border-color:transparent transparent #333333 transparent;top:-10px;}.tooltip.tip-top>.nub{border-color:#333333 transparent transparent transparent;top:auto;bottom:-10px;}.tooltip.tip-left ,.tooltip.tip-right{float:none !important;}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #333333;right:-10px;left:auto;top:50%;margin-top:-5px;}.tooltip.tip-right>.nub{border-color:transparent #333333 transparent transparent;right:auto;left:-10px;top:50%;margin-top:-5px;}}meta.foundation-mq-topbar{font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}.contain-to-grid{width:100%;background:#333333;}.contain-to-grid .top-bar{margin-bottom:0;}.fixed{width:100%;left:0;position:fixed;top:0;z-index:99;}.fixed.expanded:not(.top-bar){overflow-y:auto;height:auto;width:100%;max-height:100%;}.fixed.expanded:not(.top-bar) .title-area{position:fixed;width:100%;z-index:99;}.fixed.expanded:not(.top-bar) .top-bar-section{z-index:98;margin-top:2.8125rem;}.top-bar{overflow:hidden;height:2.8125rem;line-height:2.8125rem;position:relative;background:#333333;margin-bottom:0;}.top-bar ul{margin-bottom:0;list-style:none;}.top-bar .row{max-width:none;}.top-bar form ,.top-bar input{margin-bottom:0;}.top-bar input{height:1.75rem;padding-top:0.35rem;padding-bottom:0.35rem;font-size:0.75rem;}.top-bar .button ,.top-bar button{padding-top:0.4125rem;padding-bottom:0.4125rem;margin-bottom:0;font-size:0.75rem;}@media only screen and (max-width:40em){.top-bar .button ,.top-bar button{position:relative;top:-1px;}}.top-bar .title-area{position:relative;margin:0;}.top-bar .name{height:2.8125rem;margin:0;font-size:16px;}.top-bar .name h1 ,.top-bar .name h2 ,.top-bar .name h3 ,.top-bar .name h4 ,.top-bar .name p ,.top-bar .name span{line-height:2.8125rem;font-size:1.0625rem;margin:0;}.top-bar .name h1 a ,.top-bar .name h2 a ,.top-bar .name h3 a ,.top-bar .name h4 a ,.top-bar .name p a ,.top-bar .name span a{font-weight:normal;color:#ffffff;width:75%;display:block;padding:0 0.9375rem;}.top-bar .toggle-topbar{position:absolute;right:0;top:0;}.top-bar .toggle-topbar a{color:#ffffff;text-transform:uppercase;font-size:0.8125rem;font-weight:bold;position:relative;display:block;padding:0 0.9375rem;height:2.8125rem;line-height:2.8125rem;}.top-bar .toggle-topbar.menu-icon{top:50%;margin-top:-16px;}.top-bar .toggle-topbar.menu-icon a{height:34px;line-height:33px;padding:0 2.5rem 0 0.9375rem;color:#ffffff;position:relative;}.top-bar .toggle-topbar.menu-icon a span::after{content:"";position:absolute;display:block;height:0;top:50%;margin-top:-8px;right:0.9375rem;box-shadow:0 0 0 1px #ffffff,0 7px 0 1px #ffffff,0 14px 0 1px #ffffff;width:16px;}.top-bar .toggle-topbar.menu-icon a span:hover:after{box-shadow:0 0 0 1px "",0 7px 0 1px "",0 14px 0 1px "";}.top-bar.expanded{height:auto;background:transparent;}.top-bar.expanded .title-area{background:#333333;}.top-bar.expanded .toggle-topbar a{color:#888888;}.top-bar.expanded .toggle-topbar a span::after{box-shadow:0 0 0 1px #888888,0 7px 0 1px #888888,0 14px 0 1px #888888;}.top-bar-section{left:0;position:relative;width:auto;transition:left 300ms ease-out;}.top-bar-section ul{padding:0;width:100%;height:auto;display:block;font-size:16px;margin:0;}.top-bar-section .divider ,.top-bar-section [role="separator"]{border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%;}.top-bar-section ul li{background:#333333;}.top-bar-section ul li>a{display:block;width:100%;color:#ffffff;padding:12px 0 12px 0;padding-left:0.9375rem;font-family:"Open Sans",sans-serif;font-size:0.8125rem;font-weight:normal;text-transform:none;}.top-bar-section ul li > a.button{font-size:0.8125rem;padding-right:0.9375rem;padding-left:0.9375rem;background-color:#0098c3;border-color:#007a9c;color:#ffffff;}.top-bar-section ul li > a.button:hover ,.top-bar-section ul li > a.button:focus{background-color:#007a9c;}.top-bar-section ul li > a.button:hover ,.top-bar-section ul li > a.button:focus{color:#ffffff;}.top-bar-section ul li > a.button.secondary{background-color:#f7f7f7;border-color:#c6c6c6;color:#333333;}.top-bar-section ul li > a.button.secondary:hover ,.top-bar-section ul li > a.button.secondary:focus{background-color:#c6c6c6;}.top-bar-section ul li > a.button.secondary:hover ,.top-bar-section ul li > a.button.secondary:focus{color:#333333;}.top-bar-section ul li > a.button.success{background-color:#43ac6a;border-color:#368a54;color:#ffffff;}.top-bar-section ul li > a.button.success:hover ,.top-bar-section ul li > a.button.success:focus{background-color:#368a54;}.top-bar-section ul li > a.button.success:hover ,.top-bar-section ul li > a.button.success:focus{color:#ffffff;}.top-bar-section ul li > a.button.alert{background-color:#f04124;border-color:#cf280e;color:#ffffff;}.top-bar-section ul li > a.button.alert:hover ,.top-bar-section ul li > a.button.alert:focus{background-color:#cf280e;}.top-bar-section ul li > a.button.alert:hover ,.top-bar-section ul li > a.button.alert:focus{color:#ffffff;}.top-bar-section ul li > a.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}.top-bar-section ul li > a.button.warning:hover ,.top-bar-section ul li > a.button.warning:focus{background-color:#cf6e0e;}.top-bar-section ul li > a.button.warning:hover ,.top-bar-section ul li > a.button.warning:focus{color:#ffffff;}.top-bar-section ul li>button{font-size:0.8125rem;padding-right:0.9375rem;padding-left:0.9375rem;background-color:#0098c3;border-color:#007a9c;color:#ffffff;}.top-bar-section ul li > button:hover ,.top-bar-section ul li > button:focus{background-color:#007a9c;}.top-bar-section ul li > button:hover ,.top-bar-section ul li > button:focus{color:#ffffff;}.top-bar-section ul li > button.secondary{background-color:#f7f7f7;border-color:#c6c6c6;color:#333333;}.top-bar-section ul li > button.secondary:hover ,.top-bar-section ul li > button.secondary:focus{background-color:#c6c6c6;}.top-bar-section ul li > button.secondary:hover ,.top-bar-section ul li > button.secondary:focus{color:#333333;}.top-bar-section ul li > button.success{background-color:#43ac6a;border-color:#368a54;color:#ffffff;}.top-bar-section ul li > button.success:hover ,.top-bar-section ul li > button.success:focus{background-color:#368a54;}.top-bar-section ul li > button.success:hover ,.top-bar-section ul li > button.success:focus{color:#ffffff;}.top-bar-section ul li > button.alert{background-color:#f04124;border-color:#cf280e;color:#ffffff;}.top-bar-section ul li > button.alert:hover ,.top-bar-section ul li > button.alert:focus{background-color:#cf280e;}.top-bar-section ul li > button.alert:hover ,.top-bar-section ul li > button.alert:focus{color:#ffffff;}.top-bar-section ul li > button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}.top-bar-section ul li > button.warning:hover ,.top-bar-section ul li > button.warning:focus{background-color:#cf6e0e;}.top-bar-section ul li > button.warning:hover ,.top-bar-section ul li > button.warning:focus{color:#ffffff;}.top-bar-section ul li:hover:not(.has-form)>a{background-color:#555555;background:#333333;color:#ffffff;}.top-bar-section ul li.active>a{background:#0098c3;color:#ffffff;}.top-bar-section ul li.active > a:hover{background:#0083a8;color:#ffffff;}.top-bar-section .has-form{padding:0.9375rem;}.top-bar-section .has-dropdown{position:relative;}.top-bar-section .has-dropdown > a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent rgba(255,255,255,0.4);border-left-style:solid;margin-right:0.9375rem;margin-top:-4.5px;position:absolute;top:50%;right:0;}.top-bar-section .has-dropdown.moved{position:static;}.top-bar-section .has-dropdown.moved>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;width:100%;}.top-bar-section .has-dropdown.moved>a:after{display:none;}.top-bar-section .dropdown{padding:0;position:absolute;left:100%;top:0;z-index:99;display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);}.top-bar-section .dropdown li{width:100%;height:auto;}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 0.9375rem;}.top-bar-section .dropdown li a.parent-link{font-weight:normal;}.top-bar-section .dropdown li.title h5 ,.top-bar-section .dropdown li.parent-link{margin-bottom:0;margin-top:0;font-size:1.125rem;}.top-bar-section .dropdown li.title h5 a ,.top-bar-section .dropdown li.parent-link a{color:#ffffff;display:block;}.top-bar-section .dropdown li.title h5 a:hover ,.top-bar-section .dropdown li.parent-link a:hover{background:none;}.top-bar-section .dropdown li.has-form{padding:8px 0.9375rem;}.top-bar-section .dropdown li .button ,.top-bar-section .dropdown li button{top:auto;}.top-bar-section .dropdown label{padding:8px 0.9375rem 2px;margin-bottom:0;text-transform:uppercase;color:#777777;font-weight:bold;font-size:0.625rem;}.js-generated{display:block;}@media only screen and (min-width:40.063em){.top-bar{background:#333333;overflow:visible;}.top-bar:before ,.top-bar:after{content:" ";display:table;}.top-bar:after{clear:both;}.top-bar .toggle-topbar{display:none;}.top-bar .title-area{float:left;}.top-bar .name h1 a ,.top-bar .name h2 a ,.top-bar .name h3 a ,.top-bar .name h4 a ,.top-bar .name h5 a ,.top-bar .name h6 a{width:auto;}.top-bar input ,.top-bar .button ,.top-bar button{font-size:0.875rem;position:relative;height:1.75rem;top:0.53125rem;}.top-bar.expanded{background:#333333;}.contain-to-grid .top-bar{max-width:75rem;margin:0 auto;margin-bottom:0;}.top-bar-section{transition:none 0 0;left:0 !important;}.top-bar-section ul{width:auto;height:auto !important;display:inline;}.top-bar-section ul li{float:left;}.top-bar-section ul li .js-generated{display:none;}.top-bar-section li.hover>a:not(.button){background-color:#555555;background:#333333;color:#ffffff;}.top-bar-section li:not(.has-form) a:not(.button){padding:0 0.9375rem;line-height:2.8125rem;background:#333333;}.top-bar-section li:not(.has-form) a:not(.button):hover{background-color:#555555;background:#333333;}.top-bar-section li.active:not(.has-form) a:not(.button){padding:0 0.9375rem;line-height:2.8125rem;color:#ffffff;background:#0098c3;}.top-bar-section li.active:not(.has-form) a:not(.button):hover{background:#0083a8;color:#ffffff;}.top-bar-section .has-dropdown>a{padding-right:2.1875rem !important;}.top-bar-section .has-dropdown > a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:rgba(255,255,255,0.4) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:1.40625rem;}.top-bar-section .has-dropdown.moved{position:relative;}.top-bar-section .has-dropdown.moved>.dropdown{display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);}.top-bar-section .has-dropdown.hover>.dropdown ,.top-bar-section .has-dropdown.not-click:hover>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}.top-bar-section .has-dropdown>a:focus+.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}.top-bar-section .has-dropdown .dropdown li.has-dropdown > a:after{border:none;content:"\00bb";top:1rem;margin-top:-1px;right:5px;line-height:1.2;}.top-bar-section .dropdown{left:0;top:auto;background:transparent;min-width:100%;}.top-bar-section .dropdown li a{color:#ffffff;line-height:2.8125rem;white-space:nowrap;padding:12px 0.9375rem;background:#333333;}.top-bar-section .dropdown li:not(.has-form):not(.active)>a:not(.button){color:#ffffff;background:#333333;}.top-bar-section .dropdown li:not(.has-form):not(.active):hover>a:not(.button){color:#ffffff;background-color:#555555;background:#333333;}.top-bar-section .dropdown li label{white-space:nowrap;background:#333333;}.top-bar-section .dropdown li .dropdown{left:100%;top:0;}.top-bar-section>ul>.divider ,.top-bar-section>ul>[role="separator"]{border-bottom:none;border-top:none;border-right:solid 1px #4e4e4e;clear:none;height:2.8125rem;width:0;}.top-bar-section .has-form{background:#333333;padding:0 0.9375rem;height:2.8125rem;}.top-bar-section .right li .dropdown{left:auto;right:0;}.top-bar-section .right li .dropdown li .dropdown{right:100%;}.top-bar-section .left li .dropdown{right:auto;left:0;}.top-bar-section .left li .dropdown li .dropdown{left:100%;}.no-js .top-bar-section ul li:hover>a{background-color:#555555;background:#333333;color:#ffffff;}.no-js .top-bar-section ul li:active>a{background:#0098c3;color:#ffffff;}.no-js .top-bar-section .has-dropdown:hover>.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}.no-js .top-bar-section .has-dropdown>a:focus+.dropdown{display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;}}.text-left{text-align:left !important;}.text-right{text-align:right !important;}.text-center{text-align:center !important;}.text-justify{text-align:justify !important;}@media only screen and (max-width:40em){.small-only-text-left{text-align:left !important;}.small-only-text-right{text-align:right !important;}.small-only-text-center{text-align:center !important;}.small-only-text-justify{text-align:justify !important;}}@media only screen{.small-text-left{text-align:left !important;}.small-text-right{text-align:right !important;}.small-text-center{text-align:center !important;}.small-text-justify{text-align:justify !important;}}@media only screen and (min-width:40.063em) and (max-width:64em){.medium-only-text-left{text-align:left !important;}.medium-only-text-right{text-align:right !important;}.medium-only-text-center{text-align:center !important;}.medium-only-text-justify{text-align:justify !important;}}@media only screen and (min-width:40.063em){.medium-text-left{text-align:left !important;}.medium-text-right{text-align:right !important;}.medium-text-center{text-align:center !important;}.medium-text-justify{text-align:justify !important;}}@media only screen and (min-width:64.063em) and (max-width:90em){.large-only-text-left{text-align:left !important;}.large-only-text-right{text-align:right !important;}.large-only-text-center{text-align:center !important;}.large-only-text-justify{text-align:justify !important;}}@media only screen and (min-width:64.063em){.large-text-left{text-align:left !important;}.large-text-right{text-align:right !important;}.large-text-center{text-align:center !important;}.large-text-justify{text-align:justify !important;}}@media only screen and (min-width:90.063em) and (max-width:120em){.xlarge-only-text-left{text-align:left !important;}.xlarge-only-text-right{text-align:right !important;}.xlarge-only-text-center{text-align:center !important;}.xlarge-only-text-justify{text-align:justify !important;}}@media only screen and (min-width:90.063em){.xlarge-text-left{text-align:left !important;}.xlarge-text-right{text-align:right !important;}.xlarge-text-center{text-align:center !important;}.xlarge-text-justify{text-align:justify !important;}}@media only screen and (min-width:120.063em) and (max-width:99999999em){.xxlarge-only-text-left{text-align:left !important;}.xxlarge-only-text-right{text-align:right !important;}.xxlarge-only-text-center{text-align:center !important;}.xxlarge-only-text-justify{text-align:justify !important;}}@media only screen and (min-width:120.063em){.xxlarge-text-left{text-align:left !important;}.xxlarge-text-right{text-align:right !important;}.xxlarge-text-center{text-align:center !important;}.xxlarge-text-justify{text-align:justify !important;}}div ,dl ,dt ,dd ,ul ,ol ,li ,h1 ,h2 ,h3 ,h4 ,h5 ,h6 ,pre ,form ,p ,blockquote ,th ,td{margin:0;padding:0;}a{color:#0098c3;text-decoration:none;line-height:inherit;}a:hover ,a:focus{color:#0083a8;}a img{border:none;}p{font-family:inherit;font-weight:normal;font-size:1rem;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility;}p.lead{font-size:1.21875rem;line-height:1.6;}p aside{font-size:0.875rem;line-height:1.35;font-style:italic;}h1 ,h2 ,h3 ,h4 ,h5 ,h6{font-family:"Open Sans",sans-serif;font-weight:normal;font-style:normal;color:#222222;text-rendering:optimizeLegibility;margin-top:0.2rem;margin-bottom:0.5rem;line-height:1.4;}h1 small ,h2 small ,h3 small ,h4 small ,h5 small ,h6 small{font-size:60%;color:#6f6f6f;line-height:0;}h1{font-size:2.125rem;}h2{font-size:1.25rem;}h3{font-size:1.1875rem;}h4{font-size:1.125rem;}h5{font-size:1.125rem;}h6{font-size:1rem;}.subheader{line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem;}hr{border:solid #dddddd;border-width:1px 0 0;clear:both;margin:1.25rem 0 1.1875rem;height:0;}em ,i{font-style:italic;line-height:inherit;}strong ,b{font-weight:bold;line-height:inherit;}small{font-size:60%;line-height:inherit;}code{font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;color:#333333;background-color:#fdfdfd;border-width:1px;border-style:solid;border-color:#e4e4e4;padding:0.125rem 0.3125rem 0.0625rem;}ul ,ol ,dl{font-size:1rem;line-height:1.6;margin-bottom:1.25rem;list-style-position:outside;font-family:inherit;}ul{margin-left:1.1rem;}ul.no-bullet{margin-left:0;}ul.no-bullet li ul ,ul.no-bullet li ol{margin-left:1.25rem;margin-bottom:0;list-style:none;}ul li ul ,ul li ol{margin-left:1.25rem;margin-bottom:0;}ul.square li ul ,ul.circle li ul ,ul.disc li ul{list-style:inherit;}ul.square{list-style-type:square;margin-left:1.1rem;}ul.circle{list-style-type:circle;margin-left:1.1rem;}ul.disc{list-style-type:disc;margin-left:1.1rem;}ul.no-bullet{list-style:none;}ol{margin-left:1.4rem;}ol li ul ,ol li ol{margin-left:1.25rem;margin-bottom:0;}dl dt{margin-bottom:0.3rem;font-weight:bold;}dl dd{margin-bottom:0.75rem;}abbr ,acronym{text-transform:uppercase;font-size:90%;color:#555555;cursor:help;}abbr{text-transform:none;}abbr[title]{border-bottom:1px dotted #dddddd;}blockquote{margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #dddddd;}blockquote cite{display:block;font-size:0.8125rem;color:#555555;}blockquote cite:before{content:"\2014 \0020";}blockquote cite a ,blockquote cite a:visited{color:#555555;}blockquote ,blockquote p{line-height:1.6;color:#6f6f6f;}.vcard{display:inline-block;margin:0 0 1.25rem 0;border:1px solid #dddddd;padding:0.625rem 0.75rem;}.vcard li{margin:0;display:block;}.vcard .fn{font-weight:bold;font-size:0.9375rem;}.vevent .summary{font-weight:bold;}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem;}@media only screen and (min-width:40.063em){h1 ,h2 ,h3 ,h4 ,h5 ,h6{line-height:1.4;}h1{font-size:2.75rem;}h2{font-size:1.875rem;}h3{font-size:1.5rem;}h4{font-size:1.4375rem;}h5{font-size:1.125rem;}h6{font-size:1rem;}}.off-canvas-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden;}.off-canvas-wrap.move-right ,.off-canvas-wrap.move-left{min-height:100%;-webkit-overflow-scrolling:touch;}.inner-wrap{position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease;}.inner-wrap:before ,.inner-wrap:after{content:" ";display:table;}.inner-wrap:after{clear:both;}.tab-bar{-webkit-backface-visibility:hidden;background:#333333;color:#ffffff;height:2.8125rem;line-height:2.8125rem;position:relative;}.tab-bar h1 ,.tab-bar h2 ,.tab-bar h3 ,.tab-bar h4 ,.tab-bar h5 ,.tab-bar h6{color:#ffffff;font-weight:bold;line-height:2.8125rem;margin:0;}.tab-bar h1 ,.tab-bar h2 ,.tab-bar h3 ,.tab-bar h4{font-size:1.125rem;}.left-small{width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-right:solid 1px #1a1a1a;left:0;}.right-small{width:2.8125rem;height:2.8125rem;position:absolute;top:0;border-left:solid 1px #1a1a1a;right:0;}.tab-bar-section{padding:0 0.625rem;position:absolute;text-align:center;height:2.8125rem;top:0;}@media only screen and (min-width:40.063em){.tab-bar-section.left{text-align:left;}.tab-bar-section.right{text-align:right;}}.tab-bar-section.left{left:0;right:2.8125rem;}.tab-bar-section.right{left:2.8125rem;right:0;}.tab-bar-section.middle{left:2.8125rem;right:2.8125rem;}.tab-bar .menu-icon{text-indent:2.1875rem;width:2.8125rem;height:2.8125rem;display:block;padding:0;color:#ffffff;position:relative;transform:translate3d(0,0,0);}.tab-bar .menu-icon span::after{content:"";position:absolute;display:block;height:0;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0 0 1px #ffffff,0 7px 0 1px #ffffff,0 14px 0 1px #ffffff;width:1rem;}.tab-bar .menu-icon span:hover:after{box-shadow:0 0 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3;}.left-off-canvas-menu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;-ms-transform:translate(-100%,0);-webkit-transform:translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);-o-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0;}.left-off-canvas-menu *{-webkit-backface-visibility:hidden;}.right-off-canvas-menu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1001;box-sizing:content-box;transition:transform 500ms ease 0s;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;-ms-transform:translate(100%,0);-webkit-transform:translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);-o-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);right:0;}.right-off-canvas-menu *{-webkit-backface-visibility:hidden;}ul.off-canvas-list{list-style-type:none;padding:0;margin:0;}ul.off-canvas-list li label{display:block;padding:0.3rem 0.9375rem;color:#999999;text-transform:uppercase;font-size:0.75rem;font-weight:bold;background:#444444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0;}ul.off-canvas-list li a{display:block;padding:0.66667rem;color:rgba(255,255,255,0.7);border-bottom:1px solid #262626;transition:background 300ms ease;}ul.off-canvas-list li a:hover{background:#242424;}.move-right>.inner-wrap{-ms-transform:translate(15.625rem,0);-webkit-transform:translate3d(15.625rem,0,0);-moz-transform:translate3d(15.625rem,0,0);-ms-transform:translate3d(15.625rem,0,0);-o-transform:translate3d(15.625rem,0,0);transform:translate3d(15.625rem,0,0);}.move-right .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0);}@media only screen and (min-width:40.063em){.move-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05);}}.move-left>.inner-wrap{-ms-transform:translate(-15.625rem,0);-webkit-transform:translate3d(-15.625rem,0,0);-moz-transform:translate3d(-15.625rem,0,0);-ms-transform:translate3d(-15.625rem,0,0);-o-transform:translate3d(-15.625rem,0,0);transform:translate3d(-15.625rem,0,0);}.move-left .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0);}@media only screen and (min-width:40.063em){.move-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05);}}.offcanvas-overlap .left-off-canvas-menu ,.offcanvas-overlap .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003;}.offcanvas-overlap .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0);}@media only screen and (min-width:40.063em){.offcanvas-overlap .exit-off-canvas:hover{background:rgba(255,255,255,0.05);}}.offcanvas-overlap-left .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003;}.offcanvas-overlap-left .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0);}@media only screen and (min-width:40.063em){.offcanvas-overlap-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05);}}.offcanvas-overlap-right .left-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003;}.offcanvas-overlap-right .exit-off-canvas{-webkit-backface-visibility:hidden;transition:background 300ms ease;cursor:pointer;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);display:block;position:absolute;background:rgba(255,255,255,0.2);top:0;bottom:0;left:0;right:0;z-index:1002;-webkit-tap-highlight-color:rgba(0,0,0,0);}@media only screen and (min-width:40.063em){.offcanvas-overlap-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05);}}.no-csstransforms .left-off-canvas-menu{left:-15.625rem;}.no-csstransforms .right-off-canvas-menu{right:-15.625rem;}.no-csstransforms .move-left>.inner-wrap{right:15.625rem;}.no-csstransforms .move-right>.inner-wrap{left:15.625rem;}.left-submenu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;margin:0;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1002;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-transform:translate(-100%,0);-webkit-transform:translate3d(-100%,0,0);-moz-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);-o-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease;}.left-submenu *{-webkit-backface-visibility:hidden;}.left-submenu .back>a{padding:0.3rem 0.9375rem;color:#999999;text-transform:uppercase;font-weight:bold;background:#444444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0;}.left-submenu .back > a:hover{background:#303030;border-top:1px solid #5e5e5e;border-bottom:none;}.left-submenu .back > a:before{content:"\AB";margin-right:0.5rem;display:inline;}.left-submenu.move-right ,.left-submenu.offcanvas-overlap-right ,.left-submenu.offcanvas-overlap{-ms-transform:translate(0%,0);-webkit-transform:translate3d(0%,0,0);-moz-transform:translate3d(0%,0,0);-ms-transform:translate3d(0%,0,0);-o-transform:translate3d(0%,0,0);transform:translate3d(0%,0,0);}.right-submenu{-webkit-backface-visibility:hidden;width:15.625rem;top:0;bottom:0;position:absolute;margin:0;overflow-x:hidden;overflow-y:auto;background:#333333;z-index:1002;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-transform:translate(100%,0);-webkit-transform:translate3d(100%,0,0);-moz-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);-o-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);right:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease;}.right-submenu *{-webkit-backface-visibility:hidden;}.right-submenu .back>a{padding:0.3rem 0.9375rem;color:#999999;text-transform:uppercase;font-weight:bold;background:#444444;border-top:1px solid #5e5e5e;border-bottom:none;margin:0;}.right-submenu .back > a:hover{background:#303030;border-top:1px solid #5e5e5e;border-bottom:none;}.right-submenu .back > a:after{content:"\BB";margin-left:0.5rem;display:inline;}.right-submenu.move-left ,.right-submenu.offcanvas-overlap-left ,.right-submenu.offcanvas-overlap{-ms-transform:translate(0%,0);-webkit-transform:translate3d(0%,0,0);-moz-transform:translate3d(0%,0,0);-ms-transform:translate3d(0%,0,0);-o-transform:translate3d(0%,0,0);transform:translate3d(0%,0,0);}.left-off-canvas-menu ul.off-canvas-list li.has-submenu>a:after{content:"\BB";margin-left:0.5rem;display:inline;}.right-off-canvas-menu ul.off-canvas-list li.has-submenu>a:before{content:"\AB";margin-right:0.5rem;display:inline;}@media only screen{.show-for-small-only ,.show-for-small-up ,.show-for-small ,.show-for-small-down ,.hide-for-medium-only ,.hide-for-medium-up ,.hide-for-medium ,.show-for-medium-down ,.hide-for-large-only ,.hide-for-large-up ,.hide-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up{display:inherit !important;}.hide-for-small-only ,.hide-for-small-up ,.hide-for-small ,.hide-for-small-down ,.show-for-medium-only ,.show-for-medium-up ,.show-for-medium ,.hide-for-medium-down ,.show-for-large-only ,.show-for-large-up ,.show-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up{display:none !important;}.visible-for-small-only ,.visible-for-small-up ,.visible-for-small ,.visible-for-small-down ,.hidden-for-medium-only ,.hidden-for-medium-up ,.hidden-for-medium ,.visible-for-medium-down ,.hidden-for-large-only ,.hidden-for-large-up ,.hidden-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.hidden-for-small-only ,.hidden-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.visible-for-medium-only ,.visible-for-medium-up ,.visible-for-medium ,.hidden-for-medium-down ,.visible-for-large-only ,.visible-for-large-up ,.visible-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);}table.show-for-small-only ,table.show-for-small-up ,table.show-for-small ,table.show-for-small-down ,table.hide-for-medium-only ,table.hide-for-medium-up ,table.hide-for-medium ,table.show-for-medium-down ,table.hide-for-large-only ,table.hide-for-large-up ,table.hide-for-large ,table.show-for-large-down ,table.hide-for-xlarge-only ,table.hide-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up{display:table !important;}thead.show-for-small-only ,thead.show-for-small-up ,thead.show-for-small ,thead.show-for-small-down ,thead.hide-for-medium-only ,thead.hide-for-medium-up ,thead.hide-for-medium ,thead.show-for-medium-down ,thead.hide-for-large-only ,thead.hide-for-large-up ,thead.hide-for-large ,thead.show-for-large-down ,thead.hide-for-xlarge-only ,thead.hide-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up{display:table-header-group !important;}tbody.show-for-small-only ,tbody.show-for-small-up ,tbody.show-for-small ,tbody.show-for-small-down ,tbody.hide-for-medium-only ,tbody.hide-for-medium-up ,tbody.hide-for-medium ,tbody.show-for-medium-down ,tbody.hide-for-large-only ,tbody.hide-for-large-up ,tbody.hide-for-large ,tbody.show-for-large-down ,tbody.hide-for-xlarge-only ,tbody.hide-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up{display:table-row-group !important;}tr.show-for-small-only ,tr.show-for-small-up ,tr.show-for-small ,tr.show-for-small-down ,tr.hide-for-medium-only ,tr.hide-for-medium-up ,tr.hide-for-medium ,tr.show-for-medium-down ,tr.hide-for-large-only ,tr.hide-for-large-up ,tr.hide-for-large ,tr.show-for-large-down ,tr.hide-for-xlarge-only ,tr.hide-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up{display:table-row;}th.show-for-small-only ,td.show-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.show-for-small ,td.show-for-small ,th.show-for-small-down ,td.show-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.hide-for-medium-up ,td.hide-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.show-for-medium-down ,td.show-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.hide-for-large-up ,td.hide-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.show-for-large-down ,td.show-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.hide-for-xlarge-up ,td.hide-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up{display:table-cell !important;}}@media only screen and (min-width:40.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.show-for-medium-only ,.show-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.hide-for-large-only ,.hide-for-large-up ,.hide-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up{display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.hide-for-medium-only ,.hide-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.show-for-large-only ,.show-for-large-up ,.show-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up{display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.visible-for-medium-only ,.visible-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.hidden-for-large-only ,.hidden-for-large-up ,.hidden-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.hidden-for-medium-only ,.hidden-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.visible-for-large-only ,.visible-for-large-up ,.visible-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.show-for-medium-only ,table.show-for-medium-up ,table.show-for-medium ,table.show-for-medium-down ,table.hide-for-large-only ,table.hide-for-large-up ,table.hide-for-large ,table.show-for-large-down ,table.hide-for-xlarge-only ,table.hide-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up{display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.show-for-medium-only ,thead.show-for-medium-up ,thead.show-for-medium ,thead.show-for-medium-down ,thead.hide-for-large-only ,thead.hide-for-large-up ,thead.hide-for-large ,thead.show-for-large-down ,thead.hide-for-xlarge-only ,thead.hide-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up{display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.show-for-medium-only ,tbody.show-for-medium-up ,tbody.show-for-medium ,tbody.show-for-medium-down ,tbody.hide-for-large-only ,tbody.hide-for-large-up ,tbody.hide-for-large ,tbody.show-for-large-down ,tbody.hide-for-xlarge-only ,tbody.hide-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up{display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.show-for-medium-only ,tr.show-for-medium-up ,tr.show-for-medium ,tr.show-for-medium-down ,tr.hide-for-large-only ,tr.hide-for-large-up ,tr.hide-for-large ,tr.show-for-large-down ,tr.hide-for-xlarge-only ,tr.hide-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up{display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.show-for-medium-only ,td.show-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.show-for-medium ,td.show-for-medium ,th.show-for-medium-down ,td.show-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.hide-for-large-up ,td.hide-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.show-for-large-down ,td.show-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.hide-for-xlarge-up ,td.hide-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up{display:table-cell !important;}}@media only screen and (min-width:64.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.hide-for-medium-only ,.show-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.show-for-large-only ,.show-for-large-up ,.show-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up{display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.show-for-medium-only ,.hide-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.hide-for-large-only ,.hide-for-large-up ,.hide-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up{display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.hidden-for-medium-only ,.visible-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.visible-for-large-only ,.visible-for-large-up ,.visible-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.visible-for-medium-only ,.hidden-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.hidden-for-large-only ,.hidden-for-large-up ,.hidden-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.hide-for-medium-only ,table.show-for-medium-up ,table.hide-for-medium ,table.hide-for-medium-down ,table.show-for-large-only ,table.show-for-large-up ,table.show-for-large ,table.show-for-large-down ,table.hide-for-xlarge-only ,table.hide-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up{display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.hide-for-medium-only ,thead.show-for-medium-up ,thead.hide-for-medium ,thead.hide-for-medium-down ,thead.show-for-large-only ,thead.show-for-large-up ,thead.show-for-large ,thead.show-for-large-down ,thead.hide-for-xlarge-only ,thead.hide-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up{display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.hide-for-medium-only ,tbody.show-for-medium-up ,tbody.hide-for-medium ,tbody.hide-for-medium-down ,tbody.show-for-large-only ,tbody.show-for-large-up ,tbody.show-for-large ,tbody.show-for-large-down ,tbody.hide-for-xlarge-only ,tbody.hide-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up{display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.hide-for-medium-only ,tr.show-for-medium-up ,tr.hide-for-medium ,tr.hide-for-medium-down ,tr.show-for-large-only ,tr.show-for-large-up ,tr.show-for-large ,tr.show-for-large-down ,tr.hide-for-xlarge-only ,tr.hide-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up{display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.hide-for-medium-down ,td.hide-for-medium-down ,th.show-for-large-only ,td.show-for-large-only ,th.show-for-large-up ,td.show-for-large-up ,th.show-for-large ,td.show-for-large ,th.show-for-large-down ,td.show-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.hide-for-xlarge-up ,td.hide-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up{display:table-cell !important;}}@media only screen and (min-width:90.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.hide-for-medium-only ,.show-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.hide-for-large-only ,.show-for-large-up ,.hide-for-large ,.hide-for-large-down ,.show-for-xlarge-only ,.show-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up{display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.show-for-medium-only ,.hide-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.show-for-large-only ,.hide-for-large-up ,.show-for-large ,.show-for-large-down ,.hide-for-xlarge-only ,.hide-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up{display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.hidden-for-medium-only ,.visible-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.hidden-for-large-only ,.visible-for-large-up ,.hidden-for-large ,.hidden-for-large-down ,.visible-for-xlarge-only ,.visible-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.visible-for-medium-only ,.hidden-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.visible-for-large-only ,.hidden-for-large-up ,.visible-for-large ,.visible-for-large-down ,.hidden-for-xlarge-only ,.hidden-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.hide-for-medium-only ,table.show-for-medium-up ,table.hide-for-medium ,table.hide-for-medium-down ,table.hide-for-large-only ,table.show-for-large-up ,table.hide-for-large ,table.hide-for-large-down ,table.show-for-xlarge-only ,table.show-for-xlarge-up ,table.hide-for-xxlarge-only ,table.hide-for-xxlarge-up{display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.hide-for-medium-only ,thead.show-for-medium-up ,thead.hide-for-medium ,thead.hide-for-medium-down ,thead.hide-for-large-only ,thead.show-for-large-up ,thead.hide-for-large ,thead.hide-for-large-down ,thead.show-for-xlarge-only ,thead.show-for-xlarge-up ,thead.hide-for-xxlarge-only ,thead.hide-for-xxlarge-up{display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.hide-for-medium-only ,tbody.show-for-medium-up ,tbody.hide-for-medium ,tbody.hide-for-medium-down ,tbody.hide-for-large-only ,tbody.show-for-large-up ,tbody.hide-for-large ,tbody.hide-for-large-down ,tbody.show-for-xlarge-only ,tbody.show-for-xlarge-up ,tbody.hide-for-xxlarge-only ,tbody.hide-for-xxlarge-up{display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.hide-for-medium-only ,tr.show-for-medium-up ,tr.hide-for-medium ,tr.hide-for-medium-down ,tr.hide-for-large-only ,tr.show-for-large-up ,tr.hide-for-large ,tr.hide-for-large-down ,tr.show-for-xlarge-only ,tr.show-for-xlarge-up ,tr.hide-for-xxlarge-only ,tr.hide-for-xxlarge-up{display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.hide-for-medium-down ,td.hide-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.show-for-large-up ,td.show-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.hide-for-large-down ,td.hide-for-large-down ,th.show-for-xlarge-only ,td.show-for-xlarge-only ,th.show-for-xlarge-up ,td.show-for-xlarge-up ,th.hide-for-xxlarge-only ,td.hide-for-xxlarge-only ,th.hide-for-xxlarge-up ,td.hide-for-xxlarge-up{display:table-cell !important;}}@media only screen and (min-width:120.063em){.hide-for-small-only ,.show-for-small-up ,.hide-for-small ,.hide-for-small-down ,.hide-for-medium-only ,.show-for-medium-up ,.hide-for-medium ,.hide-for-medium-down ,.hide-for-large-only ,.show-for-large-up ,.hide-for-large ,.hide-for-large-down ,.hide-for-xlarge-only ,.show-for-xlarge-up ,.show-for-xxlarge-only ,.show-for-xxlarge-up{display:inherit !important;}.show-for-small-only ,.hide-for-small-up ,.show-for-small ,.show-for-small-down ,.show-for-medium-only ,.hide-for-medium-up ,.show-for-medium ,.show-for-medium-down ,.show-for-large-only ,.hide-for-large-up ,.show-for-large ,.show-for-large-down ,.show-for-xlarge-only ,.hide-for-xlarge-up ,.hide-for-xxlarge-only ,.hide-for-xxlarge-up{display:none !important;}.hidden-for-small-only ,.visible-for-small-up ,.hidden-for-small ,.hidden-for-small-down ,.hidden-for-medium-only ,.visible-for-medium-up ,.hidden-for-medium ,.hidden-for-medium-down ,.hidden-for-large-only ,.visible-for-large-up ,.hidden-for-large ,.hidden-for-large-down ,.hidden-for-xlarge-only ,.visible-for-xlarge-up ,.visible-for-xxlarge-only ,.visible-for-xxlarge-up{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;}.visible-for-small-only ,.hidden-for-small-up ,.visible-for-small ,.visible-for-small-down ,.visible-for-medium-only ,.hidden-for-medium-up ,.visible-for-medium ,.visible-for-medium-down ,.visible-for-large-only ,.hidden-for-large-up ,.visible-for-large ,.visible-for-large-down ,.visible-for-xlarge-only ,.hidden-for-xlarge-up ,.hidden-for-xxlarge-only ,.hidden-for-xxlarge-up{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);}table.hide-for-small-only ,table.show-for-small-up ,table.hide-for-small ,table.hide-for-small-down ,table.hide-for-medium-only ,table.show-for-medium-up ,table.hide-for-medium ,table.hide-for-medium-down ,table.hide-for-large-only ,table.show-for-large-up ,table.hide-for-large ,table.hide-for-large-down ,table.hide-for-xlarge-only ,table.show-for-xlarge-up ,table.show-for-xxlarge-only ,table.show-for-xxlarge-up{display:table !important;}thead.hide-for-small-only ,thead.show-for-small-up ,thead.hide-for-small ,thead.hide-for-small-down ,thead.hide-for-medium-only ,thead.show-for-medium-up ,thead.hide-for-medium ,thead.hide-for-medium-down ,thead.hide-for-large-only ,thead.show-for-large-up ,thead.hide-for-large ,thead.hide-for-large-down ,thead.hide-for-xlarge-only ,thead.show-for-xlarge-up ,thead.show-for-xxlarge-only ,thead.show-for-xxlarge-up{display:table-header-group !important;}tbody.hide-for-small-only ,tbody.show-for-small-up ,tbody.hide-for-small ,tbody.hide-for-small-down ,tbody.hide-for-medium-only ,tbody.show-for-medium-up ,tbody.hide-for-medium ,tbody.hide-for-medium-down ,tbody.hide-for-large-only ,tbody.show-for-large-up ,tbody.hide-for-large ,tbody.hide-for-large-down ,tbody.hide-for-xlarge-only ,tbody.show-for-xlarge-up ,tbody.show-for-xxlarge-only ,tbody.show-for-xxlarge-up{display:table-row-group !important;}tr.hide-for-small-only ,tr.show-for-small-up ,tr.hide-for-small ,tr.hide-for-small-down ,tr.hide-for-medium-only ,tr.show-for-medium-up ,tr.hide-for-medium ,tr.hide-for-medium-down ,tr.hide-for-large-only ,tr.show-for-large-up ,tr.hide-for-large ,tr.hide-for-large-down ,tr.hide-for-xlarge-only ,tr.show-for-xlarge-up ,tr.show-for-xxlarge-only ,tr.show-for-xxlarge-up{display:table-row;}th.hide-for-small-only ,td.hide-for-small-only ,th.show-for-small-up ,td.show-for-small-up ,th.hide-for-small ,td.hide-for-small ,th.hide-for-small-down ,td.hide-for-small-down ,th.hide-for-medium-only ,td.hide-for-medium-only ,th.show-for-medium-up ,td.show-for-medium-up ,th.hide-for-medium ,td.hide-for-medium ,th.hide-for-medium-down ,td.hide-for-medium-down ,th.hide-for-large-only ,td.hide-for-large-only ,th.show-for-large-up ,td.show-for-large-up ,th.hide-for-large ,td.hide-for-large ,th.hide-for-large-down ,td.hide-for-large-down ,th.hide-for-xlarge-only ,td.hide-for-xlarge-only ,th.show-for-xlarge-up ,td.show-for-xlarge-up ,th.show-for-xxlarge-only ,td.show-for-xxlarge-only ,th.show-for-xxlarge-up ,td.show-for-xxlarge-up{display:table-cell !important;}}.show-for-landscape ,.hide-for-portrait{display:inherit !important;}.hide-for-landscape ,.show-for-portrait{display:none !important;}table.hide-for-landscape ,table.show-for-portrait{display:table !important;}thead.hide-for-landscape ,thead.show-for-portrait{display:table-header-group !important;}tbody.hide-for-landscape ,tbody.show-for-portrait{display:table-row-group !important;}tr.hide-for-landscape ,tr.show-for-portrait{display:table-row !important;}td.hide-for-landscape ,td.show-for-portrait ,th.hide-for-landscape ,th.show-for-portrait{display:table-cell !important;}@media only screen and (orientation:landscape){.show-for-landscape ,.hide-for-portrait{display:inherit !important;}.hide-for-landscape ,.show-for-portrait{display:none !important;}table.show-for-landscape ,table.hide-for-portrait{display:table !important;}thead.show-for-landscape ,thead.hide-for-portrait{display:table-header-group !important;}tbody.show-for-landscape ,tbody.hide-for-portrait{display:table-row-group !important;}tr.show-for-landscape ,tr.hide-for-portrait{display:table-row !important;}td.show-for-landscape ,td.hide-for-portrait ,th.show-for-landscape ,th.hide-for-portrait{display:table-cell !important;}}@media only screen and (orientation:portrait){.show-for-portrait ,.hide-for-landscape{display:inherit !important;}.hide-for-portrait ,.show-for-landscape{display:none !important;}table.show-for-portrait ,table.hide-for-landscape{display:table !important;}thead.show-for-portrait ,thead.hide-for-landscape{display:table-header-group !important;}tbody.show-for-portrait ,tbody.hide-for-landscape{display:table-row-group !important;}tr.show-for-portrait ,tr.hide-for-landscape{display:table-row !important;}td.show-for-portrait ,td.hide-for-landscape ,th.show-for-portrait ,th.hide-for-landscape{display:table-cell !important;}}.show-for-touch{display:none !important;}.hide-for-touch{display:inherit !important;}.touch .show-for-touch{display:inherit !important;}.touch .hide-for-touch{display:none !important;}table.hide-for-touch{display:table !important;}.touch table.show-for-touch{display:table !important;}thead.hide-for-touch{display:table-header-group !important;}.touch thead.show-for-touch{display:table-header-group !important;}tbody.hide-for-touch{display:table-row-group !important;}.touch tbody.show-for-touch{display:table-row-group !important;}tr.hide-for-touch{display:table-row !important;}.touch tr.show-for-touch{display:table-row !important;}td.hide-for-touch{display:table-cell !important;}.touch td.show-for-touch{display:table-cell !important;}th.hide-for-touch{display:table-cell !important;}.touch th.show-for-touch{display:table-cell !important;}.print-only{display:none !important;}@media print{@page{margin:0.5cm;}*{background:transparent !important;color:#000000 !important;box-shadow:none !important;text-shadow:none !important;}.show-for-print{display:block;}.hide-for-print{display:none;}table.show-for-print{display:table !important;}thead.show-for-print{display:table-header-group !important;}tbody.show-for-print{display:table-row-group !important;}tr.show-for-print{display:table-row !important;}td.show-for-print{display:table-cell !important;}th.show-for-print{display:table-cell !important;}a ,a:visited{text-decoration:underline;}a[href]:after{content:" (" attr(href) ")";}abbr[title]:after{content:" (" attr(title) ")";}.ir a:after ,a[href^="javascript:"]:after ,a[href^="#"]:after{content:"";}pre ,blockquote{border:1px solid #999999;page-break-inside:avoid;}thead{display:table-header-group;}tr ,img{page-break-inside:avoid;}img{max-width:100% !important;}p ,h2 ,h3{orphans:3;widows:3;}h2 ,h3{page-break-after:avoid;}.hide-on-print{display:none !important;}.print-only{display:block !important;}.hide-for-print{display:none !important;}.show-for-print{display:inherit !important;}}@media print{.show-for-print{display:block;}.hide-for-print{display:none;}table.show-for-print{display:table !important;}thead.show-for-print{display:table-header-group !important;}tbody.show-for-print{display:table-row-group !important;}tr.show-for-print{display:table-row !important;}td.show-for-print{display:table-cell !important;}th.show-for-print{display:table-cell !important;}}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;font-stretch:condensed;src:local('Open Sans'),local('OpenSans'),url('opensans.woff') format('woff');}.hidden{display:none;}#footer{margin-top:20px;margin-bottom:10px;font-size:12px;color:#999999;}#footer a{color:#999999;}#footer a:hover{color:#333333;}.left-content{padding-top:40px;padding-left:20px;}.right-content{padding-top:10px;padding-left:50px;padding-right:50px;}.right-info{margin-top:15px;}.log-tab{background:#6f6f6f;color:#f2f2f2;padding:20px;font-size:14px;}table{border:0px;border-collapse:collapse;border-spacing:0;}table th{font-weight:normal !important;font-size:16px !important;background-color:#ffffff !important;border-bottom:1px solid #efefef !important;color:#333333 !important;}table td{font-size:0.8125rem;color:#555555 !important;}table tfoot{background-color:#ffffff !important;}table.dataTable td ,table.dataTable th{font-size:0.8125rem;text-align:left;padding:5px 10px;}table.dataTable td .button ,table.dataTable th .button{margin:0px;}table.dataTable input[type="checkbox"]{margin:3px 0.5ex !important;}table.dataTable textarea{min-height:33px !important;height:33px;padding:5px 10px;margin:0px !important;}table.dataTable select ,table.dataTable input[type="text"]{margin:0px !important;}table:not(.no-hover) tr.odd:hover td:not(.dataTables_empty){background-color:#2ba6cb !important;cursor:pointer;color:#ffffff !important;}table:not(.no-hover) tr.even:hover td:not(.dataTables_empty){background-color:#2ba6cb !important;cursor:pointer;color:#ffffff !important;}td.open-control:hover{cursor:pointer;}input.search{margin:0px;}.markrow{background-color:#cdebf5 !important;}.markrowselected{background-color:#2ba6cb !important;color:#ffffff;}.markrowchecked{background-color:#cdebf5;}.user-zone-container{position:relative;}.user-zone-container .user-zone-info{position:absolute;top:0px;right:0px;z-index:1;}.user-zone-container .user-zone-info .button{background:#ffffff;border:none;}.user-zone-container .user-zone-info .button:hover{background:#f5f5f5;}.white_button{background-color:#ffffff !important;border:none;}.white_button:hover{color:#0098c3 !important;}#logo{margin-top:10px;}.side-nav{padding-bottom:5px;padding-top:0px;border-right:1px solid #efefef;}.side-nav .topTab{margin-top:10px;margin-bottom:5px;}.side-nav .topTab a{color:#333333 !important;}.side-nav .subTab{margin-left:25px;border-left:2px solid #efefef;}.side-nav .subTab:hover{border-left:2px solid #999999;}.side-nav .subTab a{color:#777777 !important;}.side-nav .subTab a:hover{color:#555555 !important;}.side-nav li{font-size:0.75rem;}.side-nav li a{padding:0.2323rem 0.875rem !important;}.side-nav .navigation-active-li{border-left:2px solid #008cba !important;}.side-nav .navigation-active-li a{color:#222222 !important;}.side-nav i{margin-right:3px;}.header-row{margin-bottom:20px !important;margin-top:25px !important;}.header-row .resource-id{color:#999999;display:none;}.header-row .resource-info-header{color:#777777;}input[type="text"] ,select{height:2.0625rem !important;padding:0.3125rem !important;color:rgba(0,0,0,0.75) !important;}.subheader{color:#555555;}.header-info{margin-top:-5px;margin-bottom:5px;}.button.secondary{color:#555555;}.button{margin-right:3px;}.f-dropdown{text-align:left;}.f-dropdown li{padding:0px 10px;}.fa-question-circle{color:#afafaf !important;}.value_td{text-overflow:ellipsis;word-break:break-all;}.key_td{color:#777777 !important;}.configuration_attrs .key_td{width:30%;}.reveal-modal fieldset{margin-bottom:30px !important;}.has-tip{margin-left:10px;color:#555555;font-weight:normal;}.dashboard-widget-footer{margin-bottom:50px !important;}.totals-info span{color:#777777;}.totals-info a{color:#777777 !important;}.totals-info a:hover{color:#0098c3 !important;}.totals-info small{color:#acacac;}.noUiSlider{border:none;margin-top:12px;}.noUiSlider.horizontal{width:100% !important;}fieldset{margin-top:0px;margin-bottom:20px;-webkit-border-radius:3px;border-radius:3px;padding:15px;}fieldset legend{font-weight:normal !important;font-size:16px !important;color:#555555;}.label.allocated{background-color:#2ba6cb;color:#ffffff;}.label.real{background-color:#707d85;color:#ffffff;}.label.total{background-color:#ac5a62;color:#ffffff;}.success-color{color:#43ac6a !important;}.alert-color{color:#ac5a62 !important;}.tabs dd{border:1px solid #efefef;}.tabs dd.active a{font-weight:bold !important;}.tabs.wizard_tabs dd{border:1px solid #dfdfdf !important;}.bordered-tabs .tabs-content{border-right:0px;border-bottom:0px;border-left:0px;border-radius:3px;min-height:300px;}.bordered-tabs .tabs-content.vertical{border-left:1px solid #cfcfcf;}.bordered-tabs .tabs-content:not(.vertical){border-top:1px solid #cfcfcf;margin-top:-2px;}.bordered-tabs dl dd{border:0px;}.bordered-tabs dl.vertical .remove-tab{float:right !important;margin-top:4px;}.bordered-tabs dl.vertical dd.active{border-left:3px solid #008cba;}.bordered-tabs dl.vertical dd:not(.active){border-left:3px solid #ffffff;}.bordered-tabs dl.vertical dd:not(.active):hover{border-left:3px solid #999999;}.bordered-tabs dl:not(.vertical) dd.active{border-bottom:2px solid #008cba;}.bordered-tabs dl:not(.vertical) dd:not(.active):hover{border-bottom:2px solid #999999;}.bordered-tabs dl dd.active a{background:#ffffff;color:#222222;font-weight:normal !important;}.bordered-tabs dl dd:not(.active) a{color:#777777 !important;background:#ffffff;}.bordered-tabs dl dd:not(.active) a:hover{color:#333333 !important;}.remove-tab:hover{color:#f04124;cursor:pointer;}.right-info-tabs dd{width:84px;}.right-info-tabs i{font-size:20px;margin-bottom:-10px;}.right-info-tabs a{color:#555555 !important;padding:10px 0px !important;font-size:12px !important;}.right-info-tabs dd.active a{color:#333333 !important;}.reveal-modal h3{margin-left:-20px;margin-bottom:25px !important;}.reveal-body{padding:5px 20px;}.form_buttons{padding-top:30px;}.quotas fieldset{padding-top:5px;padding-bottom:0px;}.provision-bullet-item .progress{height:10px;border:1px solid #efefef;margin-bottom:0px;}.provision-header{font-size:0.875rem;border-bottom:1px solid #efefef;}.provision-header li{padding-bottom:5px;}.provision-header li.active{border-bottom:2px solid #0098c3;}.quota_table{margin-top:0px !important;margin-bottom:0px !important;clear:both;max-width:none !important;width:100%;}ul.pagination li a{background:#f5f5f5;border:1px solid #efefef;color:#555555;}ul.pagination li.unavailable a{background:#ffffff;border:0px;color:#999999;}ul.pagination li.current a{background:#ffffff;border:1px solid #efefef;color:#333333;}ul.pagination li.current a:hover{background:#ffffff;border:1px solid #efefef;color:#333333;}div.dataTables_length label ,div.dataTables_filter label ,div.dataTables_info{color:#999999;font-weight:normal;}div.dataTables_length label{float:left;text-align:left;margin-bottom:0;}div.dataTables_length{float:right !important;}div.dataTables_length select{width:75px;margin-bottom:0;font-size:10px !important;height:26px !important;margin-left:15px;}div.dataTables_filter label{float:right;margin-bottom:0;}div.dataTables_filter input{display:inline-block !important;width:auto !important;margin-bottom:0;}div.dataTables_info{padding-top:2px;font-size:0.875em;}div.dataTables_paginate{float:right;margin:0;}table.dataTable{clear:both;margin:0.5em 0 !important;max-width:none !important;width:100%;}table.dataTable tr{background:none !important;}table.dataTable thead .sorting ,table.dataTable thead .sorting_asc ,table.dataTable thead .sorting_desc ,table.dataTable thead .sorting_asc_disabled ,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;}table.dataTable thead .sorting_asc{background:url('../images/sort_asc.png') no-repeat center right;}table.dataTable thead .sorting_desc{background:url('../images/sort_desc.png') no-repeat center right;}table.dataTable th:active{outline:none;}div.dataTables_scrollHead table{margin-bottom:0 !important;}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important;}div.dataTables_scrollBody tbody tr:first-child th ,div.dataTables_scrollBody tbody tr:first-child td{border-top:none;}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none;}.jGrowl-notification h1{display:none !important;}.jGrowl-notification ,.jGrowl-notify-submit{background-color:#dfdfdf !important;color:#333333;width:335px !important;}.jGrowl-notify-error{background-color:#f39999 !important;color:#660000;}.jGrowl-closer{background-color:#555555 !important;width:335px !important;}.jGrowl-close{font-size:1.5em !important;}.alert-box-error{border:0px !important;background-color:#f39999 !important;color:#660000;}.custom-panel{border-style:solid;border-width:1px;border-color:#dcdcdc;margin-bottom:1.25rem;padding:1.25rem;background:#f7f7f7;color:#333333;border-color:#efefef;margin-bottom:0px;}.custom-panel>:first-child{margin-top:0;}.custom-panel>:last-child{margin-bottom:0;}.custom-panel h1 ,.custom-panel h2 ,.custom-panel h3 ,.custom-panel h4 ,.custom-panel h5 ,.custom-panel h6 ,.custom-panel p ,.custom-panel li ,.custom-panel dl{color:#333333;}.custom-panel h1 ,.custom-panel h2 ,.custom-panel h3 ,.custom-panel h4 ,.custom-panel h5 ,.custom-panel h6{line-height:1;margin-bottom:0.625rem;}.custom-panel h1.subheader ,.custom-panel h2.subheader ,.custom-panel h3.subheader ,.custom-panel h4.subheader ,.custom-panel h5.subheader ,.custom-panel h6.subheader{line-height:1.4;}.provision-pricing-table{border:1px;margin-left:0;margin-bottom:0;border:1px solid #efefef !important;background:#ffffff !important;padding-bottom:5px !important;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;background:#f7f7f7;}.provision-pricing-table *{list-style:none;line-height:1;}.provision-pricing-table .provision-title{background-color:#f7f7f7;padding:0.625rem;text-align:center;color:#555555;font-weight:bold;font-size:1rem;font-family:"Open Sans",sans-serif;background-color:#f8f8f8 !important;border-bottom:1px solid #efefef;font-size:0.875rem;margin-bottom:5px;font-weight:normal;color:#555555;}.provision-pricing-table .provision-price{background-color:#f6f6f6;padding:0.9375rem 1.25rem;text-align:center;color:#333333;font-weight:normal;font-size:2rem;font-family:"Open Sans",sans-serif;font-size:0.8125rem;}.provision-pricing-table .provision-description{background-color:#ffffff;padding:0.625rem;text-align:center;color:#999999;font-size:0.75rem;font-weight:normal;line-height:1.4;border-bottom:none;font-size:0.8125rem;}.provision-pricing-table .provision-bullet-item{background-color:#ffffff;padding:0.3125rem;text-align:center;color:#777777;font-size:0.875rem;font-weight:normal;border-bottom:none;font-size:0.8125rem;padding:5px 10px;}.provision-pricing-table .provision-bullet-item-last{background-color:#ffffff;padding:0.3125rem;text-align:center;color:#777777;font-size:0.875rem;font-weight:normal;border-bottom:none;font-size:0.8125rem;color:#999999;margin-top:10px;padding:5px 10px;}.provision-pricing-table .provision-cta{background-color:#ffffff;text-align:center;padding:1.25rem 1.25rem 0;font-size:0.8125rem;}.provision-pricing-table li{background:none !important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.provision-pricing-table.hoverable.only-one:not(.selected):hover{cursor:pointer;}.provision-pricing-table.hoverable.more-than-one:hover{cursor:pointer;}.provision-pricing-table .only-on-hover{color:#cfcfcf !important;}.provision-pricing-table:not(.selected):hover{border-color:#afafaf !important;}.provision-pricing-table:not(.selected):hover .only-on-hover{color:#0099c3 !important;}.provision-pricing-table.selected{border:1px solid #0099c3 !important;}.provision-pricing-table_vm_info li ,.provision-pricing-table_flow_info li ,.provision-pricing-table_user_info li{padding:5px 0px !important;font-size:0.875rem !important;}.deploying-bg{background-color:#c7731f !important;}.error-bg{background-color:#cf280e !important;}.powering_off-bg{background-color:#cf280e !important;}.off-bg{background-color:#999999;}.running-bg{background-color:#368a54 !important;}.deploying-color{color:#c7731f;}.error-color{color:#cf280e;}.powering_off-color{color:#cf280e;}.off-color{color:#555555;}.running-color{color:#368a54;}.provision_back ,.provision_show_vm_accordion ,.provision_show_user_accordion ,.provision_show_flow_accordion{padding:0px !important;}.provision-input{border-color:#dfdfdf;border-radius:3px;}.provision-search-input{width:200px !important;height:34px !important;border-radius:3px;border-color:#efefef;margin:0px !important;}#provision_list_vms_filter select ,#provision_list_templates_filter select ,#provision_list_flows_filter select{width:200px !important;height:35px !important;border-radius:3px;border-color:#efefef;float:right !important;margin:5px 10px 0px 0px;}.accordion a.accordion-a{border:1px solid #efefef;background:#f7f7f7;border-radius:5px;color:#555555 !important;}.alert-box.secondary{margin-top:10px;}hr{border-color:#dfdfdf;}.provision-logo img{padding:10px;border-radius:3px;height:80px;}.provision_action_icons{margin-bottom:5px;font-size:14px;}.provision_action_icons .white{color:#007d9c;background:#ffffff;border-color:#0098c3;}.provision_action_icons .button{margin-right:3px;}.provision_action_icons a{font-weight:bold;}.policies_table th{font-size:14px !important;}.accordion_advanced{margin-bottom:10px;}.accordion_advanced>a{padding:10px 20px;font-size:13px;color:#555555;background:#f7f7f7;border:1px solid #f7f7f7;}.accordion_advanced > a .fa{margin-right:10px;color:#777777;}.accordion_advanced > a.active{background:#ffffff;border:0px;border-bottom:2px solid #008cba;font-weight:bold;}.accordion_advanced > a.active .fa-chevron-down{display:none;}.accordion_advanced > a:not(.active){border:1px solid #efefef;border-radius:3px;}.accordion_advanced > a:not(.active) .fa-chevron-up{display:none;}.accordion_advanced > a:hover{background:#dfdfdf;color:#333333;}.accordion_advanced>.content{border-top:1px solid #cfcfcf;padding:20px;margin-top:8px;}.accordion dd.active .only-not-active{display:none;}.accordion dd.active .only-active{display:inline-block;}.accordion dd:not(.active) .only-active{display:none;}.accordion dd:not(.active) .only-not-active{display:inline-block;}.accordion_list dd>a{padding:0px;background:#ffffff !important;}.accordion_list dd>.content{padding-top:5px !important;padding:0px !important;}.accordion_list dd:first-child>h3{border-bottom:1px solid #efefef;padding-bottom:10px;}.accordion_list dd:first-child > h3 .button{margin:0px 3px;}.accordion_list dd:first-child > h3 select{height:33px !important;margin:0px 5px 0px 0px !important;float:right !important;width:auto !important;}.accordion_list dd:first-child > h3 input{margin:0px !important;}.vm_info_inline_list .fa:not(.fa-square){color:#afafaf;}.vm_info_inline_list li{margin-right:30px;}.range-slider-active-segment{background:#cfcfcf;}.tooltip{z-index:2000;}.flot-tick-label{color:#999999;}#li_support-tab{background:#f7f7f7;border-radius:3px;padding:5px 0px;margin-top:30px;}#li_support-tab .support_title{color:#333333;}#li_support-tab .support_info{margin-top:10px;width:100%;}#li_support-tab .support_pending{color:#777777;}#li_support-tab .support_open{color:#777777;}#li_support-tab .support_button{margin-top:15px;}#li_support-tab .support_connect{margin-top:10px;width:100%;color:#777777;}#li_support-tab .support_connect_button{margin-top:15px;}#user_ssh_public_key_text ,#config_ssh_public_key_text{font-size:0.875rem;color:#777777;padding:0px 10px;overflow-x:hidden;text-overflow:ellipsis;height:120px;}.vm-action-disabled{color:#cfcfcf !important;cursor:default !important;}.inline-list{margin:0px;}.inline-list li:not(.right){margin-left:0px;margin-right:1.375rem;}.inline-list li.right{margin-left:0px;margin-right:0px;}#loading{width:100%;height:100%;top:0px;left:0px;position:fixed;display:block;opacity:0.7;background-color:#ffffff;z-index:99;text-align:center;}#loading-content{position:absolute;top:200px;z-index:100;}.actions_row input{height:34px;}.nowrap{white-space:nowrap;}.tree ,.tree ul{font:inherit;list-style-type:none;margin-left:1em;padding:0;position:relative;overflow:hidden;}.tree li{margin:0;padding:0 1em;position:relative;}.tree li::before ,.tree li::after{content:'';position:absolute;left:0;}.tree li::before{border-top:1px solid #999999;top:0.5em;width:10px;height:0;}.tree li:after{border-left:1px solid #999999;height:100%;width:0px;top:-0.5em;}.tree>li::after{top:0.5em;}.tree>li:last-child::after{display:none;}.tree ul:last-child li:last-child:after{height:1em;} \ No newline at end of file diff --git a/src/sunstone/public/dist/console/spice.js b/src/sunstone/public/dist/console/spice.js deleted file mode 100644 index 86f0b676b0..0000000000 --- a/src/sunstone/public/dist/console/spice.js +++ /dev/null @@ -1,7 +0,0 @@ -function SpiceConn(t){if(void 0===t||void 0===t.uri||!t.uri)throw new Error("You must specify a uri");if(this.ws=new WebSocket(t.uri,"binary"),!this.ws.binaryType)throw new Error("WebSocket doesn't support binaryType. Try a different browser.");if(this.connection_id=void 0!==t.connection_id?t.connection_id:0,this.type=void 0!==t.type?t.type:SPICE_CHANNEL_MAIN,this.chan_id=void 0!==t.chan_id?t.chan_id:0,void 0!==t.parent&&(this.parent=t.parent,this.message_id=t.parent.message_id,this.password=t.parent.password),void 0!==t.screen_id&&(this.screen_id=t.screen_id),void 0!==t.dump_id&&(this.dump_id=t.dump_id),void 0!==t.message_id&&(this.message_id=t.message_id),void 0!==t.password&&(this.password=t.password),void 0!==t.onerror&&(this.onerror=t.onerror),void 0!==t.onsuccess&&(this.onsuccess=t.onsuccess),void 0!==t.onagent&&(this.onagent=t.onagent),this.state="connecting",this.ws.parent=this,this.wire_reader=new SpiceWireReader(this,this.process_inbound),this.messages_sent=0,this.warnings=[],this.ws.addEventListener("open",function(){DEBUG>0&&console.log(">> WebSockets.onopen"),DEBUG>0&&console.log("id "+this.parent.connection_id+"; type "+this.parent.type),this.parent.send_hdr(),this.parent.wire_reader.request(SpiceLinkHeader.prototype.buffer_size()),this.parent.state="start"}),this.ws.addEventListener("error",function(t){"url"in t.target&&this.parent.log_err("WebSocket error: Can't connect to websocket on URL: "+t.target.url),this.parent.report_error(t)}),this.ws.addEventListener("close",function(t){if(DEBUG>0&&console.log(">> WebSockets.onclose"),DEBUG>0&&console.log("id "+this.parent.connection_id+"; type "+this.parent.type),DEBUG>0&&console.log(t),"closing"!=this.parent.state&&"error"!=this.parent.state&&void 0!==this.parent.onerror){var t;t=new Error("connecting"==this.parent.state?"Connection refused.":"start"==this.parent.state||"link"==this.parent.state?"Unexpected protocol mismatch.":"ticket"==this.parent.state?"Bad password.":"Unexpected close while "+this.parent.state),this.parent.onerror(t),this.parent.log_err(t.toString())}}),2==this.ws.readyState||3==this.ws.readyState)throw new Error("Unable to connect to "+t.uri);this.timeout=window.setTimeout(spiceconn_timeout,SPICE_CONNECT_TIMEOUT,this)}function spiceconn_timeout(t){SpiceConn.prototype.handle_timeout.call(t)}function SpiceArrayBufferSlice(t,e){t=t||0,e=e||this.byteLength,0>e&&(e=this.byteLength+e),0>t&&(t=this.byteLength+t),0>t&&(t=0),0>e&&(e=0),e>this.byteLength&&(e=this.byteLength),t>e&&(t=e);var i,s=new ArrayBuffer(e-t),r=new Uint8Array(this,t,e-t),n=new Uint8Array(s);for(i=0;e-t>i;i++)n[i]=r[i];return s}function combine_array_buffers(t,e){var i,s=new Uint8Array(t),r=new Uint8Array(e),n=new ArrayBuffer(t.byteLength+e.byteLength),a=new Uint8Array(n),_=0;for(i=0;ie?e:224|e-256<<8}function keycode_to_end_scan(t){var e=get_scancode(t);return void 0===e?0:256>e?128|e:32992|e-256<<8}function rfc2083_make_crc_table(){var t,e,i;for(e=0;256>e;e++){for(t=e,i=0;8>i;i++)1&t?t=(3988292384^t>>>1)>>>0&4294967295:t>>>=1;rfc2083_crc_table[e]=t}rfc2083_crc_table_computed=1}function rfc2083_update_crc(t,e,i,s){var r,n=t;for(rfc2083_crc_table_computed||rfc2083_make_crc_table(),r=0;s>r;r++)n=rfc2083_crc_table[255&(n^e[i+r])]^n>>>8;return n}function rfc2083_crc(t,e,i){return 4294967295^rfc2083_update_crc(4294967295,t,e,i)}function crc32(t,e,i){var s=new Uint8Array(t);return rfc2083_crc(s,e,i)}function PngIHDR(t,e){this.width=t,this.height=e,this.depth=8,this.type=6,this.compression=0,this.filter=0,this.interlace=0}function adler(){this.s1=1,this.s2=0}function PngIDAT(t,e,i){if(i.byteLength>65535)throw new Error("Cannot handle more than 64K");this.data=i,this.width=t,this.height=e}function PngIEND(){}function create_rgba_png(t,e,i){var s,r=new PngIHDR(t,e),n=new PngIDAT(t,e,i),a=new PngIEND,_=new ArrayBuffer(r.buffer_size()+n.buffer_size()+a.buffer_size()),o=r.to_buffer(_);o=n.to_buffer(_,o),o=a.to_buffer(_,o);var c=new Uint8Array(_),h="";for(s=0;o>s;s++)h+="%",c[s]<16&&(h+="0"),h+=c[s].toString(16);return"%89PNG%0D%0A%1A%0A"+h}function lz_rgb32_decompress(t,e,s,r,n){var a,_=e,o=0;for(a=t[_++];4*o>5,p=(31&a)<<8;if(a>=32){var u;if(h--,6==h)do u=t[_++],h+=u;while(255==u);if(u=t[_++],p+=u,255==u&&p-u==7936&&(p=t[_++]<<8,p+=t[_++],p+=8191),h+=1,r==LZ_IMAGE_TYPE_RGBA&&(h+=2),p+=1,c-=p,c==o-1)for(var d=c;h;--h){if(r==LZ_IMAGE_TYPE_RGBA)s[4*o+3]=s[4*d+3];else for(i=0;4>i;i++)s[4*o+i]=s[4*d+i];o++}else for(;h;--h){if(r==LZ_IMAGE_TYPE_RGBA)s[4*o+3]=s[4*c+3];else for(i=0;4>i;i++)s[4*o+i]=s[4*c+i];o++,c++}}else for(a++,r==LZ_IMAGE_TYPE_RGBA?s[4*o+3]=t[_++]:(s[4*o+0]=t[_+2],s[4*o+1]=t[_+1],s[4*o+2]=t[_+0],n&&(s[4*o+3]=255),_+=3),o++,--a;a;a--)r==LZ_IMAGE_TYPE_RGBA?s[4*o+3]=t[_++]:(s[4*o+0]=t[_+2],s[4*o+1]=t[_+1],s[4*o+2]=t[_+0],n&&(s[4*o+3]=255),_+=3),o++}return _-1}function convert_spice_lz_to_web(t,e){var i;if(e.type===LZ_IMAGE_TYPE_RGB32||e.type===LZ_IMAGE_TYPE_RGBA){var s=new Uint8Array(e.data),r=t.createImageData(e.width,e.height);i=lz_rgb32_decompress(s,0,r.data,LZ_IMAGE_TYPE_RGB32,e.type!=LZ_IMAGE_TYPE_RGBA),e.type==LZ_IMAGE_TYPE_RGBA&&lz_rgb32_decompress(s,i,r.data,LZ_IMAGE_TYPE_RGBA,!1)}else{if(e.type!==LZ_IMAGE_TYPE_XXXA)return void 0;var s=new Uint8Array(e.data),r=t.createImageData(e.width,e.height);lz_rgb32_decompress(s,0,r.data,LZ_IMAGE_TYPE_RGBA,!1)}return r}function ceil_log_2(t){if(1===t)return 0;var e=1;for(t-=1;t>>>=1;)e++;return e}function family_init(t,e,i){var s;for(s=0;e>s;s++){var r,n;r=i-e,r>bppmask[e-s]&&(r=bppmask[e-s]),n=bppmask[e]+1-(r<>>0,t.notGRsuffixlen[s]=ceil_log_2(n)}var a,_=bppmask[e],o=_>>>1;for(a=0;_>=a;a++)t.xlatU2L[a]=o>=a?a<<1:(_-a<<1)+1;for(a=0;_>=a;a++)t.xlatL2U[a]=1&a?_-(a>>>1):a>>>1}function quic_image_bpc(t){switch(t){case QUIC_IMAGE_TYPE_GRAY:return 8;case QUIC_IMAGE_TYPE_RGB16:return 5;case QUIC_IMAGE_TYPE_RGB24:return 8;case QUIC_IMAGE_TYPE_RGB32:return 8;case QUIC_IMAGE_TYPE_RGBA:return 8;case QUIC_IMAGE_TYPE_INVALID:default:return console.log("quic: bad image type\n"),0}}function cnt_l_zeroes(t){return 4286578688&t?lzeroes[t>>>24]:4294934528&t?8+lzeroes[t>>>16&255]:4294967168&t?16+lzeroes[t>>>8&255]:24+lzeroes[255&t]}function golomb_decoding_8bpc(t,e){var i,s;if(0>e||e>family_8bpc.notGRprefixmask[t]){var r=cnt_l_zeroes(e);s=r+1+t,i=r<>32-s&bppmask[t]}else s=family_8bpc.notGRcwlen[t],i=family_8bpc.nGRcodewords[t]+(e>>32-s&bppmask[family_8bpc.notGRsuffixlen[t]]);return{codewordlen:s,rc:i}}function golomb_code_len_8bpc(t,e){return t>>e)+1+e:family_8bpc.notGRcwlen[e]}function QuicModel(t){var e,i=0;switch(this.levels=1<=this.levels&&(i=this.levels-1),this.n_buckets_ptrs||(this.n_buckets_ptrs=this.levels),this.n_buckets++;while(it;t++)if(this.channels[t]=new QuicChannel(this.model_8bpc,this.model_5bpc),!this.channels[t])return void console.log("quic: failed to create channel")}function SpiceQuic(){}function convert_spice_quic_to_web(t,e){var i,s=t.createImageData(e.width,e.height);for(i=0;i1&&console.log(">> WebSockets.onmessage"),DEBUG>1&&console.log("id "+this.wire_reader.sc.connection_id+"; type "+this.wire_reader.sc.type),SpiceWireReader.prototype.inbound.call(this.wire_reader,t.data)}function putImageDataWithAlpha(t,e,i,s){var r=document.createElement("canvas"),n=r.getContext("2d");r.setAttribute("width",e.width),r.setAttribute("height",e.height),n.putImageData(e,0,0),t.drawImage(r,i,s,e.width,e.height)}function stripAlpha(t){var e;for(e=0;e2&&this.o.sc.log_info("Discarding jpeg; presumed lost surface "+this.o.base.surface_id),e=document.createElement("canvas"),e.setAttribute("width",this.o.base.box.right),e.setAttribute("height",this.o.base.box.bottom),t=e.getContext("2d")):t=this.o.sc.surfaces[this.o.base.surface_id].canvas.context,this.alpha_img){var i=document.createElement("canvas"),s=i.getContext("2d");i.setAttribute("width",this.alpha_img.width),i.setAttribute("height",this.alpha_img.height),s.putImageData(this.alpha_img,0,0),s.globalCompositeOperation="source-in",s.drawImage(this,0,0),t.drawImage(i,this.o.base.box.left,this.o.base.box.top),this.o.descriptor&&this.o.descriptor.flags&SPICE_IMAGE_FLAGS_CACHE_ME&&("cache"in this.o.sc||(this.o.sc.cache={}),this.o.sc.cache[this.o.descriptor.id]=s.getImageData(0,0,this.alpha_img.width,this.alpha_img.height))}else t.drawImage(this,this.o.base.box.left,this.o.base.box.top),this.src=null,this.o.descriptor&&this.o.descriptor.flags&SPICE_IMAGE_FLAGS_CACHE_ME&&("cache"in this.o.sc||(this.o.sc.cache={}),this.o.sc.cache[this.o.descriptor.id]=t.getImageData(this.o.base.box.left,this.o.base.box.top,this.o.base.box.right-this.o.base.box.left,this.o.base.box.bottom-this.o.base.box.top));if(null==e){if(DUMP_DRAWS&&this.o.sc.parent.dump_id){var r=document.createElement("canvas");r.setAttribute("id",this.o.tag+"."+this.o.sc.surfaces[this.o.base.surface_id].draw_count+"."+this.o.base.surface_id+"@"+this.o.base.box.left+"x"+this.o.base.box.top),r.getContext("2d").drawImage(this,0,0),document.getElementById(this.o.sc.parent.dump_id).appendChild(r)}this.o.sc.surfaces[this.o.base.surface_id].draw_count++}}function SpiceInputsConn(){SpiceConn.apply(this,arguments),this.mousex=void 0,this.mousey=void 0,this.button_state=0,this.waiting_for_ack=0}function handle_mousemove(t){var e,i=new SpiceMiniData;this.sc.mouse_mode==SPICE_MOUSE_MODE_CLIENT?(e=new SpiceMsgcMousePosition(this.sc,t),i.build_msg(SPICE_MSGC_INPUTS_MOUSE_POSITION,e)):(e=new SpiceMsgcMouseMotion(this.sc,t),i.build_msg(SPICE_MSGC_INPUTS_MOUSE_MOTION,e)),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&(this.sc.inputs.waiting_for_ack<2*SPICE_INPUT_MOTION_ACK_BUNCH?(this.sc.inputs.send_msg(i),this.sc.inputs.waiting_for_ack++):DEBUG>0&&this.sc.log_info("Discarding mouse motion")),this.sc&&this.sc.cursor&&this.sc.cursor.spice_simulated_cursor&&(this.sc.cursor.spice_simulated_cursor.style.display="block",this.sc.cursor.spice_simulated_cursor.style.left=t.pageX-this.sc.cursor.spice_simulated_cursor.spice_hot_x+"px",this.sc.cursor.spice_simulated_cursor.style.top=t.pageY-this.sc.cursor.spice_simulated_cursor.spice_hot_y+"px",t.preventDefault())}function handle_mousedown(t){var e=new SpiceMsgcMousePress(this.sc,t),i=new SpiceMiniData;i.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(i),t.preventDefault()}function handle_contextmenu(t){return t.preventDefault(),!1}function handle_mouseup(t){var e=new SpiceMsgcMouseRelease(this.sc,t),i=new SpiceMiniData;i.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(i),t.preventDefault()}function handle_mousewheel(t){var e=new SpiceMsgcMousePress,i=new SpiceMsgcMouseRelease;e.button=i.button=t.deltaY<0?SPICE_MOUSE_BUTTON_UP:SPICE_MOUSE_BUTTON_DOWN,e.buttons_state=0,i.buttons_state=0;var s=new SpiceMiniData;s.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(s),s.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE,i),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(s),t.preventDefault()}function handle_keydown(t){var e=new SpiceMsgcKeyDown(t),i=new SpiceMiniData;check_and_update_modifiers(t,e.code,this.sc),i.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(i),t.preventDefault()}function handle_keyup(t){var e=new SpiceMsgcKeyUp(t),i=new SpiceMiniData;check_and_update_modifiers(t,e.code,this.sc),i.build_msg(SPICE_MSGC_INPUTS_KEY_UP,e),this.sc&&this.sc.inputs&&"ready"===this.sc.inputs.state&&this.sc.inputs.send_msg(i),t.preventDefault()}function sendCtrlAltDel(){if(sc&&sc.inputs&&"ready"===sc.inputs.state){var t=new SpiceMsgcKeyDown,e=new SpiceMiniData;update_modifier(!0,KEY_LCtrl,sc),update_modifier(!0,KEY_Alt,sc),t.code=KEY_KP_Decimal,e.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN,t),sc.inputs.send_msg(e),e.build_msg(SPICE_MSGC_INPUTS_KEY_UP,t),sc.inputs.send_msg(e),0==Ctrl_state&&update_modifier(!1,KEY_LCtrl,sc),0==Alt_state&&update_modifier(!1,KEY_Alt,sc)}}function update_modifier(t,e,i){var s=new SpiceMiniData;if(t){var r=new SpiceMsgcKeyDown;r.code=e,s.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN,r)}else{var r=new SpiceMsgcKeyUp;r.code=128|e,s.build_msg(SPICE_MSGC_INPUTS_KEY_UP,r)}i.inputs.send_msg(s)}function check_and_update_modifiers(t,e,i){-1===Shift_state&&(Shift_state=t.shiftKey,Ctrl_state=t.ctrlKey,Alt_state=t.altKey,Meta_state=t.metaKey),e===KEY_ShiftL?Shift_state=!0:e===KEY_Alt?Alt_state=!0:e===KEY_LCtrl?Ctrl_state=!0:57525===e?Meta_state=!0:e===(128|KEY_ShiftL)?Shift_state=!1:e===(128|KEY_Alt)?Alt_state=!1:e===(128|KEY_LCtrl)?Ctrl_state=!1:57525===e&&(Meta_state=!1),i&&i.inputs&&"ready"===i.inputs.state&&(Shift_state!=t.shiftKey&&(console.log("Shift state out of sync"),update_modifier(t.shiftKey,KEY_ShiftL,i),Shift_state=t.shiftKey),Alt_state!=t.altKey&&(console.log("Alt state out of sync"),update_modifier(t.altKey,KEY_Alt,i),Alt_state=t.altKey),Ctrl_state!=t.ctrlKey&&(console.log("Ctrl state out of sync"),update_modifier(t.ctrlKey,KEY_LCtrl,i),Ctrl_state=t.ctrlKey),Meta_state!=t.metaKey&&(console.log("Meta state out of sync"),update_modifier(t.metaKey,57525,i),Meta_state=t.metaKey))}function EBML_write_u1_data_len(t,e,i){var s=128|t;return e.setUint8(i,s),i+1}function EBML_write_u8_value(t,e,i,s){return s=EBML_write_array(t,i,s),s=EBML_write_u1_data_len(1,i,s),i.setUint8(s,e),s+1}function EBML_write_u32_value(t,e,i,s){return s=EBML_write_array(t,i,s),s=EBML_write_u1_data_len(4,i,s),i.setUint32(s,e),s+4}function EBML_write_u16_value(t,e,i,s){return s=EBML_write_array(t,i,s),s=EBML_write_u1_data_len(2,i,s),i.setUint16(s,e),s+2}function EBML_write_float_value(t,e,i,s){return s=EBML_write_array(t,i,s),s=EBML_write_u1_data_len(4,i,s),i.setFloat32(s,e),s+4}function EBML_write_u64_data_len(t,e,i){e.setUint8(i++,1),e.setUint8(i++,0),e.setUint8(i++,0),e.setUint8(i++,0);for(var s=4294967295&t,r=24;r>=0;r-=8)e.setUint8(i++,s>>r);return i}function EBML_write_array(t,e,i){for(var s=0;s0){var e=t.queue.shift();playback_append_buffer(t,e)}else t.append_okay=!0}function handle_sourcebuffer_error(t){var e=this.spiceconn;e.log_err("source_buffer error "+t.message)}function playback_append_buffer(t,e){try{t.source_buffer.appendBuffer(e),t.append_okay=!1}catch(i){t.log_err("Error invoking appendBuffer: "+i.message)}}function SpiceCursorConn(){SpiceConn.apply(this,arguments)}function BigInteger(t,e,i){null!=t&&("number"==typeof t?this.fromNumber(t,e,i):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}function nbi(){return new BigInteger(null)}function am1(t,e,i,s,r,n){for(;--n>=0;){var a=e*this[t++]+i[s]+r;r=Math.floor(a/67108864),i[s++]=67108863&a}return r}function am2(t,e,i,s,r,n){for(var a=32767&e,_=e>>15;--n>=0;){var o=32767&this[t],c=this[t++]>>15,h=_*o+c*a;o=a*o+((32767&h)<<15)+i[s]+(1073741823&r),r=(o>>>30)+(h>>>15)+_*c+(r>>>30),i[s++]=1073741823&o}return r}function am3(t,e,i,s,r,n){for(var a=16383&e,_=e>>14;--n>=0;){var o=16383&this[t],c=this[t++]>>14,h=_*o+c*a;o=a*o+((16383&h)<<14)+i[s]+r,r=(o>>28)+(h>>14)+_*c,i[s++]=268435455&o}return r}function int2char(t){return BI_RM.charAt(t)}function intAt(t,e){var i=BI_RC[t.charCodeAt(e)];return null==i?-1:i}function bnpCopyTo(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s}function bnpFromInt(t){this.t=1,this.s=0>t?-1:0,t>0?this[0]=t:-1>t?this[0]=t+DV:this.t=0}function nbv(t){var e=nbi();return e.fromInt(t),e}function bnpFromString(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var s=t.length,r=!1,n=0;--s>=0;){var a=8==i?255&t[s]:intAt(t,s);0>a?"-"==t.charAt(s)&&(r=!0):(r=!1,0==n?this[this.t++]=a:n+i>this.DB?(this[this.t-1]|=(a&(1<>this.DB-n):this[this.t-1]|=a<=this.DB&&(n-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,n>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t}function bnToString(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var i,s=(1<0)for(_>_)>0&&(r=!0,n=int2char(i));a>=0;)e>_?(i=(this[a]&(1<<_)-1)<>(_+=this.DB-e)):(i=this[a]>>(_-=e)&s,0>=_&&(_+=this.DB,--a)),i>0&&(r=!0),r&&(n+=int2char(i));return r?n:"0"}function bnNegate(){var t=nbi();return BigInteger.ZERO.subTo(this,t),t}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(t){var e=this.s-t.s;if(0!=e)return e;var i=this.t;if(e=i-t.t,0!=e)return e;for(;--i>=0;)if(0!=(e=this[i]-t[i]))return e;return 0}function nbits(t){var e,i=1;return 0!=(e=t>>>16)&&(t=e,i+=16),0!=(e=t>>8)&&(t=e,i+=8),0!=(e=t>>4)&&(t=e,i+=4),0!=(e=t>>2)&&(t=e,i+=2),0!=(e=t>>1)&&(t=e,i+=1),i}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(t,e){var i;for(i=this.t-1;i>=0;--i)e[i+t]=this[i];for(i=t-1;i>=0;--i)e[i]=0;e.t=this.t+t,e.s=this.s}function bnpDRShiftTo(t,e){for(var i=t;i=0;--i)e[i+a+1]=this[i]>>r|_,_=(this[i]&n)<=0;--i)e[i]=0;e[a]=_,e.t=this.t+a+1,e.s=this.s,e.clamp()}function bnpRShiftTo(t,e){e.s=this.s;var i=Math.floor(t/this.DB);if(i>=this.t)return void(e.t=0);var s=t%this.DB,r=this.DB-s,n=(1<>s;for(var a=i+1;a>s;s>0&&(e[this.t-i-1]|=(this.s&n)<i;)s+=this[i]-t[i],e[i++]=s&this.DM,s>>=this.DB;if(t.t>=this.DB;s+=this.s}else{for(s+=this.s;i>=this.DB;s-=t.s}e.s=0>s?-1:0,-1>s?e[i++]=this.DV+s:s>0&&(e[i++]=s),e.t=i,e.clamp()}function bnpMultiplyTo(t,e){var i=this.abs(),s=t.abs(),r=i.t;for(e.t=r+s.t;--r>=0;)e[r]=0;for(r=0;r=0;)t[i]=0;for(i=0;i=e.DV&&(t[i+e.t]-=e.DV,t[i+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(i,e[i],t,2*i,0,1)),t.s=0,t.clamp()}function bnpDivRemTo(t,e,i){var s=t.abs();if(!(s.t<=0)){var r=this.abs();if(r.t0?(s.lShiftTo(o,n),r.lShiftTo(o,i)):(s.copyTo(n),r.copyTo(i));var c=n.t,h=n[c-1];if(0!=h){var p=h*(1<1?n[c-2]>>this.F2:0),u=this.FV/p,d=(1<=0&&(i[i.t++]=1,i.subTo(m,i)),BigInteger.ONE.dlShiftTo(c,m),m.subTo(n,n);n.t=0;){var g=i[--l]==h?this.DM:Math.floor(i[l]*u+(i[l-1]+f)*d);if((i[l]+=n.am(0,g,i,E,0,c))0&&i.rShiftTo(o,i),0>a&&BigInteger.ZERO.subTo(i,i)}}}function bnMod(t){var e=nbi();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(BigInteger.ZERO)>0&&t.subTo(e,e),e}function Classic(t){this.m=t}function cConvert(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t}function cRevert(t){return t}function cReduce(t){t.divRemTo(this.m,null,t)}function cMulTo(t,e,i){t.multiplyTo(e,i),this.reduce(i)}function cSqrTo(t,e){t.squareTo(e),this.reduce(e)}function bnpInvDigit(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return e=e*(2-(15&t)*e)&15,e=e*(2-(255&t)*e)&255,e=e*(2-((65535&t)*e&65535))&65535,e=e*(2-t*e%this.DV)%this.DV,e>0?this.DV-e:-e}function Montgomery(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(e,e),e}function montRevert(t){var e=nbi();return t.copyTo(e),this.reduce(e),e}function montReduce(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM; -for(i=e+this.m.t,t[i]+=this.m.am(0,s,t,e,0,this.m.t);t[i]>=t.DV;)t[i]-=t.DV,t[++i]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)}function montSqrTo(t,e){t.squareTo(e),this.reduce(e)}function montMulTo(t,e,i){t.multiplyTo(e,i),this.reduce(i)}function bnpIsEven(){return 0==(this.t>0?1&this[0]:this.s)}function bnpExp(t,e){if(t>4294967295||1>t)return BigInteger.ONE;var i=nbi(),s=nbi(),r=e.convert(this),n=nbits(t)-1;for(r.copyTo(i);--n>=0;)if(e.sqrTo(i,s),(t&1<0)e.mulTo(s,r,i);else{var a=i;i=s,s=a}return e.revert(i)}function bnModPowInt(t,e){var i;return i=256>t||e.isEven()?new Classic(e):new Montgomery(e),this.exp(t,i)}function parseBigInt(t,e){return new BigInteger(t,e)}function linebrk(t,e){for(var i="",s=0;s+et?"0"+t.toString(16):t.toString(16)}function pkcs1pad2(t,e){if(e=0&&e>0;){var r=t.charCodeAt(s--);128>r?i[--e]=r:r>127&&2048>r?(i[--e]=63&r|128,i[--e]=r>>6|192):(i[--e]=63&r|128,i[--e]=r>>6&63|128,i[--e]=r>>12|224)}i[--e]=0;for(var n=new SecureRandom,a=new Array;e>2;){for(a[0]=0;0==a[0];)n.nextBytes(a);i[--e]=a[0]}return i[--e]=2,i[--e]=0,new BigInteger(i)}function RSAKey(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}function RSASetPublic(t,e){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=parseBigInt(t,16),this.e=parseInt(e,16)):alert("Invalid RSA public key")}function RSADoPublic(t){return t.modPowInt(this.e,this.n)}function RSAEncrypt(t){var e=pkcs1pad2(t,this.n.bitLength()+7>>3);if(null==e)return null;var i=this.doPublic(e);if(null==i)return null;var s=i.toString(16);return 0==(1&s.length)?s:"0"+s}function Arcfour(){this.i=0,this.j=0,this.S=new Array}function ARC4init(t){var e,i,s;for(e=0;256>e;++e)this.S[e]=e;for(i=0,e=0;256>e;++e)i=i+this.S[e]+t[e%t.length]&255,s=this.S[e],this.S[e]=this.S[i],this.S[i]=s;this.i=0,this.j=0}function ARC4next(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}function rng_seed_int(t){rng_pool[rng_pptr++]^=255&t,rng_pool[rng_pptr++]^=t>>8&255,rng_pool[rng_pptr++]^=t>>16&255,rng_pool[rng_pptr++]^=t>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),rng_state=prng_newstate(),rng_state.init(rng_pool),rng_pptr=0;rng_pptr16&&(i=binb_sha1(i,8*t.length));for(var s=Array(16),r=Array(16),n=0;16>n;n++)s[n]=909522486^i[n],r[n]=1549556828^i[n];var a=binb_sha1(s.concat(rstr2binb(e)),512+8*e.length);return binb2rstr(binb_sha1(r.concat(a),672))}function rstr2hex(t){try{}catch(e){hexcase=0}for(var i,s=hexcase?"0123456789ABCDEF":"0123456789abcdef",r="",n=0;n>>4&15)+s.charAt(15&i);return r}function rstr2b64(t){try{}catch(e){b64pad=""}for(var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s="",r=t.length,n=0;r>n;n+=3)for(var a=t.charCodeAt(n)<<16|(r>n+1?t.charCodeAt(n+1)<<8:0)|(r>n+2?t.charCodeAt(n+2):0),_=0;4>_;_++)s+=8*n+6*_>8*t.length?b64pad:i.charAt(a>>>6*(3-_)&63);return s}function rstr2any(t,e){var i,s,r,n,a=e.length,_=Array(),o=Array(Math.ceil(t.length/2));for(i=0;i0;){for(n=Array(),r=0,i=0;i0||s>0)&&(n[n.length]=s);_[_.length]=r,o=n}var c="";for(i=_.length-1;i>=0;i--)c+=e.charAt(_[i]);var h=Math.ceil(8*t.length/(Math.log(e.length)/Math.log(2)));for(i=c.length;h>i;i++)c=e[0]+c;return c}function str2rstr_utf8(t){for(var e,i,s="",r=-1;++r=55296&&56319>=e&&i>=56320&&57343>=i&&(e=65536+((1023&e)<<10)+(1023&i),r++),127>=e?s+=String.fromCharCode(e):2047>=e?s+=String.fromCharCode(192|e>>>6&31,128|63&e):65535>=e?s+=String.fromCharCode(224|e>>>12&15,128|e>>>6&63,128|63&e):2097151>=e&&(s+=String.fromCharCode(240|e>>>18&7,128|e>>>12&63,128|e>>>6&63,128|63&e));return s}function str2rstr_utf16le(t){for(var e="",i=0;i>>8&255);return e}function str2rstr_utf16be(t){for(var e="",i=0;i>>8&255,255&t.charCodeAt(i));return e}function rstr2binb(t){for(var e=Array(t.length>>2),i=0;i>5]|=(255&t.charCodeAt(i/8))<<24-i%32;return e}function binb2rstr(t){for(var e="",i=0;i<32*t.length;i+=8)e+=String.fromCharCode(t[i>>5]>>>24-i%32&255);return e}function binb_sha1(t,e){t[e>>5]|=128<<24-e%32,t[(e+64>>9<<4)+15]=e;for(var i=Array(80),s=1732584193,r=-271733879,n=-1732584194,a=271733878,_=-1009589776,o=0;of;f++){i[f]=16>f?t[o+f]:bit_rol(i[f-3]^i[f-8]^i[f-14]^i[f-16],1);var l=safe_add(safe_add(bit_rol(s,5),sha1_ft(f,r,n,a)),safe_add(safe_add(_,i[f]),sha1_kt(f)));_=a,a=n,n=bit_rol(r,30),r=s,s=l}s=safe_add(s,c),r=safe_add(r,h),n=safe_add(n,p),a=safe_add(a,u),_=safe_add(_,d)}return Array(s,r,n,a,_)}function sha1_ft(t,e,i,s){return 20>t?e&i|~e&s:40>t?e^i^s:60>t?e&i|e&s|i&s:e^i^s}function sha1_kt(t){return 20>t?1518500249:40>t?1859775393:60>t?-1894007588:-899497514}function safe_add(t,e){var i=(65535&t)+(65535&e),s=(t>>16)+(e>>16)+(i>>16);return s<<16|65535&i}function bit_rol(t,e){return t<>>32-e}function MGF1(t,e){var i,s,r;for(i=0,r=0;r>24&255),n+=String.fromCharCode(i>>16&255),n+=String.fromCharCode(i>>8&255),n+=String.fromCharCode(255&i);var a=rstr_sha1(n);for(s=0;so)return console.log("Error - data too large for key size."),null;for(n=0;o>n;n++)_[n]=0;var c=rstr_sha1(i);for(n=0;n128){if(129!=i)return console.log("Error: we lazily don't support keys bigger than 255 bytes. It'd be easy to fix."),null;i=t[e++]}return[e,i]}function find_sequence(t,e){var i;return e=e||0,48!=t[e++]?(console.log("Error: public key should start with a sequence flag."),null):(i=asn_get_length(t,e),i?i:null)}function create_rsa_from_mb(t,e){var i,s,r,n,a,_=new Uint8Array(t);if(s=find_sequence(_,e),!s)return null;if(e=s[0],s=find_sequence(_,e),!s)return null;if(e=s[0]+s[1],3!=_[e++])return console.log("Error: expecting bit string next."),null;if(i=asn_get_length(_,e),!i)return null;if(e=i[0],0!=_[e]&&48!=_[e+1])return console.log("Error: unexpected values in bit string."),null;if(s=find_sequence(_,e+1),!s)return null;if(e=s[0],2!=_[e++])return console.log("Error: expecting integer n next."),null;if(i=asn_get_length(_,e),!i)return null;for(e=i[0],r=new Array(i[1]),n=0;n>3,e);if(!r)return null;var n=new Array(r.length);for(i=0;i0&&(i+=8-i%8),e%8>0&&(e+=8-e%8),t.resize_window(0,e,i,32,0,0),t.spice_resize_timer=void 0}function handle_resize(){var t=window.spice_connection;t&&t.spice_resize_timer&&(window.clearTimeout(t.spice_resize_timer),t.spice_resize_timer=void 0),t.spice_resize_timer=window.setTimeout(resize_helper,200,t)}function SpiceFileXferTask(t,e){this.id=t,this.file=e}function handle_file_dragover(t){t.stopPropagation(),t.preventDefault(),t.dataTransfer.dropEffect="copy"}function handle_file_drop(t){var e=window.spice_connection,i=t.dataTransfer.files;t.stopPropagation(),t.preventDefault();for(var s=i.length-1;s>=0;s--)i[s].type,e.file_xfer_start(i[s])}function SpiceMainConn(){if("undefined"==typeof WebSocket)throw new Error("WebSocket unavailable. You need to use a different browser.");SpiceConn.apply(this,arguments),this.agent_msg_queue=[],this.file_xfer_tasks={},this.file_xfer_task_id=0,this.file_xfer_read_queue=[]}var requirejs,require,define;!function(t){function e(t,e){return m.call(t,e)}function i(t,e){var i,s,r,n,a,_,o,c,h,p,u,d=e&&e.split("/"),f=l.map,E=f&&f["*"]||{};if(t&&"."===t.charAt(0))if(e){for(t=t.split("/"),a=t.length-1,l.nodeIdCompat&&S.test(t[a])&&(t[a]=t[a].replace(S,"")),t=d.slice(0,d.length-1).concat(t),h=0;h0&&(t.splice(h-1,2),h-=2)}t=t.join("/")}else 0===t.indexOf("./")&&(t=t.substring(2));if((d||E)&&f){for(i=t.split("/"),h=i.length;h>0;h-=1){if(s=i.slice(0,h).join("/"),d)for(p=d.length;p>0;p-=1)if(r=f[d.slice(0,p).join("/")],r&&(r=r[s])){n=r,_=h;break}if(n)break;!o&&E&&E[s]&&(o=E[s],c=h)}!n&&o&&(n=o,_=c),n&&(i.splice(0,_,n),t=i.join("/"))}return t}function s(e,i){return function(){var s=g.call(arguments,0);return"string"!=typeof s[0]&&1===s.length&&s.push(null),h.apply(t,s.concat([e,i]))}}function r(t){return function(e){return i(e,t)}}function n(t){return function(e){d[t]=e}}function a(i){if(e(f,i)){var s=f[i];delete f[i],E[i]=!0,c.apply(t,s)}if(!e(d,i)&&!e(E,i))throw new Error("No "+i);return d[i]}function _(t){var e,i=t?t.indexOf("!"):-1;return i>-1&&(e=t.substring(0,i),t=t.substring(i+1,t.length)),[e,t]}function o(t){return function(){return l&&l.config&&l.config[t]||{}}}var c,h,p,u,d={},f={},l={},E={},m=Object.prototype.hasOwnProperty,g=[].slice,S=/\.js$/;p=function(t,e){var s,n=_(t),o=n[0];return t=n[1],o&&(o=i(o,e),s=a(o)),o?t=s&&s.normalize?s.normalize(t,r(e)):i(t,e):(t=i(t,e),n=_(t),o=n[0],t=n[1],o&&(s=a(o))),{f:o?o+"!"+t:t,n:t,pr:o,p:s}},u={require:function(t){return s(t)},exports:function(t){var e=d[t];return"undefined"!=typeof e?e:d[t]={}},module:function(t){return{id:t,uri:"",exports:d[t],config:o(t)}}},c=function(i,r,_,o){var c,h,l,m,g,S,b=[],C=typeof _;if(o=o||i,"undefined"===C||"function"===C){for(r=!r.length&&_.length?["require","exports","module"]:r,g=0;g1&&console.log("Sending header:"),DEBUG>2&&hexdump_buffer(i),this.ws.send(i)},send_ticket:function(t){var e=new SpiceLinkAuthTicket;e.auth_mechanism=SPICE_COMMON_CAP_AUTH_SPICE,e.encrypted_data=t;var i=new ArrayBuffer(e.buffer_size());e.to_buffer(i),DEBUG>1&&console.log("Sending ticket:"),DEBUG>2&&hexdump_buffer(i),this.ws.send(i)},send_msg:function(t){var e=new ArrayBuffer(t.buffer_size());t.to_buffer(e),this.messages_sent++,DEBUG>0&&console.log(">> hdr "+this.channel_type()+" type "+t.type+" size "+e.byteLength),DEBUG>2&&hexdump_buffer(e),this.ws.send(e)},process_inbound:function(t,e){if(DEBUG>2&&console.log(this.type+": processing message of size "+t.byteLength+"; state is "+this.state),"ready"==this.state)if(void 0==e){var i=new SpiceMiniData(t);i.type>500&&alert("Something has gone very wrong; we think we have message of type "+i.type),0==i.size?(this.process_message(i),this.wire_reader.request(SpiceMiniData.prototype.buffer_size())):(this.wire_reader.request(i.size),this.wire_reader.save_header(i))}else e.data=t,this.process_message(e),this.wire_reader.request(SpiceMiniData.prototype.buffer_size()),this.wire_reader.save_header(void 0);else if("start"==this.state)if(this.reply_hdr=new SpiceLinkHeader(t),this.reply_hdr.magic!=SPICE_MAGIC){this.state="error";var s=new Error("Error: magic mismatch: "+this.reply_hdr.magic);this.report_error(s)}else this.wire_reader.request(this.reply_hdr.size),this.state="link";else if("link"==this.state)if(this.reply_link=new SpiceLinkReply(t),this.reply_link.error){this.state="error";var s=new Error("Error: reply link error "+this.reply_link.error);this.report_error(s)}else this.send_ticket(rsa_encrypt(this.reply_link.pub_key,this.password+String.fromCharCode(0))),this.state="ticket",this.wire_reader.request(SpiceLinkAuthReply.prototype.buffer_size());else if("ticket"==this.state)if(this.auth_reply=new SpiceLinkAuthReply(t),this.auth_reply.auth_code==SPICE_LINK_ERR_OK){if(DEBUG>0&&console.log(this.type+": Connected"),this.type==SPICE_CHANNEL_DISPLAY){var r=new SpiceMsgcDisplayInit,n=new SpiceMiniData;n.build_msg(SPICE_MSGC_DISPLAY_INIT,r),DEBUG>0&&console.log("Request display init"),this.send_msg(n)}this.state="ready",this.wire_reader.request(SpiceMiniData.prototype.buffer_size()),this.timeout&&(window.clearTimeout(this.timeout),delete this.timeout)}else{if(this.state="error",this.auth_reply.auth_code==SPICE_LINK_ERR_PERMISSION_DENIED)var s=new Error("Permission denied.");else var s=new Error("Unexpected link error "+this.auth_reply.auth_code);this.report_error(s)}},process_common_messages:function(t){if(t.type==SPICE_MSG_SET_ACK){var e=new SpiceMsgSetAck(t.data);this.ack_window=e.window,DEBUG>1&&console.log(this.type+": set ack to "+e.window),this.msgs_until_ack=this.ack_window;var i=new SpiceMsgcAckSync(e),s=new SpiceMiniData;return s.build_msg(SPICE_MSGC_ACK_SYNC,i),this.send_msg(s),!0}if(t.type==SPICE_MSG_PING){DEBUG>1&&console.log("ping!");var r=new SpiceMiniData;return r.type=SPICE_MSGC_PONG,t.data&&(r.data=t.data.slice(0,12)),r.size=r.buffer_size(),this.send_msg(r),!0}if(t.type==SPICE_MSG_NOTIFY){var n=new SpiceMsgNotify(t.data);return n.severity==SPICE_NOTIFY_SEVERITY_ERROR?this.log_err(n.message):n.severity==SPICE_NOTIFY_SEVERITY_WARN?this.log_warn(n.message):this.log_info(n.message),!0}return!1},process_message:function(t){var e;if(DEBUG>0&&console.log("<< hdr "+this.channel_type()+" type "+t.type+" size "+(t.data&&t.data.byteLength)),e=this.process_common_messages(t),e||(this.process_channel_message?(e=this.process_channel_message(t),e||this.log_warn(this.type+": Unknown message type "+t.type+"!")):this.log_err(this.type+": No message handlers for this channel; message "+t.type)),void 0!==this.msgs_until_ack&&this.ack_window&&(this.msgs_until_ack--,this.msgs_until_ack<=0)){this.msgs_until_ack=this.ack_window;var i=new SpiceMiniData;i.type=SPICE_MSGC_ACK,this.send_msg(i),DEBUG>1&&console.log(this.type+": sent ack")}return e},channel_type:function(){return this.type==SPICE_CHANNEL_MAIN?"main":this.type==SPICE_CHANNEL_DISPLAY?"display":this.type==SPICE_CHANNEL_INPUTS?"inputs":this.type==SPICE_CHANNEL_CURSOR?"cursor":"unknown-"+this.type},log_info:function(){var t=Array.prototype.join.call(arguments," ");if(console.log(t),this.message_id){var e=document.createElement("p");e.appendChild(document.createTextNode(t)),e.className+="spice-message-info",document.getElementById(this.message_id).appendChild(e)}},log_warn:function(){var t=Array.prototype.join.call(arguments," ");if(console.log("WARNING: "+t),this.message_id){var e=document.createElement("p");e.appendChild(document.createTextNode(t)),e.className+="spice-message-warning",document.getElementById(this.message_id).appendChild(e)}},log_err:function(){var t=Array.prototype.join.call(arguments," ");if(console.log("ERROR: "+t),this.message_id){var e=document.createElement("p");e.appendChild(document.createTextNode(t)),e.className+="spice-message-error",document.getElementById(this.message_id).appendChild(e)}},known_unimplemented:function(t,e){if(!this.warnings[t]||DEBUG>1){var i="";1>=DEBUG&&(i=" [ further notices suppressed ]"),this.log_warn("Unimplemented function "+t+"("+e+")"+i),this.warnings[t]=!0}},report_error:function(t){if(this.log_err(t.toString()),void 0==this.onerror)throw t;this.onerror(t)},report_success:function(t){void 0!=this.onsuccess&&this.onsuccess(t)},cleanup:function(){this.timeout&&(window.clearTimeout(this.timeout),delete this.timeout),this.ws&&(this.ws.close(),this.ws=void 0)},handle_timeout:function(){var t=new Error("Connection timed out.");this.report_error(t)}},define("spice-spiceconn",function(){}),ArrayBuffer.prototype.slice||(ArrayBuffer.prototype.slice=SpiceArrayBufferSlice,console.log("WARNING: ArrayBuffer.slice() is missing; we are extending ArrayBuffer to compensate")),define("spice-spicearraybuffer",function(){});var SPICE_MAGIC="REDQ",SPICE_VERSION_MAJOR=2,SPICE_VERSION_MINOR=2,SPICE_CONNECT_TIMEOUT=3e4,SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION=0,SPICE_COMMON_CAP_AUTH_SPICE=1,SPICE_COMMON_CAP_AUTH_SASL=2,SPICE_COMMON_CAP_MINI_HEADER=3,SPICE_TICKET_KEY_PAIR_LENGTH=1024,SPICE_TICKET_PUBKEY_BYTES=SPICE_TICKET_KEY_PAIR_LENGTH/8+34,SPICE_LINK_ERR_OK=0,SPICE_LINK_ERR_ERROR=1,SPICE_LINK_ERR_INVALID_MAGIC=2,SPICE_LINK_ERR_INVALID_DATA=3,SPICE_LINK_ERR_VERSION_MISMATCH=4,SPICE_LINK_ERR_NEED_SECURED=5,SPICE_LINK_ERR_NEED_UNSECURED=6,SPICE_LINK_ERR_PERMISSION_DENIED=7,SPICE_LINK_ERR_BAD_CONNECTION_ID=8,SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE=9,SPICE_MSG_MIGRATE=1,SPICE_MSG_MIGRATE_DATA=2,SPICE_MSG_SET_ACK=3,SPICE_MSG_PING=4,SPICE_MSG_WAIT_FOR_CHANNELS=5,SPICE_MSG_DISCONNECTING=6,SPICE_MSG_NOTIFY=7,SPICE_MSG_LIST=8,SPICE_MSG_MAIN_MIGRATE_BEGIN=101,SPICE_MSG_MAIN_MIGRATE_CANCEL=102,SPICE_MSG_MAIN_INIT=103,SPICE_MSG_MAIN_CHANNELS_LIST=104,SPICE_MSG_MAIN_MOUSE_MODE=105,SPICE_MSG_MAIN_MULTI_MEDIA_TIME=106,SPICE_MSG_MAIN_AGENT_CONNECTED=107,SPICE_MSG_MAIN_AGENT_DISCONNECTED=108,SPICE_MSG_MAIN_AGENT_DATA=109,SPICE_MSG_MAIN_AGENT_TOKEN=110,SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST=111,SPICE_MSG_MAIN_MIGRATE_END=112,SPICE_MSG_MAIN_NAME=113,SPICE_MSG_MAIN_UUID=114,SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS=115,SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS=116,SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK=117,SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK=118,SPICE_MSG_END_MAIN=119,SPICE_MSGC_ACK_SYNC=1,SPICE_MSGC_ACK=2,SPICE_MSGC_PONG=3,SPICE_MSGC_MIGRATE_FLUSH_MARK=4,SPICE_MSGC_MIGRATE_DATA=5,SPICE_MSGC_DISCONNECTING=6,SPICE_MSGC_MAIN_CLIENT_INFO=101,SPICE_MSGC_MAIN_MIGRATE_CONNECTED=102,SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR=103,SPICE_MSGC_MAIN_ATTACH_CHANNELS=104,SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST=105,SPICE_MSGC_MAIN_AGENT_START=106,SPICE_MSGC_MAIN_AGENT_DATA=107,SPICE_MSGC_MAIN_AGENT_TOKEN=108,SPICE_MSGC_MAIN_MIGRATE_END=109,SPICE_MSGC_END_MAIN=110,SPICE_MSG_DISPLAY_MODE=101,SPICE_MSG_DISPLAY_MARK=102,SPICE_MSG_DISPLAY_RESET=103,SPICE_MSG_DISPLAY_COPY_BITS=104,SPICE_MSG_DISPLAY_INVAL_LIST=105,SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS=106,SPICE_MSG_DISPLAY_INVAL_PALETTE=107,SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES=108,SPICE_MSG_DISPLAY_STREAM_CREATE=122,SPICE_MSG_DISPLAY_STREAM_DATA=123,SPICE_MSG_DISPLAY_STREAM_CLIP=124,SPICE_MSG_DISPLAY_STREAM_DESTROY=125,SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL=126,SPICE_MSG_DISPLAY_DRAW_FILL=302,SPICE_MSG_DISPLAY_DRAW_OPAQUE=303,SPICE_MSG_DISPLAY_DRAW_COPY=304,SPICE_MSG_DISPLAY_DRAW_BLEND=305,SPICE_MSG_DISPLAY_DRAW_BLACKNESS=306,SPICE_MSG_DISPLAY_DRAW_WHITENESS=307,SPICE_MSG_DISPLAY_DRAW_INVERS=308,SPICE_MSG_DISPLAY_DRAW_ROP3=309,SPICE_MSG_DISPLAY_DRAW_STROKE=310,SPICE_MSG_DISPLAY_DRAW_TEXT=311,SPICE_MSG_DISPLAY_DRAW_TRANSPARENT=312,SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND=313,SPICE_MSG_DISPLAY_SURFACE_CREATE=314,SPICE_MSG_DISPLAY_SURFACE_DESTROY=315,SPICE_MSGC_DISPLAY_INIT=101,SPICE_MSG_INPUTS_INIT=101,SPICE_MSG_INPUTS_KEY_MODIFIERS=102,SPICE_MSG_INPUTS_MOUSE_MOTION_ACK=111,SPICE_MSGC_INPUTS_KEY_DOWN=101,SPICE_MSGC_INPUTS_KEY_UP=102,SPICE_MSGC_INPUTS_KEY_MODIFIERS=103,SPICE_MSGC_INPUTS_MOUSE_MOTION=111,SPICE_MSGC_INPUTS_MOUSE_POSITION=112,SPICE_MSGC_INPUTS_MOUSE_PRESS=113,SPICE_MSGC_INPUTS_MOUSE_RELEASE=114,SPICE_MSG_CURSOR_INIT=101,SPICE_MSG_CURSOR_RESET=102,SPICE_MSG_CURSOR_SET=103,SPICE_MSG_CURSOR_MOVE=104,SPICE_MSG_CURSOR_HIDE=105,SPICE_MSG_CURSOR_TRAIL=106,SPICE_MSG_CURSOR_INVAL_ONE=107,SPICE_MSG_CURSOR_INVAL_ALL=108,SPICE_MSG_PLAYBACK_DATA=101,SPICE_MSG_PLAYBACK_MODE=102,SPICE_MSG_PLAYBACK_START=103,SPICE_MSG_PLAYBACK_STOP=104,SPICE_MSG_PLAYBACK_VOLUME=105,SPICE_MSG_PLAYBACK_MUTE=106,SPICE_MSG_PLAYBACK_LATENCY=107,SPICE_PLAYBACK_CAP_CELT_0_5_1=0,SPICE_PLAYBACK_CAP_VOLUME=1,SPICE_PLAYBACK_CAP_LATENCY=2,SPICE_PLAYBACK_CAP_OPUS=3,SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE=0,SPICE_MAIN_CAP_NAME_AND_UUID=1,SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS=2,SPICE_MAIN_CAP_SEAMLESS_MIGRATE=3,SPICE_AUDIO_DATA_MODE_INVALID=0,SPICE_AUDIO_DATA_MODE_RAW=1,SPICE_AUDIO_DATA_MODE_CELT_0_5_1=2,SPICE_AUDIO_DATA_MODE_OPUS=3,SPICE_AUDIO_FMT_INVALID=0,SPICE_AUDIO_FMT_S16=1,SPICE_CHANNEL_MAIN=1,SPICE_CHANNEL_DISPLAY=2,SPICE_CHANNEL_INPUTS=3,SPICE_CHANNEL_CURSOR=4,SPICE_CHANNEL_PLAYBACK=5,SPICE_CHANNEL_RECORD=6,SPICE_CHANNEL_TUNNEL=7,SPICE_CHANNEL_SMARTCARD=8,SPICE_CHANNEL_USBREDIR=9,SPICE_SURFACE_FLAGS_PRIMARY=1,SPICE_NOTIFY_SEVERITY_INFO=0,SPICE_NOTIFY_SEVERITY_WARN=1,SPICE_NOTIFY_SEVERITY_ERROR=2,SPICE_MOUSE_MODE_SERVER=1,SPICE_MOUSE_MODE_CLIENT=2,SPICE_MOUSE_MODE_MASK=3,SPICE_CLIP_TYPE_NONE=0,SPICE_CLIP_TYPE_RECTS=1,SPICE_IMAGE_TYPE_BITMAP=0,SPICE_IMAGE_TYPE_QUIC=1,SPICE_IMAGE_TYPE_RESERVED=2,SPICE_IMAGE_TYPE_LZ_PLT=100,SPICE_IMAGE_TYPE_LZ_RGB=101,SPICE_IMAGE_TYPE_GLZ_RGB=102,SPICE_IMAGE_TYPE_FROM_CACHE=103,SPICE_IMAGE_TYPE_SURFACE=104,SPICE_IMAGE_TYPE_JPEG=105,SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS=106,SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB=107,SPICE_IMAGE_TYPE_JPEG_ALPHA=108,SPICE_IMAGE_FLAGS_CACHE_ME=1,SPICE_IMAGE_FLAGS_HIGH_BITS_SET=2,SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME=4,SPICE_BITMAP_FLAGS_PAL_CACHE_ME=1,SPICE_BITMAP_FLAGS_PAL_FROM_CACHE=2,SPICE_BITMAP_FLAGS_TOP_DOWN=4,SPICE_BITMAP_FLAGS_MASK=7,SPICE_BITMAP_FMT_INVALID=0,SPICE_BITMAP_FMT_1BIT_LE=1,SPICE_BITMAP_FMT_1BIT_BE=2,SPICE_BITMAP_FMT_4BIT_LE=3,SPICE_BITMAP_FMT_4BIT_BE=4,SPICE_BITMAP_FMT_8BIT=5,SPICE_BITMAP_FMT_16BIT=6,SPICE_BITMAP_FMT_24BIT=7,SPICE_BITMAP_FMT_32BIT=8,SPICE_BITMAP_FMT_RGBA=9,SPICE_CURSOR_FLAGS_NONE=1,SPICE_CURSOR_FLAGS_CACHE_ME=2,SPICE_CURSOR_FLAGS_FROM_CACHE=4,SPICE_CURSOR_FLAGS_MASK=7,SPICE_MOUSE_BUTTON_MASK_LEFT=1,SPICE_MOUSE_BUTTON_MASK_MIDDLE=2,SPICE_MOUSE_BUTTON_MASK_RIGHT=4,SPICE_MOUSE_BUTTON_MASK_MASK=7,SPICE_MOUSE_BUTTON_INVALID=0,SPICE_MOUSE_BUTTON_LEFT=1,SPICE_MOUSE_BUTTON_MIDDLE=2,SPICE_MOUSE_BUTTON_RIGHT=3,SPICE_MOUSE_BUTTON_UP=4,SPICE_MOUSE_BUTTON_DOWN=5,SPICE_BRUSH_TYPE_NONE=0,SPICE_BRUSH_TYPE_SOLID=1,SPICE_BRUSH_TYPE_PATTERN=2,SPICE_SURFACE_FMT_INVALID=0,SPICE_SURFACE_FMT_1_A=1,SPICE_SURFACE_FMT_8_A=8,SPICE_SURFACE_FMT_16_555=16,SPICE_SURFACE_FMT_32_xRGB=32,SPICE_SURFACE_FMT_16_565=80,SPICE_SURFACE_FMT_32_ARGB=96,SPICE_ROPD_INVERS_SRC=1,SPICE_ROPD_INVERS_BRUSH=2,SPICE_ROPD_INVERS_DEST=4,SPICE_ROPD_OP_PUT=8,SPICE_ROPD_OP_OR=16,SPICE_ROPD_OP_AND=32,SPICE_ROPD_OP_XOR=64,SPICE_ROPD_OP_BLACKNESS=128,SPICE_ROPD_OP_WHITENESS=256,SPICE_ROPD_OP_INVERS=512,SPICE_ROPD_INVERS_RES=1024,SPICE_ROPD_MASK=2047,LZ_IMAGE_TYPE_INVALID=0,LZ_IMAGE_TYPE_PLT1_LE=1,LZ_IMAGE_TYPE_PLT1_BE=2,LZ_IMAGE_TYPE_PLT4_LE=3,LZ_IMAGE_TYPE_PLT4_BE=4,LZ_IMAGE_TYPE_PLT8=5,LZ_IMAGE_TYPE_RGB16=6,LZ_IMAGE_TYPE_RGB24=7,LZ_IMAGE_TYPE_RGB32=8,LZ_IMAGE_TYPE_RGBA=9,LZ_IMAGE_TYPE_XXXA=10,QUIC_IMAGE_TYPE_INVALID=0,QUIC_IMAGE_TYPE_GRAY=1,QUIC_IMAGE_TYPE_RGB16=2,QUIC_IMAGE_TYPE_RGB24=3,QUIC_IMAGE_TYPE_RGB32=4,QUIC_IMAGE_TYPE_RGBA=5,SPICE_INPUT_MOTION_ACK_BUNCH=4,SPICE_CURSOR_TYPE_ALPHA=0,SPICE_CURSOR_TYPE_MONO=1,SPICE_CURSOR_TYPE_COLOR4=2,SPICE_CURSOR_TYPE_COLOR8=3,SPICE_CURSOR_TYPE_COLOR16=4,SPICE_CURSOR_TYPE_COLOR24=5,SPICE_CURSOR_TYPE_COLOR32=6,SPICE_VIDEO_CODEC_TYPE_MJPEG=1,VD_AGENT_PROTOCOL=1,VD_AGENT_MAX_DATA_SIZE=2048,VD_AGENT_MOUSE_STATE=1,VD_AGENT_MONITORS_CONFIG=2,VD_AGENT_REPLY=3,VD_AGENT_CLIPBOARD=4,VD_AGENT_DISPLAY_CONFIG=5,VD_AGENT_ANNOUNCE_CAPABILITIES=6,VD_AGENT_CLIPBOARD_GRAB=7,VD_AGENT_CLIPBOARD_REQUEST=8,VD_AGENT_CLIPBOARD_RELEASE=9,VD_AGENT_FILE_XFER_START=10,VD_AGENT_FILE_XFER_STATUS=11,VD_AGENT_FILE_XFER_DATA=12,VD_AGENT_CLIENT_DISCONNECTED=13,VD_AGENT_MAX_CLIPBOARD=14,VD_AGENT_CAP_MOUSE_STATE=0,VD_AGENT_CAP_MONITORS_CONFIG=1,VD_AGENT_CAP_REPLY=2,VD_AGENT_CAP_CLIPBOARD=3,VD_AGENT_CAP_DISPLAY_CONFIG=4,VD_AGENT_CAP_CLIPBOARD_BY_DEMAND=5,VD_AGENT_CAP_CLIPBOARD_SELECTION=6,VD_AGENT_CAP_SPARSE_MONITORS_CONFIG=7,VD_AGENT_CAP_GUEST_LINEEND_LF=8,VD_AGENT_CAP_GUEST_LINEEND_CRLF=9,VD_AGENT_CAP_MAX_CLIPBOARD=10,VD_AGENT_END_CAP=11,VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA=0,VD_AGENT_FILE_XFER_STATUS_CANCELLED=1,VD_AGENT_FILE_XFER_STATUS_ERROR=2,VD_AGENT_FILE_XFER_STATUS_SUCCESS=3;define("spice-enums",function(){});var KEY_Escape=1,KEY_1=2,KEY_2=3,KEY_3=4,KEY_4=5,KEY_5=6,KEY_6=7,KEY_7=8,KEY_8=9,KEY_9=10,KEY_0=11,KEY_Minus=12,KEY_Equal=13,KEY_BackSpace=14,KEY_Tab=15,KEY_Q=16,KEY_W=17,KEY_E=18,KEY_R=19,KEY_T=20,KEY_Y=21,KEY_U=22,KEY_I=23,KEY_O=24,KEY_P=25,KEY_LBrace=26,KEY_RBrace=27,KEY_Enter=28,KEY_LCtrl=29,KEY_A=30,KEY_S=31,KEY_D=32,KEY_F=33,KEY_G=34,KEY_H=35,KEY_J=36,KEY_K=37,KEY_L=38,KEY_SemiColon=39,KEY_Quote=40,KEY_Tilde=41,KEY_ShiftL=42,KEY_BSlash=43,KEY_Z=44,KEY_X=45,KEY_C=46,KEY_V=47,KEY_B=48,KEY_N=49,KEY_M=50,KEY_Comma=51,KEY_Period=52,KEY_Slash=53,KEY_ShiftR=54,KEY_KP_Multiply=55,KEY_Alt=56,KEY_Space=57,KEY_CapsLock=58,KEY_F1=59,KEY_F2=60,KEY_F3=61,KEY_F4=62,KEY_F5=63,KEY_F6=64,KEY_F7=65,KEY_F8=66,KEY_F9=67,KEY_F10=68,KEY_NumLock=69,KEY_ScrollLock=70,KEY_KP_7=71,KEY_KP_8=72,KEY_KP_9=73,KEY_KP_Minus=74,KEY_KP_4=75,KEY_KP_5=76,KEY_KP_6=77,KEY_KP_Plus=78,KEY_KP_1=79,KEY_KP_2=80,KEY_KP_3=81,KEY_KP_0=82,KEY_KP_Decimal=83,KEY_SysReqest=84,KEY_Less=86,KEY_F11=87,KEY_F12=88,KEY_Prefix0=96,KEY_Prefix1=97;define("spice-atKeynames",function(){});var DEBUG=0,DUMP_DRAWS=!1,DUMP_CANVASES=!1,common_scanmap=[];common_scanmap["Q".charCodeAt(0)]=KEY_Q,common_scanmap["W".charCodeAt(0)]=KEY_W,common_scanmap["E".charCodeAt(0)]=KEY_E,common_scanmap["R".charCodeAt(0)]=KEY_R,common_scanmap["T".charCodeAt(0)]=KEY_T,common_scanmap["Y".charCodeAt(0)]=KEY_Y,common_scanmap["U".charCodeAt(0)]=KEY_U,common_scanmap["I".charCodeAt(0)]=KEY_I,common_scanmap["O".charCodeAt(0)]=KEY_O,common_scanmap["P".charCodeAt(0)]=KEY_P,common_scanmap["A".charCodeAt(0)]=KEY_A,common_scanmap["S".charCodeAt(0)]=KEY_S,common_scanmap["D".charCodeAt(0)]=KEY_D,common_scanmap["F".charCodeAt(0)]=KEY_F,common_scanmap["G".charCodeAt(0)]=KEY_G,common_scanmap["H".charCodeAt(0)]=KEY_H,common_scanmap["J".charCodeAt(0)]=KEY_J,common_scanmap["K".charCodeAt(0)]=KEY_K,common_scanmap["L".charCodeAt(0)]=KEY_L,common_scanmap["Z".charCodeAt(0)]=KEY_Z,common_scanmap["X".charCodeAt(0)]=KEY_X,common_scanmap["C".charCodeAt(0)]=KEY_C,common_scanmap["V".charCodeAt(0)]=KEY_V,common_scanmap["B".charCodeAt(0)]=KEY_B,common_scanmap["N".charCodeAt(0)]=KEY_N,common_scanmap["M".charCodeAt(0)]=KEY_M,common_scanmap[" ".charCodeAt(0)]=KEY_Space,common_scanmap[13]=KEY_Enter,common_scanmap[27]=KEY_Escape,common_scanmap[8]=KEY_BackSpace,common_scanmap[9]=KEY_Tab,common_scanmap[16]=KEY_ShiftL,common_scanmap[17]=KEY_LCtrl,common_scanmap[18]=KEY_Alt,common_scanmap[20]=KEY_CapsLock,common_scanmap[144]=KEY_NumLock,common_scanmap[112]=KEY_F1,common_scanmap[113]=KEY_F2,common_scanmap[114]=KEY_F3,common_scanmap[115]=KEY_F4,common_scanmap[116]=KEY_F5,common_scanmap[117]=KEY_F6,common_scanmap[118]=KEY_F7,common_scanmap[119]=KEY_F8,common_scanmap[120]=KEY_F9,common_scanmap[121]=KEY_F10,common_scanmap[122]=KEY_F11,common_scanmap[123]=KEY_F12,common_scanmap[42]=99,common_scanmap[19]=101,common_scanmap[111]=57397,common_scanmap[106]=57399,common_scanmap[36]=57415,common_scanmap[38]=57416,common_scanmap[33]=57417,common_scanmap[37]=57419,common_scanmap[39]=57421,common_scanmap[35]=57423,common_scanmap[40]=57424,common_scanmap[34]=57425,common_scanmap[45]=57426,common_scanmap[46]=57427,common_scanmap[44]=10807,common_scanmap["1".charCodeAt(0)]=KEY_1,common_scanmap["2".charCodeAt(0)]=KEY_2,common_scanmap["3".charCodeAt(0)]=KEY_3,common_scanmap["4".charCodeAt(0)]=KEY_4,common_scanmap["5".charCodeAt(0)]=KEY_5,common_scanmap["6".charCodeAt(0)]=KEY_6,common_scanmap["7".charCodeAt(0)]=KEY_7,common_scanmap["8".charCodeAt(0)]=KEY_8,common_scanmap["9".charCodeAt(0)]=KEY_9,common_scanmap["0".charCodeAt(0)]=KEY_0,common_scanmap[145]=KEY_ScrollLock,common_scanmap[103]=KEY_KP_7,common_scanmap[104]=KEY_KP_8,common_scanmap[105]=KEY_KP_9,common_scanmap[100]=KEY_KP_4,common_scanmap[101]=KEY_KP_5,common_scanmap[102]=KEY_KP_6,common_scanmap[107]=KEY_KP_Plus,common_scanmap[97]=KEY_KP_1,common_scanmap[98]=KEY_KP_2,common_scanmap[99]=KEY_KP_3,common_scanmap[96]=KEY_KP_0,common_scanmap[110]=KEY_KP_Decimal,common_scanmap[191]=KEY_Slash,common_scanmap[190]=KEY_Period,common_scanmap[188]=KEY_Comma,common_scanmap[220]=KEY_BSlash,common_scanmap[192]=KEY_Tilde,common_scanmap[222]=KEY_Quote,common_scanmap[219]=KEY_LBrace,common_scanmap[221]=KEY_RBrace,common_scanmap[91]=57435,common_scanmap[92]=57436,common_scanmap[93]=57437;var firefox_scanmap=[];firefox_scanmap[173]=KEY_Minus,firefox_scanmap[109]=KEY_Minus,firefox_scanmap[61]=KEY_Equal,firefox_scanmap[59]=KEY_SemiColon;var DOM_scanmap=[];DOM_scanmap[189]=KEY_Minus,DOM_scanmap[187]=KEY_Equal,DOM_scanmap[186]=KEY_SemiColon,define("spice-utils",function(){}); -var rfc2083_crc_table=Array(256),rfc2083_crc_table_computed=0;PngIHDR.prototype={to_buffer:function(t,e){e=e||0;var i=e,s=new SpiceDataView(t);return s.setUint32(e,this.buffer_size()-12),e+=4,s.setUint8(e,"I".charCodeAt(0)),e++,s.setUint8(e,"H".charCodeAt(0)),e++,s.setUint8(e,"D".charCodeAt(0)),e++,s.setUint8(e,"R".charCodeAt(0)),e++,s.setUint32(e,this.width),e+=4,s.setUint32(e,this.height),e+=4,s.setUint8(e,this.depth),e++,s.setUint8(e,this.type),e++,s.setUint8(e,this.compression),e++,s.setUint8(e,this.filter),e++,s.setUint8(e,this.interlace),e++,s.setUint32(e,crc32(t,i+4,this.buffer_size()-8)),e+=4},buffer_size:function(){return 25}},adler.prototype.update=function(t){this.s1+=t,this.s1%=65521,this.s2+=this.s1,this.s2%=65521},PngIDAT.prototype={to_buffer:function(t,e){e=e||0;var i,s,r,n=e,a=new SpiceDataView(t),_=new adler;a.setUint32(e,this.buffer_size()-12),e+=4,a.setUint8(e,"I".charCodeAt(0)),e++,a.setUint8(e,"D".charCodeAt(0)),e++,a.setUint8(e,"A".charCodeAt(0)),e++,a.setUint8(e,"T".charCodeAt(0)),e++,a.setUint8(e,120),e++,a.setUint8(e,1),e++,a.setUint8(e,128),e++,a.setUint16(e,this.data.byteLength+this.height),e+=2,a.setUint16(e,~(this.data.byteLength+this.height)),e+=2;var o=new Uint8Array(this.data);for(r=0,s=0;s=0;s--){var a=this.counters[s]+=golomb_code_len_8bpc(e,s);n>a&&(r=s,n=a)}if(this.bestcode=r,n>t.wm_trigger)for(s=0;i>s;s++)this.counters[s]=this.counters[s]>>>1}},QuicFamilyStat.prototype={fill_model_structures:function(t){var e,i=0,s=0,r=t.repfirst+1,n=t.firstsize;do{e=s?i+1:0,--r||(r=t.repnext,n*=t.mulsize),i=e+n-1,i+n>=t.levels&&(i=t.levels-1),this.buckets_buf[s]=new QuicBucket;var a;for(a=e;i>=a;a++)this.buckets_ptrs[a]=this.buckets_buf[s];s++}while(i10&&(t=10),this.wm_trigger=besttrigtab[Math.floor(evol/2)][t]},reste:function(){this.waitcnt=0,this.tabrand_seed=255,this.wmidx=0,this.wmileft=wminext,this.set_wm_trigger(),this.melcstate=0,this.melclen=J[0],this.melcorder=1<=this.io_end)throw"quic: out of data";this.io_next_word=this.io_now[this.io_idx++]|this.io_now[this.io_idx++]<<8|this.io_now[this.io_idx++]<<16|this.io_now[this.io_idx++]<<24},QuicEncoder.prototype.decode_eatbits=function(t){this.io_word=this.io_word<=0?(this.io_available_bits=e,this.io_word|=this.io_next_word>>>this.io_available_bits):(e=-1*e,this.io_word|=this.io_next_word<>>this.io_available_bits)},QuicEncoder.prototype.decode_eat32bits=function(){this.decode_eatbits(16),this.decode_eatbits(16)},QuicEncoder.prototype.reste_channels=function(t){var e;for(e=0;4>e;e++)if(!this.channels[e].reste(t))return!1;return!0},QuicEncoder.prototype.quic_decode_begin=function(t){if(!this.reste(t))return!1;this.io_idx=0,this.io_next_word=this.io_now[this.io_idx++]|this.io_now[this.io_idx++]<<8|this.io_now[this.io_idx++]<<16|this.io_now[this.io_idx++]<<24,this.io_word=this.io_next_word,this.io_available_bits=0;var e=this.io_word;if(this.decode_eat32bits(),1128879441!=e)return console.log("quic: bad magic "+e.toString(16)),!1;var i=this.io_word;if(this.decode_eat32bits(),0!=i)return console.log("quic: bad version "+i.toString(16)),!1;this.type=this.io_word,this.decode_eat32bits(),this.width=this.io_word,this.decode_eat32bits(),this.height=this.io_word,this.decode_eat32bits();var s=quic_image_bpc(this.type);return this.reste_channels(s)?!0:!1},QuicEncoder.prototype.quic_rgb32_uncompress_row0_seg=function(t,e,i,s,r,n){var a,_,o,c=3;if(t)a=t+this.rgb_state.waitcnt;else{e[rgb32_pixel_pad]=0,_=0;do o=golomb_decoding_8bpc(this.channels[_].buckets_ptrs[this.channels[_].correlate_row.zero].bestcode,this.io_word),this.channels[_].correlate_row.row[0]=o.rc,e[2-_]=255&family_8bpc.xlatL2U[o.rc],this.decode_eatbits(o.codewordlen);while(++_a;){for(;a>=t;t++){e[t*rgb32_pixel_size+rgb32_pixel_pad]=0,_=0;do o=golomb_decoding_8bpc(this.channels[_].buckets_ptrs[this.channels[_].correlate_row.row[t-1]].bestcode,this.io_word),this.channels[_].correlate_row.row[t]=o.rc,e[t*rgb32_pixel_size+(2-_)]=family_8bpc.xlatL2U[o.rc]+e[(t-1)*rgb32_pixel_size+(2-_)]&n,this.decode_eatbits(o.codewordlen);while(++_t;t++){e[t*rgb32_pixel_size+rgb32_pixel_pad]=0,_=0;do o=golomb_decoding_8bpc(this.channels[_].buckets_ptrs[this.channels[_].correlate_row.row[t-1]].bestcode,this.io_word),this.channels[_].correlate_row.row[t]=o.rc,e[t*rgb32_pixel_size+(2-_)]=family_8bpc.xlatL2U[o.rc]+e[(t-1)*rgb32_pixel_size+(2-_)]&n,this.decode_eatbits(o.codewordlen);while(++_this.rgb_state.wmidx&&this.rgb_state.wmileft<=r;)this.rgb_state.wmileft&&(this.quic_rgb32_uncompress_row0_seg(s,t,s+this.rgb_state.wmileft,bppmask[this.rgb_state.wmidx],e,i),s+=this.rgb_state.wmileft,r-=this.rgb_state.wmileft),this.rgb_state.wmidx++,this.rgb_state.set_wm_trigger(),this.rgb_state.wmileft=wminext;r&&(this.quic_rgb32_uncompress_row0_seg(s,t,s+r,bppmask[this.rgb_state.wmidx],e,i),wmimax>this.rgb_state.wmidx&&(this.rgb_state.wmileft-=r))},QuicEncoder.prototype.quic_rgb32_uncompress_row_seg=function(t,e,i,s,r,n){var a,_,o=3,c=bppmask[this.rgb_state.wmidx],h=0,p=0,u=0;if(i)p=i+this.rgb_state.waitcnt;else{e[rgb32_pixel_pad]=0,_=0;do a=golomb_decoding_8bpc(this.channels[_].buckets_ptrs[this.channels[_].correlate_row.zero].bestcode,this.io_word),this.channels[_].correlate_row.row[0]=a.rc,e[2-_]=family_8bpc.xlatL2U[this.channels[_].correlate_row.row[0]]+t[2-_]&n,this.decode_eatbits(a.codewordlen);while(++_p&&!d;){for(;p>=i&&!d;i++){var f=i*rgb32_pixel_size,l=(i-1)*rgb32_pixel_size,E=(i-2)*rgb32_pixel_size;if(t[l+rgb32_pixel_r]==t[f+rgb32_pixel_r]&&t[l+rgb32_pixel_g]==t[f+rgb32_pixel_g]&&t[l+rgb32_pixel_b]==t[f+rgb32_pixel_b]&&h!=i&&i>2&&e[l+rgb32_pixel_r]==e[E+rgb32_pixel_r]&&e[l+rgb32_pixel_g]==e[E+rgb32_pixel_g]&&e[l+rgb32_pixel_b]==e[E+rgb32_pixel_b]){for(this.rgb_state.waitcnt=p-i,h=i,u=i+this.decode_run(this.rgb_state);u>i;i++){var f=i*rgb32_pixel_size,l=(i-1)*rgb32_pixel_size;e[f+rgb32_pixel_pad]=0,e[f+rgb32_pixel_r]=e[l+rgb32_pixel_r],e[f+rgb32_pixel_g]=e[l+rgb32_pixel_g],e[f+rgb32_pixel_b]=e[l+rgb32_pixel_b]}if(i==s)return;p=i+this.rgb_state.waitcnt,d=1;break}_=0,e[f+rgb32_pixel_pad]=0;do{var m=this.channels[_],g=m.correlate_row;a=golomb_decoding_8bpc(m.buckets_ptrs[g.row[i-1]].bestcode,this.io_word),g.row[i]=a.rc,e[f+(2-_)]=family_8bpc.xlatL2U[a.rc]+(e[l+(2-_)]+t[f+(2-_)]>>1)&n,this.decode_eatbits(a.codewordlen)}while(++_i&&!d;i++){var f=i*rgb32_pixel_size,l=(i-1)*rgb32_pixel_size,E=(i-2)*rgb32_pixel_size;if(t[l+rgb32_pixel_r]==t[f+rgb32_pixel_r]&&t[l+rgb32_pixel_g]==t[f+rgb32_pixel_g]&&t[l+rgb32_pixel_b]==t[f+rgb32_pixel_b]&&h!=i&&i>2&&e[l+rgb32_pixel_r]==e[E+rgb32_pixel_r]&&e[l+rgb32_pixel_g]==e[E+rgb32_pixel_g]&&e[l+rgb32_pixel_b]==e[E+rgb32_pixel_b]){for(this.rgb_state.waitcnt=p-i,h=i,u=i+this.decode_run(this.rgb_state);u>i;i++){var f=i*rgb32_pixel_size,l=(i-1)*rgb32_pixel_size;e[f+rgb32_pixel_pad]=0,e[f+rgb32_pixel_r]=e[l+rgb32_pixel_r],e[f+rgb32_pixel_g]=e[l+rgb32_pixel_g],e[f+rgb32_pixel_b]=e[l+rgb32_pixel_b]}if(i==s)return;p=i+this.rgb_state.waitcnt,d=1;break}e[f+rgb32_pixel_pad]=0,_=0;do a=golomb_decoding_8bpc(this.channels[_].buckets_ptrs[this.channels[_].correlate_row.row[i-1]].bestcode,this.io_word),this.channels[_].correlate_row.row[i]=a.rc,e[f+(2-_)]=family_8bpc.xlatL2U[a.rc]+(e[l+(2-_)]+t[f+(2-_)]>>1)&n,this.decode_eatbits(a.codewordlen);while(++_>>24)>>>0&255,r=zeroLUT[s];for(i=1;r>=i;i++)e+=t.melcorder,t.melcstate<32&&(t.melclen=J[++t.melcstate],t.melcorder=1<>>32-t.melclen,this.decode_eatbits(t.melclen)),t.melcstate&&(t.melclen=J[--t.melcstate],t.melcorder=1<this.rgb_state.wmidx&&this.rgb_state.wmileft<=n;)this.rgb_state.wmileft&&(this.quic_rgb32_uncompress_row_seg(t,e,r,r+this.rgb_state.wmileft,i,s),r+=this.rgb_state.wmileft,n-=this.rgb_state.wmileft),this.rgb_state.wmidx++,this.rgb_state.set_wm_trigger(),this.rgb_state.wmileft=wminext;n&&(this.quic_rgb32_uncompress_row_seg(t,e,r,r+n,i,s),wmimax>this.rgb_state.wmidx&&(this.rgb_state.wmileft-=n))},QuicEncoder.prototype.quic_four_uncompress_row0_seg=function(t,e,i,s,r,n,a,_){var o,c;for(0==e?(c=golomb_decoding_8bpc(t.buckets_ptrs[i.zero].bestcode,this.io_word),i.row[0]=c.rc,s[rgb32_pixel_pad]=family_8bpc.xlatL2U[c.rc],this.decode_eatbits(c.codewordlen),t.state.waitcnt?--t.state.waitcnt:(t.state.waitcnt=t.state.tabrand()&n,t.buckets_ptrs[i.zero].update_model_8bpc(t.state,i.row[0],a)),o=++e+t.state.waitcnt):o=e+t.state.waitcnt;r>o;){for(var h;o>=e;e++)h=t.buckets_ptrs[i.row[e-1]],c=golomb_decoding_8bpc(h.bestcode,this.io_word),i.row[e]=c.rc,s[e*rgb32_pixel_size+rgb32_pixel_pad]=family_8bpc.xlatL2U[c.rc]+s[(e-1)*rgb32_pixel_size+rgb32_pixel_pad]&_,this.decode_eatbits(c.codewordlen);h.update_model_8bpc(t.state,i.row[o],a),o=e+(t.state.tabrand()&n)}for(;r>e;e++)c=golomb_decoding_8bpc(t.buckets_ptrs[i.row[e-1]].bestcode,this.io_word),i.row[e]=c.rc,s[e*rgb32_pixel_size+rgb32_pixel_pad]=family_8bpc.xlatL2U[c.rc]+s[(e-1)*rgb32_pixel_size+rgb32_pixel_pad]&_,this.decode_eatbits(c.codewordlen);t.state.waitcnt=o-r},QuicEncoder.prototype.quic_four_uncompress_row0=function(t,e){for(var i=8,s=255,r=t.correlate_row,n=0,a=this.width;wmimax>t.state.wmidx&&t.state.wmileft<=a;)t.state.wmileft&&(this.quic_four_uncompress_row0_seg(t,n,r,e,n+t.state.wmileft,bppmask[t.state.wmidx],i,s),n+=t.state.wmileft,a-=t.state.wmileft),t.state.wmidx++,t.state.set_wm_trigger(),t.state.wmileft=wminext;a&&(this.quic_four_uncompress_row0_seg(t,n,r,e,n+a,bppmask[t.state.wmidx],i,s),wmimax>t.state.wmidx&&(t.state.wmileft-=a))},QuicEncoder.prototype.quic_four_uncompress_row_seg=function(t,e,i,s,r,n,a,_){var o,c,h,p=bppmask[t.state.wmidx],u=0;for(0==r?(h=golomb_decoding_8bpc(t.buckets_ptrs[e.zero].bestcode,this.io_word),e.row[0]=h.rc,s[rgb32_pixel_pad]=family_8bpc.xlatL2U[h.rc]+i[rgb32_pixel_pad]&_,this.decode_eatbits(h.codewordlen),t.state.waitcnt?--t.state.waitcnt:(t.state.waitcnt=t.state.tabrand()&p,t.buckets_ptrs[e.zero].update_model_8bpc(t.state,e.row[0],a)),o=++r+t.state.waitcnt):o=r+t.state.waitcnt;;){for(var d=0;n>o&&!d;){for(var f;o>=r&&!d;r++){var l=r*rgb32_pixel_size,E=(r-1)*rgb32_pixel_size,m=(r-2)*rgb32_pixel_size;if(i[E+rgb32_pixel_pad]==i[l+rgb32_pixel_pad]&&u!=r&&r>2&&s[E+rgb32_pixel_pad]==s[m+rgb32_pixel_pad]){for(t.state.waitcnt=o-r,u=r,c=r+this.decode_run(t.state);c>r;r++){var l=r*rgb32_pixel_size,E=(r-1)*rgb32_pixel_size;s[l+rgb32_pixel_pad]=s[E+rgb32_pixel_pad]}if(r==n)return;o=r+t.state.waitcnt,d=1;break}f=t.buckets_ptrs[e.row[r-1]],h=golomb_decoding_8bpc(f.bestcode,this.io_word),e.row[r]=h.rc,s[l+rgb32_pixel_pad]=family_8bpc.xlatL2U[h.rc]+(s[E+rgb32_pixel_pad]+i[l+rgb32_pixel_pad]>>1)&_,this.decode_eatbits(h.codewordlen)}if(d)break;f.update_model_8bpc(t.state,e.row[o],a),o=r+(t.state.tabrand()&p)}for(;n>r&&!d;r++){var l=r*rgb32_pixel_size,E=(r-1)*rgb32_pixel_size,m=(r-2)*rgb32_pixel_size;if(i[E+rgb32_pixel_pad]==i[l+rgb32_pixel_pad]&&u!=r&&r>2&&s[E+rgb32_pixel_pad]==s[m+rgb32_pixel_pad]){for(t.state.waitcnt=o-r,u=r,c=r+this.decode_run(t.state);c>r;r++){var l=r*rgb32_pixel_size,E=(r-1)*rgb32_pixel_size;s[l+rgb32_pixel_pad]=s[E+rgb32_pixel_pad]}if(r==n)return;o=r+t.state.waitcnt,d=1;break}h=golomb_decoding_8bpc(t.buckets_ptrs[e.row[r-1]].bestcode,this.io_word),e.row[r]=h.rc,s[l+rgb32_pixel_pad]=family_8bpc.xlatL2U[h.rc]+(s[E+rgb32_pixel_pad]+i[l+rgb32_pixel_pad]>>1)&_,this.decode_eatbits(h.codewordlen)}if(!d)return void(t.state.waitcnt=o-n)}},QuicEncoder.prototype.quic_four_uncompress_row=function(t,e,i){for(var s=8,r=255,n=t.correlate_row,a=0,_=this.width;wmimax>t.state.wmidx&&t.state.wmileft<=_;)t.state.wmileft&&(this.quic_four_uncompress_row_seg(t,n,e,i,a,a+t.state.wmileft,s,r),a+=t.state.wmileft,_-=t.state.wmileft),t.state.wmidx++,t.state.set_wm_trigger(),t.state.wmileft=wminext;_&&(this.quic_four_uncompress_row_seg(t,n,e,i,a,a+_,s,r),wmimax>t.state.wmidx&&(t.state.wmileft-=_))},QuicEncoder.prototype.quic_decode=function(t,e){var i;switch(this.type){case QUIC_IMAGE_TYPE_RGB32:case QUIC_IMAGE_TYPE_RGB24:for(this.channels[0].correlate_row.zero=0,this.channels[1].correlate_row.zero=0,this.channels[2].correlate_row.zero=0,this.quic_rgb32_uncompress_row0(t),this.rows_completed++,i=1;ii;++i)zeroLUT[i]=l,--k,0==k&&(k=j,--l,j*=2);if(encoder=new QuicEncoder,!encoder)throw"quic: failed to create encoder"}define("spice-quic",function(){}),define("spice-bitmap",function(){}),SpiceDataView.prototype={getUint8:function(t){return this.u8[t]},getUint16:function(t,e){var i=1,s=0;return e&&(i=0,s=1),this.u8[t+s]<<8|this.u8[t+i]},getUint32:function(t,e){var i=2,s=0;return e&&(i=0,s=2),this.getUint16(t+s,e)<<16|this.getUint16(t+i,e)},getUint64:function(t,e){var i=4,s=0;return e&&(i=0,s=4),this.getUint32(t+s,e)<<32|this.getUint32(t+i,e)},setUint8:function(t,e){this.u8[t]=255&e},setUint16:function(t,e,i){var s=1,r=0;i&&(s=0,r=1),this.u8[t+r]=(65535&e)>>8,this.u8[t+s]=255&e},setUint32:function(t,e,i){var s=2,r=0;i&&(s=0,r=2),this.setUint16(t+r,(4294967295&e)>>16,i),this.setUint16(t+s,65535&e,i)},setUint64:function(t,e,i){var s=4,r=0;i&&(s=0,r=4),this.setUint32(t+r,(0x10000000000000000&e)>>32,i),this.setUint32(t+s,4294967295&e,i)}},define("spice-spicedataview",function(){}),SpiceChannelId.prototype={from_dv:function(t,e){return this.type=t.getUint8(e,!0),e++,this.id=t.getUint8(e,!0),e++,e}},SpiceRect.prototype={from_dv:function(t,e){return this.top=t.getUint32(e,!0),e+=4,this.left=t.getUint32(e,!0),e+=4,this.bottom=t.getUint32(e,!0),e+=4,this.right=t.getUint32(e,!0),e+=4},is_same_size:function(t){return this.bottom-this.top==t.bottom-t.top&&this.right-this.left==t.right-t.left?!0:!1}},SpiceClipRects.prototype={from_dv:function(t,e,i){var s;for(this.num_rects=t.getUint32(e,!0),e+=4,this.num_rects>0&&(this.rects=[]),s=0;s=0;r--)this.lz_rgb.magic+=String.fromCharCode(t.getUint8(e+r));e+=4,this.lz_rgb.version=t.getUint32(e),e+=4,this.lz_rgb.type=t.getUint32(e),e+=4,this.lz_rgb.width=t.getUint32(e),e+=4,this.lz_rgb.height=t.getUint32(e),e+=4,this.lz_rgb.stride=t.getUint32(e),e+=4,this.lz_rgb.top_down=t.getUint32(e),e+=4;var n=e-s;this.lz_rgb.data=i.slice(e,this.lz_rgb.length+e-n),e+=this.lz_rgb.data.byteLength}if(this.descriptor.type==SPICE_IMAGE_TYPE_BITMAP&&(this.bitmap=new SpiceBitmap,e=this.bitmap.from_dv(t,e,i)),this.descriptor.type==SPICE_IMAGE_TYPE_SURFACE&&(this.surface_id=t.getUint32(e,!0),e+=4),this.descriptor.type==SPICE_IMAGE_TYPE_JPEG&&(this.jpeg=new Object,this.jpeg.data_size=t.getUint32(e,!0),e+=4,this.jpeg.data=i.slice(e),e+=this.jpeg.data.byteLength),this.descriptor.type==SPICE_IMAGE_TYPE_JPEG_ALPHA){this.jpeg_alpha=new Object,this.jpeg_alpha.flags=t.getUint8(e,!0),e+=1,this.jpeg_alpha.jpeg_size=t.getUint32(e,!0),e+=4,this.jpeg_alpha.data_size=t.getUint32(e,!0),e+=4,this.jpeg_alpha.data=i.slice(e,this.jpeg_alpha.jpeg_size+e),e+=this.jpeg_alpha.data.byteLength,this.jpeg_alpha.alpha=new Object,this.jpeg_alpha.alpha.length=this.jpeg_alpha.data_size-this.jpeg_alpha.jpeg_size;var s=e;this.jpeg_alpha.alpha.magic="";for(var r=3;r>=0;r--)this.jpeg_alpha.alpha.magic+=String.fromCharCode(t.getUint8(e+r));e+=4,this.jpeg_alpha.alpha.version=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.type=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.width=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.height=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.stride=t.getUint32(e),e+=4,this.jpeg_alpha.alpha.top_down=t.getUint32(e),e+=4;var n=e-s;this.jpeg_alpha.alpha.data=i.slice(e,this.jpeg_alpha.alpha.length+e-n),e+=this.jpeg_alpha.alpha.data.byteLength}return this.descriptor.type==SPICE_IMAGE_TYPE_QUIC&&(this.quic=new SpiceQuic,e=this.quic.from_dv(t,e,i)),e}},SpiceQMask.prototype={from_dv:function(t,e,i){this.flags=t.getUint8(e,!0),e++,this.pos=new SpicePoint,e=this.pos.from_dv(t,e,i);var s=t.getUint32(e,!0);return e+=4,0==s?(this.bitmap=null,e):(this.bitmap=new SpiceImage,this.bitmap.from_dv(t,s,i))}},SpicePattern.prototype={from_dv:function(t,e,i){var s=t.getUint32(e,!0);return e+=4,0==s?this.pat=null:(this.pat=new SpiceImage,this.pat.from_dv(t,s,i)),this.pos=new SpicePoint,this.pos.from_dv(t,e,i)}},SpiceBrush.prototype={from_dv:function(t,e,i){return this.type=t.getUint8(e,!0),e++,this.type==SPICE_BRUSH_TYPE_SOLID?(this.color=t.getUint32(e,!0),e+=4):this.type==SPICE_BRUSH_TYPE_PATTERN&&(this.pattern=new SpicePattern,e=this.pattern.from_dv(t,e,i)),e}},SpiceFill.prototype={from_dv:function(t,e,i){return this.brush=new SpiceBrush,e=this.brush.from_dv(t,e,i),this.rop_descriptor=t.getUint16(e,!0),e+=2,this.mask=new SpiceQMask,this.mask.from_dv(t,e,i)}},SpiceCopy.prototype={from_dv:function(t,e,i){var s=t.getUint32(e,!0);return e+=4,0==s?this.src_bitmap=null:(this.src_bitmap=new SpiceImage,this.src_bitmap.from_dv(t,s,i)),this.src_area=new SpiceRect,e=this.src_area.from_dv(t,e,i),this.rop_descriptor=t.getUint16(e,!0),e+=2,this.scale_mode=t.getUint8(e,!0),e++,this.mask=new SpiceQMask,this.mask.from_dv(t,e,i)}},SpicePoint16.prototype={from_dv:function(t,e){return this.x=t.getUint16(e,!0),e+=2,this.y=t.getUint16(e,!0),e+=2}},SpicePoint.prototype={from_dv:function(t,e){return this.x=t.getUint32(e,!0),e+=4,this.y=t.getUint32(e,!0),e+=4}},SpiceCursorHeader.prototype={from_dv:function(t,e){return this.unique=t.getUint64(e,!0),e+=8,this.type=t.getUint8(e,!0),e++,this.width=t.getUint16(e,!0),e+=2,this.height=t.getUint16(e,!0),e+=2,this.hot_spot_x=t.getUint16(e,!0),e+=2,this.hot_spot_y=t.getUint16(e,!0),e+=2}},SpiceCursor.prototype={from_dv:function(t,e,i){return this.flags=t.getUint16(e,!0),e+=2,this.flags&SPICE_CURSOR_FLAGS_NONE?this.header=null:(this.header=new SpiceCursorHeader,e=this.header.from_dv(t,e,i),this.data=i.slice(e),e+=this.data.byteLength),e}},SpiceSurface.prototype={from_dv:function(t,e){return this.surface_id=t.getUint32(e,!0),e+=4,this.width=t.getUint32(e,!0),e+=4,this.height=t.getUint32(e,!0),e+=4,this.format=t.getUint32(e,!0),e+=4,this.flags=t.getUint32(e,!0),e+=4}},define("spice-spicetype",function(){}),SpiceLinkHeader.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);this.magic="";for(var s=0;4>s;s++)this.magic+=String.fromCharCode(i.getUint8(e+s));e+=4,this.major_version=i.getUint32(e,!0),e+=4,this.minor_version=i.getUint32(e,!0),e+=4,this.size=i.getUint32(e,!0),e+=4},to_buffer:function(t,e){e=e||0;for(var i=new SpiceDataView(t),s=0;4>s;s++)i.setUint8(e+s,this.magic.charCodeAt(s));e+=4,i.setUint32(e,this.major_version,!0),e+=4,i.setUint32(e,this.minor_version,!0),e+=4,i.setUint32(e,this.size,!0),e+=4},buffer_size:function(){return 16}},SpiceLinkMess.prototype={from_buffer:function(t,e){e=e||0;var i,s=e,r=new SpiceDataView(t);this.connection_id=r.getUint32(e,!0),e+=4,this.channel_type=r.getUint8(e,!0),e++,this.channel_id=r.getUint8(e,!0),e++;var n=r.getUint32(e,!0);e+=4;var a=r.getUint32(e,!0);e+=4;var _=r.getUint32(e,!0);for(e+=4,e=s+_,this.common_caps=[],i=0;n>i;i++)this.common_caps.unshift(r.getUint32(e,!0)),e+=4;for(this.channel_caps=[],i=0;a>i;i++)this.channel_caps.unshift(r.getUint32(e,!0)),e+=4},to_buffer:function(t,e){e=e||0;var i,s=e,r=new SpiceDataView(t);for(r.setUint32(e,this.connection_id,!0),e+=4,r.setUint8(e,this.channel_type,!0),e++,r.setUint8(e,this.channel_id,!0),e++,r.setUint32(e,this.common_caps.length,!0),e+=4,r.setUint32(e,this.channel_caps.length,!0),e+=4,r.setUint32(e,e-s+4,!0),e+=4,i=0;ii;i++)this.common_caps.unshift(r.getUint32(e,!0)),e+=4;for(this.channel_caps=[],i=0;a>i;i++)this.channel_caps.unshift(r.getUint32(e,!0)),e+=4}},SpiceLinkAuthTicket.prototype={to_buffer:function(t,e){e=e||0;var i,s=new SpiceDataView(t);for(s.setUint32(e,this.auth_mechanism,!0),e+=4,i=0;SPICE_TICKET_KEY_PAIR_LENGTH/8>i;i++)this.encrypted_data&&ie&&(this.data=t.slice(e),e+=this.data.byteLength)},to_buffer:function(t,e){e=e||0;var i,s=new SpiceDataView(t);if(s.setUint16(e,this.type,!0),e+=2,s.setUint32(e,this.data?this.data.byteLength:0,!0),e+=4,this.data&&this.data.byteLength>0){var r=new Uint8Array(this.data);for(i=0;ie&&(this.data=t.slice(e),e+=this.data.byteLength)}},SpiceMsgMainAgentTokens.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);this.num_tokens=i.getUint32(e,!0),e+=4}},SpiceMsgSetAck.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);this.generation=i.getUint32(e,!0),e+=4,this.window=i.getUint32(e,!0),e+=4}},SpiceMsgcAckSync.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint32(e,this.generation,!0),e+=4},buffer_size:function(){return 4}},SpiceMsgcMainMouseModeRequest.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint16(e,this.mode,!0),e+=2},buffer_size:function(){return 2}},SpiceMsgcMainAgentStart.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint32(e,this.num_tokens,!0),e+=4},buffer_size:function(){return 4}},SpiceMsgcMainAgentData.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint32(e,this.protocol,!0),e+=4,i.setUint32(e,this.type,!0),e+=4,i.setUint64(e,this.opaque,!0),e+=8,i.setUint32(e,this.size,!0),e+=4,this.data.to_buffer(t,e)},buffer_size:function(){return 20+this.data.buffer_size()}},VDAgentAnnounceCapabilities.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint32(e,this.request,!0),e+=4,i.setUint32(e,this.caps,!0),e+=4},from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return this.request=i.getUint32(e,!0),e+=4,this.caps=i.getUint32(e,!0),e+=4},buffer_size:function(){return 8}},VDAgentMonitorsConfig.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint32(e,this.num_mon,!0),e+=4,i.setUint32(e,this.flags,!0),e+=4,i.setUint32(e,this.height,!0),e+=4,i.setUint32(e,this.width,!0),e+=4,i.setUint32(e,this.depth,!0),e+=4,i.setUint32(e,this.x,!0),e+=4,i.setUint32(e,this.y,!0),e+=4},buffer_size:function(){return 28}},VDAgentFileXferStatusMessage.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint32(e,this.id,!0),e+=4,i.setUint32(e,this.result,!0),e+=4},from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return this.id=i.getUint32(e,!0),e+=4,this.result=i.getUint32(e,!0),e+=4},buffer_size:function(){return 8}},VDAgentFileXferStartMessage.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);i.setUint32(e,this.id,!0),e+=4;for(var s=0;s0)for(var s=new Uint8Array(this.data),r=0;re&&(this.data=t.slice(e),e+=this.data.byteLength),e}},SpiceMsgPlaybackMode.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return this.time=i.getUint32(e,!0),e+=4,this.mode=i.getUint16(e,!0),e+=2,t.byteLength>e&&(this.data=t.slice(e),e+=this.data.byteLength),e}},SpiceMsgPlaybackStart.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return this.channels=i.getUint32(e,!0),e+=4,this.format=i.getUint16(e,!0),e+=2,this.frequency=i.getUint32(e,!0),e+=4,this.time=i.getUint32(e,!0),e+=4}},SpiceMsgCursorSet.prototype={from_buffer:function(t,e,i){e=e||0;var s=new SpiceDataView(t);return this.position=new SpicePoint16,e=this.position.from_dv(s,e,i),this.visible=s.getUint8(e,!0),e++,this.cursor=new SpiceCursor,this.cursor.from_dv(s,e,t)}},SpiceMsgcMousePosition.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return i.setUint32(e,this.x,!0),e+=4,i.setUint32(e,this.y,!0),e+=4,i.setUint16(e,this.buttons_state,!0),e+=2,i.setUint8(e,this.display_id,!0),e+=1},buffer_size:function(){return 11}},SpiceMsgcMouseMotion.prototype.to_buffer=SpiceMsgcMousePosition.prototype.to_buffer,SpiceMsgcMouseMotion.prototype.buffer_size=SpiceMsgcMousePosition.prototype.buffer_size,SpiceMsgcMousePress.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return i.setUint8(e,this.button,!0),e++,i.setUint16(e,this.buttons_state,!0),e+=2},buffer_size:function(){return 3}},SpiceMsgcMouseRelease.prototype.to_buffer=SpiceMsgcMousePress.prototype.to_buffer,SpiceMsgcMouseRelease.prototype.buffer_size=SpiceMsgcMousePress.prototype.buffer_size,SpiceMsgcKeyDown.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return i.setUint32(e,this.code,!0),e+=4},buffer_size:function(){return 4}},SpiceMsgcKeyUp.prototype.to_buffer=SpiceMsgcKeyDown.prototype.to_buffer,SpiceMsgcKeyUp.prototype.buffer_size=SpiceMsgcKeyDown.prototype.buffer_size,SpiceMsgDisplayStreamCreate.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);this.surface_id=i.getUint32(e,!0),e+=4,this.id=i.getUint32(e,!0),e+=4,this.flags=i.getUint8(e,!0),e+=1,this.codec_type=i.getUint8(e,!0),e+=1,this.stamp=i.getUint64(e,!0),e+=8,this.stream_width=i.getUint32(e,!0),e+=4,this.stream_height=i.getUint32(e,!0),e+=4,this.src_width=i.getUint32(e,!0),e+=4,this.src_height=i.getUint32(e,!0),e+=4,this.dest=new SpiceRect,e=this.dest.from_dv(i,e,t),this.clip=new SpiceClip,this.clip.from_dv(i,e,t)}},SpiceStreamDataHeader.prototype={from_dv:function(t,e){return this.id=t.getUint32(e,!0),e+=4,this.multi_media_time=t.getUint32(e,!0),e+=4}},SpiceMsgDisplayStreamData.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);this.base=new SpiceStreamDataHeader,e=this.base.from_dv(i,e,t),this.data_size=i.getUint32(e,!0),e+=4,this.data=i.u8.subarray(e,e+this.data_size)}},SpiceMsgDisplayStreamClip.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);this.id=i.getUint32(e,!0),e+=4,this.clip=new SpiceClip,this.clip.from_dv(i,e,t)}},SpiceMsgDisplayStreamDestroy.prototype={from_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);this.id=i.getUint32(e,!0),e+=4}},SpiceMsgDisplayInvalList.prototype={from_buffer:function(t,e){var i;e=e||0;var s=new SpiceDataView(t);for(this.count=s.getUint16(e,!0),e+=2,i=0;i=this.needed?(t.byteLength>this.needed&&(this.buffers.push(t.slice(this.needed)),t=t.slice(0,this.needed)),this.callback.call(this.sc,t,this.saved_msg_header||void 0)):this.buffers.push(t);this.buffers.length>1&&this.buffers[0].byteLength0&&this.buffers[0].byteLength>=this.needed;)t=this.buffers.shift(),t.byteLength>this.needed&&(this.buffers.unshift(t.slice(this.needed)),t=t.slice(0,this.needed)),this.callback.call(this.sc,t,this.saved_msg_header||void 0)},request:function(t){this.needed=t},save_header:function(t){this.saved_msg_header=t},clear_header:function(){this.saved_msg_header=void 0}},define("spice-wire",function(){}),SpiceDisplayConn.prototype=Object.create(SpiceConn.prototype),SpiceDisplayConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_DISPLAY_MARK)return this.known_unimplemented(t.type,"Display Mark"),!0;if(t.type==SPICE_MSG_DISPLAY_RESET)return DEBUG>2&&console.log("Display reset"),this.surfaces[this.primary_surface].canvas.context.restore(),!0;if(t.type==SPICE_MSG_DISPLAY_DRAW_COPY){var e=new SpiceMsgDisplayDrawCopy(t.data);if(DEBUG>1&&this.log_draw("DrawCopy",e),e.base.box.is_same_size(e.data.src_area)||this.log_warn("FIXME: DrawCopy src_area is a different size than base.box; we do not handle that yet."),e.base.clip.type!=SPICE_CLIP_TYPE_NONE&&this.log_warn("FIXME: DrawCopy we don't handle clipping yet"),e.data.rop_descriptor!=SPICE_ROPD_OP_PUT&&this.log_warn("FIXME: DrawCopy we don't handle ropd type: "+e.data.rop_descriptor),e.data.mask.flags&&this.log_warn("FIXME: DrawCopy we don't handle mask flag: "+e.data.mask.flags),e.data.mask.bitmap&&this.log_warn("FIXME: DrawCopy we don't handle mask"),e.data&&e.data.src_bitmap){if(e.data.src_bitmap.descriptor.flags&&e.data.src_bitmap.descriptor.flags!=SPICE_IMAGE_FLAGS_CACHE_ME&&e.data.src_bitmap.descriptor.flags!=SPICE_IMAGE_FLAGS_HIGH_BITS_SET&&(this.log_warn("FIXME: DrawCopy unhandled image flags: "+e.data.src_bitmap.descriptor.flags),1>=DEBUG&&this.log_draw("DrawCopy",e)),e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_QUIC){var i=this.surfaces[e.base.surface_id].canvas;if(!e.data.src_bitmap.quic)return this.log_warn("FIXME: DrawCopy could not handle this QUIC file."),!1;var s=convert_spice_quic_to_web(i.context,e.data.src_bitmap.quic);return this.draw_copy_helper({base:e.base,src_area:e.data.src_area,image_data:s,tag:"copyquic."+e.data.src_bitmap.quic.type,has_alpha:e.data.src_bitmap.quic.type==QUIC_IMAGE_TYPE_RGBA?!0:!1,descriptor:e.data.src_bitmap.descriptor})}if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_FROM_CACHE||e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS)return this.cache&&this.cache[e.data.src_bitmap.descriptor.id]?this.draw_copy_helper({base:e.base,src_area:e.data.src_area,image_data:this.cache[e.data.src_bitmap.descriptor.id],tag:"copycache."+e.data.src_bitmap.descriptor.id,has_alpha:!0,descriptor:e.data.src_bitmap.descriptor}):(this.log_warn("FIXME: DrawCopy did not find image id "+e.data.src_bitmap.descriptor.id+" in cache."),!1);if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_SURFACE){var r=this.surfaces[e.data.src_bitmap.surface_id].canvas.context,s=(this.surfaces[e.base.surface_id].canvas.context,r.getImageData(e.data.src_area.left,e.data.src_area.top,e.data.src_area.right-e.data.src_area.left,e.data.src_area.bottom-e.data.src_area.top)),n=new SpiceRect;return n.top=n.left=0,n.right=s.width,n.bottom=s.height,this.draw_copy_helper({base:e.base,src_area:n,image_data:s,tag:"copysurf."+e.data.src_bitmap.surface_id,has_alpha:this.surfaces[e.data.src_bitmap.surface_id].format==SPICE_SURFACE_FMT_32_xRGB?!1:!0,descriptor:e.data.src_bitmap.descriptor})}if(e.data.src_bitmap.descriptor.type==SPICE_IMAGE_TYPE_JPEG){if(!e.data.src_bitmap.jpeg)return this.log_warn("FIXME: DrawCopy could not handle this JPEG file."),!1;var a,_="data:image/jpeg,",o=new Image,c=new Uint8Array(e.data.src_bitmap.jpeg.data);for(a=0;a1&&this.log_draw("DrawFill",h),h.data.rop_descriptor!=SPICE_ROPD_OP_PUT&&this.log_warn("FIXME: DrawFill we don't handle ropd type: "+h.data.rop_descriptor),h.data.mask.flags&&this.log_warn("FIXME: DrawFill we don't handle mask flag: "+h.data.mask.flags),h.data.mask.bitmap&&this.log_warn("FIXME: DrawFill we don't handle mask"),h.data.brush.type==SPICE_BRUSH_TYPE_SOLID){var p=16777215&h.data.brush.color,u="rgb("+(p>>16)+", "+(p>>8&255)+", "+(255&p)+")";if(this.surfaces[h.base.surface_id].canvas.context.fillStyle=u,this.surfaces[h.base.surface_id].canvas.context.fillRect(h.base.box.left,h.base.box.top,h.base.box.right-h.base.box.left,h.base.box.bottom-h.base.box.top),DUMP_DRAWS&&this.parent.dump_id){var d=document.createElement("canvas");d.setAttribute("width",this.surfaces[h.base.surface_id].canvas.width),d.setAttribute("height",this.surfaces[h.base.surface_id].canvas.height),d.setAttribute("id","fillbrush."+h.base.surface_id+"."+this.surfaces[h.base.surface_id].draw_count),d.getContext("2d").fillStyle=u,d.getContext("2d").fillRect(h.base.box.left,h.base.box.top,h.base.box.right-h.base.box.left,h.base.box.bottom-h.base.box.top),document.getElementById(this.parent.dump_id).appendChild(d)}this.surfaces[h.base.surface_id].draw_count++}else this.log_warn("FIXME: DrawFill can't handle brush type: "+h.data.brush.type);return!0}if(t.type==SPICE_MSG_DISPLAY_COPY_BITS){var f=new SpiceMsgDisplayCopyBits(t.data);DEBUG>1&&this.log_draw("CopyBits",f);var l=this.surfaces[f.base.surface_id].canvas,r=l.context,E=l.width-f.src_pos.x,m=l.height-f.src_pos.y;E>f.base.box.right-f.base.box.left&&(E=f.base.box.right-f.base.box.left),m>f.base.box.bottom-f.base.box.top&&(m=f.base.box.bottom-f.base.box.top);var s=r.getImageData(f.src_pos.x,f.src_pos.y,E,m);if(putImageDataWithAlpha(r,s,f.base.box.left,f.base.box.top),DUMP_DRAWS&&this.parent.dump_id){var d=document.createElement("canvas");d.setAttribute("width",E),d.setAttribute("height",m),d.setAttribute("id","copybits"+f.base.surface_id+"."+this.surfaces[f.base.surface_id].draw_count),d.getContext("2d").putImageData(s,0,0),document.getElementById(this.parent.dump_id).appendChild(d)}return this.surfaces[f.base.surface_id].draw_count++,!0}if(t.type==SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES)return this.known_unimplemented(t.type,"Inval All Palettes"),!0;if(t.type==SPICE_MSG_DISPLAY_SURFACE_CREATE){"surfaces"in this||(this.surfaces=[]);var g=new SpiceMsgSurfaceCreate(t.data);if(DEBUG>1&&console.log(this.type+": MsgSurfaceCreate id "+g.surface.surface_id+"; "+g.surface.width+"x"+g.surface.height+"; format "+g.surface.format+"; flags "+g.surface.flags),g.surface.format!=SPICE_SURFACE_FMT_32_xRGB&&g.surface.format!=SPICE_SURFACE_FMT_32_ARGB)return this.log_warn("FIXME: cannot handle surface format "+g.surface.format+" yet."),!1;var i=document.createElement("canvas");return i.setAttribute("width",g.surface.width),i.setAttribute("height",g.surface.height),i.setAttribute("id","spice_surface_"+g.surface.surface_id),i.setAttribute("tabindex",g.surface.surface_id),i.context=i.getContext("2d"),DUMP_CANVASES&&this.parent.dump_id&&document.getElementById(this.parent.dump_id).appendChild(i),g.surface.canvas=i,g.surface.draw_count=0,this.surfaces[g.surface.surface_id]=g.surface,g.surface.flags&SPICE_SURFACE_FLAGS_PRIMARY&&(this.primary_surface=g.surface.surface_id,i.context.save(),document.getElementById(this.parent.screen_id).appendChild(i),document.getElementById(this.parent.screen_id).style.height=g.surface.height+"px",this.hook_events()),!0}if(t.type==SPICE_MSG_DISPLAY_SURFACE_DESTROY){var g=new SpiceMsgSurfaceDestroy(t.data);return DEBUG>1&&console.log(this.type+": MsgSurfaceDestroy id "+g.surface_id),this.delete_surface(g.surface_id),!0}if(t.type==SPICE_MSG_DISPLAY_STREAM_CREATE){var g=new SpiceMsgDisplayStreamCreate(t.data);return DEBUG>1&&console.log(this.type+": MsgStreamCreate id"+g.id),this.streams||(this.streams=new Array),this.streams[g.id]?console.log("Stream already exists"):this.streams[g.id]=g,g.codec_type!=SPICE_VIDEO_CODEC_TYPE_MJPEG&&console.log("Unhandled stream codec: "+g.codec_type),!0}if(t.type==SPICE_MSG_DISPLAY_STREAM_DATA){var g=new SpiceMsgDisplayStreamData(t.data);if(!this.streams[g.base.id])return console.log("no stream for data"),!1;if(this.streams[g.base.id].codec_type===SPICE_VIDEO_CODEC_TYPE_MJPEG){var a,_="data:image/jpeg,",o=new Image;for(a=0;a1&&console.log(this.type+": MsgStreamClip id"+g.id),this.streams[g.id].clip=g.clip,!0}if(t.type==SPICE_MSG_DISPLAY_STREAM_DESTROY){var g=new SpiceMsgDisplayStreamDestroy(t.data);return DEBUG>1&&console.log(this.type+": MsgStreamDestroy id"+g.id),this.streams[g.id]=void 0,!0}if(t.type==SPICE_MSG_DISPLAY_INVAL_LIST){var a,g=new SpiceMsgDisplayInvalList(t.data);for(DEBUG>1&&console.log(this.type+": MsgInvalList "+g.count+" items"),a=0;a0||t.src_area.top>0)&&this.log_warn("FIXME: DrawCopy not shifting draw copies just yet..."),t.descriptor&&t.descriptor.flags&SPICE_IMAGE_FLAGS_CACHE_ME&&("cache"in this||(this.cache={}),this.cache[t.descriptor.id]=t.image_data),DUMP_DRAWS&&this.parent.dump_id){var i=document.createElement("canvas");i.setAttribute("width",t.image_data.width),i.setAttribute("height",t.image_data.height),i.setAttribute("id",t.tag+"."+this.surfaces[t.base.surface_id].draw_count+"."+t.base.surface_id+"@"+t.base.box.left+"x"+t.base.box.top),i.getContext("2d").putImageData(t.image_data,0,0),document.getElementById(this.parent.dump_id).appendChild(i)}return this.surfaces[t.base.surface_id].draw_count++,!0},SpiceDisplayConn.prototype.log_draw=function(t,e){var i=t+"."+e.base.surface_id+"."+this.surfaces[e.base.surface_id].draw_count+": ";i+="base.box "+e.base.box.left+", "+e.base.box.top+" to "+e.base.box.right+", "+e.base.box.bottom,i+="; clip.type "+e.base.clip.type,e.data&&(e.data.src_area&&(i+="; src_area "+e.data.src_area.left+", "+e.data.src_area.top+" to "+e.data.src_area.right+", "+e.data.src_area.bottom),e.data.src_bitmap&&null!=e.data.src_bitmap?(i+="; src_bitmap id: "+e.data.src_bitmap.descriptor.id,i+="; src_bitmap width "+e.data.src_bitmap.descriptor.width+", height "+e.data.src_bitmap.descriptor.height,i+="; src_bitmap type "+e.data.src_bitmap.descriptor.type+", flags "+e.data.src_bitmap.descriptor.flags,void 0!==e.data.src_bitmap.surface_id&&(i+="; src_bitmap surface_id "+e.data.src_bitmap.surface_id),e.data.src_bitmap.quic&&(i+="; QUIC type "+e.data.src_bitmap.quic.type+"; width "+e.data.src_bitmap.quic.width+"; height "+e.data.src_bitmap.quic.height),e.data.src_bitmap.lz_rgb&&(i+="; LZ_RGB length "+e.data.src_bitmap.lz_rgb.length+"; magic "+e.data.src_bitmap.lz_rgb.magic+"; version 0x"+e.data.src_bitmap.lz_rgb.version.toString(16)+"; type "+e.data.src_bitmap.lz_rgb.type+"; width "+e.data.src_bitmap.lz_rgb.width+"; height "+e.data.src_bitmap.lz_rgb.height+"; stride "+e.data.src_bitmap.lz_rgb.stride+"; top down "+e.data.src_bitmap.lz_rgb.top_down)):i+="; src_bitmap is null",e.data.brush&&(e.data.brush.type==SPICE_BRUSH_TYPE_SOLID&&(i+="; brush.color 0x"+e.data.brush.color.toString(16)),e.data.brush.type==SPICE_BRUSH_TYPE_PATTERN&&(i+="; brush.pat ",i+=null!=e.data.brush.pattern.pat?"[SpiceImage]":"[null]",i+=" at "+e.data.brush.pattern.pos.x+", "+e.data.brush.pattern.pos.y)),i+="; rop_descriptor "+e.data.rop_descriptor,void 0!==e.data.scale_mode&&(i+="; scale_mode "+e.data.scale_mode),i+="; mask.flags "+e.data.mask.flags,i+="; mask.pos "+e.data.mask.pos.x+", "+e.data.mask.pos.y,null!=e.data.mask.bitmap?(i+="; mask.bitmap width "+e.data.mask.bitmap.descriptor.width+", height "+e.data.mask.bitmap.descriptor.height,i+="; mask.bitmap type "+e.data.mask.bitmap.descriptor.type+", flags "+e.data.mask.bitmap.descriptor.flags):i+="; mask.bitmap is null"),console.log(i)},SpiceDisplayConn.prototype.hook_events=function(){if(void 0!==this.primary_surface){var t=this.surfaces[this.primary_surface].canvas;t.sc=this.parent,t.addEventListener("mousemove",handle_mousemove),t.addEventListener("mousedown",handle_mousedown),t.addEventListener("contextmenu",handle_contextmenu),t.addEventListener("mouseup",handle_mouseup),t.addEventListener("keydown",handle_keydown),t.addEventListener("keyup",handle_keyup),t.addEventListener("mouseout",handle_mouseout),t.addEventListener("mouseover",handle_mouseover),t.addEventListener("wheel",handle_mousewheel),t.focus()}},SpiceDisplayConn.prototype.unhook_events=function(){if(void 0!==this.primary_surface){var t=this.surfaces[this.primary_surface].canvas;t.removeEventListener("mousemove",handle_mousemove),t.removeEventListener("mousedown",handle_mousedown),t.removeEventListener("contextmenu",handle_contextmenu),t.removeEventListener("mouseup",handle_mouseup),t.removeEventListener("keydown",handle_keydown),t.removeEventListener("keyup",handle_keyup),t.removeEventListener("mouseout",handle_mouseout),t.removeEventListener("mouseover",handle_mouseover),t.removeEventListener("wheel",handle_mousewheel)}},SpiceDisplayConn.prototype.destroy_surfaces=function(){for(var t in this.surfaces)this.delete_surface(this.surfaces[t].surface_id);this.surfaces=void 0},define("spice-display",["spice-spiceconn"],function(){});var Shift_state=-1,Ctrl_state=-1,Alt_state=-1,Meta_state=-1;SpiceInputsConn.prototype=Object.create(SpiceConn.prototype),SpiceInputsConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_INPUTS_INIT){var e=new SpiceMsgInputsInit(t.data);return this.keyboard_modifiers=e.keyboard_modifiers,DEBUG>1&&console.log("MsgInputsInit - modifier "+this.keyboard_modifiers),!0}if(t.type==SPICE_MSG_INPUTS_KEY_MODIFIERS){var i=new SpiceMsgInputsKeyModifiers(t.data);return this.keyboard_modifiers=i.keyboard_modifiers,DEBUG>1&&console.log("MsgInputsKeyModifiers - modifier "+this.keyboard_modifiers),!0}return t.type==SPICE_MSG_INPUTS_MOUSE_MOTION_ACK?(DEBUG>1&&console.log("mouse motion ack"),this.waiting_for_ack-=SPICE_INPUT_MOTION_ACK_BUNCH,!0):!1},define("spice-inputs",["spice-spiceconn"],function(){});var EBML_HEADER=[26,69,223,163],EBML_HEADER_VERSION=[66,134],EBML_HEADER_READ_VERSION=[66,247],EBML_HEADER_MAX_ID_LENGTH=[66,242],EBML_HEADER_MAX_SIZE_LENGTH=[66,243],EBML_HEADER_DOC_TYPE=[66,130],EBML_HEADER_DOC_TYPE_VERSION=[66,135],EBML_HEADER_DOC_TYPE_READ_VERSION=[66,133],WEBM_SEGMENT_HEADER=[24,83,128,103],WEBM_SEGMENT_INFORMATION=[21,73,169,102],WEBM_TIMECODE_SCALE=[42,215,177],WEBM_MUXING_APP=[77,128],WEBM_WRITING_APP=[87,65],WEBM_SEEK_HEAD=[17,77,155,116],WEBM_SEEK=[77,187],WEBM_SEEK_ID=[83,171],WEBM_SEEK_POSITION=[83,172],WEBM_TRACKS=[22,84,174,107],WEBM_TRACK_ENTRY=[174],WEBM_TRACK_NUMBER=[215],WEBM_TRACK_UID=[115,197],WEBM_TRACK_TYPE=[131],WEBM_FLAG_ENABLED=[185],WEBM_FLAG_DEFAULT=[136],WEBM_FLAG_FORCED=[85,170],WEBM_FLAG_LACING=[156],WEBM_MIN_CACHE=[109,231],WEBM_MAX_BLOCK_ADDITION_ID=[85,238],WEBM_CODEC_DECODE_ALL=[170],WEBM_SEEK_PRE_ROLL=[86,187],WEBM_CODEC_DELAY=[86,170],WEBM_CODEC_PRIVATE=[99,162],WEBM_CODEC_ID=[134],WEBM_AUDIO=[225],WEBM_SAMPLING_FREQUENCY=[181],WEBM_CHANNELS=[159],WEBM_CLUSTER=[31,67,182,117],WEBM_TIME_CODE=[231],WEBM_SIMPLE_BLOCK=[163],CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME=128,OPUS_FREQUENCY=48e3,OPUS_CHANNELS=2,SPICE_PLAYBACK_CODEC='audio/webm; codecs="opus"',MAX_CLUSTER_TIME=1e3,GAP_DETECTION_THRESHOLD=50;EBMLHeader.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),e=EBML_write_u64_data_len(31,i,e),e=EBML_write_u8_value(EBML_HEADER_VERSION,this.Version,i,e),e=EBML_write_u8_value(EBML_HEADER_READ_VERSION,this.ReadVersion,i,e),e=EBML_write_u8_value(EBML_HEADER_MAX_ID_LENGTH,this.MaxIDLength,i,e),e=EBML_write_u8_value(EBML_HEADER_MAX_SIZE_LENGTH,this.MaxSizeLength,i,e),e=EBML_write_data(EBML_HEADER_DOC_TYPE,this.DocType,i,e),e=EBML_write_u8_value(EBML_HEADER_DOC_TYPE_VERSION,this.DocTypeVersion,i,e),e=EBML_write_u8_value(EBML_HEADER_DOC_TYPE_READ_VERSION,this.DocTypeReadVersion,i,e)},buffer_size:function(){return 39+this.id.length}},webm_Segment.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),i.setUint8(e++,255),e},buffer_size:function(){return this.id.length+1}},webm_SegmentInformation.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,i,e),e=EBML_write_u32_value(WEBM_TIMECODE_SCALE,this.timecode_scale,i,e),e=EBML_write_data(WEBM_MUXING_APP,this.muxing_app,i,e),e=EBML_write_data(WEBM_WRITING_APP,this.writing_app,i,e)},buffer_size:function(){return this.id.length+8+WEBM_TIMECODE_SCALE.length+1+4+WEBM_MUXING_APP.length+1+this.muxing_app.length+WEBM_WRITING_APP.length+1+this.writing_app.length}},webm_Audio.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,i,e),e=EBML_write_u8_value(WEBM_CHANNELS,this.channels,i,e),e=EBML_write_float_value(WEBM_SAMPLING_FREQUENCY,this.sampling_frequency,i,e)},buffer_size:function(){return this.id.length+8+WEBM_SAMPLING_FREQUENCY.length+1+4+WEBM_CHANNELS.length+1+1}},webm_Seek.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),e=EBML_write_u1_data_len(this.buffer_size()-1-this.id.length,i,e),e=EBML_write_data(WEBM_SEEK_ID,this.seekid,i,e),e=EBML_write_u16_value(WEBM_SEEK_POSITION,this.pos,i,e) -},buffer_size:function(){return this.id.length+1+WEBM_SEEK_ID.length+1+this.seekid.length+WEBM_SEEK_POSITION.length+1+2}},webm_SeekHead.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,i,e),e=this.info.to_buffer(t,e),e=this.track.to_buffer(t,e)},buffer_size:function(){return this.id.length+8+this.info.buffer_size()+this.track.buffer_size()}},webm_TrackEntry.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,i,e),e=EBML_write_u8_value(WEBM_TRACK_NUMBER,this.number,i,e),e=EBML_write_u8_value(WEBM_TRACK_UID,this.uid,i,e),e=EBML_write_u8_value(WEBM_FLAG_ENABLED,this.flag_enabled,i,e),e=EBML_write_u8_value(WEBM_FLAG_DEFAULT,this.flag_default,i,e),e=EBML_write_u8_value(WEBM_FLAG_FORCED,this.flag_forced,i,e),e=EBML_write_u8_value(WEBM_FLAG_LACING,this.flag_lacing,i,e),e=EBML_write_data(WEBM_CODEC_ID,this.codec_id,i,e),e=EBML_write_u8_value(WEBM_MIN_CACHE,this.min_cache,i,e),e=EBML_write_u8_value(WEBM_MAX_BLOCK_ADDITION_ID,this.max_block_addition_id,i,e),e=EBML_write_u8_value(WEBM_CODEC_DECODE_ALL,this.codec_decode_all,i,e),e=EBML_write_u32_value(WEBM_CODEC_DELAY,this.codec_delay,i,e),e=EBML_write_u32_value(WEBM_SEEK_PRE_ROLL,this.seek_pre_roll,i,e),e=EBML_write_u8_value(WEBM_TRACK_TYPE,this.type,i,e),e=EBML_write_data(WEBM_CODEC_PRIVATE,this.codec_private,i,e),e=this.audio.to_buffer(t,e)},buffer_size:function(){return this.id.length+8+WEBM_TRACK_NUMBER.length+1+1+WEBM_TRACK_UID.length+1+1+WEBM_TRACK_TYPE.length+1+1+WEBM_FLAG_ENABLED.length+1+1+WEBM_FLAG_DEFAULT.length+1+1+WEBM_FLAG_FORCED.length+1+1+WEBM_FLAG_LACING.length+1+1+WEBM_MIN_CACHE.length+1+1+WEBM_MAX_BLOCK_ADDITION_ID.length+1+1+WEBM_CODEC_DECODE_ALL.length+1+1+WEBM_SEEK_PRE_ROLL.length+1+4+WEBM_CODEC_DELAY.length+1+4+WEBM_CODEC_ID.length+this.codec_id.length+1+WEBM_CODEC_PRIVATE.length+1+this.codec_private.length+this.audio.buffer_size()}},webm_Tracks.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),e=EBML_write_u64_data_len(this.buffer_size()-8-this.id.length,i,e),e=this.track_entry.to_buffer(t,e)},buffer_size:function(){return this.id.length+8+this.track_entry.buffer_size()}},webm_Cluster.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);return e=EBML_write_array(this.id,i,e),i.setUint8(e++,255),e=EBML_write_u32_value(WEBM_TIME_CODE,this.timecode,i,e)},buffer_size:function(){return this.id.length+1+WEBM_TIME_CODE.length+1+4}},webm_SimpleBlock.prototype={to_buffer:function(t,e){e=e||0;var i=new DataView(t);e=EBML_write_array(this.id,i,e),e=EBML_write_u64_data_len(this.data.byteLength+4,i,e),e=EBML_write_u1_data_len(1,i,e),i.setUint16(e,this.timecode),e+=2,i.setUint8(e,this.keyframe?CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME:0),e+=1;for(var s=new Uint8Array(this.data),r=0;r0&&console.log("PlaybackStart; frequency "+e.frequency),e.frequency!=OPUS_FREQUENCY)return this.log_err("This player cannot handle frequency "+e.frequency),!1;if(e.channels!=OPUS_CHANNELS)return this.log_err("This player cannot handle "+e.channels+" channels"),!1;if(e.format!=SPICE_AUDIO_FMT_S16)return this.log_err("This player cannot format "+e.format),!1;if(!this.source_buffer)return this.media_source=new MediaSource,this.media_source.spiceconn=this,this.audio=document.createElement("audio"),this.audio.setAttribute("autoplay",!0),this.audio.src=window.URL.createObjectURL(this.media_source),document.getElementById(this.parent.screen_id).appendChild(this.audio),this.media_source.addEventListener("sourceopen",handle_source_open,!1),this.media_source.addEventListener("sourceended",handle_source_ended,!1),this.media_source.addEventListener("sourceclosed",handle_source_closed,!1),this.bytes_written=0,!0}if(t.type==SPICE_MSG_PLAYBACK_DATA){var i=new SpiceMsgPlaybackData(t.data);return this.last_data_time&&i.time<=this.last_data_time&&(DEBUG>1&&console.log("Hacking time of "+i.time+" to "+this.last_data_time+1),i.time=this.last_data_time+1),this.last_data_time&&i.time>=this.last_data_time+GAP_DETECTION_THRESHOLD&&(this.skip_until=i.time,this.gap_time=i.time-this.start_time-(1e3*this.source_buffer.buffered.end(this.source_buffer.buffered.end.length-1)).toFixed(0)),this.last_data_time=i.time,DEBUG>1&&console.log("PlaybackData; time "+i.time+"; length "+i.data.byteLength),this.source_buffer?(0==this.start_time?this.start_playback(i):i.time-this.cluster_time>=MAX_CLUSTER_TIME||this.skip_until>0?this.new_cluster(i):this.simple_block(i,!1),this.skip_until>0&&(this.audio.currentTime=(this.skip_until-this.start_time-this.gap_time)/1e3,this.skip_until=0),this.audio.paused&&this.audio.play(),!0):!0}if(t.type==SPICE_MSG_PLAYBACK_MODE){var s=new SpiceMsgPlaybackMode(t.data);return s.mode!=SPICE_AUDIO_DATA_MODE_OPUS&&(this.log_err("This player cannot handle mode "+s.mode),delete this.source_buffer),!0}return t.type==SPICE_MSG_PLAYBACK_STOP?!0:!1},SpicePlaybackConn.prototype.start_playback=function(t){this.start_time=t.time;var e=new webm_Header,i=new ArrayBuffer(e.buffer_size());this.bytes_written=e.to_buffer(i),this.source_buffer.addEventListener("error",handle_sourcebuffer_error,!1),this.source_buffer.addEventListener("updateend",handle_append_buffer_done,!1),playback_append_buffer(this,i),this.new_cluster(t)},SpicePlaybackConn.prototype.new_cluster=function(t){this.cluster_time=t.time;var e=new webm_Cluster(t.time-this.start_time-this.gap_time),i=new ArrayBuffer(e.buffer_size());this.bytes_written+=e.to_buffer(i),this.append_okay?playback_append_buffer(this,i):this.queue.push(i),this.simple_block(t,!0)},SpicePlaybackConn.prototype.simple_block=function(t,e){var i=new webm_SimpleBlock(t.time-this.cluster_time,t.data,e),s=new ArrayBuffer(i.buffer_size());this.bytes_written+=i.to_buffer(s),this.append_okay?playback_append_buffer(this,s):this.queue.push(s)},define("spice-playback",["spice-spiceconn"],function(){});var SpiceSimulateCursor={cursors:new Array,unknown_cursors:new Array,warned:!1,add_cursor:function(t,e){SpiceSimulateCursor.cursors[t]=e},unknown_cursor:function(t,e){SpiceSimulateCursor.warned||(SpiceSimulateCursor.warned=!0,alert("Internet Explorer does not support dynamic cursors. This page will now simulate cursors with images, which will be imperfect. We recommend using Chrome or Firefox instead. \n\nIf you need to use Internet Explorer, you can create a static cursor file for each cursor your application uses. View the console log for more information on creating static cursors for your environment.")),SpiceSimulateCursor.unknown_cursors[t]||(SpiceSimulateCursor.unknown_cursors[t]=e,console.log("Unknown cursor. Simulation required. To avoid simulation for this cursor, create and include a custom javascript file, and add the following line:"),console.log('SpiceCursorSimulator.add_cursor("'+t+'"), ".cur");'),console.log("And then run following command, redirecting output into .cur:"),console.log("php -r \"echo urldecode('"+e+"');\""))},simulate_cursor:function(t,e,i,s){var r=hex_sha1(s+" "+e.header.hot_spot_x+" "+e.header.hot_spot_y);if("undefined"!=typeof SpiceSimulateCursor.cursors&&"undefined"!=typeof SpiceSimulateCursor.cursors[r]){var n="url("+SpiceSimulateCursor.cursors[r]+"), default";i.style.cursor=n}"auto"==window.getComputedStyle(i,null).cursor?(SpiceSimulateCursor.unknown_cursor(r,SpiceSimulateCursor.create_icondir(e.header.width,e.header.height,e.data.byteLength,e.header.hot_spot_x,e.header.hot_spot_y)+s),document.getElementById(t.parent.screen_id).style.cursor="none",t.spice_simulated_cursor||(t.spice_simulated_cursor=document.createElement("img"),t.spice_simulated_cursor.style.position="absolute",t.spice_simulated_cursor.style.display="none",t.spice_simulated_cursor.style.overflow="hidden",t.spice_simulated_cursor.spice_screen=document.getElementById(t.parent.screen_id),t.spice_simulated_cursor.addEventListener("mousemove",SpiceSimulateCursor.handle_sim_mousemove),t.spice_simulated_cursor.spice_screen.appendChild(t.spice_simulated_cursor)),t.spice_simulated_cursor.src="data:image/png,"+s,t.spice_simulated_cursor.spice_hot_x=e.header.hot_spot_x,t.spice_simulated_cursor.spice_hot_y=e.header.hot_spot_y,t.spice_simulated_cursor.style.pointerEvents="none"):t.spice_simulated_cursor&&(t.spice_simulated_cursor.spice_screen.removeChild(t.spice_simulated_cursor),delete t.spice_simulated_cursor)},handle_sim_mousemove:function(t){var e=SpiceSimulateCursor.duplicate_mouse_event(t,this.spice_screen);return this.spice_screen.dispatchEvent(e)},duplicate_mouse_event:function(t){var e=document.createEvent("mouseevent");return e.initMouseEvent(t.type,!0,!0,t.view,t.detail,t.screenX,t.screenY,t.clientX,t.clientY,t.ctrlKey,t.altKey,t.shiftKey,t.metaKey,t.button,t.relatedTarget),e},ICONDIR:function(){},ICONDIRENTRY:function(t,e,i,s,r){this.width=t,this.height=e,this.bytes=i,this.hot_x=s,this.hot_y=r},create_icondir:function(t,e,i,s,r){var n,a=new SpiceSimulateCursor.ICONDIR,_=new SpiceSimulateCursor.ICONDIRENTRY(t,e,i,s,r),o=new ArrayBuffer(a.buffer_size()+_.buffer_size()),c=a.to_buffer(o);c=_.to_buffer(o,c);var h=new Uint8Array(o),p="";for(n=0;c>n;n++)p+="%",h[n]<16&&(p+="0"),p+=h[n].toString(16);return p}};SpiceSimulateCursor.ICONDIR.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return i.setUint16(e,0,!0),e+=2,i.setUint16(e,2,!0),e+=2,i.setUint16(e,1,!0),e+=2},buffer_size:function(){return 6}},SpiceSimulateCursor.ICONDIRENTRY.prototype={to_buffer:function(t,e){e=e||0;var i=new SpiceDataView(t);return i.setUint8(e,this.width),e++,i.setUint8(e,this.height),e++,i.setUint8(e,0),e++,i.setUint8(e,0),e++,i.setUint16(e,this.hot_x,!0),e+=2,i.setUint16(e,this.hot_y,!0),e+=2,i.setUint32(e,this.bytes,!0),e+=4,i.setUint32(e,e+4,!0),e+=4},buffer_size:function(){return 16}},define("spice-simulatecursor",function(){}),SpiceCursorConn.prototype=Object.create(SpiceConn.prototype),SpiceCursorConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_CURSOR_INIT){var e=new SpiceMsgCursorInit(t.data);return DEBUG>1&&console.log("SpiceMsgCursorInit"),this.parent&&this.parent.inputs&&this.parent.inputs.mouse_mode==SPICE_MOUSE_MODE_SERVER&&(this.parent.inputs.mousex=e.position.x,this.parent.inputs.mousey=e.position.y),!0}if(t.type==SPICE_MSG_CURSOR_SET){var i=new SpiceMsgCursorSet(t.data);return DEBUG>1&&console.log("SpiceMsgCursorSet"),i.flags&SPICE_CURSOR_FLAGS_NONE?(document.getElementById(this.parent.screen_id).style.cursor="none",!0):(i.flags>0&&this.log_warn("FIXME: No support for cursor flags "+i.flags),i.cursor.header.type!=SPICE_CURSOR_TYPE_ALPHA?(this.log_warn("FIXME: No support for cursor type "+i.cursor.header.type),!1):(this.set_cursor(i.cursor),!0))}return t.type==SPICE_MSG_CURSOR_HIDE?(DEBUG>1&&console.log("SpiceMsgCursorHide"),document.getElementById(this.parent.screen_id).style.cursor="none",!0):t.type==SPICE_MSG_CURSOR_RESET?(DEBUG>1&&console.log("SpiceMsgCursorReset"),document.getElementById(this.parent.screen_id).style.cursor="auto",!0):t.type==SPICE_MSG_CURSOR_INVAL_ALL?(DEBUG>1&&console.log("SpiceMsgCursorInvalAll"),!0):!1},SpiceCursorConn.prototype.set_cursor=function(t){var e=create_rgba_png(t.header.height,t.header.width,t.data),i="url(data:image/png,"+e+") "+t.header.hot_spot_x+" "+t.header.hot_spot_y+", default",s=document.getElementById(this.parent.screen_id);s.style.cursor="auto",s.style.cursor=i,"auto"==window.getComputedStyle(s,null).cursor&&SpiceSimulateCursor.simulate_cursor(this,t,s,e)},define("spice-cursor",["spice-spiceconn"],function(){});var dbits,canary=0xdeadbeefcafe,j_lm=15715070==(16777215&canary);j_lm&&"Microsoft Internet Explorer"==navigator.appName?(BigInteger.prototype.am=am2,dbits=30):j_lm&&"Netscape"!=navigator.appName?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28),BigInteger.prototype.DB=dbits,BigInteger.prototype.DM=(1<=vv;++vv)BI_RC[rr++]=vv;for(rr="a".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;for(rr="A".charCodeAt(0),vv=10;36>vv;++vv)BI_RC[rr++]=vv;Classic.prototype.convert=cConvert,Classic.prototype.revert=cRevert,Classic.prototype.reduce=cReduce,Classic.prototype.mulTo=cMulTo,Classic.prototype.sqrTo=cSqrTo,Montgomery.prototype.convert=montConvert,Montgomery.prototype.revert=montRevert,Montgomery.prototype.reduce=montReduce,Montgomery.prototype.mulTo=montMulTo,Montgomery.prototype.sqrTo=montSqrTo,BigInteger.prototype.copyTo=bnpCopyTo,BigInteger.prototype.fromInt=bnpFromInt,BigInteger.prototype.fromString=bnpFromString,BigInteger.prototype.clamp=bnpClamp,BigInteger.prototype.dlShiftTo=bnpDLShiftTo,BigInteger.prototype.drShiftTo=bnpDRShiftTo,BigInteger.prototype.lShiftTo=bnpLShiftTo,BigInteger.prototype.rShiftTo=bnpRShiftTo,BigInteger.prototype.subTo=bnpSubTo,BigInteger.prototype.multiplyTo=bnpMultiplyTo,BigInteger.prototype.squareTo=bnpSquareTo,BigInteger.prototype.divRemTo=bnpDivRemTo,BigInteger.prototype.invDigit=bnpInvDigit,BigInteger.prototype.isEven=bnpIsEven,BigInteger.prototype.exp=bnpExp,BigInteger.prototype.toString=bnToString,BigInteger.prototype.negate=bnNegate,BigInteger.prototype.abs=bnAbs,BigInteger.prototype.compareTo=bnCompareTo,BigInteger.prototype.bitLength=bnBitLength,BigInteger.prototype.mod=bnMod,BigInteger.prototype.modPowInt=bnModPowInt,BigInteger.ZERO=nbv(0),BigInteger.ONE=nbv(1),define("spice-jsbn",function(){}),RSAKey.prototype.doPublic=RSADoPublic,RSAKey.prototype.setPublic=RSASetPublic,RSAKey.prototype.encrypt=RSAEncrypt,define("spice-rsa",function(){}),Arcfour.prototype.init=ARC4init,Arcfour.prototype.next=ARC4next;var rng_psize=256;define("spice-prng4",function(){});var rng_state,rng_pool,rng_pptr;if(null==rng_pool){rng_pool=new Array,rng_pptr=0;var t;if("Netscape"==navigator.appName&&navigator.appVersion<"5"&&window.crypto){var z=window.crypto.random(32);for(t=0;trng_pptr;)t=Math.floor(65536*Math.random()),rng_pool[rng_pptr++]=t>>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}SecureRandom.prototype.nextBytes=rng_get_bytes,define("spice-rng",function(){});var hexcase=0,b64pad="";define("spice-sha1",function(){});var SHA_DIGEST_LENGTH=20;define("spice-ticket",function(){}),define("spice-resize",function(){}),SpiceFileXferTask.prototype.create_progressbar=function(){var t=this,e=document.createElement("input");this.progressbar_container=document.createElement("div"),this.progressbar=document.createElement("progress"),e.type="button",e.value="Cancel",e.style["float"]="right",e.onclick=function(){t.cancelled=!0,t.remove_progressbar()},this.progressbar.setAttribute("max",this.file.size),this.progressbar.setAttribute("value",0),this.progressbar.style.width="100%",this.progressbar.style.margin="4px auto",this.progressbar.style.display="inline-block",this.progressbar_container.style.width="90%",this.progressbar_container.style.margin="auto",this.progressbar_container.style.padding="4px",this.progressbar_container.textContent=this.file.name,this.progressbar_container.appendChild(e),this.progressbar_container.appendChild(this.progressbar),document.getElementById("spice-xfer-area").appendChild(this.progressbar_container)},SpiceFileXferTask.prototype.update_progressbar=function(t){this.progressbar.setAttribute("value",t)},SpiceFileXferTask.prototype.remove_progressbar=function(){this.progressbar_container&&this.progressbar_container.parentNode&&this.progressbar_container.parentNode.removeChild(this.progressbar_container)},define("spice-filexfer",function(){}),SpiceMainConn.prototype=Object.create(SpiceConn.prototype),SpiceMainConn.prototype.process_channel_message=function(t){if(t.type==SPICE_MSG_MAIN_INIT){this.log_info("Connected to "+this.ws.url),this.report_success("Connected"),this.main_init=new SpiceMsgMainInit(t.data),this.connection_id=this.main_init.session_id,this.agent_tokens=this.main_init.agent_tokens,DEBUG>0&&this.log_info("session id "+this.main_init.session_id+" ; display_channels_hint "+this.main_init.display_channels_hint+" ; supported_mouse_modes "+this.main_init.supported_mouse_modes+" ; current_mouse_mode "+this.main_init.current_mouse_mode+" ; agent_connected "+this.main_init.agent_connected+" ; agent_tokens "+this.main_init.agent_tokens+" ; multi_media_time "+this.main_init.multi_media_time+" ; ram_hint "+this.main_init.ram_hint),this.handle_mouse_mode(this.main_init.current_mouse_mode,this.main_init.supported_mouse_modes),this.main_init.agent_connected&&this.connect_agent();var e=new SpiceMiniData;return e.type=SPICE_MSGC_MAIN_ATTACH_CHANNELS,e.size=e.buffer_size(),this.send_msg(e),!0}if(t.type==SPICE_MSG_MAIN_MOUSE_MODE){var i=new SpiceMsgMainMouseMode(t.data);return DEBUG>0&&this.log_info("Mouse supported modes "+i.supported_modes+"; current "+i.current_mode),this.handle_mouse_mode(i.current_mode,i.supported_modes),!0}if(t.type==SPICE_MSG_MAIN_CHANNELS_LIST){var s,r;for(DEBUG>0&&console.log("channels"),r=new SpiceMsgChannels(t.data),s=0;s0&&this.file_xfer_read_queue.length>0;){var c=this.file_xfer_read_queue.shift();this.file_xfer_read(c,c.read_bytes),_--}return!0}if(t.type==SPICE_MSG_MAIN_AGENT_DISCONNECTED)return this.agent_connected=!1,!0;if(t.type==SPICE_MSG_MAIN_AGENT_DATA){var h=new SpiceMsgMainAgentData(t.data);if(h.type==VD_AGENT_ANNOUNCE_CAPABILITIES){var p=new VDAgentAnnounceCapabilities(h.data);return p.request&&this.announce_agent_capabilities(0),!0}return h.type==VD_AGENT_FILE_XFER_STATUS?(this.handle_file_xfer_status(new VDAgentFileXferStatusMessage(h.data)),!0):!1}return!1},SpiceMainConn.prototype.stop=function(){if(this.state="closing",this.inputs&&(this.inputs.cleanup(),this.inputs=void 0),this.cursor&&(this.cursor.cleanup(),this.cursor=void 0),this.display&&(this.display.cleanup(),this.display.destroy_surfaces(),this.display=void 0),this.cleanup(),"extra_channels"in this)for(var t in this.extra_channels)this.extra_channels[t].cleanup();this.extra_channels=void 0},SpiceMainConn.prototype.send_agent_message_queue=function(t){if(this.agent_connected)for(t&&this.agent_msg_queue.push(t);this.agent_tokens>0&&this.agent_msg_queue.length>0;){var e=this.agent_msg_queue.shift();this.send_msg(e),this.agent_tokens--}},SpiceMainConn.prototype.send_agent_message=function(t,e){var i=new SpiceMsgcMainAgentData(t,e),s=0,r=VD_AGENT_MAX_DATA_SIZE-SpiceMiniData.prototype.buffer_size(),n=new ArrayBuffer(i.buffer_size());for(i.to_buffer(n);s0&&e==t.file.size)){if(t.cancelled){var o=new VDAgentFileXferStatusMessage(t.id,VD_AGENT_FILE_XFER_STATUS_CANCELLED);return this.send_agent_message(VD_AGENT_FILE_XFER_STATUS,o),void delete this.file_xfer_tasks[t.id]}if(i=e||0,s=Math.min(i+a,t.file.size),!this.agent_tokens)return t.read_bytes=i,void this.file_xfer_read_queue.push(t);n=new FileReader,n.onload=function(e){var i=new VDAgentFileXferDataMessage(t.id,e.target.result.byteLength,e.target.result);_.send_agent_message(VD_AGENT_FILE_XFER_DATA,i),_.file_xfer_read(t,s),t.update_progressbar(s)},r=t.file.slice(i,s),n.readAsArrayBuffer(r)}},SpiceMainConn.prototype.file_xfer_completed=function(t,e){e?this.log_err(e):this.log_info("transfer of '"+t.file.name+"' was successful"),t.remove_progressbar(),delete this.file_xfer_tasks[t.id]},SpiceMainConn.prototype.connect_agent=function(){this.agent_connected=!0;var t=new SpiceMsgcMainAgentStart(-1),e=new SpiceMiniData;e.build_msg(SPICE_MSGC_MAIN_AGENT_START,t),this.send_msg(e),this.announce_agent_capabilities(1),void 0!==this.onagent&&this.onagent(this)},SpiceMainConn.prototype.handle_mouse_mode=function(t,e){if(this.mouse_mode=t,t!=SPICE_MOUSE_MODE_CLIENT&&e&SPICE_MOUSE_MODE_CLIENT){var i=new SpiceMsgcMainMouseModeRequest(SPICE_MOUSE_MODE_CLIENT),s=new SpiceMiniData;s.build_msg(SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST,i),this.send_msg(s)}this.inputs&&(this.inputs.mouse_mode=t)},define("spice-main",["spice-spiceconn","spice-spicearraybuffer","spice-enums","spice-atKeynames","spice-utils","spice-png","spice-lz","spice-quic","spice-bitmap","spice-spicedataview","spice-spicetype","spice-spicemsg","spice-wire","spice-display","spice-inputs","spice-webm","spice-playback","spice-simulatecursor","spice-cursor","spice-jsbn","spice-rsa","spice-prng4","spice-rng","spice-sha1","spice-ticket","spice-resize","spice-filexfer"],function(t){return function(){var e;return e||t.SpiceMainConn}}(this)),define("console/spice",["require","spice-main"],function(t){function e(t,e,i){var s,r;s=new Date,s.setTime(s.getTime()+24*i*60*60*1e3),r="; expires="+s.toGMTString(),document.cookie=t+"="+e+r+"; path=/"}function i(t,e){var i=RegExp("[?&]"+t+"=([^&]*)").exec(window.location.search);return i?decodeURIComponent(i[1].replace(/\+/g," ")):e}function s(){n()}function r(){var t,r,o,c,h="ws://";t=i("host",window.location.hostname);var p=window.location.port;if(p||("http:"==window.location.protocol?p=80:"https:"==window.location.protocol&&(p=443)),r=i("port",p),"https:"==window.location.protocol&&(h="wss://"),token=i("token",null),token&&e("token",token,1),o=i("password",""),path=i("path","websockify"),!t||!r)return void console.log("must specify host and port in URL");_&&_.stop(),c=h+t+":"+r+"?token="+token;try{_=new SpiceMainConn({uri:c,screen_id:"spice-screen",dump_id:"debug-div",message_id:"message-div",password:o,onerror:s,onagent:a})}catch(u){alert(u.toString()),n()}}function n(){if(console.log(">> disconnect"),_&&_.stop(),window.File&&window.FileReader&&window.FileList&&window.Blob){var t=document.getElementById("spice-xfer-area");document.getElementById("spice-area").removeChild(t),document.getElementById("spice-area").removeEventListener("dragover",handle_file_dragover,!1),document.getElementById("spice-area").removeEventListener("drop",handle_file_drop,!1)}console.log("<< disconnect")}function a(){if(window.addEventListener("resize",handle_resize),window.spice_connection=this,resize_helper(this),window.File&&window.FileReader&&window.FileList&&window.Blob){var t=document.createElement("div");t.setAttribute("id","spice-xfer-area"),document.getElementById("spice-area").addEventListener("dragover",handle_file_dragover,!1),document.getElementById("spice-area").addEventListener("drop",handle_file_drop,!1)}else console.log("File API is not supported")}t("spice-main");var _;r()}),require(["console/spice"]); -//# sourceMappingURL=spice.js -//# sourceMappingURL=spice.js.map \ No newline at end of file diff --git a/src/sunstone/public/dist/console/spice.js.map b/src/sunstone/public/dist/console/spice.js.map deleted file mode 100644 index 455bc3d194..0000000000 --- a/src/sunstone/public/dist/console/spice.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"spice.js","sources":["../../bower_components/spice-html5/spiceconn.js","../../bower_components/spice-html5/spicearraybuffer.js","../../bower_components/spice-html5/utils.js","../../bower_components/spice-html5/png.js","../../bower_components/spice-html5/lz.js","../../bower_components/spice-html5/quic.js","../../bower_components/spice-html5/bitmap.js","../../bower_components/spice-html5/spicedataview.js","../../bower_components/spice-html5/spicetype.js","../../bower_components/spice-html5/spicemsg.js","../../bower_components/spice-html5/wire.js","../../bower_components/spice-html5/display.js","../../bower_components/spice-html5/inputs.js","../../bower_components/spice-html5/webm.js","../../bower_components/spice-html5/playback.js","../../bower_components/spice-html5/cursor.js","../../bower_components/spice-html5/thirdparty/jsbn.js","../../bower_components/spice-html5/thirdparty/rsa.js","../../bower_components/spice-html5/thirdparty/prng4.js","../../bower_components/spice-html5/thirdparty/rng.js","../../bower_components/spice-html5/thirdparty/sha1.js","../../bower_components/spice-html5/ticket.js","../../bower_components/spice-html5/resize.js","../../bower_components/spice-html5/filexfer.js","../../bower_components/spice-html5/main.js","../../bower_components/almond/almond.js","../../bower_components/spice-html5/enums.js","../../bower_components/spice-html5/atKeynames.js","../../bower_components/spice-html5/simulatecursor.js","spice.js"],"names":["SpiceConn","o","undefined","uri","Error","this","ws","WebSocket","binaryType","connection_id","type","SPICE_CHANNEL_MAIN","chan_id","parent","message_id","password","screen_id","dump_id","onerror","onsuccess","onagent","state","wire_reader","SpiceWireReader","process_inbound","messages_sent","warnings","addEventListener","DEBUG","console","log","send_hdr","request","SpiceLinkHeader","prototype","buffer_size","e","target","log_err","url","report_error","toString","readyState","timeout","window","setTimeout","spiceconn_timeout","SPICE_CONNECT_TIMEOUT","sc","handle_timeout","call","SpiceArrayBufferSlice","start","end","byteLength","i","ret","ArrayBuffer","in1","Uint8Array","out","combine_array_buffers","a1","a2","in2","length","hexdump_buffer","a","mg","hex","str","last_zeros","h","Number","String","fromCharCode","get_scancode","code","common_scanmap","navigator","userAgent","indexOf","firefox_scanmap","DOM_scanmap","keycode_to_start_scan","scancode","alert","keycode_to_end_scan","rfc2083_make_crc_table","c","n","k","rfc2083_crc_table","rfc2083_crc_table_computed","rfc2083_update_crc","crc","u8buf","at","len","rfc2083_crc","crc32","mb","u8","PngIHDR","width","height","depth","compression","filter","interlace","adler","s1","s2","PngIDAT","bytes","data","PngIEND","create_rgba_png","ihdr","idat","iend","to_buffer","lz_rgb32_decompress","in_buf","out_buf","default_alpha","ctrl","encoder","op","ref","ofs","LZ_IMAGE_TYPE_RGBA","b","convert_spice_lz_to_web","context","lz_image","LZ_IMAGE_TYPE_RGB32","createImageData","LZ_IMAGE_TYPE_XXXA","ceil_log_2","val","result","family_init","family","bpc","limit","l","altprefixlen","altcodewords","bppmask","nGRcodewords","notGRcwlen","notGRprefixmask","notGRsuffixlen","s","pixelbitmask","pixelbitmaskshr","xlatU2L","xlatL2U","quic_image_bpc","QUIC_IMAGE_TYPE_GRAY","QUIC_IMAGE_TYPE_RGB16","QUIC_IMAGE_TYPE_RGB24","QUIC_IMAGE_TYPE_RGB32","QUIC_IMAGE_TYPE_RGBA","QUIC_IMAGE_TYPE_INVALID","cnt_l_zeroes","bits","lzeroes","golomb_decoding_8bpc","rc","cwlen","family_8bpc","zeroprefix","codewordlen","golomb_code_len_8bpc","QuicModel","bstart","bend","levels","n_buckets_ptrs","evol","repfirst","firstsize","repnext","mulsize","n_buckets","repcntr","bsize","QuicBucket","counters","QuicFamilyStat","buckets_ptrs","buckets_buf","QuicChannel","model_8bpc","model_5bpc","CommonState","family_stat_8bpc","family_stat_5bpc","correlate_row","zero","row","fill_model_structures","QuicEncoder","rgb_state","channels","SpiceQuic","convert_spice_quic_to_web","spice_quic","outptr","convert_spice_bitmap_to_web","spice_bitmap","offset","x","format","SPICE_BITMAP_FMT_32BIT","SPICE_BITMAP_FMT_RGBA","y","stride","SpiceDataView","buffer","byteOffset","SpiceChannelId","SpiceRect","SpiceClipRects","SpiceClip","SpiceImageDescriptor","SpicePalette","SpiceBitmap","SpiceImage","SpiceQMask","SpicePattern","SpiceBrush","SpiceFill","SpiceCopy","SpicePoint16","SpicePoint","SpiceCursorHeader","SpiceCursor","SpiceSurface","magic","SPICE_MAGIC","major_version","SPICE_VERSION_MAJOR","minor_version","SPICE_VERSION_MINOR","size","from_buffer","SpiceLinkMess","channel_type","channel_id","common_caps","channel_caps","SpiceLinkReply","error","pub_key","SpiceLinkAuthTicket","auth_mechanism","encrypted_data","SpiceLinkAuthReply","auth_code","SpiceMiniData","SpiceMsgChannels","num_of_channels","SpiceMsgMainInit","SpiceMsgMainMouseMode","SpiceMsgMainAgentData","SpiceMsgMainAgentTokens","SpiceMsgSetAck","SpiceMsgcAckSync","ack","generation","SpiceMsgcMainMouseModeRequest","mode","SpiceMsgcMainAgentStart","num_tokens","SpiceMsgcMainAgentData","protocol","VD_AGENT_PROTOCOL","opaque","VDAgentAnnounceCapabilities","caps","VDAgentMonitorsConfig","flags","num_mon","VDAgentFileXferStatusMessage","id","VDAgentFileXferStartMessage","name","string","VDAgentFileXferDataMessage","SpiceMsgNotify","SpiceMsgcDisplayInit","pixmap_cache_id","glz_dictionary_id","pixmap_cache_size","glz_dictionary_window_size","SpiceMsgDisplayBase","SpiceMsgDisplayDrawCopy","SpiceMsgDisplayDrawFill","SpiceMsgDisplayCopyBits","SpiceMsgSurfaceCreate","SpiceMsgSurfaceDestroy","SpiceMsgInputsInit","SpiceMsgInputsKeyModifiers","SpiceMsgCursorInit","SpiceMsgPlaybackData","SpiceMsgPlaybackMode","SpiceMsgPlaybackStart","SpiceMsgCursorSet","SpiceMsgcMousePosition","display_id","buttons_state","scrollTop","document","body","documentElement","scrollLeft","clientX","display","surfaces","primary_surface","canvas","offsetLeft","clientY","offsetTop","mousex","mousey","SpiceMsgcMouseMotion","SpiceMsgcMousePress","button","SPICE_MOUSE_BUTTON_LEFT","SPICE_MOUSE_BUTTON_MASK_LEFT","SpiceMsgcMouseRelease","SpiceMsgcKeyDown","keyCode","SpiceMsgcKeyUp","SpiceMsgDisplayStreamCreate","SpiceStreamDataHeader","SpiceMsgDisplayStreamData","SpiceMsgDisplayStreamClip","SpiceMsgDisplayStreamDestroy","SpiceMsgDisplayInvalList","count","resources","callback","needed","buffers","wire_blob_catcher","inbound","putImageDataWithAlpha","d","createElement","t","getContext","setAttribute","putImageData","drawImage","stripAlpha","SpiceDisplayConn","apply","arguments","handle_mouseover","focus","handle_mouseout","cursor","spice_simulated_cursor","style","blur","handle_draw_jpeg_onload","temp_canvas","base","surface_id","log_info","box","right","bottom","alpha_img","globalCompositeOperation","left","top","descriptor","SPICE_IMAGE_FLAGS_CACHE_ME","cache","getImageData","src","DUMP_DRAWS","debug_canvas","tag","draw_count","getElementById","appendChild","SpiceInputsConn","button_state","waiting_for_ack","handle_mousemove","move","msg","mouse_mode","SPICE_MOUSE_MODE_CLIENT","build_msg","SPICE_MSGC_INPUTS_MOUSE_POSITION","SPICE_MSGC_INPUTS_MOUSE_MOTION","inputs","SPICE_INPUT_MOTION_ACK_BUNCH","send_msg","pageX","spice_hot_x","pageY","spice_hot_y","preventDefault","handle_mousedown","press","SPICE_MSGC_INPUTS_MOUSE_PRESS","handle_contextmenu","handle_mouseup","release","SPICE_MSGC_INPUTS_MOUSE_RELEASE","handle_mousewheel","deltaY","SPICE_MOUSE_BUTTON_UP","SPICE_MOUSE_BUTTON_DOWN","handle_keydown","key","check_and_update_modifiers","SPICE_MSGC_INPUTS_KEY_DOWN","handle_keyup","SPICE_MSGC_INPUTS_KEY_UP","sendCtrlAltDel","update_modifier","KEY_LCtrl","KEY_Alt","KEY_KP_Decimal","Ctrl_state","Alt_state","Shift_state","shiftKey","ctrlKey","altKey","Meta_state","metaKey","KEY_ShiftL","EBML_write_u1_data_len","dv","setUint8","EBML_write_u8_value","EBML_write_array","EBML_write_u32_value","setUint32","EBML_write_u16_value","setUint16","EBML_write_float_value","setFloat32","EBML_write_u64_data_len","shift","arr","EBML_write_string","charCodeAt","EBML_write_data","EBMLHeader","EBML_HEADER","Version","ReadVersion","MaxIDLength","MaxSizeLength","DocType","DocTypeVersion","DocTypeReadVersion","webm_Segment","WEBM_SEGMENT_HEADER","webm_SegmentInformation","WEBM_SEGMENT_INFORMATION","timecode_scale","muxing_app","writing_app","webm_Audio","frequency","WEBM_AUDIO","sampling_frequency","OPUS_CHANNELS","webm_Seek","seekid","pos","WEBM_SEEK","webm_SeekHead","info_pos","track_pos","WEBM_SEEK_HEAD","info","track","WEBM_TRACKS","webm_TrackEntry","WEBM_TRACK_ENTRY","number","uid","flag_enabled","flag_default","flag_forced","flag_lacing","min_cache","max_block_addition_id","codec_decode_all","seek_pre_roll","codec_delay","codec_id","audio","OPUS_FREQUENCY","codec_private","webm_Tracks","entry","track_entry","webm_Cluster","timecode","WEBM_CLUSTER","webm_SimpleBlock","keyframe","WEBM_SIMPLE_BLOCK","webm_Header","ebml","segment","seek_head","tracks","SpicePlaybackConn","queue","Array","append_okay","start_time","skip_until","gap_time","handle_source_open","p","spiceconn","source_buffer","addSourceBuffer","SPICE_PLAYBACK_CODEC","handle_source_ended","handle_source_closed","handle_append_buffer_done","playback_append_buffer","handle_sourcebuffer_error","message","appendBuffer","SpiceCursorConn","BigInteger","fromNumber","fromString","nbi","am1","w","j","v","Math","floor","am2","xl","xh","m","am3","int2char","BI_RM","charAt","intAt","BI_RC","bnpCopyTo","r","bnpFromInt","DV","nbv","fromInt","bnpFromString","fromRadix","mi","sh","DB","clamp","ZERO","subTo","bnpClamp","DM","bnToString","negate","toRadix","km","bnNegate","bnAbs","bnCompareTo","nbits","bnBitLength","bnpDLShiftTo","bnpDRShiftTo","max","bnpLShiftTo","bs","cbs","bm","ds","bnpRShiftTo","bnpSubTo","min","bnpMultiplyTo","abs","am","bnpSquareTo","bnpDivRemTo","q","pm","pt","copyTo","ts","ms","nsh","lShiftTo","ys","y0","yt","F1","F2","d1","FV","d2","dlShiftTo","compareTo","ONE","qd","drShiftTo","rShiftTo","bnMod","divRemTo","Classic","cConvert","mod","cRevert","cReduce","cMulTo","multiplyTo","reduce","cSqrTo","squareTo","bnpInvDigit","Montgomery","mp","invDigit","mpl","mph","um","mt2","montConvert","montRevert","montReduce","u0","montSqrTo","montMulTo","bnpIsEven","bnpExp","z","r2","g","convert","sqrTo","mulTo","revert","bnModPowInt","isEven","exp","parseBigInt","linebrk","substring","byte2Hex","pkcs1pad2","ba","rng","SecureRandom","nextBytes","RSAKey","dmp1","dmq1","coeff","RSASetPublic","N","E","parseInt","RSADoPublic","modPowInt","RSAEncrypt","text","bitLength","doPublic","Arcfour","S","ARC4init","ARC4next","prng_newstate","rng_seed_int","rng_pool","rng_pptr","rng_psize","rng_seed_time","Date","getTime","rng_get_byte","rng_state","init","next","rng_get_bytes","hex_sha1","rstr2hex","rstr_sha1","str2rstr_utf8","b64_sha1","rstr2b64","any_sha1","rstr2any","hex_hmac_sha1","rstr_hmac_sha1","b64_hmac_sha1","any_hmac_sha1","sha1_vm_test","toLowerCase","binb2rstr","binb_sha1","rstr2binb","bkey","ipad","opad","hash","concat","input","hexcase","hex_tab","output","b64pad","tab","triplet","encoding","quotient","divisor","remainders","dividend","ceil","full_length","str2rstr_utf16le","str2rstr_utf16be","olda","oldb","oldc","oldd","olde","bit_rol","safe_add","sha1_ft","sha1_kt","lsw","msw","num","cnt","MGF1","mask","seed","outlen","combo_buf","combo_hash","RSA_padding_add_PKCS1_OAEP","tolen","from","param","SHA_DIGEST_LENGTH","rand","dblen","db","padlen","param_hash","dbmask","seedmask","asn_get_length","find_sequence","lenblock","create_rsa_from_mb","seq","rsa_encrypt","rsa","oaep","bigint","enc","resize_helper","clientWidth","clientHeight","hd","innerHeight","offsetHeight","resize_window","spice_resize_timer","handle_resize","spice_connection","clearTimeout","SpiceFileXferTask","file","handle_file_dragover","stopPropagation","dataTransfer","dropEffect","handle_file_drop","files","file_xfer_start","SpiceMainConn","agent_msg_queue","file_xfer_tasks","file_xfer_task_id","file_xfer_read_queue","requirejs","require","define","undef","hasProp","obj","prop","hasOwn","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","part","baseParts","split","map","config","starMap","nodeIdCompat","jsSuffixRegExp","test","replace","slice","splice","join","makeRequire","relName","forceSync","args","aps","push","req","makeNormalize","makeLoad","depName","value","defined","callDep","waiting","defining","main","splitPrefix","prefix","index","makeConfig","makeMap","handlers","Object","hasOwnProperty","plugin","parts","f","pr","exports","module","deps","cjsModule","usingExports","callbackType","load","alt","cfg","_defined","amd","jQuery","hdr","SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION","SPICE_COMMON_CAP_MINI_HEADER","SPICE_CHANNEL_PLAYBACK","SPICE_PLAYBACK_CAP_OPUS","SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS","send","send_ticket","ticket","SPICE_COMMON_CAP_AUTH_SPICE","saved_header","process_message","save_header","reply_hdr","reply_link","auth_reply","SPICE_LINK_ERR_OK","SPICE_CHANNEL_DISPLAY","dinit","reply","SPICE_MSGC_DISPLAY_INIT","SPICE_LINK_ERR_PERMISSION_DENIED","process_common_messages","SPICE_MSG_SET_ACK","ack_window","msgs_until_ack","ackack","SPICE_MSGC_ACK_SYNC","SPICE_MSG_PING","pong","SPICE_MSGC_PONG","SPICE_MSG_NOTIFY","notify","severity","SPICE_NOTIFY_SEVERITY_ERROR","SPICE_NOTIFY_SEVERITY_WARN","log_warn","process_channel_message","SPICE_MSGC_ACK","SPICE_CHANNEL_INPUTS","SPICE_CHANNEL_CURSOR","createTextNode","className","known_unimplemented","report_success","cleanup","close","SPICE_COMMON_CAP_AUTH_SASL","SPICE_TICKET_KEY_PAIR_LENGTH","SPICE_TICKET_PUBKEY_BYTES","SPICE_LINK_ERR_ERROR","SPICE_LINK_ERR_INVALID_MAGIC","SPICE_LINK_ERR_INVALID_DATA","SPICE_LINK_ERR_VERSION_MISMATCH","SPICE_LINK_ERR_NEED_SECURED","SPICE_LINK_ERR_NEED_UNSECURED","SPICE_LINK_ERR_BAD_CONNECTION_ID","SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE","SPICE_MSG_MIGRATE","SPICE_MSG_MIGRATE_DATA","SPICE_MSG_WAIT_FOR_CHANNELS","SPICE_MSG_DISCONNECTING","SPICE_MSG_LIST","SPICE_MSG_MAIN_MIGRATE_BEGIN","SPICE_MSG_MAIN_MIGRATE_CANCEL","SPICE_MSG_MAIN_INIT","SPICE_MSG_MAIN_CHANNELS_LIST","SPICE_MSG_MAIN_MOUSE_MODE","SPICE_MSG_MAIN_MULTI_MEDIA_TIME","SPICE_MSG_MAIN_AGENT_CONNECTED","SPICE_MSG_MAIN_AGENT_DISCONNECTED","SPICE_MSG_MAIN_AGENT_DATA","SPICE_MSG_MAIN_AGENT_TOKEN","SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST","SPICE_MSG_MAIN_MIGRATE_END","SPICE_MSG_MAIN_NAME","SPICE_MSG_MAIN_UUID","SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS","SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS","SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK","SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK","SPICE_MSG_END_MAIN","SPICE_MSGC_MIGRATE_FLUSH_MARK","SPICE_MSGC_MIGRATE_DATA","SPICE_MSGC_DISCONNECTING","SPICE_MSGC_MAIN_CLIENT_INFO","SPICE_MSGC_MAIN_MIGRATE_CONNECTED","SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR","SPICE_MSGC_MAIN_ATTACH_CHANNELS","SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST","SPICE_MSGC_MAIN_AGENT_START","SPICE_MSGC_MAIN_AGENT_DATA","SPICE_MSGC_MAIN_AGENT_TOKEN","SPICE_MSGC_MAIN_MIGRATE_END","SPICE_MSGC_END_MAIN","SPICE_MSG_DISPLAY_MODE","SPICE_MSG_DISPLAY_MARK","SPICE_MSG_DISPLAY_RESET","SPICE_MSG_DISPLAY_COPY_BITS","SPICE_MSG_DISPLAY_INVAL_LIST","SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS","SPICE_MSG_DISPLAY_INVAL_PALETTE","SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES","SPICE_MSG_DISPLAY_STREAM_CREATE","SPICE_MSG_DISPLAY_STREAM_DATA","SPICE_MSG_DISPLAY_STREAM_CLIP","SPICE_MSG_DISPLAY_STREAM_DESTROY","SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL","SPICE_MSG_DISPLAY_DRAW_FILL","SPICE_MSG_DISPLAY_DRAW_OPAQUE","SPICE_MSG_DISPLAY_DRAW_COPY","SPICE_MSG_DISPLAY_DRAW_BLEND","SPICE_MSG_DISPLAY_DRAW_BLACKNESS","SPICE_MSG_DISPLAY_DRAW_WHITENESS","SPICE_MSG_DISPLAY_DRAW_INVERS","SPICE_MSG_DISPLAY_DRAW_ROP3","SPICE_MSG_DISPLAY_DRAW_STROKE","SPICE_MSG_DISPLAY_DRAW_TEXT","SPICE_MSG_DISPLAY_DRAW_TRANSPARENT","SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND","SPICE_MSG_DISPLAY_SURFACE_CREATE","SPICE_MSG_DISPLAY_SURFACE_DESTROY","SPICE_MSG_INPUTS_INIT","SPICE_MSG_INPUTS_KEY_MODIFIERS","SPICE_MSG_INPUTS_MOUSE_MOTION_ACK","SPICE_MSGC_INPUTS_KEY_MODIFIERS","SPICE_MSG_CURSOR_INIT","SPICE_MSG_CURSOR_RESET","SPICE_MSG_CURSOR_SET","SPICE_MSG_CURSOR_MOVE","SPICE_MSG_CURSOR_HIDE","SPICE_MSG_CURSOR_TRAIL","SPICE_MSG_CURSOR_INVAL_ONE","SPICE_MSG_CURSOR_INVAL_ALL","SPICE_MSG_PLAYBACK_DATA","SPICE_MSG_PLAYBACK_MODE","SPICE_MSG_PLAYBACK_START","SPICE_MSG_PLAYBACK_STOP","SPICE_MSG_PLAYBACK_VOLUME","SPICE_MSG_PLAYBACK_MUTE","SPICE_MSG_PLAYBACK_LATENCY","SPICE_PLAYBACK_CAP_CELT_0_5_1","SPICE_PLAYBACK_CAP_VOLUME","SPICE_PLAYBACK_CAP_LATENCY","SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE","SPICE_MAIN_CAP_NAME_AND_UUID","SPICE_MAIN_CAP_SEAMLESS_MIGRATE","SPICE_AUDIO_DATA_MODE_INVALID","SPICE_AUDIO_DATA_MODE_RAW","SPICE_AUDIO_DATA_MODE_CELT_0_5_1","SPICE_AUDIO_DATA_MODE_OPUS","SPICE_AUDIO_FMT_INVALID","SPICE_AUDIO_FMT_S16","SPICE_CHANNEL_RECORD","SPICE_CHANNEL_TUNNEL","SPICE_CHANNEL_SMARTCARD","SPICE_CHANNEL_USBREDIR","SPICE_SURFACE_FLAGS_PRIMARY","SPICE_NOTIFY_SEVERITY_INFO","SPICE_MOUSE_MODE_SERVER","SPICE_MOUSE_MODE_MASK","SPICE_CLIP_TYPE_NONE","SPICE_CLIP_TYPE_RECTS","SPICE_IMAGE_TYPE_BITMAP","SPICE_IMAGE_TYPE_QUIC","SPICE_IMAGE_TYPE_RESERVED","SPICE_IMAGE_TYPE_LZ_PLT","SPICE_IMAGE_TYPE_LZ_RGB","SPICE_IMAGE_TYPE_GLZ_RGB","SPICE_IMAGE_TYPE_FROM_CACHE","SPICE_IMAGE_TYPE_SURFACE","SPICE_IMAGE_TYPE_JPEG","SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS","SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB","SPICE_IMAGE_TYPE_JPEG_ALPHA","SPICE_IMAGE_FLAGS_HIGH_BITS_SET","SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME","SPICE_BITMAP_FLAGS_PAL_CACHE_ME","SPICE_BITMAP_FLAGS_PAL_FROM_CACHE","SPICE_BITMAP_FLAGS_TOP_DOWN","SPICE_BITMAP_FLAGS_MASK","SPICE_BITMAP_FMT_INVALID","SPICE_BITMAP_FMT_1BIT_LE","SPICE_BITMAP_FMT_1BIT_BE","SPICE_BITMAP_FMT_4BIT_LE","SPICE_BITMAP_FMT_4BIT_BE","SPICE_BITMAP_FMT_8BIT","SPICE_BITMAP_FMT_16BIT","SPICE_BITMAP_FMT_24BIT","SPICE_CURSOR_FLAGS_NONE","SPICE_CURSOR_FLAGS_CACHE_ME","SPICE_CURSOR_FLAGS_FROM_CACHE","SPICE_CURSOR_FLAGS_MASK","SPICE_MOUSE_BUTTON_MASK_MIDDLE","SPICE_MOUSE_BUTTON_MASK_RIGHT","SPICE_MOUSE_BUTTON_MASK_MASK","SPICE_MOUSE_BUTTON_INVALID","SPICE_MOUSE_BUTTON_MIDDLE","SPICE_MOUSE_BUTTON_RIGHT","SPICE_BRUSH_TYPE_NONE","SPICE_BRUSH_TYPE_SOLID","SPICE_BRUSH_TYPE_PATTERN","SPICE_SURFACE_FMT_INVALID","SPICE_SURFACE_FMT_1_A","SPICE_SURFACE_FMT_8_A","SPICE_SURFACE_FMT_16_555","SPICE_SURFACE_FMT_32_xRGB","SPICE_SURFACE_FMT_16_565","SPICE_SURFACE_FMT_32_ARGB","SPICE_ROPD_INVERS_SRC","SPICE_ROPD_INVERS_BRUSH","SPICE_ROPD_INVERS_DEST","SPICE_ROPD_OP_PUT","SPICE_ROPD_OP_OR","SPICE_ROPD_OP_AND","SPICE_ROPD_OP_XOR","SPICE_ROPD_OP_BLACKNESS","SPICE_ROPD_OP_WHITENESS","SPICE_ROPD_OP_INVERS","SPICE_ROPD_INVERS_RES","SPICE_ROPD_MASK","LZ_IMAGE_TYPE_INVALID","LZ_IMAGE_TYPE_PLT1_LE","LZ_IMAGE_TYPE_PLT1_BE","LZ_IMAGE_TYPE_PLT4_LE","LZ_IMAGE_TYPE_PLT4_BE","LZ_IMAGE_TYPE_PLT8","LZ_IMAGE_TYPE_RGB16","LZ_IMAGE_TYPE_RGB24","SPICE_CURSOR_TYPE_ALPHA","SPICE_CURSOR_TYPE_MONO","SPICE_CURSOR_TYPE_COLOR4","SPICE_CURSOR_TYPE_COLOR8","SPICE_CURSOR_TYPE_COLOR16","SPICE_CURSOR_TYPE_COLOR24","SPICE_CURSOR_TYPE_COLOR32","SPICE_VIDEO_CODEC_TYPE_MJPEG","VD_AGENT_MAX_DATA_SIZE","VD_AGENT_MOUSE_STATE","VD_AGENT_MONITORS_CONFIG","VD_AGENT_REPLY","VD_AGENT_CLIPBOARD","VD_AGENT_DISPLAY_CONFIG","VD_AGENT_ANNOUNCE_CAPABILITIES","VD_AGENT_CLIPBOARD_GRAB","VD_AGENT_CLIPBOARD_REQUEST","VD_AGENT_CLIPBOARD_RELEASE","VD_AGENT_FILE_XFER_START","VD_AGENT_FILE_XFER_STATUS","VD_AGENT_FILE_XFER_DATA","VD_AGENT_CLIENT_DISCONNECTED","VD_AGENT_MAX_CLIPBOARD","VD_AGENT_CAP_MOUSE_STATE","VD_AGENT_CAP_MONITORS_CONFIG","VD_AGENT_CAP_REPLY","VD_AGENT_CAP_CLIPBOARD","VD_AGENT_CAP_DISPLAY_CONFIG","VD_AGENT_CAP_CLIPBOARD_BY_DEMAND","VD_AGENT_CAP_CLIPBOARD_SELECTION","VD_AGENT_CAP_SPARSE_MONITORS_CONFIG","VD_AGENT_CAP_GUEST_LINEEND_LF","VD_AGENT_CAP_GUEST_LINEEND_CRLF","VD_AGENT_CAP_MAX_CLIPBOARD","VD_AGENT_END_CAP","VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA","VD_AGENT_FILE_XFER_STATUS_CANCELLED","VD_AGENT_FILE_XFER_STATUS_ERROR","VD_AGENT_FILE_XFER_STATUS_SUCCESS","KEY_Escape","KEY_1","KEY_2","KEY_3","KEY_4","KEY_5","KEY_6","KEY_7","KEY_8","KEY_9","KEY_0","KEY_Minus","KEY_Equal","KEY_BackSpace","KEY_Tab","KEY_Q","KEY_W","KEY_E","KEY_R","KEY_T","KEY_Y","KEY_U","KEY_I","KEY_O","KEY_P","KEY_LBrace","KEY_RBrace","KEY_Enter","KEY_A","KEY_S","KEY_D","KEY_F","KEY_G","KEY_H","KEY_J","KEY_K","KEY_L","KEY_SemiColon","KEY_Quote","KEY_Tilde","KEY_BSlash","KEY_Z","KEY_X","KEY_C","KEY_V","KEY_B","KEY_N","KEY_M","KEY_Comma","KEY_Period","KEY_Slash","KEY_ShiftR","KEY_KP_Multiply","KEY_Space","KEY_CapsLock","KEY_F1","KEY_F2","KEY_F3","KEY_F4","KEY_F5","KEY_F6","KEY_F7","KEY_F8","KEY_F9","KEY_F10","KEY_NumLock","KEY_ScrollLock","KEY_KP_7","KEY_KP_8","KEY_KP_9","KEY_KP_Minus","KEY_KP_4","KEY_KP_5","KEY_KP_6","KEY_KP_Plus","KEY_KP_1","KEY_KP_2","KEY_KP_3","KEY_KP_0","KEY_SysReqest","KEY_Less","KEY_F11","KEY_F12","KEY_Prefix0","KEY_Prefix1","DUMP_CANVASES","orig","update","zsum","DEFevol","DEFwmimax","DEFwminext","need_init","DEFmaxclen","wmimax","wminext","family_5bpc","zeroLUT","besttrigtab","J","tabrand_chaos","rgb32_pixel_pad","rgb32_pixel_r","rgb32_pixel_g","rgb32_pixel_b","rgb32_pixel_size","bestcode","reste","bpp","update_model_8bpc","curval","bestcodelen","ithcodelen","wm_trigger","model","bnumber","__FUNCTION__","waitcnt","tabrand_seed","wmidx","wmileft","melcstate","melclen","melcorder","set_wm_trigger","wm","tabrand","io_idx","io_available_bits","io_word","io_next_word","io_now","io_end","rows_completed","io_ptr","read_io_word","decode_eatbits","delta","decode_eat32bits","reste_channels","quic_decode_begin","version","quic_rgb32_uncompress_row0_seg","cur_row","waitmask","bpc_mask","stopidx","n_channels","quic_rgb32_uncompress_row0","quic_rgb32_uncompress_row_seg","prev_row","run_index","run_end","pixel","pixelm1","pixelm2","decode_run","cc","cr","runlen","hits","temp","quic_rgb32_uncompress_row","quic_four_uncompress_row0_seg","channel","pbucket","quic_four_uncompress_row0","quic_four_uncompress_row_seg","quic_four_uncompress_row","quic_decode","buf","prev","subarray","simple_quic_decode","from_dv","data_size","getUint32","getUint8","getUint16","littleEndian","low","high","getUint64","setUint64","is_same_size","num_rects","rects","unique","num_ents","ents","palette_id","palette","lz_rgb","initial_at","top_down","header_size","bitmap","jpeg","jpeg_alpha","jpeg_size","alpha","quic","pat","color","pattern","brush","rop_descriptor","src_bitmap","src_area","scale_mode","hot_spot_x","hot_spot_y","header","orig_at","num_common_caps","num_channel_caps","caps_offset","unshift","u8arr","in_type","extra","chan","session_id","display_channels_hint","supported_mouse_modes","current_mouse_mode","agent_connected","agent_tokens","multi_media_time","ram_hint","supported_modes","current_mode","time_stamp","visibility","what","message_len","clip","src_pos","surface","keyboard_modifiers","position","trail_length","trail_frequency","visible","time","codec_type","stamp","stream_width","stream_height","src_width","src_height","dest","saved_msg_header","mb1","mb2","clear_header","create","restore","draw_copy","log_draw","source_img","draw_copy_helper","image_data","has_alpha","source_context","computed_src_area","tmpstr","img","Image","qdv","onload","draw_fill","color_str","fillStyle","fillRect","copy_bits","source_canvas","save","hook_events","delete_surface","streams","strm_base","removeChild","unhook_events","draw","removeEventListener","destroy_surfaces","inputs_init","EBML_HEADER_VERSION","EBML_HEADER_READ_VERSION","EBML_HEADER_MAX_ID_LENGTH","EBML_HEADER_MAX_SIZE_LENGTH","EBML_HEADER_DOC_TYPE","EBML_HEADER_DOC_TYPE_VERSION","EBML_HEADER_DOC_TYPE_READ_VERSION","WEBM_TIMECODE_SCALE","WEBM_MUXING_APP","WEBM_WRITING_APP","WEBM_SEEK_ID","WEBM_SEEK_POSITION","WEBM_TRACK_NUMBER","WEBM_TRACK_UID","WEBM_TRACK_TYPE","WEBM_FLAG_ENABLED","WEBM_FLAG_DEFAULT","WEBM_FLAG_FORCED","WEBM_FLAG_LACING","WEBM_MIN_CACHE","WEBM_MAX_BLOCK_ADDITION_ID","WEBM_CODEC_DECODE_ALL","WEBM_SEEK_PRE_ROLL","WEBM_CODEC_DELAY","WEBM_CODEC_PRIVATE","WEBM_CODEC_ID","WEBM_SAMPLING_FREQUENCY","WEBM_CHANNELS","WEBM_TIME_CODE","CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME","MAX_CLUSTER_TIME","GAP_DETECTION_THRESHOLD","DataView","MediaSource","media_source","URL","createObjectURL","bytes_written","last_data_time","buffered","toFixed","start_playback","cluster_time","new_cluster","simple_block","currentTime","paused","play","sb","SpiceSimulateCursor","cursors","unknown_cursors","warned","add_cursor","sha1","unknown_cursor","curdata","simulate_cursor","spicecursor","screen","pngstr","cursor_sha","curstr","getComputedStyle","create_icondir","overflow","spice_screen","handle_sim_mousemove","pointerEvents","duplicate_mouse_event","dispatchEvent","evt","createEvent","initMouseEvent","view","detail","screenX","screenY","relatedTarget","ICONDIR","ICONDIRENTRY","hot_x","hot_y","cursor_init","cursor_set","set_cursor","dbits","canary","j_lm","appName","BI_FP","pow","rr","vv","setPublic","encrypt","appVersion","crypto","random","create_progressbar","_this","cancel","progressbar_container","progressbar","onclick","cancelled","remove_progressbar","margin","padding","textContent","update_progressbar","parentNode","main_init","handle_mouse_mode","connect_agent","attach","chans","conn","extra_channels","connected_tokens","remaining_tokens","tokens","send_agent_message_queue","xfer_task","file_xfer_read","read_bytes","agent_data","agent_caps","announce_agent_capabilities","handle_file_xfer_status","stop","mr","send_agent_message","maxsize","eb","monitors_config","task_id","xfer_start","task","file_xfer_status","xfer_error","file_xfer_completed","file_xfer_task","start_byte","reader","FILE_XFER_CHUNK_SIZE","xfer_status","FileReader","xfer_data","readAsArrayBuffer","agent_start","current","supported","mode_request","global","spice_set_cookie","days","date","expires","setTime","toGMTString","cookie","spice_query_var","defvalue","match","RegExp","exec","location","search","decodeURIComponent","spice_error","disconnect","connect","host","port","scheme","hostname","default_port","token","path","File","FileList","Blob","spice_xfer_area"],"mappings":"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AAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EACA,EAAA,EAAA,EAAA,EAAA,EAAA,GAEAwjC,eACA,SAAA,UAAA,UAAA,WAAA,WAAA,UACA,WAAA,UAAA,WAAA,UAAA,WAAA,WACA,UAAA,WAAA,WAAA,UAAA,WAAA,WACA,UAAA,WAAA,WAAA,WAAA,WAAA,UACA,WAAA,WAAA,UAAA,SAAA,WAAA,UACA,WAAA,WAAA,WAAA,WAAA,WAAA,WACA,WAAA,UAAA,UAAA,WAAA,WAAA,WACA,WAAA,WAAA,WAAA,UAAA,WAAA,WACA,WAAA,WAAA,WAAA,WAAA,UAAA,WAC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","sourcesContent":["\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** SpiceConn\n** This is the base Javascript class for establishing and\n** managing a connection to a Spice Server.\n** It is used to provide core functionality to the Spice main,\n** display, inputs, and cursor channels. See main.js for \n** usage.\n**--------------------------------------------------------------------------*/\nfunction SpiceConn(o)\n{\n if (o === undefined || o.uri === undefined || ! o.uri)\n throw new Error(\"You must specify a uri\");\n\n this.ws = new WebSocket(o.uri, 'binary');\n\n if (! this.ws.binaryType)\n throw new Error(\"WebSocket doesn't support binaryType. Try a different browser.\");\n\n this.connection_id = o.connection_id !== undefined ? o.connection_id : 0;\n this.type = o.type !== undefined ? o.type : SPICE_CHANNEL_MAIN;\n this.chan_id = o.chan_id !== undefined ? o.chan_id : 0;\n if (o.parent !== undefined)\n {\n this.parent = o.parent;\n this.message_id = o.parent.message_id;\n this.password = o.parent.password;\n }\n if (o.screen_id !== undefined)\n this.screen_id = o.screen_id;\n if (o.dump_id !== undefined)\n this.dump_id = o.dump_id;\n if (o.message_id !== undefined)\n this.message_id = o.message_id;\n if (o.password !== undefined)\n this.password = o.password;\n if (o.onerror !== undefined)\n this.onerror = o.onerror;\n if (o.onsuccess !== undefined)\n this.onsuccess = o.onsuccess;\n if (o.onagent !== undefined)\n this.onagent = o.onagent;\n\n this.state = \"connecting\";\n this.ws.parent = this;\n this.wire_reader = new SpiceWireReader(this, this.process_inbound);\n this.messages_sent = 0;\n this.warnings = [];\n\n this.ws.addEventListener('open', function(e) {\n DEBUG > 0 && console.log(\">> WebSockets.onopen\");\n DEBUG > 0 && console.log(\"id \" + this.parent.connection_id +\"; type \" + this.parent.type);\n\n /***********************************************************************\n ** WHERE IT ALL REALLY BEGINS\n ***********************************************************************/\n this.parent.send_hdr();\n this.parent.wire_reader.request(SpiceLinkHeader.prototype.buffer_size());\n this.parent.state = \"start\";\n });\n this.ws.addEventListener('error', function(e) {\n if ('url' in e.target) {\n this.parent.log_err(\"WebSocket error: Can't connect to websocket on URL: \" + e.target.url);\n }\n this.parent.report_error(e);\n });\n this.ws.addEventListener('close', function(e) {\n DEBUG > 0 && console.log(\">> WebSockets.onclose\");\n DEBUG > 0 && console.log(\"id \" + this.parent.connection_id +\"; type \" + this.parent.type);\n DEBUG > 0 && console.log(e);\n if (this.parent.state != \"closing\" && this.parent.state != \"error\" && this.parent.onerror !== undefined)\n {\n var e;\n if (this.parent.state == \"connecting\")\n e = new Error(\"Connection refused.\");\n else if (this.parent.state == \"start\" || this.parent.state == \"link\")\n e = new Error(\"Unexpected protocol mismatch.\");\n else if (this.parent.state == \"ticket\")\n e = new Error(\"Bad password.\");\n else\n e = new Error(\"Unexpected close while \" + this.parent.state);\n\n this.parent.onerror(e);\n this.parent.log_err(e.toString());\n }\n });\n\n if (this.ws.readyState == 2 || this.ws.readyState == 3)\n throw new Error(\"Unable to connect to \" + o.uri);\n\n this.timeout = window.setTimeout(spiceconn_timeout, SPICE_CONNECT_TIMEOUT, this);\n}\n\nSpiceConn.prototype =\n{\n send_hdr : function ()\n {\n var hdr = new SpiceLinkHeader;\n var msg = new SpiceLinkMess;\n\n msg.connection_id = this.connection_id;\n msg.channel_type = this.type;\n // FIXME - we're not setting a channel_id...\n msg.common_caps.push(\n (1 << SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION) |\n (1 << SPICE_COMMON_CAP_MINI_HEADER)\n );\n\n if (msg.channel_type == SPICE_CHANNEL_PLAYBACK)\n msg.channel_caps.push(\n (1 << SPICE_PLAYBACK_CAP_OPUS)\n );\n else if (msg.channel_type == SPICE_CHANNEL_MAIN)\n msg.channel_caps.push(\n (1 << SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS)\n );\n\n hdr.size = msg.buffer_size();\n\n var mb = new ArrayBuffer(hdr.buffer_size() + msg.buffer_size());\n hdr.to_buffer(mb);\n msg.to_buffer(mb, hdr.buffer_size());\n\n DEBUG > 1 && console.log(\"Sending header:\");\n DEBUG > 2 && hexdump_buffer(mb);\n this.ws.send(mb);\n },\n\n send_ticket: function(ticket)\n {\n var hdr = new SpiceLinkAuthTicket();\n hdr.auth_mechanism = SPICE_COMMON_CAP_AUTH_SPICE;\n // FIXME - we need to implement RSA to make this work right\n hdr.encrypted_data = ticket;\n var mb = new ArrayBuffer(hdr.buffer_size());\n\n hdr.to_buffer(mb);\n DEBUG > 1 && console.log(\"Sending ticket:\");\n DEBUG > 2 && hexdump_buffer(mb);\n this.ws.send(mb);\n },\n\n send_msg: function(msg)\n {\n var mb = new ArrayBuffer(msg.buffer_size());\n msg.to_buffer(mb);\n this.messages_sent++;\n DEBUG > 0 && console.log(\">> hdr \" + this.channel_type() + \" type \" + msg.type + \" size \" + mb.byteLength);\n DEBUG > 2 && hexdump_buffer(mb);\n this.ws.send(mb);\n },\n\n process_inbound: function(mb, saved_header)\n {\n DEBUG > 2 && console.log(this.type + \": processing message of size \" + mb.byteLength + \"; state is \" + this.state);\n if (this.state == \"ready\")\n {\n if (saved_header == undefined)\n {\n var msg = new SpiceMiniData(mb);\n\n if (msg.type > 500)\n {\n alert(\"Something has gone very wrong; we think we have message of type \" + msg.type);\n debugger;\n }\n\n if (msg.size == 0)\n {\n this.process_message(msg);\n this.wire_reader.request(SpiceMiniData.prototype.buffer_size());\n }\n else\n {\n this.wire_reader.request(msg.size);\n this.wire_reader.save_header(msg);\n }\n }\n else\n {\n saved_header.data = mb;\n this.process_message(saved_header);\n this.wire_reader.request(SpiceMiniData.prototype.buffer_size());\n this.wire_reader.save_header(undefined);\n }\n }\n\n else if (this.state == \"start\")\n {\n this.reply_hdr = new SpiceLinkHeader(mb);\n if (this.reply_hdr.magic != SPICE_MAGIC)\n {\n this.state = \"error\";\n var e = new Error('Error: magic mismatch: ' + this.reply_hdr.magic);\n this.report_error(e);\n }\n else\n {\n // FIXME - Determine major/minor version requirements\n this.wire_reader.request(this.reply_hdr.size);\n this.state = \"link\";\n }\n }\n\n else if (this.state == \"link\")\n {\n this.reply_link = new SpiceLinkReply(mb);\n // FIXME - Screen the caps - require minihdr at least, right?\n if (this.reply_link.error)\n {\n this.state = \"error\";\n var e = new Error('Error: reply link error ' + this.reply_link.error);\n this.report_error(e);\n }\n else\n {\n this.send_ticket(rsa_encrypt(this.reply_link.pub_key, this.password + String.fromCharCode(0)));\n this.state = \"ticket\";\n this.wire_reader.request(SpiceLinkAuthReply.prototype.buffer_size());\n }\n }\n\n else if (this.state == \"ticket\")\n {\n this.auth_reply = new SpiceLinkAuthReply(mb);\n if (this.auth_reply.auth_code == SPICE_LINK_ERR_OK)\n {\n DEBUG > 0 && console.log(this.type + ': Connected');\n\n if (this.type == SPICE_CHANNEL_DISPLAY)\n {\n // FIXME - pixmap and glz dictionary config info?\n var dinit = new SpiceMsgcDisplayInit();\n var reply = new SpiceMiniData();\n reply.build_msg(SPICE_MSGC_DISPLAY_INIT, dinit);\n DEBUG > 0 && console.log(\"Request display init\");\n this.send_msg(reply);\n }\n this.state = \"ready\";\n this.wire_reader.request(SpiceMiniData.prototype.buffer_size());\n if (this.timeout)\n {\n window.clearTimeout(this.timeout);\n delete this.timeout;\n }\n }\n else\n {\n this.state = \"error\";\n if (this.auth_reply.auth_code == SPICE_LINK_ERR_PERMISSION_DENIED)\n {\n var e = new Error(\"Permission denied.\");\n }\n else\n {\n var e = new Error(\"Unexpected link error \" + this.auth_reply.auth_code);\n }\n this.report_error(e);\n }\n }\n },\n\n process_common_messages : function(msg)\n {\n if (msg.type == SPICE_MSG_SET_ACK)\n {\n var ack = new SpiceMsgSetAck(msg.data);\n // FIXME - what to do with generation?\n this.ack_window = ack.window;\n DEBUG > 1 && console.log(this.type + \": set ack to \" + ack.window);\n this.msgs_until_ack = this.ack_window;\n var ackack = new SpiceMsgcAckSync(ack);\n var reply = new SpiceMiniData();\n reply.build_msg(SPICE_MSGC_ACK_SYNC, ackack);\n this.send_msg(reply);\n return true;\n }\n\n if (msg.type == SPICE_MSG_PING)\n {\n DEBUG > 1 && console.log(\"ping!\");\n var pong = new SpiceMiniData;\n pong.type = SPICE_MSGC_PONG;\n if (msg.data)\n {\n pong.data = msg.data.slice(0, 12);\n }\n pong.size = pong.buffer_size();\n this.send_msg(pong);\n return true;\n }\n\n if (msg.type == SPICE_MSG_NOTIFY)\n {\n // FIXME - Visibility + what\n var notify = new SpiceMsgNotify(msg.data);\n if (notify.severity == SPICE_NOTIFY_SEVERITY_ERROR)\n this.log_err(notify.message);\n else if (notify.severity == SPICE_NOTIFY_SEVERITY_WARN )\n this.log_warn(notify.message);\n else\n this.log_info(notify.message);\n return true;\n }\n\n return false;\n\n },\n\n process_message: function(msg)\n {\n var rc;\n DEBUG > 0 && console.log(\"<< hdr \" + this.channel_type() + \" type \" + msg.type + \" size \" + (msg.data && msg.data.byteLength));\n rc = this.process_common_messages(msg);\n if (! rc)\n {\n if (this.process_channel_message)\n {\n rc = this.process_channel_message(msg);\n if (! rc)\n this.log_warn(this.type + \": Unknown message type \" + msg.type + \"!\");\n }\n else\n this.log_err(this.type + \": No message handlers for this channel; message \" + msg.type);\n }\n\n if (this.msgs_until_ack !== undefined && this.ack_window)\n {\n this.msgs_until_ack--;\n if (this.msgs_until_ack <= 0)\n {\n this.msgs_until_ack = this.ack_window;\n var ack = new SpiceMiniData();\n ack.type = SPICE_MSGC_ACK;\n this.send_msg(ack);\n DEBUG > 1 && console.log(this.type + \": sent ack\");\n }\n }\n\n return rc;\n },\n\n channel_type: function()\n {\n if (this.type == SPICE_CHANNEL_MAIN)\n return \"main\";\n else if (this.type == SPICE_CHANNEL_DISPLAY)\n return \"display\";\n else if (this.type == SPICE_CHANNEL_INPUTS)\n return \"inputs\";\n else if (this.type == SPICE_CHANNEL_CURSOR)\n return \"cursor\";\n return \"unknown-\" + this.type;\n\n },\n\n log_info: function()\n {\n var msg = Array.prototype.join.call(arguments, \" \");\n console.log(msg);\n if (this.message_id)\n {\n var p = document.createElement(\"p\");\n p.appendChild(document.createTextNode(msg));\n p.className += \"spice-message-info\";\n document.getElementById(this.message_id).appendChild(p);\n }\n },\n\n log_warn: function()\n {\n var msg = Array.prototype.join.call(arguments, \" \");\n console.log(\"WARNING: \" + msg);\n if (this.message_id)\n {\n var p = document.createElement(\"p\");\n p.appendChild(document.createTextNode(msg));\n p.className += \"spice-message-warning\";\n document.getElementById(this.message_id).appendChild(p);\n }\n },\n\n log_err: function()\n {\n var msg = Array.prototype.join.call(arguments, \" \");\n console.log(\"ERROR: \" + msg);\n if (this.message_id)\n {\n var p = document.createElement(\"p\");\n p.appendChild(document.createTextNode(msg));\n p.className += \"spice-message-error\";\n document.getElementById(this.message_id).appendChild(p);\n }\n },\n\n known_unimplemented: function(type, msg)\n {\n if ( (!this.warnings[type]) || DEBUG > 1)\n {\n var str = \"\";\n if (DEBUG <= 1)\n str = \" [ further notices suppressed ]\";\n this.log_warn(\"Unimplemented function \" + type + \"(\" + msg + \")\" + str);\n this.warnings[type] = true;\n }\n },\n\n report_error: function(e)\n {\n this.log_err(e.toString());\n if (this.onerror != undefined)\n this.onerror(e);\n else\n throw(e);\n },\n\n report_success: function(m)\n {\n if (this.onsuccess != undefined)\n this.onsuccess(m);\n },\n\n cleanup: function()\n {\n if (this.timeout)\n {\n window.clearTimeout(this.timeout);\n delete this.timeout;\n }\n if (this.ws)\n {\n this.ws.close();\n this.ws = undefined;\n }\n },\n\n handle_timeout: function()\n {\n var e = new Error(\"Connection timed out.\");\n this.report_error(e);\n },\n}\n\nfunction spiceconn_timeout(sc)\n{\n SpiceConn.prototype.handle_timeout.call(sc);\n}\n;\ndefine(\"spice-spiceconn\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** SpiceArrayBufferSlice\n** This function is a work around for IE 10, which has no slice()\n** method in it's subclass.\n**--------------------------------------------------------------------------*/\nfunction SpiceArrayBufferSlice(start, end)\n{\n start = start || 0;\n end = end || this.byteLength;\n if (end < 0)\n end = this.byteLength + end;\n if (start < 0)\n start = this.byteLength + start;\n if (start < 0)\n start = 0;\n if (end < 0)\n end = 0;\n if (end > this.byteLength)\n end = this.byteLength;\n if (start > end)\n start = end;\n\n var ret = new ArrayBuffer(end - start);\n var in1 = new Uint8Array(this, start, end - start);\n var out = new Uint8Array(ret);\n var i;\n\n for (i = 0; i < end - start; i++)\n out[i] = in1[i];\n\n return ret;\n}\n\nif (! ArrayBuffer.prototype.slice)\n{\n ArrayBuffer.prototype.slice = SpiceArrayBufferSlice;\n console.log(\"WARNING: ArrayBuffer.slice() is missing; we are extending ArrayBuffer to compensate\");\n}\n;\ndefine(\"spice-spicearraybuffer\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** Utility settings and functions for Spice\n**--------------------------------------------------------------------------*/\nvar DEBUG = 0;\nvar DUMP_DRAWS = false;\nvar DUMP_CANVASES = false;\n\n\n/*----------------------------------------------------------------------------\n** combine_array_buffers\n** Combine two array buffers.\n** FIXME - this can't be optimal. See wire.js about eliminating the need.\n**--------------------------------------------------------------------------*/\nfunction combine_array_buffers(a1, a2)\n{\n var in1 = new Uint8Array(a1);\n var in2 = new Uint8Array(a2);\n var ret = new ArrayBuffer(a1.byteLength + a2.byteLength);\n var out = new Uint8Array(ret);\n var o = 0;\n var i;\n for (i = 0; i < in1.length; i++)\n out[o++] = in1[i];\n for (i = 0; i < in2.length; i++)\n out[o++] = in2[i];\n\n return ret;\n}\n\n/*----------------------------------------------------------------------------\n** hexdump_buffer\n**--------------------------------------------------------------------------*/\nfunction hexdump_buffer(a)\n{\n var mg = new Uint8Array(a);\n var hex = \"\";\n var str = \"\";\n var last_zeros = 0;\n for (var i = 0; i < mg.length; i++)\n {\n var h = Number(mg[i]).toString(16);\n if (h.length == 1)\n hex += \"0\";\n hex += h + \" \";\n\n if (mg[i] == 10 || mg[i] == 13 || mg[i] == 8)\n str += \".\";\n else\n str += String.fromCharCode(mg[i]);\n\n if ((i % 16 == 15) || (i == (mg.length - 1)))\n {\n while (i % 16 != 15)\n {\n hex += \" \";\n i++;\n }\n\n if (last_zeros == 0)\n console.log(hex + \" | \" + str);\n\n if (hex == \"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \")\n {\n if (last_zeros == 1)\n {\n console.log(\".\");\n last_zeros++;\n }\n else if (last_zeros == 0)\n last_zeros++;\n }\n else\n last_zeros = 0;\n\n hex = str = \"\";\n }\n }\n}\n\n/*----------------------------------------------------------------------------\n** Converting keycodes to AT scancodes is very hard.\n** luckly there are some resources on the web and in the Xorg driver that help\n** us figure out what browser depenend keycodes match to what scancodes.\n**\n** This will most likely not work for non US keyboard and browsers other than\n** modern Chrome and FireFox.\n**--------------------------------------------------------------------------*/\nvar common_scanmap = [];\ncommon_scanmap['Q'.charCodeAt(0)] = KEY_Q;\ncommon_scanmap['W'.charCodeAt(0)] = KEY_W;\ncommon_scanmap['E'.charCodeAt(0)] = KEY_E;\ncommon_scanmap['R'.charCodeAt(0)] = KEY_R;\ncommon_scanmap['T'.charCodeAt(0)] = KEY_T;\ncommon_scanmap['Y'.charCodeAt(0)] = KEY_Y;\ncommon_scanmap['U'.charCodeAt(0)] = KEY_U;\ncommon_scanmap['I'.charCodeAt(0)] = KEY_I;\ncommon_scanmap['O'.charCodeAt(0)] = KEY_O;\ncommon_scanmap['P'.charCodeAt(0)] = KEY_P;\ncommon_scanmap['A'.charCodeAt(0)] = KEY_A;\ncommon_scanmap['S'.charCodeAt(0)] = KEY_S;\ncommon_scanmap['D'.charCodeAt(0)] = KEY_D;\ncommon_scanmap['F'.charCodeAt(0)] = KEY_F;\ncommon_scanmap['G'.charCodeAt(0)] = KEY_G;\ncommon_scanmap['H'.charCodeAt(0)] = KEY_H;\ncommon_scanmap['J'.charCodeAt(0)] = KEY_J;\ncommon_scanmap['K'.charCodeAt(0)] = KEY_K;\ncommon_scanmap['L'.charCodeAt(0)] = KEY_L;\ncommon_scanmap['Z'.charCodeAt(0)] = KEY_Z;\ncommon_scanmap['X'.charCodeAt(0)] = KEY_X;\ncommon_scanmap['C'.charCodeAt(0)] = KEY_C;\ncommon_scanmap['V'.charCodeAt(0)] = KEY_V;\ncommon_scanmap['B'.charCodeAt(0)] = KEY_B;\ncommon_scanmap['N'.charCodeAt(0)] = KEY_N;\ncommon_scanmap['M'.charCodeAt(0)] = KEY_M;\ncommon_scanmap[' '.charCodeAt(0)] = KEY_Space;\ncommon_scanmap[13] = KEY_Enter;\ncommon_scanmap[27] = KEY_Escape;\ncommon_scanmap[8] = KEY_BackSpace;\ncommon_scanmap[9] = KEY_Tab;\ncommon_scanmap[16] = KEY_ShiftL;\ncommon_scanmap[17] = KEY_LCtrl;\ncommon_scanmap[18] = KEY_Alt;\ncommon_scanmap[20] = KEY_CapsLock;\ncommon_scanmap[144] = KEY_NumLock;\ncommon_scanmap[112] = KEY_F1;\ncommon_scanmap[113] = KEY_F2;\ncommon_scanmap[114] = KEY_F3;\ncommon_scanmap[115] = KEY_F4;\ncommon_scanmap[116] = KEY_F5;\ncommon_scanmap[117] = KEY_F6;\ncommon_scanmap[118] = KEY_F7;\ncommon_scanmap[119] = KEY_F8;\ncommon_scanmap[120] = KEY_F9;\ncommon_scanmap[121] = KEY_F10;\ncommon_scanmap[122] = KEY_F11;\ncommon_scanmap[123] = KEY_F12;\n\n/* These externded scancodes do not line up with values from atKeynames */\ncommon_scanmap[42] = 99;\ncommon_scanmap[19] = 101; // Break\ncommon_scanmap[111] = 0xE035; // KP_Divide\ncommon_scanmap[106] = 0xE037; // KP_Multiply\ncommon_scanmap[36] = 0xE047; // Home\ncommon_scanmap[38] = 0xE048; // Up\ncommon_scanmap[33] = 0xE049; // PgUp\ncommon_scanmap[37] = 0xE04B; // Left\ncommon_scanmap[39] = 0xE04D; // Right\ncommon_scanmap[35] = 0xE04F; // End\ncommon_scanmap[40] = 0xE050; // Down\ncommon_scanmap[34] = 0xE051; // PgDown\ncommon_scanmap[45] = 0xE052; // Insert\ncommon_scanmap[46] = 0xE053; // Delete\ncommon_scanmap[44] = 0x2A37; // Print\n\n/* These are not common between ALL browsers but are between Firefox and DOM3 */\ncommon_scanmap['1'.charCodeAt(0)] = KEY_1;\ncommon_scanmap['2'.charCodeAt(0)] = KEY_2;\ncommon_scanmap['3'.charCodeAt(0)] = KEY_3;\ncommon_scanmap['4'.charCodeAt(0)] = KEY_4;\ncommon_scanmap['5'.charCodeAt(0)] = KEY_5;\ncommon_scanmap['6'.charCodeAt(0)] = KEY_6;\ncommon_scanmap['7'.charCodeAt(0)] = KEY_7;\ncommon_scanmap['8'.charCodeAt(0)] = KEY_8;\ncommon_scanmap['9'.charCodeAt(0)] = KEY_9;\ncommon_scanmap['0'.charCodeAt(0)] = KEY_0;\ncommon_scanmap[145] = KEY_ScrollLock;\ncommon_scanmap[103] = KEY_KP_7;\ncommon_scanmap[104] = KEY_KP_8;\ncommon_scanmap[105] = KEY_KP_9;\ncommon_scanmap[100] = KEY_KP_4;\ncommon_scanmap[101] = KEY_KP_5;\ncommon_scanmap[102] = KEY_KP_6;\ncommon_scanmap[107] = KEY_KP_Plus;\ncommon_scanmap[97] = KEY_KP_1;\ncommon_scanmap[98] = KEY_KP_2;\ncommon_scanmap[99] = KEY_KP_3;\ncommon_scanmap[96] = KEY_KP_0;\ncommon_scanmap[110] = KEY_KP_Decimal;\ncommon_scanmap[191] = KEY_Slash;\ncommon_scanmap[190] = KEY_Period;\ncommon_scanmap[188] = KEY_Comma;\ncommon_scanmap[220] = KEY_BSlash;\ncommon_scanmap[192] = KEY_Tilde;\ncommon_scanmap[222] = KEY_Quote;\ncommon_scanmap[219] = KEY_LBrace;\ncommon_scanmap[221] = KEY_RBrace;\n\ncommon_scanmap[91] = 0xE05B; //KEY_LMeta\ncommon_scanmap[92] = 0xE05C; //KEY_RMeta\ncommon_scanmap[93] = 0xE05D; //KEY_Menu\n\n/* Firefox/Mozilla codes */\nvar firefox_scanmap = [];\nfirefox_scanmap[173] = KEY_Minus;\nfirefox_scanmap[109] = KEY_Minus;\nfirefox_scanmap[61] = KEY_Equal;\nfirefox_scanmap[59] = KEY_SemiColon;\n\n/* DOM3 codes */\nvar DOM_scanmap = [];\nDOM_scanmap[189] = KEY_Minus;\nDOM_scanmap[187] = KEY_Equal;\nDOM_scanmap[186] = KEY_SemiColon;\n\nfunction get_scancode(code)\n{\n if (common_scanmap[code] === undefined)\n {\n if (navigator.userAgent.indexOf(\"Firefox\") != -1)\n return firefox_scanmap[code];\n else\n return DOM_scanmap[code];\n }\n else\n return common_scanmap[code];\n}\n\nfunction keycode_to_start_scan(code)\n{\n var scancode = get_scancode(code);\n if (scancode === undefined)\n {\n alert('no map for ' + code);\n return 0;\n }\n\n if (scancode < 0x100) {\n return scancode;\n } else {\n return 0xe0 | ((scancode - 0x100) << 8);\n }\n}\n\nfunction keycode_to_end_scan(code)\n{\n var scancode = get_scancode(code);\n if (scancode === undefined)\n return 0;\n\n if (scancode < 0x100) {\n return scancode | 0x80;\n } else {\n return 0x80e0 | ((scancode - 0x100) << 8);\n }\n}\n;\ndefine(\"spice-utils\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** crc logic from rfc2083 ported to Javascript\n**--------------------------------------------------------------------------*/\n\nvar rfc2083_crc_table = Array(256);\nvar rfc2083_crc_table_computed = 0;\n/* Make the table for a fast CRC. */\nfunction rfc2083_make_crc_table()\n{\n var c;\n var n, k;\n for (n = 0; n < 256; n++)\n {\n c = n;\n for (k = 0; k < 8; k++)\n {\n if (c & 1)\n c = ((0xedb88320 ^ (c >>> 1)) >>> 0) & 0xffffffff;\n else\n c = c >>> 1;\n }\n rfc2083_crc_table[n] = c;\n }\n\n rfc2083_crc_table_computed = 1;\n}\n\n/* Update a running CRC with the bytes buf[0..len-1]--the CRC\n should be initialized to all 1's, and the transmitted value\n is the 1's complement of the final running CRC (see the\n crc() routine below)). */\n\nfunction rfc2083_update_crc(crc, u8buf, at, len)\n{\n var c = crc;\n var n;\n\n if (!rfc2083_crc_table_computed)\n rfc2083_make_crc_table();\n\n for (n = 0; n < len; n++)\n {\n c = rfc2083_crc_table[(c ^ u8buf[at + n]) & 0xff] ^ (c >>> 8);\n }\n\n return c;\n}\n\nfunction rfc2083_crc(u8buf, at, len)\n{\n return rfc2083_update_crc(0xffffffff, u8buf, at, len) ^ 0xffffffff;\n}\n\nfunction crc32(mb, at, len)\n{\n var u8 = new Uint8Array(mb);\n return rfc2083_crc(u8, at, len);\n}\n\nfunction PngIHDR(width, height)\n{\n this.width = width;\n this.height = height;\n this.depth = 8;\n this.type = 6;\n this.compression = 0;\n this.filter = 0;\n this.interlace = 0;\n}\n\nPngIHDR.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var orig = at;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.buffer_size() - 12); at += 4;\n dv.setUint8(at, 'I'.charCodeAt(0)); at++;\n dv.setUint8(at, 'H'.charCodeAt(0)); at++;\n dv.setUint8(at, 'D'.charCodeAt(0)); at++;\n dv.setUint8(at, 'R'.charCodeAt(0)); at++;\n dv.setUint32(at, this.width); at += 4;\n dv.setUint32(at, this.height); at += 4;\n dv.setUint8(at, this.depth); at++;\n dv.setUint8(at, this.type); at++;\n dv.setUint8(at, this.compression); at++;\n dv.setUint8(at, this.filter); at++;\n dv.setUint8(at, this.interlace); at++;\n dv.setUint32(at, crc32(a, orig + 4, this.buffer_size() - 8)); at += 4;\n return at;\n },\n buffer_size: function()\n {\n return 12 + 13;\n }\n}\n\n\nfunction adler()\n{\n this.s1 = 1;\n this.s2 = 0;\n}\n\nadler.prototype.update = function(b)\n{\n this.s1 += b;\n this.s1 %= 65521;\n this.s2 += this.s1;\n this.s2 %= 65521;\n}\n\nfunction PngIDAT(width, height, bytes)\n{\n if (bytes.byteLength > 65535)\n {\n throw new Error(\"Cannot handle more than 64K\");\n }\n this.data = bytes;\n this.width = width;\n this.height = height;\n}\n\nPngIDAT.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var orig = at;\n var x, y, i, j;\n var dv = new SpiceDataView(a);\n var zsum = new adler();\n dv.setUint32(at, this.buffer_size() - 12); at += 4;\n dv.setUint8(at, 'I'.charCodeAt(0)); at++;\n dv.setUint8(at, 'D'.charCodeAt(0)); at++;\n dv.setUint8(at, 'A'.charCodeAt(0)); at++;\n dv.setUint8(at, 'T'.charCodeAt(0)); at++;\n\n /* zlib header. */\n dv.setUint8(at, 0x78); at++;\n dv.setUint8(at, 0x01); at++;\n\n /* Deflate header. Specifies uncompressed, final bit */\n dv.setUint8(at, 0x80); at++;\n dv.setUint16(at, this.data.byteLength + this.height); at += 2;\n dv.setUint16(at, ~(this.data.byteLength + this.height)); at += 2;\n var u8 = new Uint8Array(this.data);\n for (i = 0, y = 0; y < this.height; y++)\n {\n /* Filter type 0 - uncompressed */\n dv.setUint8(at, 0); at++;\n zsum.update(0);\n for (x = 0; x < this.width && i < this.data.byteLength; x++)\n {\n zsum.update(u8[i]);\n dv.setUint8(at, u8[i++]); at++;\n zsum.update(u8[i]);\n dv.setUint8(at, u8[i++]); at++;\n zsum.update(u8[i]);\n dv.setUint8(at, u8[i++]); at++;\n zsum.update(u8[i]);\n dv.setUint8(at, u8[i++]); at++;\n }\n }\n\n /* zlib checksum. */\n dv.setUint16(at, zsum.s2); at+=2;\n dv.setUint16(at, zsum.s1); at+=2;\n\n /* FIXME - something is not quite right with the zlib code;\n you get an error from libpng if you open the image in\n gimp. But it works, so it's good enough for now... */\n\n dv.setUint32(at, crc32(a, orig + 4, this.buffer_size() - 8)); at += 4;\n return at;\n },\n buffer_size: function()\n {\n return 12 + this.data.byteLength + this.height + 4 + 2 + 1 + 2 + 2;\n }\n}\n\n\nfunction PngIEND()\n{\n}\n\nPngIEND.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var orig = at;\n var i;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.buffer_size() - 12); at += 4;\n dv.setUint8(at, 'I'.charCodeAt(0)); at++;\n dv.setUint8(at, 'E'.charCodeAt(0)); at++;\n dv.setUint8(at, 'N'.charCodeAt(0)); at++;\n dv.setUint8(at, 'D'.charCodeAt(0)); at++;\n dv.setUint32(at, crc32(a, orig + 4, this.buffer_size() - 8)); at += 4;\n return at;\n },\n buffer_size: function()\n {\n return 12;\n }\n}\n\n\nfunction create_rgba_png(width, height, bytes)\n{\n var i;\n var ihdr = new PngIHDR(width, height);\n var idat = new PngIDAT(width, height, bytes);\n var iend = new PngIEND;\n\n var mb = new ArrayBuffer(ihdr.buffer_size() + idat.buffer_size() + iend.buffer_size());\n var at = ihdr.to_buffer(mb);\n at = idat.to_buffer(mb, at);\n at = iend.to_buffer(mb, at);\n\n var u8 = new Uint8Array(mb);\n var str = \"\";\n for (i = 0; i < at; i++)\n {\n str += \"%\";\n if (u8[i] < 16)\n str += \"0\";\n str += u8[i].toString(16);\n }\n\n\n return \"%89PNG%0D%0A%1A%0A\" + str;\n}\n;\ndefine(\"spice-png\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n\n/*----------------------------------------------------------------------------\n** lz.js\n** Functions for handling SPICE_IMAGE_TYPE_LZ_RGB\n** Adapted from lz.c .\n**--------------------------------------------------------------------------*/\nfunction lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)\n{\n var encoder = at;\n var op = 0;\n var ctrl;\n var ctr = 0;\n\n for (ctrl = in_buf[encoder++]; (op * 4) < out_buf.length; ctrl = in_buf[encoder++])\n {\n var ref = op;\n var len = ctrl >> 5;\n var ofs = (ctrl & 31) << 8;\n\n//if (type == LZ_IMAGE_TYPE_RGBA)\n//console.log(ctr++ + \": from \" + (encoder + 28) + \", ctrl \" + ctrl + \", len \" + len + \", ofs \" + ofs + \", op \" + op);\n if (ctrl >= 32) {\n\n var code;\n len--;\n\n if (len == 7 - 1) {\n do {\n code = in_buf[encoder++];\n len += code;\n } while (code == 255);\n }\n code = in_buf[encoder++];\n ofs += code;\n\n\n if (code == 255) {\n if ((ofs - code) == (31 << 8)) {\n ofs = in_buf[encoder++] << 8;\n ofs += in_buf[encoder++];\n ofs += 8191;\n }\n }\n len += 1;\n if (type == LZ_IMAGE_TYPE_RGBA)\n len += 2;\n\n ofs += 1;\n\n ref -= ofs;\n if (ref == (op - 1)) {\n var b = ref;\n//if (type == LZ_IMAGE_TYPE_RGBA) console.log(\"alpha \" + out_buf[(b*4)+3] + \" dupped into pixel \" + op + \" through pixel \" + (op + len));\n for (; len; --len) {\n if (type == LZ_IMAGE_TYPE_RGBA)\n {\n out_buf[(op*4) + 3] = out_buf[(b*4)+3];\n }\n else\n {\n for (i = 0; i < 4; i++)\n out_buf[(op*4) + i] = out_buf[(b*4)+i];\n }\n op++;\n }\n } else {\n//if (type == LZ_IMAGE_TYPE_RGBA) console.log(\"alpha copied to pixel \" + op + \" through \" + (op + len) + \" from \" + ref);\n for (; len; --len) {\n if (type == LZ_IMAGE_TYPE_RGBA)\n {\n out_buf[(op*4) + 3] = out_buf[(ref*4)+3];\n }\n else\n {\n for (i = 0; i < 4; i++)\n out_buf[(op*4) + i] = out_buf[(ref*4)+i];\n }\n op++; ref++;\n }\n }\n } else {\n ctrl++;\n\n if (type == LZ_IMAGE_TYPE_RGBA)\n {\n//console.log(\"alpha \" + in_buf[encoder] + \" set into pixel \" + op);\n out_buf[(op*4) + 3] = in_buf[encoder++];\n }\n else\n {\n out_buf[(op*4) + 0] = in_buf[encoder + 2];\n out_buf[(op*4) + 1] = in_buf[encoder + 1];\n out_buf[(op*4) + 2] = in_buf[encoder + 0];\n if (default_alpha)\n out_buf[(op*4) + 3] = 255;\n encoder += 3;\n }\n op++;\n\n\n for (--ctrl; ctrl; ctrl--) {\n if (type == LZ_IMAGE_TYPE_RGBA)\n {\n//console.log(\"alpha \" + in_buf[encoder] + \" set into pixel \" + op);\n out_buf[(op*4) + 3] = in_buf[encoder++];\n }\n else\n {\n out_buf[(op*4) + 0] = in_buf[encoder + 2];\n out_buf[(op*4) + 1] = in_buf[encoder + 1];\n out_buf[(op*4) + 2] = in_buf[encoder + 0];\n if (default_alpha)\n out_buf[(op*4) + 3] = 255;\n encoder += 3;\n }\n op++;\n }\n }\n\n }\n return encoder - 1;\n}\n\nfunction convert_spice_lz_to_web(context, lz_image)\n{\n var at;\n if (lz_image.type === LZ_IMAGE_TYPE_RGB32 || lz_image.type === LZ_IMAGE_TYPE_RGBA)\n {\n var u8 = new Uint8Array(lz_image.data);\n var ret = context.createImageData(lz_image.width, lz_image.height);\n\n at = lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGB32, lz_image.type != LZ_IMAGE_TYPE_RGBA);\n if (lz_image.type == LZ_IMAGE_TYPE_RGBA)\n lz_rgb32_decompress(u8, at, ret.data, LZ_IMAGE_TYPE_RGBA, false);\n }\n else if (lz_image.type === LZ_IMAGE_TYPE_XXXA)\n {\n var u8 = new Uint8Array(lz_image.data);\n var ret = context.createImageData(lz_image.width, lz_image.height);\n lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGBA, false);\n }\n else\n return undefined;\n\n return ret;\n}\n;\ndefine(\"spice-lz\", function(){});\n\n","/*\"use strict\";*/\n/* use strict is commented out because it results in a 5x slowdone in chrome */\n/*\n * Copyright (C) 2012 by Jeremy P. White \n * Copyright (C) 2012 by Aric Stewart \n *\n * This file is part of spice-html5.\n *\n * spice-html5 is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * spice-html5 is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with spice-html5. If not, see .\n */\n\nvar encoder;\n\nvar QUIC_IMAGE_TYPE_INVALID = 0;\nvar QUIC_IMAGE_TYPE_GRAY = 1;\nvar QUIC_IMAGE_TYPE_RGB16 = 2;\nvar QUIC_IMAGE_TYPE_RGB24 = 3;\nvar QUIC_IMAGE_TYPE_RGB32 = 4;\nvar QUIC_IMAGE_TYPE_RGBA = 5;\nvar DEFevol = 3;\nvar DEFwmimax = 6;\nvar DEFwminext = 2048;\nvar need_init = true;\nvar DEFmaxclen = 26;\nvar evol = DEFevol;\nvar wmimax = DEFwmimax;\nvar wminext = DEFwminext;\nvar family_5bpc = { nGRcodewords:[0,0,0,0,0,0,0,0],\n notGRcwlen:[0,0,0,0,0,0,0,0],\n notGRprefixmask:[0,0,0,0,0,0,0,0],\n notGRsuffixlen:[0,0,0,0,0,0,0,0],\n xlatU2L:[0,0,0,0,0,0,0,0],\n xlatL2U:[0,0,0,0,0,0,0,0]\n };\nvar family_8bpc = { nGRcodewords:[0,0,0,0,0,0,0,0],\n notGRcwlen:[0,0,0,0,0,0,0,0],\n notGRprefixmask:[0,0,0,0,0,0,0,0],\n notGRsuffixlen:[0,0,0,0,0,0,0,0],\n xlatU2L:[0,0,0,0,0,0,0,0],\n xlatL2U:[0,0,0,0,0,0,0,0]\n };\nvar bppmask = [ 0x00000000,\n 0x00000001, 0x00000003, 0x00000007, 0x0000000f,\n 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff,\n 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff,\n 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff,\n 0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff,\n 0x001fffff, 0x003fffff, 0x007fffff, 0x00ffffff,\n 0x01ffffff, 0x03ffffff, 0x07ffffff, 0x0fffffff,\n 0x1fffffff, 0x3fffffff, 0x7fffffff, 0xffffffff];\n\nvar zeroLUT = [];\n\nvar besttrigtab = [\n [ 550, 900, 800, 700, 500, 350, 300, 200, 180, 180, 160],\n [ 110, 550, 900, 800, 550, 400, 350, 250, 140, 160, 140],\n [ 100, 120, 550, 900, 700, 500, 400, 300, 220, 250, 160]];\n\nvar J = [ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 9, 10, 11, 12, 13, 14, 15];\n\nvar lzeroes = [\n 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0];\n\nvar tabrand_chaos = [\n 0x02c57542, 0x35427717, 0x2f5a2153, 0x9244f155, 0x7bd26d07, 0x354c6052,\n 0x57329b28, 0x2993868e, 0x6cd8808c, 0x147b46e0, 0x99db66af, 0xe32b4cac,\n 0x1b671264, 0x9d433486, 0x62a4c192, 0x06089a4b, 0x9e3dce44, 0xdaabee13,\n 0x222425ea, 0xa46f331d, 0xcd589250, 0x8bb81d7f, 0xc8b736b9, 0x35948d33,\n 0xd7ac7fd0, 0x5fbe2803, 0x2cfbc105, 0x013dbc4e, 0x7a37820f, 0x39f88e9e,\n 0xedd58794, 0xc5076689, 0xfcada5a4, 0x64c2f46d, 0xb3ba3243, 0x8974b4f9,\n 0x5a05aebd, 0x20afcd00, 0x39e2b008, 0x88a18a45, 0x600bde29, 0xf3971ace,\n 0xf37b0a6b, 0x7041495b, 0x70b707ab, 0x06beffbb, 0x4206051f, 0xe13c4ee3,\n 0xc1a78327, 0x91aa067c, 0x8295f72a, 0x732917a6, 0x1d871b4d, 0x4048f136,\n 0xf1840e7e, 0x6a6048c1, 0x696cb71a, 0x7ff501c3, 0x0fc6310b, 0x57e0f83d,\n 0x8cc26e74, 0x11a525a2, 0x946934c7, 0x7cd888f0, 0x8f9d8604, 0x4f86e73b,\n 0x04520316, 0xdeeea20c, 0xf1def496, 0x67687288, 0xf540c5b2, 0x22401484,\n 0x3478658a, 0xc2385746, 0x01979c2c, 0x5dad73c8, 0x0321f58b, 0xf0fedbee,\n 0x92826ddf, 0x284bec73, 0x5b1a1975, 0x03df1e11, 0x20963e01, 0xa17cf12b,\n 0x740d776e, 0xa7a6bf3c, 0x01b5cce4, 0x1118aa76, 0xfc6fac0a, 0xce927e9b,\n 0x00bf2567, 0x806f216c, 0xbca69056, 0x795bd3e9, 0xc9dc4557, 0x8929b6c2,\n 0x789d52ec, 0x3f3fbf40, 0xb9197368, 0xa38c15b5, 0xc3b44fa8, 0xca8333b0,\n 0xb7e8d590, 0xbe807feb, 0xbf5f8360, 0xd99e2f5c, 0x372928e1, 0x7c757c4c,\n 0x0db5b154, 0xc01ede02, 0x1fc86e78, 0x1f3985be, 0xb4805c77, 0x00c880fa,\n 0x974c1b12, 0x35ab0214, 0xb2dc840d, 0x5b00ae37, 0xd313b026, 0xb260969d,\n 0x7f4c8879, 0x1734c4d3, 0x49068631, 0xb9f6a021, 0x6b863e6f, 0xcee5debf,\n 0x29f8c9fb, 0x53dd6880, 0x72b61223, 0x1f67a9fd, 0x0a0f6993, 0x13e59119,\n 0x11cca12e, 0xfe6b6766, 0x16b6effc, 0x97918fc4, 0xc2b8a563, 0x94f2f741,\n 0x0bfa8c9a, 0xd1537ae8, 0xc1da349c, 0x873c60ca, 0x95005b85, 0x9b5c080e,\n 0xbc8abbd9, 0xe1eab1d2, 0x6dac9070, 0x4ea9ebf1, 0xe0cf30d4, 0x1ef5bd7b,\n 0xd161043e, 0x5d2fa2e2, 0xff5d3cae, 0x86ed9f87, 0x2aa1daa1, 0xbd731a34,\n 0x9e8f4b22, 0xb1c2c67a, 0xc21758c9, 0xa182215d, 0xccb01948, 0x8d168df7,\n 0x04238cfe, 0x368c3dbc, 0x0aeadca5, 0xbad21c24, 0x0a71fee5, 0x9fc5d872,\n 0x54c152c6, 0xfc329483, 0x6783384a, 0xeddb3e1c, 0x65f90e30, 0x884ad098,\n 0xce81675a, 0x4b372f7d, 0x68bf9a39, 0x43445f1e, 0x40f8d8cb, 0x90d5acb6,\n 0x4cd07282, 0x349eeb06, 0x0c9d5332, 0x520b24ef, 0x80020447, 0x67976491,\n 0x2f931ca3, 0xfe9b0535, 0xfcd30220, 0x61a9e6cc, 0xa487d8d7, 0x3f7c5dd1,\n 0x7d0127c5, 0x48f51d15, 0x60dea871, 0xc9a91cb7, 0x58b53bb3, 0x9d5e0b2d,\n 0x624a78b4, 0x30dbee1b, 0x9bdf22e7, 0x1df5c299, 0x2d5643a7, 0xf4dd35ff,\n 0x03ca8fd6, 0x53b47ed8, 0x6f2c19aa, 0xfeb0c1f4, 0x49e54438, 0x2f2577e6,\n 0xbf876969, 0x72440ea9, 0xfa0bafb8, 0x74f5b3a0, 0x7dd357cd, 0x89ce1358,\n 0x6ef2cdda, 0x1e7767f3, 0xa6be9fdb, 0x4f5f88f8, 0xba994a3a, 0x08ca6b65,\n 0xe0893818, 0x9e00a16a, 0xf42bfc8f, 0x9972eedc, 0x749c8b51, 0x32c05f5e,\n 0xd706805f, 0x6bfbb7cf, 0xd9210a10, 0x31a1db97, 0x923a9559, 0x37a7a1f6,\n 0x059f8861, 0xca493e62, 0x65157e81, 0x8f6467dd, 0xab85ff9f, 0x9331aff2,\n 0x8616b9f5, 0xedbd5695, 0xee7e29b1, 0x313ac44f, 0xb903112f, 0x432ef649,\n 0xdc0a36c0, 0x61cf2bba, 0x81474925, 0xa8b6c7ad, 0xee5931de, 0xb2f8158d,\n 0x59fb7409, 0x2e3dfaed, 0x9af25a3f, 0xe1fed4d5 ];\n\nvar rgb32_pixel_pad = 3;\nvar rgb32_pixel_r = 2;\nvar rgb32_pixel_g = 1;\nvar rgb32_pixel_b = 0;\nvar rgb32_pixel_size = 4;\n\n/* Helper Functions */\n\nfunction ceil_log_2(val)\n{\n if (val === 1)\n return 0;\n\n var result = 1;\n val -= 1;\n while (val = val >>> 1)\n result++;\n\n return result;\n}\n\nfunction family_init(family, bpc, limit)\n{\n var l;\n for (l = 0; l < bpc; l++)\n {\n var altprefixlen, altcodewords;\n altprefixlen = limit - bpc;\n if (altprefixlen > bppmask[bpc - l])\n altprefixlen = bppmask[bpc - l];\n\n altcodewords = bppmask[bpc] + 1 - (altprefixlen << l);\n family.nGRcodewords[l] = (altprefixlen << l);\n family.notGRcwlen[l] = altprefixlen + ceil_log_2(altcodewords);\n family.notGRprefixmask[l] = bppmask[32 - altprefixlen]>>>0;\n family.notGRsuffixlen[l] = ceil_log_2(altcodewords);\n }\n\n /* decorelate_init */\n var pixelbitmask = bppmask[bpc];\n var pixelbitmaskshr = pixelbitmask >>> 1;\n var s;\n for (s = 0; s <= pixelbitmask; s++) {\n if (s <= pixelbitmaskshr) {\n family.xlatU2L[s] = s << 1;\n } else {\n family.xlatU2L[s] = ((pixelbitmask - s) << 1) + 1;\n }\n }\n\n /* corelate_init */\n for (s = 0; s <= pixelbitmask; s++) {\n if (s & 0x01) {\n family.xlatL2U[s] = pixelbitmask - (s >>> 1);\n } else {\n family.xlatL2U[s] = (s >>> 1);\n }\n }\n}\n\nfunction quic_image_bpc(type)\n{\n switch (type) {\n case QUIC_IMAGE_TYPE_GRAY:\n return 8;\n case QUIC_IMAGE_TYPE_RGB16:\n return 5;\n case QUIC_IMAGE_TYPE_RGB24:\n return 8;\n case QUIC_IMAGE_TYPE_RGB32:\n return 8;\n case QUIC_IMAGE_TYPE_RGBA:\n return 8;\n case QUIC_IMAGE_TYPE_INVALID:\n default:\n console.log(\"quic: bad image type\\n\");\n return 0;\n }\n}\n\nfunction cnt_l_zeroes(bits)\n{\n if (bits & 0xff800000) {\n return lzeroes[bits >>> 24];\n } else if (bits & 0xffff8000) {\n return 8 + lzeroes[(bits >>> 16) & 0x000000ff];\n } else if (bits & 0xffffff80) {\n return 16 + lzeroes[(bits >>> 8) & 0x000000ff];\n } else {\n return 24 + lzeroes[bits & 0x000000ff];\n }\n}\n\nfunction golomb_decoding_8bpc(l, bits)\n{\n var rc;\n var cwlen;\n\n if (bits < 0 || bits > family_8bpc.notGRprefixmask[l])\n {\n var zeroprefix = cnt_l_zeroes(bits);\n cwlen = zeroprefix + 1 + l;\n rc = (zeroprefix << l) | (bits >> (32-cwlen)) & bppmask[l];\n }\n else\n {\n cwlen = family_8bpc.notGRcwlen[l];\n rc = family_8bpc.nGRcodewords[l] + ((bits >> (32-cwlen)) & bppmask[family_8bpc.notGRsuffixlen[l]]);\n }\n return {'codewordlen':cwlen, 'rc':rc};\n}\n\nfunction golomb_code_len_8bpc(n, l)\n{\n if (n < family_8bpc.nGRcodewords[l]) {\n return (n >>> l) + 1 + l;\n } else {\n return family_8bpc.notGRcwlen[l];\n }\n}\n\nfunction QuicModel(bpc)\n{\n var bstart;\n var bend = 0;\n\n this.levels = 0x1 << bpc;\n this.n_buckets_ptrs = 0;\n\n switch (evol) {\n case 1:\n this.repfirst = 3;\n this.firstsize = 1;\n this.repnext = 2;\n this.mulsize = 2;\n break;\n case 3:\n this.repfirst = 1;\n this.firstsize = 1;\n this.repnext = 1;\n this.mulsize = 2;\n break;\n case 5:\n this.repfirst = 1;\n this.firstsize = 1;\n this.repnext = 1;\n this.mulsize = 4;\n break;\n case 0:\n case 2:\n case 4:\n console.log(\"quic: findmodelparams(): evol value obsolete!!!\\n\");\n default:\n console.log(\"quic: findmodelparams(): evol out of range!!!\\n\");\n }\n\n this.n_buckets = 0;\n var repcntr = this.repfirst + 1;\n var bsize = this.firstsize;\n\n do {\n if (this.n_buckets) {\n bstart = bend + 1;\n } else {\n bstart = 0;\n }\n\n if (!--repcntr) {\n repcntr = this.repnext;\n bsize *= this.mulsize;\n }\n\n bend = bstart + bsize - 1;\n if (bend + bsize >= this.levels) {\n bend = this.levels - 1;\n }\n\n if (!this.n_buckets_ptrs) {\n this.n_buckets_ptrs = this.levels;\n }\n\n (this.n_buckets)++;\n } while (bend < this.levels - 1);\n}\n\nQuicModel.prototype = {\n n_buckets : 0,\n n_buckets_ptrs : 0,\n repfirst : 0,\n firstsize : 0,\n repnext : 0,\n mulsize : 0,\n levels :0\n}\n\nfunction QuicBucket()\n{\n this.counters = [0,0,0,0,0,0,0,0];\n}\n\nQuicBucket.prototype = {\n bestcode: 0,\n\n reste : function (bpp)\n {\n this.bestcode = bpp;\n this.counters = [0,0,0,0,0,0,0,0];\n },\n\n update_model_8bpc : function (state, curval, bpp)\n {\n var i;\n\n var bestcode = bpp - 1;\n var bestcodelen = (this.counters[bestcode] += golomb_code_len_8bpc(curval, bestcode));\n\n for (i = bpp - 2; i >= 0; i--) {\n var ithcodelen = (this.counters[i] += golomb_code_len_8bpc(curval, i));\n\n if (ithcodelen < bestcodelen) {\n bestcode = i;\n bestcodelen = ithcodelen;\n }\n }\n\n this.bestcode = bestcode;\n\n if (bestcodelen > state.wm_trigger) {\n for (i = 0; i < bpp; i++) {\n this.counters[i] = this.counters[i] >>> 1;\n }\n }\n }\n}\n\nfunction QuicFamilyStat()\n{\n this.buckets_ptrs = [];\n this.buckets_buf = [];\n}\n\nQuicFamilyStat.prototype = {\n\n fill_model_structures : function(model)\n {\n var bstart;\n var bend = 0;\n var bnumber = 0;\n\n var repcntr = model.repfirst + 1;\n var bsize = model.firstsize;\n\n do {\n if (bnumber) {\n bstart = bend + 1;\n } else {\n bstart = 0;\n }\n\n if (!--repcntr) {\n repcntr = model.repnext;\n bsize *= model.mulsize;\n }\n\n bend = bstart + bsize - 1;\n if (bend + bsize >= model.levels) {\n bend = model.levels - 1;\n }\n\n this.buckets_buf[bnumber] = new QuicBucket;\n\n var i;\n for (i = bstart; i <= bend; i++) {\n this.buckets_ptrs[i] = this.buckets_buf[bnumber];\n }\n\n bnumber++;\n } while (bend < model.levels - 1);\n return true;\n }\n}\n\nfunction QuicChannel(model_8bpc, model_5bpc)\n{\n this.state = new CommonState;\n this.family_stat_8bpc = new QuicFamilyStat;\n this.family_stat_5bpc = new QuicFamilyStat;\n this.correlate_row = { zero: 0 , row:[] };\n this.model_8bpc = model_8bpc;\n this.model_5bpc = model_5bpc;\n this.buckets_ptrs = [];\n\n if (!this.family_stat_8bpc.fill_model_structures(this.model_8bpc))\n return undefined;\n\n if (!this.family_stat_5bpc.fill_model_structures(this.model_5bpc))\n return undefined;\n}\n\nQuicChannel.prototype = {\n\n reste : function (bpc)\n {\n var j;\n this.correlate_row = { zero: 0 , row: []};\n\n if (bpc == 8) {\n for (j = 0; j < this.model_8bpc.n_buckets; j++)\n this.family_stat_8bpc.buckets_buf[j].reste(7);\n this.buckets_ptrs = this.family_stat_8bpc.buckets_ptrs;\n } else if (bpc == 5) {\n for (j = 0; j < this.model_5bpc.n_buckets; j++)\n this.family_stat_8bpc.buckets_buf[j].reste(4);\n this.buckets_ptrs = this.family_stat_5bpc.buckets_ptrs;\n } else {\n console.log(\"quic: %s: bad bpc %d\\n\", __FUNCTION__, bpc);\n return false;\n }\n\n this.state.reste();\n return true;\n }\n}\n\nfunction CommonState()\n{\n}\n\nCommonState.prototype = {\n waitcnt: 0,\n tabrand_seed: 0xff,\n wm_trigger: 0,\n wmidx: 0,\n wmileft: wminext,\n melcstate: 0,\n melclen: 0,\n melcorder: 0,\n\n set_wm_trigger : function()\n {\n var wm = this.wmidx;\n if (wm > 10) {\n wm = 10;\n }\n\n this.wm_trigger = besttrigtab[Math.floor(evol / 2)][wm];\n },\n\n reste : function()\n {\n this.waitcnt = 0;\n this.tabrand_seed = 0x0ff;\n this.wmidx = 0;\n this.wmileft = wminext;\n\n this.set_wm_trigger();\n\n this.melcstate = 0;\n this.melclen = J[0];\n this.melcorder = 1 << this.melclen;\n },\n\n tabrand : function()\n {\n this.tabrand_seed++;\n return tabrand_chaos[this.tabrand_seed & 0x0ff];\n }\n}\n\n\nfunction QuicEncoder()\n{\n this.rgb_state = new CommonState;\n this.model_8bpc = new QuicModel(8);\n this.model_5bpc = new QuicModel(5);\n this.channels = [];\n\n var i;\n for (i = 0; i < 4; i++) {\n this.channels[i] = new QuicChannel(this.model_8bpc, this.model_5bpc);\n if (!this.channels[i])\n {\n console.log(\"quic: failed to create channel\");\n return undefined;\n }\n }\n}\n\nQuicEncoder.prototype = {\n type: 0,\n width: 0,\n height: 0,\n io_idx: 0,\n io_available_bits: 0,\n io_word: 0,\n io_next_word: 0,\n io_now: 0,\n io_end: 0,\n rows_completed: 0,\n };\n\nQuicEncoder.prototype.reste = function(io_ptr)\n{\n this.rgb_state.reste();\n\n this.io_now = io_ptr;\n this.io_end = this.io_now.length;\n this.io_idx = 0;\n this.rows_completed = 0;\n return true;\n}\n\nQuicEncoder.prototype.read_io_word = function()\n{\n if (this.io_idx >= this.io_end)\n throw(\"quic: out of data\");\n this.io_next_word = this.io_now[this.io_idx++] | this.io_now[this.io_idx++]<<8 | this.io_now[this.io_idx++]<<16 | this.io_now[this.io_idx++]<<24;\n}\n\nQuicEncoder.prototype.decode_eatbits = function (len)\n{\n this.io_word = this.io_word << len;\n\n var delta = (this.io_available_bits - len);\n if (delta >= 0)\n {\n this.io_available_bits = delta;\n this.io_word |= this.io_next_word >>> this.io_available_bits;\n }\n else\n {\n delta = -1 * delta;\n this.io_word |= this.io_next_word << delta;\n this.read_io_word();\n this.io_available_bits = 32 - delta;\n this.io_word |= this.io_next_word >>> this.io_available_bits;\n }\n}\n\nQuicEncoder.prototype.decode_eat32bits = function()\n{\n this.decode_eatbits(16);\n this.decode_eatbits(16);\n}\n\nQuicEncoder.prototype.reste_channels = function(bpc)\n{\n var i;\n\n for (i = 0; i < 4; i++)\n if (!this.channels[i].reste(bpc))\n return false;\n return true;\n}\n\nQuicEncoder.prototype.quic_decode_begin = function(io_ptr)\n{\n if (!this.reste(io_ptr)) {\n return false;\n }\n\n this.io_idx = 0;\n this.io_next_word = this.io_now[this.io_idx++] | this.io_now[this.io_idx++]<<8 | this.io_now[this.io_idx++]<<16 | this.io_now[this.io_idx++]<<24;\n this.io_word = this.io_next_word;\n this.io_available_bits = 0;\n\n var magic = this.io_word;\n this.decode_eat32bits();\n if (magic != 0x43495551) /*QUIC*/ {\n console.log(\"quic: bad magic \"+magic.toString(16));\n return false;\n }\n\n var version = this.io_word;\n this.decode_eat32bits();\n if (version != ((0 << 16) | (0 & 0xffff))) {\n console.log(\"quic: bad version \"+version.toString(16));\n return false;\n }\n\n this.type = this.io_word;\n this.decode_eat32bits();\n\n this.width = this.io_word;\n this.decode_eat32bits();\n\n this.height = this.io_word;\n this.decode_eat32bits();\n\n var bpc = quic_image_bpc(this.type);\n\n if (!this.reste_channels(bpc))\n return false;\n\n return true;\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row0_seg = function (i, cur_row, end,\n waitmask, bpc, bpc_mask)\n{\n var stopidx;\n var n_channels = 3;\n var c;\n var a;\n\n if (!i) {\n cur_row[rgb32_pixel_pad] = 0;\n c = 0;\n do\n {\n a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].bestcode, this.io_word);\n this.channels[c].correlate_row.row[0] = a.rc;\n cur_row[2-c] = (family_8bpc.xlatL2U[a.rc]&0xFF);\n this.decode_eatbits(a.codewordlen);\n } while (++c < n_channels);\n\n if (this.rgb_state.waitcnt) {\n --this.rgb_state.waitcnt;\n } else {\n this.rgb_state.waitcnt = (this.rgb_state.tabrand() & waitmask);\n c = 0;\n do\n {\n this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[0], bpc);\n } while (++c < n_channels);\n }\n stopidx = ++i + this.rgb_state.waitcnt;\n } else {\n stopidx = i + this.rgb_state.waitcnt;\n }\n\n while (stopidx < end) {\n for (; i <= stopidx; i++) {\n cur_row[(i* rgb32_pixel_size)+rgb32_pixel_pad] = 0;\n c = 0;\n do\n {\n a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[i - 1]].bestcode, this.io_word);\n this.channels[c].correlate_row.row[i] = a.rc;\n cur_row[(i* rgb32_pixel_size)+(2-c)] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1) * rgb32_pixel_size) + (2-c)]) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n } while (++c < n_channels);\n }\n c = 0;\n do\n {\n this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[stopidx - 1]].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[stopidx], bpc);\n } while (++c < n_channels);\n stopidx = i + (this.rgb_state.tabrand() & waitmask);\n }\n\n for (; i < end; i++) {\n cur_row[(i* rgb32_pixel_size)+rgb32_pixel_pad] = 0;\n c = 0;\n do\n {\n a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[i - 1]].bestcode, this.io_word);\n this.channels[c].correlate_row.row[i] = a.rc;\n cur_row[(i* rgb32_pixel_size)+(2-c)] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1) * rgb32_pixel_size) + (2-c)]) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n } while (++c < n_channels);\n }\n this.rgb_state.waitcnt = stopidx - end;\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row0 = function (cur_row)\n{\n var bpc = 8;\n var bpc_mask = 0xff;\n var pos = 0;\n var width = this.width;\n\n while ((wmimax > this.rgb_state.wmidx) && (this.rgb_state.wmileft <= width)) {\n if (this.rgb_state.wmileft) {\n this.quic_rgb32_uncompress_row0_seg(pos, cur_row,\n pos + this.rgb_state.wmileft,\n bppmask[this.rgb_state.wmidx],\n bpc, bpc_mask);\n pos += this.rgb_state.wmileft;\n width -= this.rgb_state.wmileft;\n }\n\n this.rgb_state.wmidx++;\n this.rgb_state.set_wm_trigger();\n this.rgb_state.wmileft = wminext;\n }\n\n if (width) {\n this.quic_rgb32_uncompress_row0_seg(pos, cur_row, pos + width,\n bppmask[this.rgb_state.wmidx], bpc, bpc_mask);\n if (wmimax > this.rgb_state.wmidx) {\n this.rgb_state.wmileft -= width;\n }\n }\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row_seg = function( prev_row, cur_row, i, end, bpc, bpc_mask)\n{\n var n_channels = 3;\n var waitmask = bppmask[this.rgb_state.wmidx];\n\n var a;\n var run_index = 0;\n var stopidx = 0;\n var run_end = 0;\n var c;\n\n if (!i)\n {\n cur_row[rgb32_pixel_pad] = 0;\n\n c = 0;\n do {\n a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].bestcode, this.io_word);\n this.channels[c].correlate_row.row[0] = a.rc;\n cur_row[2-c] = (family_8bpc.xlatL2U[this.channels[c].correlate_row.row[0]] + prev_row[2-c]) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n } while (++c < n_channels);\n\n if (this.rgb_state.waitcnt) {\n --this.rgb_state.waitcnt;\n } else {\n this.rgb_state.waitcnt = (this.rgb_state.tabrand() & waitmask);\n c = 0;\n do {\n this.channels[c].buckets_ptrs[this.channels[c].correlate_row.zero].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[0], bpc);\n } while (++c < n_channels);\n }\n stopidx = ++i + this.rgb_state.waitcnt;\n } else {\n stopidx = i + this.rgb_state.waitcnt;\n }\n for (;;) {\n var rc = 0;\n while (stopidx < end && !rc) {\n for (; i <= stopidx && !rc; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n var pixelm2 = (i-2) * rgb32_pixel_size;\n\n if ( prev_row[pixelm1+rgb32_pixel_r] == prev_row[pixel+rgb32_pixel_r] && prev_row[pixelm1+rgb32_pixel_g] == prev_row[pixel+rgb32_pixel_g] && prev_row[pixelm1 + rgb32_pixel_b] == prev_row[pixel+rgb32_pixel_b])\n {\n if (run_index != i && i > 2 && (cur_row[pixelm1+rgb32_pixel_r] == cur_row[pixelm2+rgb32_pixel_r] && cur_row[pixelm1+rgb32_pixel_g] == cur_row[pixelm2+rgb32_pixel_g] && cur_row[pixelm1+rgb32_pixel_b] == cur_row[pixelm2+rgb32_pixel_b]))\n {\n /* do run */\n this.rgb_state.waitcnt = stopidx - i;\n run_index = i;\n run_end = i + this.decode_run(this.rgb_state);\n\n for (; i < run_end; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n cur_row[pixel+rgb32_pixel_pad] = 0;\n cur_row[pixel+rgb32_pixel_r] = cur_row[pixelm1+rgb32_pixel_r];\n cur_row[pixel+rgb32_pixel_g] = cur_row[pixelm1+rgb32_pixel_g];\n cur_row[pixel+rgb32_pixel_b] = cur_row[pixelm1+rgb32_pixel_b];\n }\n\n if (i == end) {\n return;\n }\n else\n {\n stopidx = i + this.rgb_state.waitcnt;\n rc = 1;\n break;\n }\n }\n }\n\n c = 0;\n cur_row[pixel+rgb32_pixel_pad] = 0;\n do {\n var cc = this.channels[c];\n var cr = cc.correlate_row;\n\n a = golomb_decoding_8bpc(cc.buckets_ptrs[cr.row[i-1]].bestcode, this.io_word);\n cr.row[i] = a.rc;\n cur_row[pixel+(2-c)] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+(2-c)] + prev_row[pixel+(2-c)]) >> 1)) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n } while (++c < n_channels);\n }\n if (rc)\n break;\n\n c = 0;\n do {\n this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[stopidx - 1]].update_model_8bpc(this.rgb_state, this.channels[c].correlate_row.row[stopidx], bpc);\n } while (++c < n_channels);\n\n stopidx = i + (this.rgb_state.tabrand() & waitmask);\n }\n\n for (; i < end && !rc; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n var pixelm2 = (i-2) * rgb32_pixel_size;\n\n if (prev_row[pixelm1+rgb32_pixel_r] == prev_row[pixel+rgb32_pixel_r] && prev_row[pixelm1+rgb32_pixel_g] == prev_row[pixel+rgb32_pixel_g] && prev_row[pixelm1+rgb32_pixel_b] == prev_row[pixel+rgb32_pixel_b])\n {\n if (run_index != i && i > 2 && (cur_row[pixelm1+rgb32_pixel_r] == cur_row[pixelm2+rgb32_pixel_r] && cur_row[pixelm1+rgb32_pixel_g] == cur_row[pixelm2+rgb32_pixel_g] && cur_row[pixelm1+rgb32_pixel_b] == cur_row[pixelm2+rgb32_pixel_b]))\n {\n /* do run */\n this.rgb_state.waitcnt = stopidx - i;\n run_index = i;\n run_end = i + this.decode_run(this.rgb_state);\n\n for (; i < run_end; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n cur_row[pixel+rgb32_pixel_pad] = 0;\n cur_row[pixel+rgb32_pixel_r] = cur_row[pixelm1+rgb32_pixel_r];\n cur_row[pixel+rgb32_pixel_g] = cur_row[pixelm1+rgb32_pixel_g];\n cur_row[pixel+rgb32_pixel_b] = cur_row[pixelm1+rgb32_pixel_b];\n }\n\n if (i == end) {\n return;\n }\n else\n {\n stopidx = i + this.rgb_state.waitcnt;\n rc = 1;\n break;\n }\n }\n }\n\n cur_row[pixel+rgb32_pixel_pad] = 0;\n c = 0;\n do\n {\n a = golomb_decoding_8bpc(this.channels[c].buckets_ptrs[this.channels[c].correlate_row.row[i-1]].bestcode, this.io_word);\n this.channels[c].correlate_row.row[i] = a.rc;\n cur_row[pixel+(2-c)] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+(2-c)] + prev_row[pixel+(2-c)]) >> 1)) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n } while (++c < n_channels);\n }\n\n if (!rc)\n {\n this.rgb_state.waitcnt = stopidx - end;\n return;\n }\n }\n}\n\nQuicEncoder.prototype.decode_run = function(state)\n{\n var runlen = 0;\n\n do {\n var hits;\n var x = (~(this.io_word >>> 24)>>>0)&0xff;\n var temp = zeroLUT[x];\n\n for (hits = 1; hits <= temp; hits++) {\n runlen += state.melcorder;\n\n if (state.melcstate < 32) {\n state.melclen = J[++state.melcstate];\n state.melcorder = (1 << state.melclen);\n }\n }\n if (temp != 8) {\n this.decode_eatbits(temp + 1);\n\n break;\n }\n this.decode_eatbits(8);\n } while (true);\n\n if (state.melclen) {\n runlen += this.io_word >>> (32 - state.melclen);\n this.decode_eatbits(state.melclen);\n }\n\n if (state.melcstate) {\n state.melclen = J[--state.melcstate];\n state.melcorder = (1 << state.melclen);\n }\n\n return runlen;\n}\n\nQuicEncoder.prototype.quic_rgb32_uncompress_row = function (prev_row, cur_row)\n{\n var bpc = 8;\n var bpc_mask = 0xff;\n var pos = 0;\n var width = this.width;\n\n while ((wmimax > this.rgb_state.wmidx) && (this.rgb_state.wmileft <= width)) {\n if (this.rgb_state.wmileft) {\n this.quic_rgb32_uncompress_row_seg(prev_row, cur_row, pos,\n pos + this.rgb_state.wmileft, bpc, bpc_mask);\n pos += this.rgb_state.wmileft;\n width -= this.rgb_state.wmileft;\n }\n\n this.rgb_state.wmidx++;\n this.rgb_state.set_wm_trigger();\n this.rgb_state.wmileft = wminext;\n }\n\n if (width) {\n this.quic_rgb32_uncompress_row_seg(prev_row, cur_row, pos,\n pos + width, bpc, bpc_mask);\n if (wmimax > this.rgb_state.wmidx) {\n this.rgb_state.wmileft -= width;\n }\n }\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row0_seg = function (channel, i,\n correlate_row, cur_row, end, waitmask,\n bpc, bpc_mask)\n{\n var stopidx;\n var a;\n\n if (i == 0) {\n a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.zero].bestcode, this.io_word);\n correlate_row.row[0] = a.rc;\n cur_row[rgb32_pixel_pad] = family_8bpc.xlatL2U[a.rc];\n this.decode_eatbits(a.codewordlen);\n\n if (channel.state.waitcnt) {\n --channel.state.waitcnt;\n } else {\n channel.state.waitcnt = (channel.state.tabrand() & waitmask);\n channel.buckets_ptrs[correlate_row.zero].update_model_8bpc(channel.state, correlate_row.row[0], bpc);\n }\n stopidx = ++i + channel.state.waitcnt;\n } else {\n stopidx = i + channel.state.waitcnt;\n }\n\n while (stopidx < end) {\n var pbucket;\n\n for (; i <= stopidx; i++) {\n pbucket = channel.buckets_ptrs[correlate_row.row[i - 1]];\n\n a = golomb_decoding_8bpc(pbucket.bestcode, this.io_word);\n correlate_row.row[i] = a.rc;\n cur_row[(i*rgb32_pixel_size)+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1)*rgb32_pixel_size)+rgb32_pixel_pad]) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n }\n\n pbucket.update_model_8bpc(channel.state, correlate_row.row[stopidx], bpc);\n\n stopidx = i + (channel.state.tabrand() & waitmask);\n }\n\n for (; i < end; i++) {\n a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.row[i-1]].bestcode, this.io_word);\n\n correlate_row.row[i] = a.rc;\n cur_row[(i*rgb32_pixel_size)+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + cur_row[((i-1)*rgb32_pixel_size)+rgb32_pixel_pad]) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n }\n channel.state.waitcnt = stopidx - end;\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row0 = function(channel, cur_row)\n{\n var bpc = 8;\n var bpc_mask = 0xff;\n var correlate_row = channel.correlate_row;\n var pos = 0;\n var width = this.width;\n\n while ((wmimax > channel.state.wmidx) && (channel.state.wmileft <= width)) {\n if (channel.state.wmileft) {\n this.quic_four_uncompress_row0_seg(channel, pos, correlate_row, cur_row,\n pos + channel.state.wmileft, bppmask[channel.state.wmidx],\n bpc, bpc_mask);\n pos += channel.state.wmileft;\n width -= channel.state.wmileft;\n }\n\n channel.state.wmidx++;\n channel.state.set_wm_trigger();\n channel.state.wmileft = wminext;\n }\n\n if (width) {\n this.quic_four_uncompress_row0_seg(channel, pos, correlate_row, cur_row, pos + width,\n bppmask[channel.state.wmidx], bpc, bpc_mask);\n if (wmimax > channel.state.wmidx) {\n channel.state.wmileft -= width;\n }\n }\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row_seg = function (channel,\n correlate_row, prev_row, cur_row, i,\n end, bpc, bpc_mask)\n{\n var waitmask = bppmask[channel.state.wmidx];\n var stopidx;\n\n var run_index = 0;\n var run_end;\n\n var a;\n\n if (i == 0) {\n a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.zero].bestcode, this.io_word);\n\n correlate_row.row[0] = a.rc\n cur_row[rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + prev_row[rgb32_pixel_pad]) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n\n if (channel.state.waitcnt) {\n --channel.state.waitcnt;\n } else {\n channel.state.waitcnt = (channel.state.tabrand() & waitmask);\n channel.buckets_ptrs[correlate_row.zero].update_model_8bpc(channel.state, correlate_row.row[0], bpc);\n }\n stopidx = ++i + channel.state.waitcnt;\n } else {\n stopidx = i + channel.state.waitcnt;\n }\n for (;;) {\n var rc = 0;\n while (stopidx < end && !rc) {\n var pbucket;\n for (; i <= stopidx && !rc; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n var pixelm2 = (i-2) * rgb32_pixel_size;\n\n if (prev_row[pixelm1+rgb32_pixel_pad] == prev_row[pixel+rgb32_pixel_pad])\n {\n if (run_index != i && i > 2 && cur_row[pixelm1+rgb32_pixel_pad] == cur_row[pixelm2+rgb32_pixel_pad])\n {\n /* do run */\n channel.state.waitcnt = stopidx - i;\n run_index = i;\n\n run_end = i + this.decode_run(channel.state);\n\n for (; i < run_end; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n cur_row[pixel+rgb32_pixel_pad] = cur_row[pixelm1+rgb32_pixel_pad];\n }\n\n if (i == end) {\n return;\n }\n else\n {\n stopidx = i + channel.state.waitcnt;\n rc = 1;\n break;\n }\n }\n }\n\n pbucket = channel.buckets_ptrs[correlate_row.row[i - 1]];\n a = golomb_decoding_8bpc(pbucket.bestcode, this.io_word);\n correlate_row.row[i] = a.rc\n cur_row[pixel+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+rgb32_pixel_pad] + prev_row[pixel+rgb32_pixel_pad]) >> 1)) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n }\n if (rc)\n break;\n\n pbucket.update_model_8bpc(channel.state, correlate_row.row[stopidx], bpc);\n\n stopidx = i + (channel.state.tabrand() & waitmask);\n }\n\n for (; i < end && !rc; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n var pixelm2 = (i-2) * rgb32_pixel_size;\n if (prev_row[pixelm1+rgb32_pixel_pad] == prev_row[pixel+rgb32_pixel_pad])\n {\n if (run_index != i && i > 2 && cur_row[pixelm1+rgb32_pixel_pad] == cur_row[pixelm2+rgb32_pixel_pad])\n {\n /* do run */\n channel.state.waitcnt = stopidx - i;\n run_index = i;\n\n run_end = i + this.decode_run(channel.state);\n\n for (; i < run_end; i++) {\n var pixel = i * rgb32_pixel_size;\n var pixelm1 = (i-1) * rgb32_pixel_size;\n cur_row[pixel+rgb32_pixel_pad] = cur_row[pixelm1+rgb32_pixel_pad];\n }\n\n if (i == end) {\n return;\n }\n else\n {\n stopidx = i + channel.state.waitcnt;\n rc = 1;\n break;\n }\n }\n }\n\n a = golomb_decoding_8bpc(channel.buckets_ptrs[correlate_row.row[i-1]].bestcode, this.io_word);\n correlate_row.row[i] = a.rc;\n cur_row[pixel+rgb32_pixel_pad] = (family_8bpc.xlatL2U[a.rc] + ((cur_row[pixelm1+rgb32_pixel_pad] + prev_row[pixel+rgb32_pixel_pad]) >> 1)) & bpc_mask;\n this.decode_eatbits(a.codewordlen);\n }\n\n if (!rc)\n {\n channel.state.waitcnt = stopidx - end;\n return;\n }\n }\n}\n\nQuicEncoder.prototype.quic_four_uncompress_row = function(channel, prev_row,\n cur_row)\n{\n var bpc = 8;\n var bpc_mask = 0xff;\n var correlate_row = channel.correlate_row;\n var pos = 0;\n var width = this.width;\n\n while ((wmimax > channel.state.wmidx) && (channel.state.wmileft <= width)) {\n if (channel.state.wmileft) {\n this.quic_four_uncompress_row_seg(channel, correlate_row, prev_row, cur_row, pos,\n pos + channel.state.wmileft, bpc, bpc_mask);\n pos += channel.state.wmileft;\n width -= channel.state.wmileft;\n }\n\n channel.state.wmidx++;\n channel.state.set_wm_trigger();\n channel.state.wmileft = wminext;\n }\n\n if (width) {\n this.quic_four_uncompress_row_seg(channel, correlate_row, prev_row, cur_row, pos,\n pos + width, bpc, bpc_mask);\n if (wmimax > channel.state.wmidx) {\n channel.state.wmileft -= width;\n }\n }\n}\n\n/* We need to be generating rgb32 or rgba */\nQuicEncoder.prototype.quic_decode = function(buf, stride)\n{\n var row;\n\n switch (this.type)\n {\n case QUIC_IMAGE_TYPE_RGB32:\n case QUIC_IMAGE_TYPE_RGB24:\n this.channels[0].correlate_row.zero = 0;\n this.channels[1].correlate_row.zero = 0;\n this.channels[2].correlate_row.zero = 0;\n this.quic_rgb32_uncompress_row0(buf);\n\n this.rows_completed++;\n for (row = 1; row < this.height; row++)\n {\n var prev = buf;\n buf = prev.subarray(stride);\n this.channels[0].correlate_row.zero = this.channels[0].correlate_row.row[0];\n this.channels[1].correlate_row.zero = this.channels[1].correlate_row.row[0];\n this.channels[2].correlate_row.zero = this.channels[2].correlate_row.row[0];\n this.quic_rgb32_uncompress_row(prev, buf);\n this.rows_completed++;\n };\n break;\n case QUIC_IMAGE_TYPE_RGB16:\n console.log(\"quic: unsupported output format\\n\");\n return false;\n break;\n case QUIC_IMAGE_TYPE_RGBA:\n this.channels[0].correlate_row.zero = 0;\n this.channels[1].correlate_row.zero = 0;\n this.channels[2].correlate_row.zero = 0;\n this.quic_rgb32_uncompress_row0(buf);\n\n this.channels[3].correlate_row.zero = 0;\n this.quic_four_uncompress_row0(this.channels[3], buf);\n\n this.rows_completed++;\n for (row = 1; row < this.height; row++) {\n var prev = buf;\n buf = prev.subarray(stride);\n\n this.channels[0].correlate_row.zero = this.channels[0].correlate_row.row[0];\n this.channels[1].correlate_row.zero = this.channels[1].correlate_row.row[0];\n this.channels[2].correlate_row.zero = this.channels[2].correlate_row.row[0];\n this.quic_rgb32_uncompress_row(prev, buf);\n\n this.channels[3].correlate_row.zero = this.channels[3].correlate_row.row[0];\n this.quic_four_uncompress_row(encoder.channels[3], prev, buf);\n this.rows_completed++;\n }\n break;\n\n case QUIC_IMAGE_TYPE_GRAY:\n console.log(\"quic: unsupported output format\\n\");\n return false;\n break;\n\n case QUIC_IMAGE_TYPE_INVALID:\n default:\n console.log(\"quic: bad image type\\n\");\n return false;\n }\n return true;\n}\n\nQuicEncoder.prototype.simple_quic_decode = function(buf)\n{\n var stride = 4; /* FIXME - proper stride calc please */\n if (!this.quic_decode_begin(buf))\n return undefined;\n if (this.type != QUIC_IMAGE_TYPE_RGB32 && this.type != QUIC_IMAGE_TYPE_RGB24\n && this.type != QUIC_IMAGE_TYPE_RGBA)\n return undefined;\n var out = new Uint8Array(this.width*this.height*4);\n out[0] = 69;\n if (this.quic_decode( out, (this.width * stride)))\n return out;\n return undefined;\n}\n\nfunction SpiceQuic()\n{\n}\n\nSpiceQuic.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n if (!encoder)\n throw(\"quic: no quic encoder\");\n this.data_size = dv.getUint32(at, true);\n at += 4;\n var buf = new Uint8Array(mb.slice(at));\n this.outptr = encoder.simple_quic_decode(buf);\n if (this.outptr)\n {\n this.type = encoder.type;\n this.width = encoder.width;\n this.height = encoder.height;\n }\n at += buf.length;\n return at;\n },\n}\n\nfunction convert_spice_quic_to_web(context, spice_quic)\n{\n var ret = context.createImageData(spice_quic.width, spice_quic.height);\n var i;\n for (i = 0; i < (ret.width * ret.height * 4); i+=4)\n {\n ret.data[i + 0] = spice_quic.outptr[i + 2];\n ret.data[i + 1] = spice_quic.outptr[i + 1];\n ret.data[i + 2] = spice_quic.outptr[i + 0];\n if (spice_quic.type !== QUIC_IMAGE_TYPE_RGBA)\n ret.data[i + 3] = 255;\n else\n ret.data[i + 3] = 255 - spice_quic.outptr[i + 3];\n }\n return ret;\n}\n\n/* Module initialization */\nif (need_init)\n{\n need_init = false;\n\n family_init(family_8bpc, 8, DEFmaxclen);\n family_init(family_5bpc, 5, DEFmaxclen);\n /* init_zeroLUT */\n var i, j, k, l;\n\n j = k = 1;\n l = 8;\n for (i = 0; i < 256; ++i) {\n zeroLUT[i] = l;\n --k;\n if (k == 0) {\n k = j;\n --l;\n j *= 2;\n }\n }\n\n encoder = new QuicEncoder;\n\n if (!encoder)\n throw(\"quic: failed to create encoder\");\n}\n;\ndefine(\"spice-quic\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n\n/*----------------------------------------------------------------------------\n** bitmap.js\n** Handle SPICE_IMAGE_TYPE_BITMAP\n**--------------------------------------------------------------------------*/\nfunction convert_spice_bitmap_to_web(context, spice_bitmap)\n{\n var ret;\n var offset, x;\n var u8 = new Uint8Array(spice_bitmap.data);\n if (spice_bitmap.format != SPICE_BITMAP_FMT_32BIT &&\n spice_bitmap.format != SPICE_BITMAP_FMT_RGBA)\n return undefined;\n\n ret = context.createImageData(spice_bitmap.x, spice_bitmap.y);\n for (offset = 0; offset < (spice_bitmap.y * spice_bitmap.stride); )\n for (x = 0; x < spice_bitmap.x; x++, offset += 4)\n {\n ret.data[offset + 0 ] = u8[offset + 2];\n ret.data[offset + 1 ] = u8[offset + 1];\n ret.data[offset + 2 ] = u8[offset + 0];\n\n // FIXME - We effectively treat all images as having SPICE_IMAGE_FLAGS_HIGH_BITS_SET\n if (spice_bitmap.format == SPICE_BITMAP_FMT_32BIT)\n ret.data[offset + 3] = 255;\n else\n ret.data[offset + 3] = u8[offset];\n }\n\n return ret;\n}\n;\ndefine(\"spice-bitmap\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** SpiceDataView\n** FIXME FIXME \n** This is used because Firefox does not have DataView yet.\n** We should use DataView if we have it, because it *has* to \n** be faster than this code \n**--------------------------------------------------------------------------*/\nfunction SpiceDataView(buffer, byteOffset, byteLength)\n{\n if (byteOffset !== undefined)\n {\n if (byteLength !== undefined)\n this.u8 = new Uint8Array(buffer, byteOffset, byteLength);\n else\n this.u8 = new Uint8Array(buffer, byteOffset);\n }\n else\n this.u8 = new Uint8Array(buffer);\n};\n\nSpiceDataView.prototype = {\n getUint8: function(byteOffset)\n {\n return this.u8[byteOffset];\n },\n getUint16: function(byteOffset, littleEndian)\n {\n var low = 1, high = 0;\n if (littleEndian)\n {\n low = 0;\n high = 1;\n }\n\n return (this.u8[byteOffset + high] << 8) | this.u8[byteOffset + low];\n },\n getUint32: function(byteOffset, littleEndian)\n {\n var low = 2, high = 0;\n if (littleEndian)\n {\n low = 0;\n high = 2;\n }\n\n return (this.getUint16(byteOffset + high, littleEndian) << 16) | \n this.getUint16(byteOffset + low, littleEndian);\n },\n getUint64: function (byteOffset, littleEndian)\n {\n var low = 4, high = 0;\n if (littleEndian)\n {\n low = 0;\n high = 4;\n }\n\n return (this.getUint32(byteOffset + high, littleEndian) << 32) |\n this.getUint32(byteOffset + low, littleEndian);\n },\n setUint8: function(byteOffset, b)\n {\n this.u8[byteOffset] = (b & 0xff);\n },\n setUint16: function(byteOffset, i, littleEndian)\n {\n var low = 1, high = 0;\n if (littleEndian)\n {\n low = 0;\n high = 1;\n }\n this.u8[byteOffset + high] = (i & 0xffff) >> 8;\n this.u8[byteOffset + low] = (i & 0x00ff);\n },\n setUint32: function(byteOffset, w, littleEndian)\n {\n var low = 2, high = 0;\n if (littleEndian)\n {\n low = 0;\n high = 2;\n }\n\n this.setUint16(byteOffset + high, (w & 0xffffffff) >> 16, littleEndian);\n this.setUint16(byteOffset + low, (w & 0x0000ffff), littleEndian);\n },\n setUint64: function(byteOffset, w, littleEndian)\n {\n var low = 4, high = 0;\n if (littleEndian)\n {\n low = 0;\n high = 4;\n }\n\n this.setUint32(byteOffset + high, (w & 0xffffffffffffffff) >> 32, littleEndian);\n this.setUint32(byteOffset + low, (w & 0x00000000ffffffff), littleEndian);\n },\n}\n;\ndefine(\"spice-spicedataview\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** Spice types\n** This file contains classes for common spice types.\n** Generally, they are used as helpers in reading and writing messages\n** to and from the server.\n**--------------------------------------------------------------------------*/\n\nfunction SpiceChannelId()\n{\n}\nSpiceChannelId.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.type = dv.getUint8(at, true); at ++;\n this.id = dv.getUint8(at, true); at ++;\n return at;\n },\n}\n\nfunction SpiceRect()\n{\n}\n\nSpiceRect.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.top = dv.getUint32(at, true); at += 4;\n this.left = dv.getUint32(at, true); at += 4;\n this.bottom = dv.getUint32(at, true); at += 4;\n this.right = dv.getUint32(at, true); at += 4;\n return at;\n },\n is_same_size : function(r)\n {\n if ((this.bottom - this.top) == (r.bottom - r.top) &&\n (this.right - this.left) == (r.right - r.left) )\n return true;\n\n return false;\n },\n}\n\nfunction SpiceClipRects()\n{\n}\n\nSpiceClipRects.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n var i;\n this.num_rects = dv.getUint32(at, true); at += 4;\n if (this.num_rects > 0)\n this.rects = [];\n for (i = 0; i < this.num_rects; i++)\n {\n this.rects[i] = new SpiceRect();\n at = this.rects[i].from_dv(dv, at, mb);\n }\n return at;\n },\n}\n\nfunction SpiceClip()\n{\n}\n\nSpiceClip.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.type = dv.getUint8(at, true); at ++;\n if (this.type == SPICE_CLIP_TYPE_RECTS)\n {\n this.rects = new SpiceClipRects();\n at = this.rects.from_dv(dv, at, mb);\n }\n return at;\n },\n}\n\nfunction SpiceImageDescriptor()\n{\n}\n\nSpiceImageDescriptor.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.id = dv.getUint64(at, true); at += 8;\n this.type = dv.getUint8(at, true); at ++;\n this.flags = dv.getUint8(at, true); at ++;\n this.width = dv.getUint32(at, true); at += 4;\n this.height= dv.getUint32(at, true); at += 4;\n return at;\n },\n}\n\nfunction SpicePalette()\n{\n}\n\nSpicePalette.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n var i;\n this.unique = dv.getUint64(at, true); at += 8;\n this.num_ents = dv.getUint16(at, true); at += 2;\n this.ents = [];\n for (i = 0; i < this.num_ents; i++)\n {\n this.ents[i] = dv.getUint32(at, true); at += 4;\n }\n return at;\n },\n}\n\nfunction SpiceBitmap()\n{\n}\n\nSpiceBitmap.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.format = dv.getUint8(at, true); at++;\n this.flags = dv.getUint8(at, true); at++;\n this.x = dv.getUint32(at, true); at += 4;\n this.y = dv.getUint32(at, true); at += 4;\n this.stride = dv.getUint32(at, true); at += 4;\n if (this.flags & SPICE_BITMAP_FLAGS_PAL_FROM_CACHE)\n {\n this.palette_id = dv.getUint64(at, true); at += 8;\n }\n else\n {\n var offset = dv.getUint32(at, true); at += 4;\n if (offset == 0)\n this.palette = null;\n else\n {\n this.palette = new SpicePalette;\n this.palette.from_dv(dv, offset, mb);\n }\n }\n // FIXME - should probably constrain this to the offset\n // of palette, if non zero\n this.data = mb.slice(at);\n at += this.data.byteLength;\n return at;\n },\n}\n\nfunction SpiceImage()\n{\n}\n\nSpiceImage.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.descriptor = new SpiceImageDescriptor;\n at = this.descriptor.from_dv(dv, at, mb);\n\n if (this.descriptor.type == SPICE_IMAGE_TYPE_LZ_RGB)\n {\n this.lz_rgb = new Object();\n this.lz_rgb.length = dv.getUint32(at, true); at += 4;\n var initial_at = at;\n this.lz_rgb.magic = \"\";\n for (var i = 3; i >= 0; i--)\n this.lz_rgb.magic += String.fromCharCode(dv.getUint8(at + i));\n at += 4;\n\n // NOTE: The endian change is *correct*\n this.lz_rgb.version = dv.getUint32(at); at += 4;\n this.lz_rgb.type = dv.getUint32(at); at += 4;\n this.lz_rgb.width = dv.getUint32(at); at += 4;\n this.lz_rgb.height = dv.getUint32(at); at += 4;\n this.lz_rgb.stride = dv.getUint32(at); at += 4;\n this.lz_rgb.top_down = dv.getUint32(at); at += 4;\n\n var header_size = at - initial_at;\n\n this.lz_rgb.data = mb.slice(at, this.lz_rgb.length + at - header_size);\n at += this.lz_rgb.data.byteLength;\n\n }\n\n if (this.descriptor.type == SPICE_IMAGE_TYPE_BITMAP)\n {\n this.bitmap = new SpiceBitmap;\n at = this.bitmap.from_dv(dv, at, mb);\n }\n\n if (this.descriptor.type == SPICE_IMAGE_TYPE_SURFACE)\n {\n this.surface_id = dv.getUint32(at, true); at += 4;\n }\n\n if (this.descriptor.type == SPICE_IMAGE_TYPE_JPEG)\n {\n this.jpeg = new Object;\n this.jpeg.data_size = dv.getUint32(at, true); at += 4;\n this.jpeg.data = mb.slice(at);\n at += this.jpeg.data.byteLength;\n }\n\n if (this.descriptor.type == SPICE_IMAGE_TYPE_JPEG_ALPHA)\n {\n this.jpeg_alpha = new Object;\n this.jpeg_alpha.flags = dv.getUint8(at, true); at += 1;\n this.jpeg_alpha.jpeg_size = dv.getUint32(at, true); at += 4;\n this.jpeg_alpha.data_size = dv.getUint32(at, true); at += 4;\n this.jpeg_alpha.data = mb.slice(at, this.jpeg_alpha.jpeg_size + at);\n at += this.jpeg_alpha.data.byteLength;\n // Alpha channel is an LZ image\n this.jpeg_alpha.alpha = new Object();\n this.jpeg_alpha.alpha.length = this.jpeg_alpha.data_size - this.jpeg_alpha.jpeg_size;\n var initial_at = at;\n this.jpeg_alpha.alpha.magic = \"\";\n for (var i = 3; i >= 0; i--)\n this.jpeg_alpha.alpha.magic += String.fromCharCode(dv.getUint8(at + i));\n at += 4;\n\n // NOTE: The endian change is *correct*\n this.jpeg_alpha.alpha.version = dv.getUint32(at); at += 4;\n this.jpeg_alpha.alpha.type = dv.getUint32(at); at += 4;\n this.jpeg_alpha.alpha.width = dv.getUint32(at); at += 4;\n this.jpeg_alpha.alpha.height = dv.getUint32(at); at += 4;\n this.jpeg_alpha.alpha.stride = dv.getUint32(at); at += 4;\n this.jpeg_alpha.alpha.top_down = dv.getUint32(at); at += 4;\n\n var header_size = at - initial_at;\n\n this.jpeg_alpha.alpha.data = mb.slice(at, this.jpeg_alpha.alpha.length + at - header_size);\n at += this.jpeg_alpha.alpha.data.byteLength;\n }\n\n if (this.descriptor.type == SPICE_IMAGE_TYPE_QUIC)\n {\n this.quic = new SpiceQuic;\n at = this.quic.from_dv(dv, at, mb);\n }\n return at;\n },\n}\n\n\nfunction SpiceQMask()\n{\n}\n\nSpiceQMask.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.flags = dv.getUint8(at, true); at++;\n this.pos = new SpicePoint;\n at = this.pos.from_dv(dv, at, mb);\n var offset = dv.getUint32(at, true); at += 4;\n if (offset == 0)\n {\n this.bitmap = null;\n return at;\n }\n\n this.bitmap = new SpiceImage;\n return this.bitmap.from_dv(dv, offset, mb);\n },\n}\n\n\nfunction SpicePattern()\n{\n}\n\nSpicePattern.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n var offset = dv.getUint32(at, true); at += 4;\n if (offset == 0)\n {\n this.pat = null;\n }\n else\n {\n this.pat = new SpiceImage;\n this.pat.from_dv(dv, offset, mb);\n }\n\n this.pos = new SpicePoint;\n return this.pos.from_dv(dv, at, mb);\n }\n}\n\nfunction SpiceBrush()\n{\n}\n\nSpiceBrush.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.type = dv.getUint8(at, true); at ++;\n if (this.type == SPICE_BRUSH_TYPE_SOLID)\n {\n this.color = dv.getUint32(at, true); at += 4;\n }\n else if (this.type == SPICE_BRUSH_TYPE_PATTERN)\n {\n this.pattern = new SpicePattern;\n at = this.pattern.from_dv(dv, at, mb);\n }\n return at;\n },\n}\n\nfunction SpiceFill()\n{\n}\n\nSpiceFill.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.brush = new SpiceBrush;\n at = this.brush.from_dv(dv, at, mb);\n this.rop_descriptor = dv.getUint16(at, true); at += 2;\n this.mask = new SpiceQMask;\n return this.mask.from_dv(dv, at, mb);\n },\n}\n\n\nfunction SpiceCopy()\n{\n}\n\nSpiceCopy.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n var offset = dv.getUint32(at, true); at += 4;\n if (offset == 0)\n {\n this.src_bitmap = null;\n }\n else\n {\n this.src_bitmap = new SpiceImage;\n this.src_bitmap.from_dv(dv, offset, mb);\n }\n this.src_area = new SpiceRect;\n at = this.src_area.from_dv(dv, at, mb);\n this.rop_descriptor = dv.getUint16(at, true); at += 2;\n this.scale_mode = dv.getUint8(at, true); at ++;\n this.mask = new SpiceQMask;\n return this.mask.from_dv(dv, at, mb);\n },\n}\n\nfunction SpicePoint16()\n{\n}\n\nSpicePoint16.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.x = dv.getUint16(at, true); at += 2;\n this.y = dv.getUint16(at, true); at += 2;\n return at;\n },\n}\n\nfunction SpicePoint()\n{\n}\n\nSpicePoint.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.x = dv.getUint32(at, true); at += 4;\n this.y = dv.getUint32(at, true); at += 4;\n return at;\n },\n}\n\nfunction SpiceCursorHeader()\n{\n}\n\nSpiceCursorHeader.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.unique = dv.getUint64(at, true); at += 8;\n this.type = dv.getUint8(at, true); at ++;\n this.width = dv.getUint16(at, true); at += 2;\n this.height = dv.getUint16(at, true); at += 2;\n this.hot_spot_x = dv.getUint16(at, true); at += 2;\n this.hot_spot_y = dv.getUint16(at, true); at += 2;\n return at;\n },\n}\n\nfunction SpiceCursor()\n{\n}\n\nSpiceCursor.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.flags = dv.getUint16(at, true); at += 2;\n if (this.flags & SPICE_CURSOR_FLAGS_NONE)\n this.header = null;\n else\n {\n this.header = new SpiceCursorHeader;\n at = this.header.from_dv(dv, at, mb);\n this.data = mb.slice(at);\n at += this.data.byteLength;\n }\n return at;\n },\n}\n\nfunction SpiceSurface()\n{\n}\n\nSpiceSurface.prototype =\n{\n from_dv: function(dv, at, mb)\n {\n this.surface_id = dv.getUint32(at, true); at += 4;\n this.width = dv.getUint32(at, true); at += 4;\n this.height = dv.getUint32(at, true); at += 4;\n this.format = dv.getUint32(at, true); at += 4;\n this.flags = dv.getUint32(at, true); at += 4;\n return at;\n },\n}\n\n/* FIXME - SpiceImage types lz_plt, jpeg, zlib_glz, and jpeg_alpha are \n completely unimplemented */\n;\ndefine(\"spice-spicetype\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** Spice messages\n** This file contains classes for passing messages to and from\n** a spice server. This file should arguably be generated from \n** spice.proto, but it was instead put together by hand.\n**--------------------------------------------------------------------------*/\nfunction SpiceLinkHeader(a, at)\n{\n this.magic = SPICE_MAGIC;\n this.major_version = SPICE_VERSION_MAJOR;\n this.minor_version = SPICE_VERSION_MINOR;\n this.size = 0;\n if (a !== undefined)\n this.from_buffer(a, at);\n}\n\nSpiceLinkHeader.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.magic = \"\";\n for (var i = 0; i < 4; i++)\n this.magic += String.fromCharCode(dv.getUint8(at + i));\n at += 4;\n\n this.major_version = dv.getUint32(at, true); at += 4;\n this.minor_version = dv.getUint32(at, true); at += 4;\n this.size = dv.getUint32(at, true); at += 4;\n },\n\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n for (var i = 0; i < 4; i++)\n dv.setUint8(at + i, this.magic.charCodeAt(i));\n at += 4;\n\n dv.setUint32(at, this.major_version, true); at += 4;\n dv.setUint32(at, this.minor_version, true); at += 4;\n dv.setUint32(at, this.size, true); at += 4;\n },\n buffer_size: function()\n { \n return 16;\n },\n}\n\nfunction SpiceLinkMess(a, at)\n{\n this.connection_id = 0;\n this.channel_type = 0;\n this.channel_id = 0;\n this.common_caps = [];\n this.channel_caps = [];\n\n if (a !== undefined)\n this.from_buffer(a, at);\n}\n\nSpiceLinkMess.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var i;\n var orig_at = at;\n var dv = new SpiceDataView(a);\n this.connection_id = dv.getUint32(at, true); at += 4;\n this.channel_type = dv.getUint8(at, true); at++;\n this.channel_id = dv.getUint8(at, true); at++;\n var num_common_caps = dv.getUint32(at, true); at += 4;\n var num_channel_caps = dv.getUint32(at, true); at += 4;\n var caps_offset = dv.getUint32(at, true); at += 4;\n\n at = orig_at + caps_offset;\n this.common_caps = [];\n for (i = 0; i < num_common_caps; i++)\n {\n this.common_caps.unshift(dv.getUint32(at, true)); at += 4;\n }\n\n this.channel_caps = [];\n for (i = 0; i < num_channel_caps; i++)\n {\n this.channel_caps.unshift(dv.getUint32(at, true)); at += 4;\n }\n },\n\n to_buffer: function(a, at)\n {\n at = at || 0;\n var orig_at = at;\n var i;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.connection_id, true); at += 4;\n dv.setUint8(at, this.channel_type, true); at++;\n dv.setUint8(at, this.channel_id, true); at++;\n dv.setUint32(at, this.common_caps.length, true); at += 4;\n dv.setUint32(at, this.channel_caps.length, true); at += 4;\n dv.setUint32(at, (at - orig_at) + 4, true); at += 4;\n\n for (i = 0; i < this.common_caps.length; i++)\n {\n dv.setUint32(at, this.common_caps[i], true); at += 4;\n }\n\n for (i = 0; i < this.channel_caps.length; i++)\n {\n dv.setUint32(at, this.channel_caps[i], true); at += 4;\n }\n },\n buffer_size: function()\n {\n return 18 + (4 * this.common_caps.length) + (4 * this.channel_caps.length);\n }\n}\n\nfunction SpiceLinkReply(a, at)\n{\n this.error = 0;\n this.pub_key = undefined;\n this.common_caps = [];\n this.channel_caps = [];\n\n if (a !== undefined)\n this.from_buffer(a, at);\n}\n\nSpiceLinkReply.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var i;\n var orig_at = at;\n var dv = new SpiceDataView(a);\n this.error = dv.getUint32(at, true); at += 4;\n\n this.pub_key = create_rsa_from_mb(a, at);\n at += SPICE_TICKET_PUBKEY_BYTES;\n\n var num_common_caps = dv.getUint32(at, true); at += 4;\n var num_channel_caps = dv.getUint32(at, true); at += 4;\n var caps_offset = dv.getUint32(at, true); at += 4;\n\n at = orig_at + caps_offset;\n this.common_caps = [];\n for (i = 0; i < num_common_caps; i++)\n {\n this.common_caps.unshift(dv.getUint32(at, true)); at += 4;\n }\n\n this.channel_caps = [];\n for (i = 0; i < num_channel_caps; i++)\n {\n this.channel_caps.unshift(dv.getUint32(at, true)); at += 4;\n }\n },\n}\n\nfunction SpiceLinkAuthTicket(a, at)\n{\n this.auth_mechanism = 0;\n this.encrypted_data = undefined;\n}\n\nSpiceLinkAuthTicket.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var i;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.auth_mechanism, true); at += 4;\n for (i = 0; i < SPICE_TICKET_KEY_PAIR_LENGTH / 8; i++)\n {\n if (this.encrypted_data && i < this.encrypted_data.length)\n dv.setUint8(at, this.encrypted_data[i], true);\n else\n dv.setUint8(at, 0, true);\n at++;\n }\n },\n buffer_size: function()\n {\n return 4 + (SPICE_TICKET_KEY_PAIR_LENGTH / 8);\n }\n}\n\nfunction SpiceLinkAuthReply(a, at)\n{\n this.auth_code = 0;\n if (a !== undefined)\n this.from_buffer(a, at);\n}\n\nSpiceLinkAuthReply.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.auth_code = dv.getUint32(at, true); at += 4;\n },\n buffer_size: function()\n {\n return 4;\n }\n}\n\nfunction SpiceMiniData(a, at)\n{\n this.type = 0;\n this.size = 0;\n this.data = undefined;\n if (a !== undefined)\n this.from_buffer(a, at);\n}\n\nSpiceMiniData.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var i;\n var dv = new SpiceDataView(a);\n this.type = dv.getUint16(at, true); at += 2;\n this.size = dv.getUint32(at, true); at += 4;\n if (a.byteLength > at)\n {\n this.data = a.slice(at);\n at += this.data.byteLength;\n }\n },\n to_buffer : function(a, at)\n {\n at = at || 0;\n var i;\n var dv = new SpiceDataView(a);\n dv.setUint16(at, this.type, true); at += 2;\n dv.setUint32(at, this.data ? this.data.byteLength : 0, true); at += 4;\n if (this.data && this.data.byteLength > 0)\n {\n var u8arr = new Uint8Array(this.data);\n for (i = 0; i < u8arr.length; i++, at++)\n dv.setUint8(at, u8arr[i], true);\n }\n },\n build_msg : function(in_type, extra)\n {\n this.type = in_type;\n this.size = extra.buffer_size();\n this.data = new ArrayBuffer(this.size);\n extra.to_buffer(this.data);\n },\n buffer_size: function()\n {\n if (this.data)\n return 6 + this.data.byteLength;\n else\n return 6;\n },\n}\n\nfunction SpiceMsgChannels(a, at)\n{\n this.num_of_channels = 0;\n this.channels = [];\n if (a !== undefined)\n this.from_buffer(a, at);\n}\n\nSpiceMsgChannels.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var i;\n var dv = new SpiceDataView(a);\n this.num_of_channels = dv.getUint32(at, true); at += 4;\n for (i = 0; i < this.num_of_channels; i++)\n {\n var chan = new SpiceChannelId();\n at = chan.from_dv(dv, at, a);\n this.channels.push(chan);\n }\n },\n}\n\nfunction SpiceMsgMainInit(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgMainInit.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.session_id = dv.getUint32(at, true); at += 4;\n this.display_channels_hint = dv.getUint32(at, true); at += 4;\n this.supported_mouse_modes = dv.getUint32(at, true); at += 4;\n this.current_mouse_mode = dv.getUint32(at, true); at += 4;\n this.agent_connected = dv.getUint32(at, true); at += 4;\n this.agent_tokens = dv.getUint32(at, true); at += 4;\n this.multi_media_time = dv.getUint32(at, true); at += 4;\n this.ram_hint = dv.getUint32(at, true); at += 4;\n },\n}\n\nfunction SpiceMsgMainMouseMode(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgMainMouseMode.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.supported_modes = dv.getUint16(at, true); at += 2;\n this.current_mode = dv.getUint16(at, true); at += 2;\n },\n}\n\nfunction SpiceMsgMainAgentData(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgMainAgentData.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.protocol = dv.getUint32(at, true); at += 4;\n this.type = dv.getUint32(at, true); at += 4;\n this.opaque = dv.getUint64(at, true); at += 8;\n this.size = dv.getUint32(at, true); at += 4;\n if (a.byteLength > at)\n {\n this.data = a.slice(at);\n at += this.data.byteLength;\n }\n }\n}\n\nfunction SpiceMsgMainAgentTokens(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgMainAgentTokens.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.num_tokens = dv.getUint32(at, true); at += 4;\n },\n}\n\nfunction SpiceMsgSetAck(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgSetAck.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.generation = dv.getUint32(at, true); at += 4;\n this.window = dv.getUint32(at, true); at += 4;\n },\n}\n\nfunction SpiceMsgcAckSync(ack)\n{\n this.generation = ack.generation;\n}\n\nSpiceMsgcAckSync.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.generation, true); at += 4;\n },\n buffer_size: function()\n {\n return 4;\n }\n}\n\nfunction SpiceMsgcMainMouseModeRequest(mode)\n{\n this.mode = mode;\n}\n\nSpiceMsgcMainMouseModeRequest.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint16(at, this.mode, true); at += 2;\n },\n buffer_size: function()\n {\n return 2;\n }\n}\n\nfunction SpiceMsgcMainAgentStart(num_tokens)\n{\n this.num_tokens = num_tokens;\n}\n\nSpiceMsgcMainAgentStart.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.num_tokens, true); at += 4;\n },\n buffer_size: function()\n {\n return 4;\n }\n}\n\nfunction SpiceMsgcMainAgentData(type, data)\n{\n this.protocol = VD_AGENT_PROTOCOL;\n this.type = type;\n this.opaque = 0;\n this.size = data.buffer_size();\n this.data = data;\n}\n\nSpiceMsgcMainAgentData.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.protocol, true); at += 4;\n dv.setUint32(at, this.type, true); at += 4;\n dv.setUint64(at, this.opaque, true); at += 8;\n dv.setUint32(at, this.size, true); at += 4;\n this.data.to_buffer(a, at);\n },\n buffer_size: function()\n {\n return 4 + 4 + 8 + 4 + this.data.buffer_size();\n }\n}\n\nfunction VDAgentAnnounceCapabilities(request, caps)\n{\n if (caps)\n {\n this.request = request;\n this.caps = caps;\n }\n else\n this.from_buffer(request);\n}\n\nVDAgentAnnounceCapabilities.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.request, true); at += 4;\n dv.setUint32(at, this.caps, true); at += 4;\n },\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.request = dv.getUint32(at, true); at += 4;\n this.caps = dv.getUint32(at, true); at += 4;\n return at;\n },\n buffer_size: function()\n {\n return 8;\n }\n}\n\nfunction VDAgentMonitorsConfig(flags, width, height, depth, x, y)\n{\n this.num_mon = 1;\n this.flags = flags;\n this.width = width;\n this.height = height;\n this.depth = depth;\n this.x = x;\n this.y = y;\n}\n\nVDAgentMonitorsConfig.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.num_mon, true); at += 4;\n dv.setUint32(at, this.flags, true); at += 4;\n dv.setUint32(at, this.height, true); at += 4;\n dv.setUint32(at, this.width, true); at += 4;\n dv.setUint32(at, this.depth, true); at += 4;\n dv.setUint32(at, this.x, true); at += 4;\n dv.setUint32(at, this.y, true); at += 4;\n },\n buffer_size: function()\n {\n return 28;\n }\n}\n\nfunction VDAgentFileXferStatusMessage(data, result)\n{\n if (result)\n {\n this.id = data;\n this.result = result;\n }\n else\n this.from_buffer(data);\n}\n\nVDAgentFileXferStatusMessage.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.id, true); at += 4;\n dv.setUint32(at, this.result, true); at += 4;\n },\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.id = dv.getUint32(at, true); at += 4;\n this.result = dv.getUint32(at, true); at += 4;\n return at;\n },\n buffer_size: function()\n {\n return 8;\n }\n}\n\nfunction VDAgentFileXferStartMessage(id, name, size)\n{\n this.id = id;\n this.string = \"[vdagent-file-xfer]\\n\"+\"name=\"+name+\"\\nsize=\"+size+\"\\n\";\n}\n\nVDAgentFileXferStartMessage.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.id, true); at += 4;\n for (var i = 0; i < this.string.length; i++, at++)\n dv.setUint8(at, this.string.charCodeAt(i));\n },\n buffer_size: function()\n {\n return 4 + this.string.length + 1;\n }\n}\n\nfunction VDAgentFileXferDataMessage(id, size, data)\n{\n this.id = id;\n this.size = size;\n this.data = data;\n}\n\nVDAgentFileXferDataMessage.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.id, true); at += 4;\n dv.setUint64(at, this.size, true); at += 8;\n if (this.data && this.data.byteLength > 0)\n {\n var u8arr = new Uint8Array(this.data);\n for (var i = 0; i < u8arr.length; i++, at++)\n dv.setUint8(at, u8arr[i]);\n }\n },\n buffer_size: function()\n {\n return 12 + this.size;\n }\n}\n\nfunction SpiceMsgNotify(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgNotify.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var i;\n var dv = new SpiceDataView(a);\n this.time_stamp = dv.getUint64(at, true); at += 8;\n this.severity = dv.getUint32(at, true); at += 4;\n this.visibility = dv.getUint32(at, true); at += 4;\n this.what = dv.getUint32(at, true); at += 4;\n this.message_len = dv.getUint32(at, true); at += 4;\n this.message = \"\";\n for (i = 0; i < this.message_len; i++)\n {\n var c = dv.getUint8(at, true); at++;\n this.message += String.fromCharCode(c);\n }\n },\n}\n\nfunction SpiceMsgcDisplayInit()\n{\n this.pixmap_cache_id = 1;\n this.glz_dictionary_id = 0;\n this.pixmap_cache_size = 10 * 1024 * 1024;\n this.glz_dictionary_window_size = 0;\n}\n\nSpiceMsgcDisplayInit.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint8(at, this.pixmap_cache_id, true); at++;\n dv.setUint64(at, this.pixmap_cache_size, true); at += 8;\n dv.setUint8(at, this.glz_dictionary_id, true); at++;\n dv.setUint32(at, this.glz_dictionary_window_size, true); at += 4;\n },\n buffer_size: function()\n {\n return 14;\n }\n}\n\nfunction SpiceMsgDisplayBase()\n{\n}\n\nSpiceMsgDisplayBase.prototype =\n{\n from_dv : function(dv, at, mb)\n {\n this.surface_id = dv.getUint32(at, true); at += 4;\n this.box = new SpiceRect;\n at = this.box.from_dv(dv, at, mb);\n this.clip = new SpiceClip;\n return this.clip.from_dv(dv, at, mb);\n },\n}\n\nfunction SpiceMsgDisplayDrawCopy(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayDrawCopy.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.base = new SpiceMsgDisplayBase;\n at = this.base.from_dv(dv, at, a);\n this.data = new SpiceCopy;\n return this.data.from_dv(dv, at, a);\n },\n}\n\nfunction SpiceMsgDisplayDrawFill(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayDrawFill.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.base = new SpiceMsgDisplayBase;\n at = this.base.from_dv(dv, at, a);\n this.data = new SpiceFill;\n return this.data.from_dv(dv, at, a);\n },\n}\n\nfunction SpiceMsgDisplayCopyBits(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayCopyBits.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.base = new SpiceMsgDisplayBase;\n at = this.base.from_dv(dv, at, a);\n this.src_pos = new SpicePoint;\n return this.src_pos.from_dv(dv, at, a);\n },\n}\n\n\nfunction SpiceMsgSurfaceCreate(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgSurfaceCreate.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.surface = new SpiceSurface;\n return this.surface.from_dv(dv, at, a);\n },\n}\n\nfunction SpiceMsgSurfaceDestroy(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgSurfaceDestroy.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.surface_id = dv.getUint32(at, true); at += 4;\n },\n}\n\nfunction SpiceMsgInputsInit(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgInputsInit.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.keyboard_modifiers = dv.getUint16(at, true); at += 2;\n return at;\n },\n}\n\nfunction SpiceMsgInputsKeyModifiers(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgInputsKeyModifiers.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.keyboard_modifiers = dv.getUint16(at, true); at += 2;\n return at;\n },\n}\n\nfunction SpiceMsgCursorInit(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgCursorInit.prototype =\n{\n from_buffer: function(a, at, mb)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.position = new SpicePoint16;\n at = this.position.from_dv(dv, at, mb);\n this.trail_length = dv.getUint16(at, true); at += 2;\n this.trail_frequency = dv.getUint16(at, true); at += 2;\n this.visible = dv.getUint8(at, true); at ++;\n this.cursor = new SpiceCursor;\n return this.cursor.from_dv(dv, at, a);\n },\n}\n\nfunction SpiceMsgPlaybackData(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgPlaybackData.prototype =\n{\n from_buffer: function(a, at, mb)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.time = dv.getUint32(at, true); at += 4;\n if (a.byteLength > at)\n {\n this.data = a.slice(at);\n at += this.data.byteLength;\n }\n return at;\n },\n}\n\nfunction SpiceMsgPlaybackMode(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgPlaybackMode.prototype =\n{\n from_buffer: function(a, at, mb)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.time = dv.getUint32(at, true); at += 4;\n this.mode = dv.getUint16(at, true); at += 2;\n if (a.byteLength > at)\n {\n this.data = a.slice(at);\n at += this.data.byteLength;\n }\n return at;\n },\n}\n\nfunction SpiceMsgPlaybackStart(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgPlaybackStart.prototype =\n{\n from_buffer: function(a, at, mb)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.channels = dv.getUint32(at, true); at += 4;\n this.format = dv.getUint16(at, true); at += 2;\n this.frequency = dv.getUint32(at, true); at += 4;\n this.time = dv.getUint32(at, true); at += 4;\n return at;\n },\n}\n\n\n\nfunction SpiceMsgCursorSet(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgCursorSet.prototype =\n{\n from_buffer: function(a, at, mb)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.position = new SpicePoint16;\n at = this.position.from_dv(dv, at, mb);\n this.visible = dv.getUint8(at, true); at ++;\n this.cursor = new SpiceCursor;\n return this.cursor.from_dv(dv, at, a);\n },\n}\n\n\nfunction SpiceMsgcMousePosition(sc, e)\n{\n // FIXME - figure out how to correctly compute display_id\n this.display_id = 0;\n this.buttons_state = sc.buttons_state;\n if (e)\n {\n var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;\n\n this.x = e.clientX - sc.display.surfaces[sc.display.primary_surface].canvas.offsetLeft + scrollLeft;\n this.y = e.clientY - sc.display.surfaces[sc.display.primary_surface].canvas.offsetTop + scrollTop;\n sc.mousex = this.x;\n sc.mousey = this.y; \n }\n else\n {\n this.x = this.y = this.buttons_state = 0;\n }\n}\n\nSpiceMsgcMousePosition.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.x, true); at += 4;\n dv.setUint32(at, this.y, true); at += 4;\n dv.setUint16(at, this.buttons_state, true); at += 2;\n dv.setUint8(at, this.display_id, true); at += 1;\n return at;\n },\n buffer_size: function()\n {\n return 11;\n }\n}\n\nfunction SpiceMsgcMouseMotion(sc, e)\n{\n // FIXME - figure out how to correctly compute display_id\n this.display_id = 0;\n this.buttons_state = sc.buttons_state;\n if (e)\n {\n this.x = e.clientX - sc.display.surfaces[sc.display.primary_surface].canvas.offsetLeft;\n this.y = e.clientY - sc.display.surfaces[sc.display.primary_surface].canvas.offsetTop;\n\n if (sc.mousex !== undefined)\n {\n this.x -= sc.mousex;\n this.y -= sc.mousey;\n }\n sc.mousex = e.clientX - sc.display.surfaces[sc.display.primary_surface].canvas.offsetLeft;\n sc.mousey = e.clientY - sc.display.surfaces[sc.display.primary_surface].canvas.offsetTop;\n }\n else\n {\n this.x = this.y = this.buttons_state = 0;\n }\n}\n\n/* Use the same functions as for MousePosition */\nSpiceMsgcMouseMotion.prototype.to_buffer = SpiceMsgcMousePosition.prototype.to_buffer;\nSpiceMsgcMouseMotion.prototype.buffer_size = SpiceMsgcMousePosition.prototype.buffer_size;\n\nfunction SpiceMsgcMousePress(sc, e)\n{\n if (e)\n {\n this.button = e.button + 1;\n this.buttons_state = 1 << e.button;\n sc.buttons_state = this.buttons_state;\n }\n else\n {\n this.button = SPICE_MOUSE_BUTTON_LEFT;\n this.buttons_state = SPICE_MOUSE_BUTTON_MASK_LEFT;\n }\n}\n\nSpiceMsgcMousePress.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint8(at, this.button, true); at ++;\n dv.setUint16(at, this.buttons_state, true); at += 2;\n return at;\n },\n buffer_size: function()\n {\n return 3;\n }\n}\n\nfunction SpiceMsgcMouseRelease(sc, e)\n{\n if (e)\n {\n this.button = e.button + 1;\n this.buttons_state = 0;\n sc.buttons_state = this.buttons_state;\n }\n else\n {\n this.button = SPICE_MOUSE_BUTTON_LEFT;\n this.buttons_state = 0;\n }\n}\n\n/* Use the same functions as for MousePress */\nSpiceMsgcMouseRelease.prototype.to_buffer = SpiceMsgcMousePress.prototype.to_buffer;\nSpiceMsgcMouseRelease.prototype.buffer_size = SpiceMsgcMousePress.prototype.buffer_size;\n\n\nfunction SpiceMsgcKeyDown(e)\n{\n if (e)\n {\n this.code = keycode_to_start_scan(e.keyCode);\n }\n else\n {\n this.code = 0;\n }\n}\n\nSpiceMsgcKeyDown.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint32(at, this.code, true); at += 4;\n return at;\n },\n buffer_size: function()\n {\n return 4;\n }\n}\n\nfunction SpiceMsgcKeyUp(e)\n{\n if (e)\n {\n this.code = keycode_to_end_scan(e.keyCode);\n }\n else\n {\n this.code = 0;\n }\n}\n\n/* Use the same functions as for KeyDown */\nSpiceMsgcKeyUp.prototype.to_buffer = SpiceMsgcKeyDown.prototype.to_buffer;\nSpiceMsgcKeyUp.prototype.buffer_size = SpiceMsgcKeyDown.prototype.buffer_size;\n\nfunction SpiceMsgDisplayStreamCreate(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamCreate.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.surface_id = dv.getUint32(at, true); at += 4;\n this.id = dv.getUint32(at, true); at += 4;\n this.flags = dv.getUint8(at, true); at += 1;\n this.codec_type = dv.getUint8(at, true); at += 1;\n this.stamp = dv.getUint64(at, true); at += 8;\n this.stream_width = dv.getUint32(at, true); at += 4;\n this.stream_height = dv.getUint32(at, true); at += 4;\n this.src_width = dv.getUint32(at, true); at += 4;\n this.src_height = dv.getUint32(at, true); at += 4;\n\n this.dest = new SpiceRect;\n at = this.dest.from_dv(dv, at, a);\n this.clip = new SpiceClip;\n this.clip.from_dv(dv, at, a);\n },\n}\n\nfunction SpiceStreamDataHeader(a, at)\n{\n}\n\nSpiceStreamDataHeader.prototype =\n{\n from_dv : function(dv, at, mb)\n {\n this.id = dv.getUint32(at, true); at += 4;\n this.multi_media_time = dv.getUint32(at, true); at += 4;\n return at;\n },\n}\n\nfunction SpiceMsgDisplayStreamData(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamData.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.base = new SpiceStreamDataHeader;\n at = this.base.from_dv(dv, at, a);\n this.data_size = dv.getUint32(at, true); at += 4;\n this.data = dv.u8.subarray(at, at + this.data_size);\n },\n}\n\nfunction SpiceMsgDisplayStreamClip(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamClip.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.id = dv.getUint32(at, true); at += 4;\n this.clip = new SpiceClip;\n this.clip.from_dv(dv, at, a);\n },\n}\n\nfunction SpiceMsgDisplayStreamDestroy(a, at)\n{\n this.from_buffer(a, at);\n}\n\nSpiceMsgDisplayStreamDestroy.prototype =\n{\n from_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.id = dv.getUint32(at, true); at += 4;\n },\n}\n\nfunction SpiceMsgDisplayInvalList(a, at)\n{\n this.count = 0;\n this.resources = [];\n this.from_buffer(a,at);\n}\n\nSpiceMsgDisplayInvalList.prototype =\n{\n from_buffer: function (a, at)\n {\n var i;\n at = at || 0;\n var dv = new SpiceDataView(a);\n this.count = dv.getUint16(at, true); at += 2;\n for (i = 0; i < this.count; i++)\n {\n this.resources[i] = {};\n this.resources[i].type = dv.getUint8(at, true); at++;\n this.resources[i].id = dv.getUint64(at, true); at += 8;\n }\n },\n}\n;\ndefine(\"spice-spicemsg\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*--------------------------------------------------------------------------------------\n** SpiceWireReader\n** This class will receive messages from a WebSocket and relay it to a given\n** callback. It will optionally save and pass along a header, useful in processing\n** the mini message format.\n**--------------------------------------------------------------------------------------*/\nfunction SpiceWireReader(sc, callback)\n{\n this.sc = sc;\n this.callback = callback;\n this.needed = 0;\n\n this.buffers = [];\n\n this.sc.ws.wire_reader = this;\n this.sc.ws.binaryType = \"arraybuffer\";\n this.sc.ws.addEventListener('message', wire_blob_catcher);\n}\n\nSpiceWireReader.prototype =\n{\n\n /*------------------------------------------------------------------------\n ** Process messages coming in from our WebSocket\n **----------------------------------------------------------------------*/\n inbound: function (mb)\n {\n var at;\n\n /* Just buffer if we don't need anything yet */\n if (this.needed == 0)\n {\n this.buffers.push(mb);\n return;\n }\n\n /* Optimization - if we have just one inbound block, and it's\n suitable for our needs, just use it. */\n if (this.buffers.length == 0 && mb.byteLength >= this.needed)\n {\n if (mb.byteLength > this.needed)\n {\n this.buffers.push(mb.slice(this.needed));\n mb = mb.slice(0, this.needed);\n }\n this.callback.call(this.sc, mb,\n this.saved_msg_header || undefined);\n }\n else\n {\n this.buffers.push(mb);\n }\n\n\n /* If we have fragments that add up to what we need, combine them */\n /* FIXME - it would be faster to revise the processing code to handle\n ** multiple fragments directly. Essentially, we should be\n ** able to do this without any slice() or combine_array_buffers() calls */\n while (this.buffers.length > 1 && this.buffers[0].byteLength < this.needed)\n {\n var mb1 = this.buffers.shift();\n var mb2 = this.buffers.shift();\n\n this.buffers.unshift(combine_array_buffers(mb1, mb2));\n }\n\n\n while (this.buffers.length > 0 && this.buffers[0].byteLength >= this.needed)\n {\n mb = this.buffers.shift();\n if (mb.byteLength > this.needed)\n {\n this.buffers.unshift(mb.slice(this.needed));\n mb = mb.slice(0, this.needed);\n }\n this.callback.call(this.sc, mb,\n this.saved_msg_header || undefined);\n }\n \n },\n\n request: function(n)\n {\n this.needed = n;\n },\n\n save_header: function(h)\n {\n this.saved_msg_header = h;\n },\n\n clear_header: function()\n {\n this.saved_msg_header = undefined;\n },\n}\n\nfunction wire_blob_catcher(e)\n{\n DEBUG > 1 && console.log(\">> WebSockets.onmessage\");\n DEBUG > 1 && console.log(\"id \" + this.wire_reader.sc.connection_id +\"; type \" + this.wire_reader.sc.type);\n SpiceWireReader.prototype.inbound.call(this.wire_reader, e.data);\n}\n;\ndefine(\"spice-wire\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n\n/*----------------------------------------------------------------------------\n** FIXME: putImageData does not support Alpha blending\n** or compositing. So if we have data in an ImageData\n** format, we have to draw it onto a context,\n** and then use drawImage to put it onto the target,\n** as drawImage does alpha.\n**--------------------------------------------------------------------------*/\nfunction putImageDataWithAlpha(context, d, x, y)\n{\n var c = document.createElement(\"canvas\");\n var t = c.getContext(\"2d\");\n c.setAttribute('width', d.width);\n c.setAttribute('height', d.height);\n t.putImageData(d, 0, 0);\n context.drawImage(c, x, y, d.width, d.height);\n}\n\n/*----------------------------------------------------------------------------\n** FIXME: Spice will send an image with '0' alpha when it is intended to\n** go on a surface w/no alpha. So in that case, we have to strip\n** out the alpha. The test case for this was flux box; in a Xspice\n** server, right click on the desktop to get the menu; the top bar\n** doesn't paint/highlight correctly w/out this change.\n**--------------------------------------------------------------------------*/\nfunction stripAlpha(d)\n{\n var i;\n for (i = 0; i < (d.width * d.height * 4); i += 4)\n d.data[i + 3] = 255;\n}\n\n/*----------------------------------------------------------------------------\n** SpiceDisplayConn\n** Drive the Spice Display Channel\n**--------------------------------------------------------------------------*/\nfunction SpiceDisplayConn()\n{\n SpiceConn.apply(this, arguments);\n}\n\nSpiceDisplayConn.prototype = Object.create(SpiceConn.prototype);\nSpiceDisplayConn.prototype.process_channel_message = function(msg)\n{\n if (msg.type == SPICE_MSG_DISPLAY_MARK)\n {\n // FIXME - DISPLAY_MARK not implemented (may be hard or impossible)\n this.known_unimplemented(msg.type, \"Display Mark\");\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_RESET)\n {\n DEBUG > 2 && console.log(\"Display reset\");\n this.surfaces[this.primary_surface].canvas.context.restore();\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_DRAW_COPY)\n {\n var draw_copy = new SpiceMsgDisplayDrawCopy(msg.data);\n\n DEBUG > 1 && this.log_draw(\"DrawCopy\", draw_copy);\n\n if (! draw_copy.base.box.is_same_size(draw_copy.data.src_area))\n this.log_warn(\"FIXME: DrawCopy src_area is a different size than base.box; we do not handle that yet.\");\n if (draw_copy.base.clip.type != SPICE_CLIP_TYPE_NONE)\n this.log_warn(\"FIXME: DrawCopy we don't handle clipping yet\");\n if (draw_copy.data.rop_descriptor != SPICE_ROPD_OP_PUT)\n this.log_warn(\"FIXME: DrawCopy we don't handle ropd type: \" + draw_copy.data.rop_descriptor);\n if (draw_copy.data.mask.flags)\n this.log_warn(\"FIXME: DrawCopy we don't handle mask flag: \" + draw_copy.data.mask.flags);\n if (draw_copy.data.mask.bitmap)\n this.log_warn(\"FIXME: DrawCopy we don't handle mask\");\n\n if (draw_copy.data && draw_copy.data.src_bitmap)\n {\n if (draw_copy.data.src_bitmap.descriptor.flags &&\n draw_copy.data.src_bitmap.descriptor.flags != SPICE_IMAGE_FLAGS_CACHE_ME &&\n draw_copy.data.src_bitmap.descriptor.flags != SPICE_IMAGE_FLAGS_HIGH_BITS_SET)\n {\n this.log_warn(\"FIXME: DrawCopy unhandled image flags: \" + draw_copy.data.src_bitmap.descriptor.flags);\n DEBUG <= 1 && this.log_draw(\"DrawCopy\", draw_copy);\n }\n\n if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_QUIC)\n {\n var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n if (! draw_copy.data.src_bitmap.quic)\n {\n this.log_warn(\"FIXME: DrawCopy could not handle this QUIC file.\");\n return false;\n }\n var source_img = convert_spice_quic_to_web(canvas.context,\n draw_copy.data.src_bitmap.quic);\n\n return this.draw_copy_helper(\n { base: draw_copy.base,\n src_area: draw_copy.data.src_area,\n image_data: source_img,\n tag: \"copyquic.\" + draw_copy.data.src_bitmap.quic.type,\n has_alpha: (draw_copy.data.src_bitmap.quic.type == QUIC_IMAGE_TYPE_RGBA ? true : false) ,\n descriptor : draw_copy.data.src_bitmap.descriptor\n });\n }\n else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_FROM_CACHE ||\n draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS)\n {\n if (! this.cache || ! this.cache[draw_copy.data.src_bitmap.descriptor.id])\n {\n this.log_warn(\"FIXME: DrawCopy did not find image id \" + draw_copy.data.src_bitmap.descriptor.id + \" in cache.\");\n return false;\n }\n\n return this.draw_copy_helper(\n { base: draw_copy.base,\n src_area: draw_copy.data.src_area,\n image_data: this.cache[draw_copy.data.src_bitmap.descriptor.id],\n tag: \"copycache.\" + draw_copy.data.src_bitmap.descriptor.id, \n has_alpha: true, /* FIXME - may want this to be false... */\n descriptor : draw_copy.data.src_bitmap.descriptor\n });\n\n /* FIXME - LOSSLESS CACHE ramifications not understood or handled */\n }\n else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_SURFACE)\n {\n var source_context = this.surfaces[draw_copy.data.src_bitmap.surface_id].canvas.context;\n var target_context = this.surfaces[draw_copy.base.surface_id].canvas.context;\n\n var source_img = source_context.getImageData(\n draw_copy.data.src_area.left, draw_copy.data.src_area.top,\n draw_copy.data.src_area.right - draw_copy.data.src_area.left,\n draw_copy.data.src_area.bottom - draw_copy.data.src_area.top);\n var computed_src_area = new SpiceRect;\n computed_src_area.top = computed_src_area.left = 0;\n computed_src_area.right = source_img.width;\n computed_src_area.bottom = source_img.height;\n\n /* FIXME - there is a potential optimization here.\n That is, if the surface is from 0,0, and\n both surfaces are alpha surfaces, you should\n be able to just do a drawImage, which should\n save time. */\n\n return this.draw_copy_helper(\n { base: draw_copy.base,\n src_area: computed_src_area,\n image_data: source_img,\n tag: \"copysurf.\" + draw_copy.data.src_bitmap.surface_id,\n has_alpha: this.surfaces[draw_copy.data.src_bitmap.surface_id].format == SPICE_SURFACE_FMT_32_xRGB ? false : true,\n descriptor : draw_copy.data.src_bitmap.descriptor\n });\n\n return true;\n }\n else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_JPEG)\n {\n if (! draw_copy.data.src_bitmap.jpeg)\n {\n this.log_warn(\"FIXME: DrawCopy could not handle this JPEG file.\");\n return false;\n }\n\n // FIXME - how lame is this. Be have it in binary format, and we have\n // to put it into string to get it back into jpeg. Blech.\n var tmpstr = \"data:image/jpeg,\";\n var img = new Image;\n var i;\n var qdv = new Uint8Array(draw_copy.data.src_bitmap.jpeg.data);\n for (i = 0; i < qdv.length; i++)\n {\n tmpstr += '%';\n if (qdv[i] < 16)\n tmpstr += '0';\n tmpstr += qdv[i].toString(16);\n }\n\n img.o = \n { base: draw_copy.base,\n tag: \"jpeg.\" + draw_copy.data.src_bitmap.surface_id,\n descriptor : draw_copy.data.src_bitmap.descriptor,\n sc : this,\n };\n img.onload = handle_draw_jpeg_onload;\n img.src = tmpstr;\n\n return true;\n }\n else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_JPEG_ALPHA)\n {\n if (! draw_copy.data.src_bitmap.jpeg_alpha)\n {\n this.log_warn(\"FIXME: DrawCopy could not handle this JPEG ALPHA file.\");\n return false;\n }\n\n // FIXME - how lame is this. Be have it in binary format, and we have\n // to put it into string to get it back into jpeg. Blech.\n var tmpstr = \"data:image/jpeg,\";\n var img = new Image;\n var i;\n var qdv = new Uint8Array(draw_copy.data.src_bitmap.jpeg_alpha.data);\n for (i = 0; i < qdv.length; i++)\n {\n tmpstr += '%';\n if (qdv[i] < 16)\n tmpstr += '0';\n tmpstr += qdv[i].toString(16);\n }\n\n img.o = \n { base: draw_copy.base,\n tag: \"jpeg.\" + draw_copy.data.src_bitmap.surface_id,\n descriptor : draw_copy.data.src_bitmap.descriptor,\n sc : this,\n };\n\n if (this.surfaces[draw_copy.base.surface_id].format == SPICE_SURFACE_FMT_32_ARGB)\n {\n\n var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n img.alpha_img = convert_spice_lz_to_web(canvas.context,\n draw_copy.data.src_bitmap.jpeg_alpha.alpha);\n }\n img.onload = handle_draw_jpeg_onload;\n img.src = tmpstr;\n\n return true;\n }\n else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_BITMAP)\n {\n var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n if (! draw_copy.data.src_bitmap.bitmap)\n {\n this.log_err(\"null bitmap\");\n return false;\n }\n\n var source_img = convert_spice_bitmap_to_web(canvas.context,\n draw_copy.data.src_bitmap.bitmap);\n if (! source_img)\n {\n this.log_warn(\"FIXME: Unable to interpret bitmap of format: \" + \n draw_copy.data.src_bitmap.bitmap.format);\n return false;\n }\n\n return this.draw_copy_helper(\n { base: draw_copy.base,\n src_area: draw_copy.data.src_area,\n image_data: source_img,\n tag: \"bitmap.\" + draw_copy.data.src_bitmap.bitmap.format,\n has_alpha: draw_copy.data.src_bitmap.bitmap == SPICE_BITMAP_FMT_32BIT ? false : true,\n descriptor : draw_copy.data.src_bitmap.descriptor\n });\n }\n else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_LZ_RGB)\n {\n var canvas = this.surfaces[draw_copy.base.surface_id].canvas;\n if (! draw_copy.data.src_bitmap.lz_rgb)\n {\n this.log_err(\"null lz_rgb \");\n return false;\n }\n\n if (draw_copy.data.src_bitmap.lz_rgb.top_down != 1)\n this.log_warn(\"FIXME: Implement non top down support for lz_rgb\");\n\n var source_img = convert_spice_lz_to_web(canvas.context,\n draw_copy.data.src_bitmap.lz_rgb);\n if (! source_img)\n {\n this.log_warn(\"FIXME: Unable to interpret bitmap of type: \" + \n draw_copy.data.src_bitmap.lz_rgb.type);\n return false;\n }\n\n return this.draw_copy_helper(\n { base: draw_copy.base,\n src_area: draw_copy.data.src_area,\n image_data: source_img,\n tag: \"lz_rgb.\" + draw_copy.data.src_bitmap.lz_rgb.type,\n has_alpha: draw_copy.data.src_bitmap.lz_rgb.type == LZ_IMAGE_TYPE_RGBA ? true : false ,\n descriptor : draw_copy.data.src_bitmap.descriptor\n });\n }\n else\n {\n this.log_warn(\"FIXME: DrawCopy unhandled image type: \" + draw_copy.data.src_bitmap.descriptor.type);\n this.log_draw(\"DrawCopy\", draw_copy);\n return false;\n }\n }\n\n this.log_warn(\"FIXME: DrawCopy no src_bitmap.\");\n return false;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_DRAW_FILL)\n {\n var draw_fill = new SpiceMsgDisplayDrawFill(msg.data);\n\n DEBUG > 1 && this.log_draw(\"DrawFill\", draw_fill);\n\n if (draw_fill.data.rop_descriptor != SPICE_ROPD_OP_PUT)\n this.log_warn(\"FIXME: DrawFill we don't handle ropd type: \" + draw_fill.data.rop_descriptor);\n if (draw_fill.data.mask.flags)\n this.log_warn(\"FIXME: DrawFill we don't handle mask flag: \" + draw_fill.data.mask.flags);\n if (draw_fill.data.mask.bitmap)\n this.log_warn(\"FIXME: DrawFill we don't handle mask\");\n\n if (draw_fill.data.brush.type == SPICE_BRUSH_TYPE_SOLID)\n {\n // FIXME - do brushes ever have alpha?\n var color = draw_fill.data.brush.color & 0xffffff;\n var color_str = \"rgb(\" + (color >> 16) + \", \" + ((color >> 8) & 0xff) + \", \" + (color & 0xff) + \")\";\n this.surfaces[draw_fill.base.surface_id].canvas.context.fillStyle = color_str;\n\n this.surfaces[draw_fill.base.surface_id].canvas.context.fillRect(\n draw_fill.base.box.left, draw_fill.base.box.top,\n draw_fill.base.box.right - draw_fill.base.box.left,\n draw_fill.base.box.bottom - draw_fill.base.box.top);\n\n if (DUMP_DRAWS && this.parent.dump_id)\n {\n var debug_canvas = document.createElement(\"canvas\");\n debug_canvas.setAttribute('width', this.surfaces[draw_fill.base.surface_id].canvas.width);\n debug_canvas.setAttribute('height', this.surfaces[draw_fill.base.surface_id].canvas.height);\n debug_canvas.setAttribute('id', \"fillbrush.\" + draw_fill.base.surface_id + \".\" + this.surfaces[draw_fill.base.surface_id].draw_count);\n debug_canvas.getContext(\"2d\").fillStyle = color_str;\n debug_canvas.getContext(\"2d\").fillRect(\n draw_fill.base.box.left, draw_fill.base.box.top,\n draw_fill.base.box.right - draw_fill.base.box.left,\n draw_fill.base.box.bottom - draw_fill.base.box.top);\n document.getElementById(this.parent.dump_id).appendChild(debug_canvas);\n }\n \n this.surfaces[draw_fill.base.surface_id].draw_count++;\n\n }\n else\n {\n this.log_warn(\"FIXME: DrawFill can't handle brush type: \" + draw_fill.data.brush.type);\n }\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_COPY_BITS)\n {\n var copy_bits = new SpiceMsgDisplayCopyBits(msg.data);\n\n DEBUG > 1 && this.log_draw(\"CopyBits\", copy_bits);\n\n var source_canvas = this.surfaces[copy_bits.base.surface_id].canvas;\n var source_context = source_canvas.context;\n\n var width = source_canvas.width - copy_bits.src_pos.x;\n var height = source_canvas.height - copy_bits.src_pos.y;\n if (width > (copy_bits.base.box.right - copy_bits.base.box.left))\n width = copy_bits.base.box.right - copy_bits.base.box.left;\n if (height > (copy_bits.base.box.bottom - copy_bits.base.box.top))\n height = copy_bits.base.box.bottom - copy_bits.base.box.top;\n\n var source_img = source_context.getImageData(\n copy_bits.src_pos.x, copy_bits.src_pos.y, width, height);\n //source_context.putImageData(source_img, copy_bits.base.box.left, copy_bits.base.box.top);\n putImageDataWithAlpha(source_context, source_img, copy_bits.base.box.left, copy_bits.base.box.top);\n\n if (DUMP_DRAWS && this.parent.dump_id)\n {\n var debug_canvas = document.createElement(\"canvas\");\n debug_canvas.setAttribute('width', width);\n debug_canvas.setAttribute('height', height);\n debug_canvas.setAttribute('id', \"copybits\" + copy_bits.base.surface_id + \".\" + this.surfaces[copy_bits.base.surface_id].draw_count);\n debug_canvas.getContext(\"2d\").putImageData(source_img, 0, 0);\n document.getElementById(this.parent.dump_id).appendChild(debug_canvas);\n }\n\n\n this.surfaces[copy_bits.base.surface_id].draw_count++;\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES)\n {\n this.known_unimplemented(msg.type, \"Inval All Palettes\");\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_SURFACE_CREATE)\n {\n if (! (\"surfaces\" in this))\n this.surfaces = [];\n\n var m = new SpiceMsgSurfaceCreate(msg.data);\n DEBUG > 1 && console.log(this.type + \": MsgSurfaceCreate id \" + m.surface.surface_id \n + \"; \" + m.surface.width + \"x\" + m.surface.height\n + \"; format \" + m.surface.format \n + \"; flags \" + m.surface.flags);\n if (m.surface.format != SPICE_SURFACE_FMT_32_xRGB &&\n m.surface.format != SPICE_SURFACE_FMT_32_ARGB)\n {\n this.log_warn(\"FIXME: cannot handle surface format \" + m.surface.format + \" yet.\");\n return false;\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.setAttribute('width', m.surface.width);\n canvas.setAttribute('height', m.surface.height);\n canvas.setAttribute('id', \"spice_surface_\" + m.surface.surface_id);\n canvas.setAttribute('tabindex', m.surface.surface_id);\n canvas.context = canvas.getContext(\"2d\");\n\n if (DUMP_CANVASES && this.parent.dump_id)\n document.getElementById(this.parent.dump_id).appendChild(canvas);\n\n m.surface.canvas = canvas;\n m.surface.draw_count = 0;\n this.surfaces[m.surface.surface_id] = m.surface;\n\n if (m.surface.flags & SPICE_SURFACE_FLAGS_PRIMARY)\n {\n this.primary_surface = m.surface.surface_id;\n\n /* This .save() is done entirely to enable SPICE_MSG_DISPLAY_RESET */\n canvas.context.save();\n document.getElementById(this.parent.screen_id).appendChild(canvas);\n\n /* We're going to leave width dynamic, but correctly set the height */\n document.getElementById(this.parent.screen_id).style.height = m.surface.height + \"px\";\n this.hook_events();\n }\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_SURFACE_DESTROY)\n {\n var m = new SpiceMsgSurfaceDestroy(msg.data);\n DEBUG > 1 && console.log(this.type + \": MsgSurfaceDestroy id \" + m.surface_id);\n this.delete_surface(m.surface_id);\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_STREAM_CREATE)\n {\n var m = new SpiceMsgDisplayStreamCreate(msg.data);\n DEBUG > 1 && console.log(this.type + \": MsgStreamCreate id\" + m.id);\n if (!this.streams)\n this.streams = new Array();\n if (this.streams[m.id])\n console.log(\"Stream already exists\");\n else\n this.streams[m.id] = m;\n if (m.codec_type != SPICE_VIDEO_CODEC_TYPE_MJPEG)\n console.log(\"Unhandled stream codec: \"+m.codec_type);\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_STREAM_DATA)\n {\n var m = new SpiceMsgDisplayStreamData(msg.data);\n if (!this.streams[m.base.id])\n {\n console.log(\"no stream for data\");\n return false;\n }\n if (this.streams[m.base.id].codec_type === SPICE_VIDEO_CODEC_TYPE_MJPEG)\n {\n var tmpstr = \"data:image/jpeg,\";\n var img = new Image;\n var i;\n for (i = 0; i < m.data.length; i++)\n {\n tmpstr += '%';\n if (m.data[i] < 16)\n tmpstr += '0';\n tmpstr += m.data[i].toString(16);\n }\n var strm_base = new SpiceMsgDisplayBase();\n strm_base.surface_id = this.streams[m.base.id].surface_id;\n strm_base.box = this.streams[m.base.id].dest;\n strm_base.clip = this.streams[m.base.id].clip;\n img.o =\n { base: strm_base,\n tag: \"mjpeg.\" + m.base.id,\n descriptor: null,\n sc : this,\n };\n img.onload = handle_draw_jpeg_onload;\n img.src = tmpstr;\n }\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_STREAM_CLIP)\n {\n var m = new SpiceMsgDisplayStreamClip(msg.data);\n DEBUG > 1 && console.log(this.type + \": MsgStreamClip id\" + m.id);\n this.streams[m.id].clip = m.clip;\n return true;\n }\n\n if (msg.type == SPICE_MSG_DISPLAY_STREAM_DESTROY)\n {\n var m = new SpiceMsgDisplayStreamDestroy(msg.data);\n DEBUG > 1 && console.log(this.type + \": MsgStreamDestroy id\" + m.id);\n this.streams[m.id] = undefined;\n return true;\n }\n if (msg.type == SPICE_MSG_DISPLAY_INVAL_LIST)\n {\n var m = new SpiceMsgDisplayInvalList(msg.data);\n var i;\n DEBUG > 1 && console.log(this.type + \": MsgInvalList \" + m.count + \" items\");\n for (i = 0; i < m.count; i++)\n if (this.cache[m.resources[i].id] != undefined)\n delete this.cache[m.resources[i].id];\n return true;\n }\n\n return false;\n}\n\nSpiceDisplayConn.prototype.delete_surface = function(surface_id)\n{\n var canvas = document.getElementById(\"spice_surface_\" + surface_id);\n if (DUMP_CANVASES && this.parent.dump_id)\n document.getElementById(this.parent.dump_id).removeChild(canvas);\n if (this.primary_surface == surface_id)\n {\n this.unhook_events();\n this.primary_surface = undefined;\n document.getElementById(this.parent.screen_id).removeChild(canvas);\n }\n\n delete this.surfaces[surface_id];\n}\n\n\nSpiceDisplayConn.prototype.draw_copy_helper = function(o)\n{\n\n var canvas = this.surfaces[o.base.surface_id].canvas;\n if (o.has_alpha)\n {\n /* FIXME - This is based on trial + error, not a serious thoughtful\n analysis of what Spice requires. See display.js for more. */\n if (this.surfaces[o.base.surface_id].format == SPICE_SURFACE_FMT_32_xRGB)\n {\n stripAlpha(o.image_data);\n canvas.context.putImageData(o.image_data, o.base.box.left, o.base.box.top);\n }\n else\n putImageDataWithAlpha(canvas.context, o.image_data,\n o.base.box.left, o.base.box.top);\n }\n else\n canvas.context.putImageData(o.image_data, o.base.box.left, o.base.box.top);\n\n if (o.src_area.left > 0 || o.src_area.top > 0)\n {\n this.log_warn(\"FIXME: DrawCopy not shifting draw copies just yet...\");\n }\n\n if (o.descriptor && (o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))\n {\n if (! (\"cache\" in this))\n this.cache = {};\n this.cache[o.descriptor.id] = o.image_data;\n }\n\n if (DUMP_DRAWS && this.parent.dump_id)\n {\n var debug_canvas = document.createElement(\"canvas\");\n debug_canvas.setAttribute('width', o.image_data.width);\n debug_canvas.setAttribute('height', o.image_data.height);\n debug_canvas.setAttribute('id', o.tag + \".\" +\n this.surfaces[o.base.surface_id].draw_count + \".\" +\n o.base.surface_id + \"@\" + o.base.box.left + \"x\" + o.base.box.top);\n debug_canvas.getContext(\"2d\").putImageData(o.image_data, 0, 0);\n document.getElementById(this.parent.dump_id).appendChild(debug_canvas);\n }\n\n this.surfaces[o.base.surface_id].draw_count++;\n\n return true;\n}\n\n\nSpiceDisplayConn.prototype.log_draw = function(prefix, draw)\n{\n var str = prefix + \".\" + draw.base.surface_id + \".\" + this.surfaces[draw.base.surface_id].draw_count + \": \";\n str += \"base.box \" + draw.base.box.left + \", \" + draw.base.box.top + \" to \" + \n draw.base.box.right + \", \" + draw.base.box.bottom;\n str += \"; clip.type \" + draw.base.clip.type;\n\n if (draw.data)\n {\n if (draw.data.src_area)\n str += \"; src_area \" + draw.data.src_area.left + \", \" + draw.data.src_area.top + \" to \"\n + draw.data.src_area.right + \", \" + draw.data.src_area.bottom;\n\n if (draw.data.src_bitmap && draw.data.src_bitmap != null)\n {\n str += \"; src_bitmap id: \" + draw.data.src_bitmap.descriptor.id;\n str += \"; src_bitmap width \" + draw.data.src_bitmap.descriptor.width + \", height \" + draw.data.src_bitmap.descriptor.height;\n str += \"; src_bitmap type \" + draw.data.src_bitmap.descriptor.type + \", flags \" + draw.data.src_bitmap.descriptor.flags;\n if (draw.data.src_bitmap.surface_id !== undefined)\n str += \"; src_bitmap surface_id \" + draw.data.src_bitmap.surface_id;\n if (draw.data.src_bitmap.quic)\n str += \"; QUIC type \" + draw.data.src_bitmap.quic.type + \n \"; width \" + draw.data.src_bitmap.quic.width + \n \"; height \" + draw.data.src_bitmap.quic.height ;\n if (draw.data.src_bitmap.lz_rgb)\n str += \"; LZ_RGB length \" + draw.data.src_bitmap.lz_rgb.length +\n \"; magic \" + draw.data.src_bitmap.lz_rgb.magic + \n \"; version 0x\" + draw.data.src_bitmap.lz_rgb.version.toString(16) +\n \"; type \" + draw.data.src_bitmap.lz_rgb.type +\n \"; width \" + draw.data.src_bitmap.lz_rgb.width +\n \"; height \" + draw.data.src_bitmap.lz_rgb.height +\n \"; stride \" + draw.data.src_bitmap.lz_rgb.stride +\n \"; top down \" + draw.data.src_bitmap.lz_rgb.top_down;\n }\n else\n str += \"; src_bitmap is null\";\n\n if (draw.data.brush)\n {\n if (draw.data.brush.type == SPICE_BRUSH_TYPE_SOLID)\n str += \"; brush.color 0x\" + draw.data.brush.color.toString(16);\n if (draw.data.brush.type == SPICE_BRUSH_TYPE_PATTERN)\n {\n str += \"; brush.pat \";\n if (draw.data.brush.pattern.pat != null)\n str += \"[SpiceImage]\";\n else\n str += \"[null]\";\n str += \" at \" + draw.data.brush.pattern.pos.x + \", \" + draw.data.brush.pattern.pos.y;\n }\n }\n\n str += \"; rop_descriptor \" + draw.data.rop_descriptor;\n if (draw.data.scale_mode !== undefined)\n str += \"; scale_mode \" + draw.data.scale_mode;\n str += \"; mask.flags \" + draw.data.mask.flags;\n str += \"; mask.pos \" + draw.data.mask.pos.x + \", \" + draw.data.mask.pos.y;\n if (draw.data.mask.bitmap != null)\n {\n str += \"; mask.bitmap width \" + draw.data.mask.bitmap.descriptor.width + \", height \" + draw.data.mask.bitmap.descriptor.height;\n str += \"; mask.bitmap type \" + draw.data.mask.bitmap.descriptor.type + \", flags \" + draw.data.mask.bitmap.descriptor.flags;\n }\n else\n str += \"; mask.bitmap is null\";\n }\n\n console.log(str);\n}\n\nSpiceDisplayConn.prototype.hook_events = function()\n{\n if (this.primary_surface !== undefined)\n {\n var canvas = this.surfaces[this.primary_surface].canvas;\n canvas.sc = this.parent;\n canvas.addEventListener('mousemove', handle_mousemove);\n canvas.addEventListener('mousedown', handle_mousedown);\n canvas.addEventListener('contextmenu', handle_contextmenu);\n canvas.addEventListener('mouseup', handle_mouseup);\n canvas.addEventListener('keydown', handle_keydown);\n canvas.addEventListener('keyup', handle_keyup);\n canvas.addEventListener('mouseout', handle_mouseout);\n canvas.addEventListener('mouseover', handle_mouseover);\n canvas.addEventListener('wheel', handle_mousewheel);\n canvas.focus();\n }\n}\n\nSpiceDisplayConn.prototype.unhook_events = function()\n{\n if (this.primary_surface !== undefined)\n {\n var canvas = this.surfaces[this.primary_surface].canvas;\n canvas.removeEventListener('mousemove', handle_mousemove);\n canvas.removeEventListener('mousedown', handle_mousedown);\n canvas.removeEventListener('contextmenu', handle_contextmenu);\n canvas.removeEventListener('mouseup', handle_mouseup);\n canvas.removeEventListener('keydown', handle_keydown);\n canvas.removeEventListener('keyup', handle_keyup);\n canvas.removeEventListener('mouseout', handle_mouseout);\n canvas.removeEventListener('mouseover', handle_mouseover);\n canvas.removeEventListener('wheel', handle_mousewheel);\n }\n}\n\n\nSpiceDisplayConn.prototype.destroy_surfaces = function()\n{\n for (var s in this.surfaces)\n {\n this.delete_surface(this.surfaces[s].surface_id);\n }\n\n this.surfaces = undefined;\n}\n\n\nfunction handle_mouseover(e)\n{\n this.focus();\n}\n\nfunction handle_mouseout(e)\n{\n if (this.sc && this.sc.cursor && this.sc.cursor.spice_simulated_cursor)\n this.sc.cursor.spice_simulated_cursor.style.display = 'none';\n this.blur();\n}\n\nfunction handle_draw_jpeg_onload()\n{\n var temp_canvas = null;\n var context;\n\n /*------------------------------------------------------------\n ** FIXME:\n ** The helper should be extended to be able to handle actual HtmlImageElements\n ** ...and the cache should be modified to do so as well\n **----------------------------------------------------------*/\n if (this.o.sc.surfaces[this.o.base.surface_id] === undefined)\n {\n // This can happen; if the jpeg image loads after our surface\n // has been destroyed (e.g. open a menu, close it quickly),\n // we'll find we have no surface. \n DEBUG > 2 && this.o.sc.log_info(\"Discarding jpeg; presumed lost surface \" + this.o.base.surface_id);\n temp_canvas = document.createElement(\"canvas\");\n temp_canvas.setAttribute('width', this.o.base.box.right);\n temp_canvas.setAttribute('height', this.o.base.box.bottom);\n context = temp_canvas.getContext(\"2d\");\n }\n else\n context = this.o.sc.surfaces[this.o.base.surface_id].canvas.context;\n\n if (this.alpha_img)\n {\n var c = document.createElement(\"canvas\");\n var t = c.getContext(\"2d\");\n c.setAttribute('width', this.alpha_img.width);\n c.setAttribute('height', this.alpha_img.height);\n t.putImageData(this.alpha_img, 0, 0);\n t.globalCompositeOperation = 'source-in';\n t.drawImage(this, 0, 0);\n \n context.drawImage(c, this.o.base.box.left, this.o.base.box.top);\n\n if (this.o.descriptor && \n (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))\n {\n if (! (\"cache\" in this.o.sc))\n this.o.sc.cache = {};\n\n this.o.sc.cache[this.o.descriptor.id] = \n t.getImageData(0, 0,\n this.alpha_img.width,\n this.alpha_img.height);\n }\n }\n else\n {\n context.drawImage(this, this.o.base.box.left, this.o.base.box.top);\n\n // Give the Garbage collector a clue to recycle this; avoids\n // fairly massive memory leaks during video playback\n this.src = null;\n\n if (this.o.descriptor && \n (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))\n {\n if (! (\"cache\" in this.o.sc))\n this.o.sc.cache = {};\n\n this.o.sc.cache[this.o.descriptor.id] = \n context.getImageData(this.o.base.box.left, this.o.base.box.top,\n this.o.base.box.right - this.o.base.box.left,\n this.o.base.box.bottom - this.o.base.box.top);\n }\n }\n\n if (temp_canvas == null)\n {\n if (DUMP_DRAWS && this.o.sc.parent.dump_id)\n {\n var debug_canvas = document.createElement(\"canvas\");\n debug_canvas.setAttribute('id', this.o.tag + \".\" +\n this.o.sc.surfaces[this.o.base.surface_id].draw_count + \".\" +\n this.o.base.surface_id + \"@\" + this.o.base.box.left + \"x\" + this.o.base.box.top);\n debug_canvas.getContext(\"2d\").drawImage(this, 0, 0);\n document.getElementById(this.o.sc.parent.dump_id).appendChild(debug_canvas);\n }\n\n this.o.sc.surfaces[this.o.base.surface_id].draw_count++;\n }\n}\n;\ndefine(\"spice-display\", [\"spice-spiceconn\"], function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n ** Modifier Keystates\n ** These need to be tracked because focus in and out can get the keyboard\n ** out of sync.\n **------------------------------------------------------------------------*/\nvar Shift_state = -1;\nvar Ctrl_state = -1;\nvar Alt_state = -1;\nvar Meta_state = -1;\n\n/*----------------------------------------------------------------------------\n** SpiceInputsConn\n** Drive the Spice Inputs channel (e.g. mouse + keyboard)\n**--------------------------------------------------------------------------*/\nfunction SpiceInputsConn()\n{\n SpiceConn.apply(this, arguments);\n\n this.mousex = undefined;\n this.mousey = undefined;\n this.button_state = 0;\n this.waiting_for_ack = 0;\n}\n\nSpiceInputsConn.prototype = Object.create(SpiceConn.prototype);\nSpiceInputsConn.prototype.process_channel_message = function(msg)\n{\n if (msg.type == SPICE_MSG_INPUTS_INIT)\n {\n var inputs_init = new SpiceMsgInputsInit(msg.data);\n this.keyboard_modifiers = inputs_init.keyboard_modifiers;\n DEBUG > 1 && console.log(\"MsgInputsInit - modifier \" + this.keyboard_modifiers);\n // FIXME - We don't do anything with the keyboard modifiers...\n return true;\n }\n if (msg.type == SPICE_MSG_INPUTS_KEY_MODIFIERS)\n {\n var key = new SpiceMsgInputsKeyModifiers(msg.data);\n this.keyboard_modifiers = key.keyboard_modifiers;\n DEBUG > 1 && console.log(\"MsgInputsKeyModifiers - modifier \" + this.keyboard_modifiers);\n // FIXME - We don't do anything with the keyboard modifiers...\n return true;\n }\n if (msg.type == SPICE_MSG_INPUTS_MOUSE_MOTION_ACK)\n {\n DEBUG > 1 && console.log(\"mouse motion ack\");\n this.waiting_for_ack -= SPICE_INPUT_MOTION_ACK_BUNCH;\n return true;\n }\n return false;\n}\n\n\n\nfunction handle_mousemove(e)\n{\n var msg = new SpiceMiniData();\n var move;\n if (this.sc.mouse_mode == SPICE_MOUSE_MODE_CLIENT)\n {\n move = new SpiceMsgcMousePosition(this.sc, e)\n msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_POSITION, move);\n }\n else\n {\n move = new SpiceMsgcMouseMotion(this.sc, e)\n msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_MOTION, move);\n }\n if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n {\n if (this.sc.inputs.waiting_for_ack < (2 * SPICE_INPUT_MOTION_ACK_BUNCH))\n {\n this.sc.inputs.send_msg(msg);\n this.sc.inputs.waiting_for_ack++;\n }\n else\n {\n DEBUG > 0 && this.sc.log_info(\"Discarding mouse motion\");\n }\n }\n\n if (this.sc && this.sc.cursor && this.sc.cursor.spice_simulated_cursor)\n {\n this.sc.cursor.spice_simulated_cursor.style.display = 'block';\n this.sc.cursor.spice_simulated_cursor.style.left = e.pageX - this.sc.cursor.spice_simulated_cursor.spice_hot_x + 'px';\n this.sc.cursor.spice_simulated_cursor.style.top = e.pageY - this.sc.cursor.spice_simulated_cursor.spice_hot_y + 'px';\n e.preventDefault();\n }\n\n}\n\nfunction handle_mousedown(e)\n{\n var press = new SpiceMsgcMousePress(this.sc, e)\n var msg = new SpiceMiniData();\n msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS, press);\n if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n this.sc.inputs.send_msg(msg);\n\n e.preventDefault();\n}\n\nfunction handle_contextmenu(e)\n{\n e.preventDefault();\n return false;\n}\n\nfunction handle_mouseup(e)\n{\n var release = new SpiceMsgcMouseRelease(this.sc, e)\n var msg = new SpiceMiniData();\n msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);\n if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n this.sc.inputs.send_msg(msg);\n\n e.preventDefault();\n}\n\nfunction handle_mousewheel(e)\n{\n var press = new SpiceMsgcMousePress;\n var release = new SpiceMsgcMouseRelease;\n if (e.deltaY < 0)\n press.button = release.button = SPICE_MOUSE_BUTTON_UP;\n else\n press.button = release.button = SPICE_MOUSE_BUTTON_DOWN;\n press.buttons_state = 0;\n release.buttons_state = 0;\n\n var msg = new SpiceMiniData();\n msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS, press);\n if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n this.sc.inputs.send_msg(msg);\n\n msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);\n if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n this.sc.inputs.send_msg(msg);\n\n e.preventDefault();\n}\n\nfunction handle_keydown(e)\n{\n var key = new SpiceMsgcKeyDown(e)\n var msg = new SpiceMiniData();\n check_and_update_modifiers(e, key.code, this.sc);\n msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);\n if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n this.sc.inputs.send_msg(msg);\n\n e.preventDefault();\n}\n\nfunction handle_keyup(e)\n{\n var key = new SpiceMsgcKeyUp(e)\n var msg = new SpiceMiniData();\n check_and_update_modifiers(e, key.code, this.sc);\n msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);\n if (this.sc && this.sc.inputs && this.sc.inputs.state === \"ready\")\n this.sc.inputs.send_msg(msg);\n\n e.preventDefault();\n}\n\nfunction sendCtrlAltDel()\n{\n if (sc && sc.inputs && sc.inputs.state === \"ready\"){\n var key = new SpiceMsgcKeyDown();\n var msg = new SpiceMiniData();\n\n update_modifier(true, KEY_LCtrl, sc);\n update_modifier(true, KEY_Alt, sc);\n\n key.code = KEY_KP_Decimal;\n msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);\n sc.inputs.send_msg(msg);\n msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);\n sc.inputs.send_msg(msg);\n\n if(Ctrl_state == false) update_modifier(false, KEY_LCtrl, sc);\n if(Alt_state == false) update_modifier(false, KEY_Alt, sc);\n }\n}\n\nfunction update_modifier(state, code, sc)\n{\n var msg = new SpiceMiniData();\n if (!state)\n {\n var key = new SpiceMsgcKeyUp()\n key.code =(0x80|code);\n msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);\n }\n else\n {\n var key = new SpiceMsgcKeyDown()\n key.code = code;\n msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);\n }\n\n sc.inputs.send_msg(msg);\n}\n\nfunction check_and_update_modifiers(e, code, sc)\n{\n if (Shift_state === -1)\n {\n Shift_state = e.shiftKey;\n Ctrl_state = e.ctrlKey;\n Alt_state = e.altKey;\n Meta_state = e.metaKey;\n }\n\n if (code === KEY_ShiftL)\n Shift_state = true;\n else if (code === KEY_Alt)\n Alt_state = true;\n else if (code === KEY_LCtrl)\n Ctrl_state = true;\n else if (code === 0xE0B5)\n Meta_state = true;\n else if (code === (0x80|KEY_ShiftL))\n Shift_state = false;\n else if (code === (0x80|KEY_Alt))\n Alt_state = false;\n else if (code === (0x80|KEY_LCtrl))\n Ctrl_state = false;\n else if (code === (0x80|0xE0B5))\n Meta_state = false;\n\n if (sc && sc.inputs && sc.inputs.state === \"ready\")\n {\n if (Shift_state != e.shiftKey)\n {\n console.log(\"Shift state out of sync\");\n update_modifier(e.shiftKey, KEY_ShiftL, sc);\n Shift_state = e.shiftKey;\n }\n if (Alt_state != e.altKey)\n {\n console.log(\"Alt state out of sync\");\n update_modifier(e.altKey, KEY_Alt, sc);\n Alt_state = e.altKey;\n }\n if (Ctrl_state != e.ctrlKey)\n {\n console.log(\"Ctrl state out of sync\");\n update_modifier(e.ctrlKey, KEY_LCtrl, sc);\n Ctrl_state = e.ctrlKey;\n }\n if (Meta_state != e.metaKey)\n {\n console.log(\"Meta state out of sync\");\n update_modifier(e.metaKey, 0xE0B5, sc);\n Meta_state = e.metaKey;\n }\n }\n}\n;\ndefine(\"spice-inputs\", [\"spice-spiceconn\"], function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2014 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n\n/*----------------------------------------------------------------------------\n** EBML identifiers\n**--------------------------------------------------------------------------*/\nvar EBML_HEADER = [ 0x1a, 0x45, 0xdf, 0xa3 ];\nvar EBML_HEADER_VERSION = [ 0x42, 0x86 ];\nvar EBML_HEADER_READ_VERSION = [ 0x42, 0xf7 ];\nvar EBML_HEADER_MAX_ID_LENGTH = [ 0x42, 0xf2 ];\nvar EBML_HEADER_MAX_SIZE_LENGTH = [ 0x42, 0xf3 ];\nvar EBML_HEADER_DOC_TYPE = [ 0x42, 0x82 ];\nvar EBML_HEADER_DOC_TYPE_VERSION = [ 0x42, 0x87 ];\nvar EBML_HEADER_DOC_TYPE_READ_VERSION = [ 0x42, 0x85 ];\n\nvar WEBM_SEGMENT_HEADER = [ 0x18, 0x53, 0x80, 0x67 ];\nvar WEBM_SEGMENT_INFORMATION = [ 0x15, 0x49, 0xA9, 0x66 ];\n\nvar WEBM_TIMECODE_SCALE = [ 0x2A, 0xD7, 0xB1 ];\nvar WEBM_MUXING_APP = [ 0x4D, 0x80 ];\nvar WEBM_WRITING_APP = [ 0x57, 0x41 ];\n\nvar WEBM_SEEK_HEAD = [ 0x11, 0x4D, 0x9B, 0x74 ];\nvar WEBM_SEEK = [ 0x4D, 0xBB ];\nvar WEBM_SEEK_ID = [ 0x53, 0xAB ];\nvar WEBM_SEEK_POSITION = [ 0x53, 0xAC ];\n\nvar WEBM_TRACKS = [ 0x16, 0x54, 0xAE, 0x6B ];\nvar WEBM_TRACK_ENTRY = [ 0xAE ];\nvar WEBM_TRACK_NUMBER = [ 0xD7 ];\nvar WEBM_TRACK_UID = [ 0x73, 0xC5 ];\nvar WEBM_TRACK_TYPE = [ 0x83 ];\nvar WEBM_FLAG_ENABLED = [ 0xB9 ];\nvar WEBM_FLAG_DEFAULT = [ 0x88 ];\nvar WEBM_FLAG_FORCED = [ 0x55, 0xAA ];\nvar WEBM_FLAG_LACING = [ 0x9C ];\nvar WEBM_MIN_CACHE = [ 0x6D, 0xE7 ];\n\nvar WEBM_MAX_BLOCK_ADDITION_ID = [ 0x55, 0xEE ];\nvar WEBM_CODEC_DECODE_ALL = [ 0xAA ];\nvar WEBM_SEEK_PRE_ROLL = [ 0x56, 0xBB ];\nvar WEBM_CODEC_DELAY = [ 0x56, 0xAA ];\nvar WEBM_CODEC_PRIVATE = [ 0x63, 0xA2 ];\nvar WEBM_CODEC_ID = [ 0x86 ];\n\nvar WEBM_AUDIO = [ 0xE1 ] ;\nvar WEBM_SAMPLING_FREQUENCY = [ 0xB5 ] ;\nvar WEBM_CHANNELS = [ 0x9F ] ;\n\nvar WEBM_CLUSTER = [ 0x1F, 0x43, 0xB6, 0x75 ];\nvar WEBM_TIME_CODE = [ 0xE7 ] ;\nvar WEBM_SIMPLE_BLOCK = [ 0xA3 ] ;\n\n/*----------------------------------------------------------------------------\n** Various OPUS / Webm constants\n**--------------------------------------------------------------------------*/\nvar CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME = 1 << 7;\n\nvar OPUS_FREQUENCY = 48000;\nvar OPUS_CHANNELS = 2;\n\nvar SPICE_PLAYBACK_CODEC = 'audio/webm; codecs=\"opus\"';\nvar MAX_CLUSTER_TIME = 1000;\n\nvar GAP_DETECTION_THRESHOLD = 50;\n\n/*----------------------------------------------------------------------------\n** EBML utility functions\n** These classes can create the binary representation of a webm file\n**--------------------------------------------------------------------------*/\nfunction EBML_write_u1_data_len(len, dv, at)\n{\n var b = 0x80 | len;\n dv.setUint8(at, b);\n return at + 1;\n}\n\nfunction EBML_write_u8_value(id, val, dv, at)\n{\n at = EBML_write_array(id, dv, at);\n at = EBML_write_u1_data_len(1, dv, at);\n dv.setUint8(at, val);\n return at + 1;\n}\n\nfunction EBML_write_u32_value(id, val, dv, at)\n{\n at = EBML_write_array(id, dv, at);\n at = EBML_write_u1_data_len(4, dv, at);\n dv.setUint32(at, val);\n return at + 4;\n}\n\nfunction EBML_write_u16_value(id, val, dv, at)\n{\n at = EBML_write_array(id, dv, at);\n at = EBML_write_u1_data_len(2, dv, at);\n dv.setUint16(at, val);\n return at + 2;\n}\n\nfunction EBML_write_float_value(id, val, dv, at)\n{\n at = EBML_write_array(id, dv, at);\n at = EBML_write_u1_data_len(4, dv, at);\n dv.setFloat32(at, val);\n return at + 4;\n}\n\n\n\nfunction EBML_write_u64_data_len(len, dv, at)\n{\n /* Javascript doesn't do 64 bit ints, so this cheats and\n just has a max of 32 bits. Fine for our purposes */\n dv.setUint8(at++, 0x01);\n dv.setUint8(at++, 0x00);\n dv.setUint8(at++, 0x00);\n dv.setUint8(at++, 0x00);\n var val = len & 0xFFFFFFFF;\n for (var shift = 24; shift >= 0; shift -= 8)\n dv.setUint8(at++, val >> shift);\n return at;\n}\n\nfunction EBML_write_array(arr, dv, at)\n{\n for (var i = 0; i < arr.length; i++)\n dv.setUint8(at + i, arr[i]);\n return at + arr.length;\n}\n\nfunction EBML_write_string(str, dv, at)\n{\n for (var i = 0; i < str.length; i++)\n dv.setUint8(at + i, str.charCodeAt(i));\n return at + str.length;\n}\n\nfunction EBML_write_data(id, data, dv, at)\n{\n at = EBML_write_array(id, dv, at);\n if (data.length < 127)\n at = EBML_write_u1_data_len(data.length, dv, at);\n else\n at = EBML_write_u64_data_len(data.length, dv, at);\n if ((typeof data) == \"string\")\n at = EBML_write_string(data, dv, at);\n else\n at = EBML_write_array(data, dv, at);\n return at;\n}\n\n/*----------------------------------------------------------------------------\n** Webm objects\n** These classes can create the binary representation of a webm file\n**--------------------------------------------------------------------------*/\nfunction EBMLHeader()\n{\n this.id = EBML_HEADER;\n this.Version = 1;\n this.ReadVersion = 1;\n this.MaxIDLength = 4;\n this.MaxSizeLength = 8;\n this.DocType = \"webm\";\n this.DocTypeVersion = 2; /* Not well specified by the WebM guys, but functionally required for Firefox */\n this.DocTypeReadVersion = 2;\n}\n\nEBMLHeader.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u64_data_len(0x1f, dv, at);\n at = EBML_write_u8_value(EBML_HEADER_VERSION, this.Version, dv, at);\n at = EBML_write_u8_value(EBML_HEADER_READ_VERSION, this.ReadVersion, dv, at);\n at = EBML_write_u8_value(EBML_HEADER_MAX_ID_LENGTH, this.MaxIDLength, dv, at);\n at = EBML_write_u8_value(EBML_HEADER_MAX_SIZE_LENGTH, this.MaxSizeLength, dv, at);\n at = EBML_write_data(EBML_HEADER_DOC_TYPE, this.DocType, dv, at);\n at = EBML_write_u8_value(EBML_HEADER_DOC_TYPE_VERSION, this.DocTypeVersion, dv, at);\n at = EBML_write_u8_value(EBML_HEADER_DOC_TYPE_READ_VERSION, this.DocTypeReadVersion, dv, at);\n\n return at;\n },\n buffer_size: function()\n {\n return 0x1f + 8 + this.id.length;\n },\n}\n\nfunction webm_Segment()\n{\n this.id = WEBM_SEGMENT_HEADER;\n}\n\nwebm_Segment.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n\n at = EBML_write_array(this.id, dv, at);\n dv.setUint8(at++, 0xff);\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 1;\n },\n}\n\nfunction webm_SegmentInformation()\n{\n this.id = WEBM_SEGMENT_INFORMATION;\n this.timecode_scale = 1000000; /* 1 ms */\n this.muxing_app = \"spice\";\n this.writing_app = \"spice-html5\";\n\n}\n\nwebm_SegmentInformation.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n at = EBML_write_u32_value(WEBM_TIMECODE_SCALE, this.timecode_scale, dv, at);\n at = EBML_write_data(WEBM_MUXING_APP, this.muxing_app, dv, at);\n at = EBML_write_data(WEBM_WRITING_APP, this.writing_app, dv, at);\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 8 +\n WEBM_TIMECODE_SCALE.length + 1 + 4 +\n WEBM_MUXING_APP.length + 1 + this.muxing_app.length +\n WEBM_WRITING_APP.length + 1 + this.writing_app.length;\n },\n}\n\nfunction webm_Audio(frequency)\n{\n this.id = WEBM_AUDIO;\n this.sampling_frequency = frequency;\n this.channels = OPUS_CHANNELS;\n}\n\nwebm_Audio.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n at = EBML_write_u8_value(WEBM_CHANNELS, this.channels, dv, at);\n at = EBML_write_float_value(WEBM_SAMPLING_FREQUENCY, this.sampling_frequency, dv, at);\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 8 +\n WEBM_SAMPLING_FREQUENCY.length + 1 + 4 +\n WEBM_CHANNELS.length + 1 + 1;\n },\n}\n\n\n/* ---------------------------\n SeekHead not currently used. Hopefully not needed.\n*/\nfunction webm_Seek(seekid, pos)\n{\n this.id = WEBM_SEEK;\n this.pos = pos;\n this.seekid = seekid;\n}\n\nwebm_Seek.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u1_data_len(this.buffer_size() - 1 - this.id.length, dv, at);\n\n at = EBML_write_data(WEBM_SEEK_ID, this.seekid, dv, at)\n at = EBML_write_u16_value(WEBM_SEEK_POSITION, this.pos, dv, at)\n\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 1 +\n WEBM_SEEK_ID.length + 1 + this.seekid.length +\n WEBM_SEEK_POSITION.length + 1 + 2;\n },\n}\nfunction webm_SeekHead(info_pos, track_pos)\n{\n this.id = WEBM_SEEK_HEAD;\n this.info = new webm_Seek(WEBM_SEGMENT_INFORMATION, info_pos);\n this.track = new webm_Seek(WEBM_TRACKS, track_pos);\n}\n\nwebm_SeekHead.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n\n at = this.info.to_buffer(a, at);\n at = this.track.to_buffer(a, at);\n\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 8 +\n this.info.buffer_size() +\n this.track.buffer_size();\n },\n}\n\n/* -------------------------------\n End of Seek Head\n*/\n\nfunction webm_TrackEntry()\n{\n this.id = WEBM_TRACK_ENTRY;\n this.number = 1;\n this.uid = 1;\n this.type = 2; // Audio\n this.flag_enabled = 1;\n this.flag_default = 1;\n this.flag_forced = 1;\n this.flag_lacing = 0;\n this.min_cache = 0; // fixme - check\n this.max_block_addition_id = 0;\n this.codec_decode_all = 0; // fixme - check\n this.seek_pre_roll = 0; // 80000000; // fixme - check\n this.codec_delay = 80000000; // Must match codec_private.preskip\n this.codec_id = \"A_OPUS\";\n this.audio = new webm_Audio(OPUS_FREQUENCY);\n\n // See: http://tools.ietf.org/html/draft-terriberry-oggopus-01\n this.codec_private = [ 0x4f, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64, // OpusHead\n 0x01, // Version\n OPUS_CHANNELS,\n 0x00, 0x0F, // Preskip - 3840 samples - should be 8ms at 48kHz\n 0x80, 0xbb, 0x00, 0x00, // 48000\n 0x00, 0x00, // Output gain\n 0x00 // Channel mapping family\n ];\n}\n\nwebm_TrackEntry.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n at = EBML_write_u8_value(WEBM_TRACK_NUMBER, this.number, dv, at);\n at = EBML_write_u8_value(WEBM_TRACK_UID, this.uid, dv, at);\n at = EBML_write_u8_value(WEBM_FLAG_ENABLED, this.flag_enabled, dv, at);\n at = EBML_write_u8_value(WEBM_FLAG_DEFAULT, this.flag_default, dv, at);\n at = EBML_write_u8_value(WEBM_FLAG_FORCED, this.flag_forced, dv, at);\n at = EBML_write_u8_value(WEBM_FLAG_LACING, this.flag_lacing, dv, at);\n at = EBML_write_data(WEBM_CODEC_ID, this.codec_id, dv, at);\n at = EBML_write_u8_value(WEBM_MIN_CACHE, this.min_cache, dv, at);\n at = EBML_write_u8_value(WEBM_MAX_BLOCK_ADDITION_ID, this.max_block_addition_id, dv, at);\n at = EBML_write_u8_value(WEBM_CODEC_DECODE_ALL, this.codec_decode_all, dv, at);\n at = EBML_write_u32_value(WEBM_CODEC_DELAY, this.codec_delay, dv, at);\n at = EBML_write_u32_value(WEBM_SEEK_PRE_ROLL, this.seek_pre_roll, dv, at);\n at = EBML_write_u8_value(WEBM_TRACK_TYPE, this.type, dv, at);\n at = EBML_write_data(WEBM_CODEC_PRIVATE, this.codec_private, dv, at);\n\n at = this.audio.to_buffer(a, at);\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 8 +\n WEBM_TRACK_NUMBER.length + 1 + 1 +\n WEBM_TRACK_UID.length + 1 + 1 +\n WEBM_TRACK_TYPE.length + 1 + 1 +\n WEBM_FLAG_ENABLED.length + 1 + 1 +\n WEBM_FLAG_DEFAULT.length + 1 + 1 +\n WEBM_FLAG_FORCED.length + 1 + 1 +\n WEBM_FLAG_LACING.length + 1 + 1 +\n WEBM_MIN_CACHE.length + 1 + 1 +\n WEBM_MAX_BLOCK_ADDITION_ID.length + 1 + 1 +\n WEBM_CODEC_DECODE_ALL.length + 1 + 1 +\n WEBM_SEEK_PRE_ROLL.length + 1 + 4 +\n WEBM_CODEC_DELAY.length + 1 + 4 +\n WEBM_CODEC_ID.length + this.codec_id.length + 1 +\n WEBM_CODEC_PRIVATE.length + 1 + this.codec_private.length +\n this.audio.buffer_size();\n },\n}\nfunction webm_Tracks(entry)\n{\n this.id = WEBM_TRACKS;\n this.track_entry = entry;\n}\n\nwebm_Tracks.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u64_data_len(this.buffer_size() - 8 - this.id.length, dv, at);\n at = this.track_entry.to_buffer(a, at);\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 8 +\n this.track_entry.buffer_size();\n },\n}\n\nfunction webm_Cluster(timecode, data)\n{\n this.id = WEBM_CLUSTER;\n this.timecode = timecode;\n this.data = data;\n}\n\nwebm_Cluster.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n at = EBML_write_array(this.id, dv, at);\n dv.setUint8(at++, 0xff);\n at = EBML_write_u32_value(WEBM_TIME_CODE, this.timecode, dv, at);\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 1 +\n WEBM_TIME_CODE.length + 1 + 4;\n },\n}\n\nfunction webm_SimpleBlock(timecode, data, keyframe)\n{\n this.id = WEBM_SIMPLE_BLOCK;\n this.timecode = timecode;\n this.data = data;\n this.keyframe = keyframe;\n}\n\nwebm_SimpleBlock.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new DataView(a);\n at = EBML_write_array(this.id, dv, at);\n at = EBML_write_u64_data_len(this.data.byteLength + 4, dv, at);\n at = EBML_write_u1_data_len(1, dv, at); // Track #\n dv.setUint16(at, this.timecode); at += 2; // timecode - relative to cluster\n dv.setUint8(at, this.keyframe ? CLUSTER_SIMPLEBLOCK_FLAG_KEYFRAME : 0); at += 1; // flags\n\n // FIXME - There should be a better way to copy\n var u8 = new Uint8Array(this.data);\n for (var i = 0; i < this.data.byteLength; i++)\n dv.setUint8(at++, u8[i]);\n\n return at;\n },\n buffer_size: function()\n {\n return this.id.length + 8 +\n 1 + 2 + 1 +\n this.data.byteLength;\n },\n}\n\nfunction webm_Header()\n{\n this.ebml = new EBMLHeader;\n this.segment = new webm_Segment;\n this.seek_head = new webm_SeekHead(0, 0);\n\n this.seek_head.info.pos = this.segment.buffer_size() + this.seek_head.buffer_size();\n\n this.info = new webm_SegmentInformation;\n\n this.seek_head.track.pos = this.seek_head.info.pos + this.info.buffer_size();\n\n this.track_entry = new webm_TrackEntry;\n this.tracks = new webm_Tracks(this.track_entry);\n}\n\nwebm_Header.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n at = this.ebml.to_buffer(a, at);\n at = this.segment.to_buffer(a, at);\n at = this.info.to_buffer(a, at);\n at = this.tracks.to_buffer(a, at);\n\n return at;\n },\n buffer_size: function()\n {\n return this.ebml.buffer_size() +\n this.segment.buffer_size() +\n this.info.buffer_size() +\n this.tracks.buffer_size();\n },\n}\n;\ndefine(\"spice-webm\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2014 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** SpicePlaybackConn\n** Drive the Spice Playback channel (sound out)\n**--------------------------------------------------------------------------*/\nfunction SpicePlaybackConn()\n{\n SpiceConn.apply(this, arguments);\n\n this.queue = new Array();\n this.append_okay = false;\n this.start_time = 0;\n this.skip_until = 0;\n this.gap_time = 0;\n}\n\nSpicePlaybackConn.prototype = Object.create(SpiceConn.prototype);\nSpicePlaybackConn.prototype.process_channel_message = function(msg)\n{\n if (!!!window.MediaSource)\n {\n this.log_err('MediaSource API is not available');\n return false;\n }\n\n if (msg.type == SPICE_MSG_PLAYBACK_START)\n {\n var start = new SpiceMsgPlaybackStart(msg.data);\n\n DEBUG > 0 && console.log(\"PlaybackStart; frequency \" + start.frequency);\n\n if (start.frequency != OPUS_FREQUENCY)\n {\n this.log_err('This player cannot handle frequency ' + start.frequency);\n return false;\n }\n\n if (start.channels != OPUS_CHANNELS)\n {\n this.log_err('This player cannot handle ' + start.channels + ' channels');\n return false;\n }\n\n if (start.format != SPICE_AUDIO_FMT_S16)\n {\n this.log_err('This player cannot format ' + start.format);\n return false;\n }\n\n if (! this.source_buffer)\n {\n this.media_source = new MediaSource();\n this.media_source.spiceconn = this;\n\n this.audio = document.createElement(\"audio\");\n this.audio.setAttribute('autoplay', true);\n this.audio.src = window.URL.createObjectURL(this.media_source);\n document.getElementById(this.parent.screen_id).appendChild(this.audio);\n\n this.media_source.addEventListener('sourceopen', handle_source_open, false);\n this.media_source.addEventListener('sourceended', handle_source_ended, false);\n this.media_source.addEventListener('sourceclosed', handle_source_closed, false);\n\n this.bytes_written = 0;\n\n return true;\n }\n }\n\n if (msg.type == SPICE_MSG_PLAYBACK_DATA)\n {\n var data = new SpiceMsgPlaybackData(msg.data);\n\n // If this packet has the same time as the last, just bump up by one.\n if (this.last_data_time && data.time <= this.last_data_time)\n {\n // FIXME - this is arguably wrong. But delaying the transmission was worse,\n // in initial testing. Could use more research.\n DEBUG > 1 && console.log(\"Hacking time of \" + data.time + \" to \" + this.last_data_time + 1);\n data.time = this.last_data_time + 1;\n }\n\n /* Gap detection: If there has been a delay since our last packet, then audio must\n have paused. Handling that gets tricky. In Chrome, you can seek forward,\n but you cannot in Firefox. And seeking forward in Chrome is nice, as it keeps\n Chrome from being overly cautious in it's buffer strategy.\n\n So we do two things. First, we seek forward. Second, we compute how much of a gap\n there would have been, and essentially eliminate it.\n */\n if (this.last_data_time && data.time >= (this.last_data_time + GAP_DETECTION_THRESHOLD))\n {\n this.skip_until = data.time;\n this.gap_time = (data.time - this.start_time) - \n (this.source_buffer.buffered.end(this.source_buffer.buffered.end.length - 1) * 1000.0).toFixed(0);\n }\n\n this.last_data_time = data.time;\n\n\n DEBUG > 1 && console.log(\"PlaybackData; time \" + data.time + \"; length \" + data.data.byteLength);\n\n if (! this.source_buffer)\n return true;\n\n if (this.start_time == 0)\n this.start_playback(data);\n\n else if (data.time - this.cluster_time >= MAX_CLUSTER_TIME || this.skip_until > 0)\n this.new_cluster(data);\n\n else\n this.simple_block(data, false);\n\n if (this.skip_until > 0)\n {\n this.audio.currentTime = (this.skip_until - this.start_time - this.gap_time) / 1000.0;\n this.skip_until = 0;\n }\n\n if (this.audio.paused)\n this.audio.play();\n\n return true;\n }\n\n if (msg.type == SPICE_MSG_PLAYBACK_MODE)\n {\n var mode = new SpiceMsgPlaybackMode(msg.data);\n if (mode.mode != SPICE_AUDIO_DATA_MODE_OPUS)\n {\n this.log_err('This player cannot handle mode ' + mode.mode);\n delete this.source_buffer;\n }\n return true;\n }\n\n if (msg.type == SPICE_MSG_PLAYBACK_STOP)\n {\n return true;\n }\n\n return false;\n}\n\nSpicePlaybackConn.prototype.start_playback = function(data)\n{\n this.start_time = data.time;\n\n var h = new webm_Header();\n\n var mb = new ArrayBuffer(h.buffer_size())\n\n this.bytes_written = h.to_buffer(mb);\n\n this.source_buffer.addEventListener('error', handle_sourcebuffer_error, false);\n this.source_buffer.addEventListener('updateend', handle_append_buffer_done, false);\n playback_append_buffer(this, mb);\n\n this.new_cluster(data);\n}\n\nSpicePlaybackConn.prototype.new_cluster = function(data)\n{\n this.cluster_time = data.time;\n\n var c = new webm_Cluster(data.time - this.start_time - this.gap_time);\n\n var mb = new ArrayBuffer(c.buffer_size());\n this.bytes_written += c.to_buffer(mb);\n\n if (this.append_okay)\n playback_append_buffer(this, mb);\n else\n this.queue.push(mb);\n\n this.simple_block(data, true);\n}\n\nSpicePlaybackConn.prototype.simple_block = function(data, keyframe)\n{\n var sb = new webm_SimpleBlock(data.time - this.cluster_time, data.data, keyframe);\n var mb = new ArrayBuffer(sb.buffer_size());\n\n this.bytes_written += sb.to_buffer(mb);\n\n if (this.append_okay)\n playback_append_buffer(this, mb);\n else\n this.queue.push(mb);\n}\n\nfunction handle_source_open(e)\n{\n var p = this.spiceconn;\n\n if (p.source_buffer)\n return;\n\n p.source_buffer = this.addSourceBuffer(SPICE_PLAYBACK_CODEC);\n if (! p.source_buffer)\n {\n p.log_err('Codec ' + SPICE_PLAYBACK_CODEC + ' not available.');\n return;\n }\n p.source_buffer.spiceconn = p;\n p.source_buffer.mode = \"segments\";\n\n // FIXME - Experimentation with segments and sequences was unsatisfying.\n // Switching to sequence did not solve our gap problem,\n // but the browsers didn't fully support the time seek capability\n // we would expect to gain from 'segments'.\n // Segments worked at the time of this patch, so segments it is for now.\n\n}\n\nfunction handle_source_ended(e)\n{\n var p = this.spiceconn;\n p.log_err('Audio source unexpectedly ended.');\n}\n\nfunction handle_source_closed(e)\n{\n var p = this.spiceconn;\n p.log_err('Audio source unexpectedly closed.');\n}\n\nfunction handle_append_buffer_done(b)\n{\n var p = this.spiceconn;\n if (p.queue.length > 0)\n {\n var mb = p.queue.shift();\n playback_append_buffer(p, mb);\n }\n else\n p.append_okay = true;\n\n}\n\nfunction handle_sourcebuffer_error(e)\n{\n var p = this.spiceconn;\n p.log_err('source_buffer error ' + e.message);\n}\n\nfunction playback_append_buffer(p, b)\n{\n try\n {\n p.source_buffer.appendBuffer(b);\n p.append_okay = false;\n }\n catch (e)\n {\n p.log_err(\"Error invoking appendBuffer: \" + e.message);\n }\n}\n;\ndefine(\"spice-playback\", [\"spice-spiceconn\"], function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n\n/*----------------------------------------------------------------------------\n** SpiceCursorConn\n** Drive the Spice Cursor Channel\n**--------------------------------------------------------------------------*/\nfunction SpiceCursorConn()\n{\n SpiceConn.apply(this, arguments);\n}\n\nSpiceCursorConn.prototype = Object.create(SpiceConn.prototype);\nSpiceCursorConn.prototype.process_channel_message = function(msg)\n{\n if (msg.type == SPICE_MSG_CURSOR_INIT)\n {\n var cursor_init = new SpiceMsgCursorInit(msg.data);\n DEBUG > 1 && console.log(\"SpiceMsgCursorInit\");\n if (this.parent && this.parent.inputs &&\n this.parent.inputs.mouse_mode == SPICE_MOUSE_MODE_SERVER)\n {\n // FIXME - this imagines that the server actually\n // provides the current cursor position,\n // instead of 0,0. As of May 11, 2012,\n // that assumption was false :-(.\n this.parent.inputs.mousex = cursor_init.position.x;\n this.parent.inputs.mousey = cursor_init.position.y;\n }\n // FIXME - We don't handle most of the parameters here...\n return true;\n }\n\n if (msg.type == SPICE_MSG_CURSOR_SET)\n {\n var cursor_set = new SpiceMsgCursorSet(msg.data);\n DEBUG > 1 && console.log(\"SpiceMsgCursorSet\");\n if (cursor_set.flags & SPICE_CURSOR_FLAGS_NONE)\n {\n document.getElementById(this.parent.screen_id).style.cursor = \"none\";\n return true;\n }\n\n if (cursor_set.flags > 0)\n this.log_warn(\"FIXME: No support for cursor flags \" + cursor_set.flags);\n\n if (cursor_set.cursor.header.type != SPICE_CURSOR_TYPE_ALPHA)\n {\n this.log_warn(\"FIXME: No support for cursor type \" + cursor_set.cursor.header.type);\n return false;\n }\n\n this.set_cursor(cursor_set.cursor);\n\n return true;\n }\n\n if (msg.type == SPICE_MSG_CURSOR_HIDE)\n {\n DEBUG > 1 && console.log(\"SpiceMsgCursorHide\");\n document.getElementById(this.parent.screen_id).style.cursor = \"none\";\n return true;\n }\n\n if (msg.type == SPICE_MSG_CURSOR_RESET)\n {\n DEBUG > 1 && console.log(\"SpiceMsgCursorReset\");\n document.getElementById(this.parent.screen_id).style.cursor = \"auto\";\n return true;\n }\n\n if (msg.type == SPICE_MSG_CURSOR_INVAL_ALL)\n {\n DEBUG > 1 && console.log(\"SpiceMsgCursorInvalAll\");\n // FIXME - There may be something useful to do here...\n return true;\n }\n\n return false;\n}\n\nSpiceCursorConn.prototype.set_cursor = function(cursor)\n{\n var pngstr = create_rgba_png(cursor.header.height, cursor.header.width, cursor.data);\n var curstr = 'url(data:image/png,' + pngstr + ') ' + \n cursor.header.hot_spot_x + ' ' + cursor.header.hot_spot_y + \", default\";\n var screen = document.getElementById(this.parent.screen_id);\n screen.style.cursor = 'auto';\n screen.style.cursor = curstr;\n if (window.getComputedStyle(screen, null).cursor == 'auto')\n SpiceSimulateCursor.simulate_cursor(this, cursor, screen, pngstr);\n}\n;\ndefine(\"spice-cursor\", [\"spice-spiceconn\"], function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n}\nif(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n}\nelse if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\ndefine(\"spice-jsbn\", function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// Depends on jsbn.js and rng.js\n\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n\n// convert a (hex) string to a bignum object\nfunction parseBigInt(str,r) {\n return new BigInteger(str,r);\n}\n\nfunction linebrk(s,n) {\n var ret = \"\";\n var i = 0;\n while(i + n < s.length) {\n ret += s.substring(i,i+n) + \"\\n\";\n i += n;\n }\n return ret + s.substring(i,s.length);\n}\n\nfunction byte2Hex(b) {\n if(b < 0x10)\n return \"0\" + b.toString(16);\n else\n return b.toString(16);\n}\n\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s,n) {\n if(n < s.length + 11) { // TODO: fix for utf-8\n alert(\"Message too long for RSA\");\n return null;\n }\n var ba = new Array();\n var i = s.length - 1;\n while(i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if(c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new SecureRandom();\n var x = new Array();\n while(n > 2) { // random non-zero pad\n x[0] = 0;\n while(x[0] == 0) rng.nextBytes(x);\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new BigInteger(ba);\n}\n\n// \"empty\" RSA key constructor\nfunction RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n}\n\n// Set the public key fields N and e from hex strings\nfunction RSASetPublic(N,E) {\n if(N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N,16);\n this.e = parseInt(E,16);\n }\n else\n alert(\"Invalid RSA public key\");\n}\n\n// Perform raw public operation on \"x\": return x^e (mod n)\nfunction RSADoPublic(x) {\n return x.modPowInt(this.e, this.n);\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\nfunction RSAEncrypt(text) {\n var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);\n if(m == null) return null;\n var c = this.doPublic(m);\n if(c == null) return null;\n var h = c.toString(16);\n if((h.length & 1) == 0) return h; else return \"0\" + h;\n}\n\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n//function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n//}\n\n// protected\nRSAKey.prototype.doPublic = RSADoPublic;\n\n// public\nRSAKey.prototype.setPublic = RSASetPublic;\nRSAKey.prototype.encrypt = RSAEncrypt;\n//RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\ndefine(\"spice-rsa\", function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// prng4.js - uses Arcfour as a PRNG\n\nfunction Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = new Array();\n}\n\n// Initialize arcfour context from key, an array of ints, each from [0..255]\nfunction ARC4init(key) {\n var i, j, t;\n for(i = 0; i < 256; ++i)\n this.S[i] = i;\n j = 0;\n for(i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n}\n\nfunction ARC4next() {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n}\n\nArcfour.prototype.init = ARC4init;\nArcfour.prototype.next = ARC4next;\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\ndefine(\"spice-prng4\", function(){});\n\n","// Downloaded from http://www-cs-students.stanford.edu/~tjw/jsbn/ by Jeremy White on 6/1/2012\n\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND, \n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY \n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. \n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\n// For best results, put code like\n// \n// in your main HTML document.\n\nvar rng_state;\nvar rng_pool;\nvar rng_pptr;\n\n// Mix in a 32-bit integer into the pool\nfunction rng_seed_int(x) {\n rng_pool[rng_pptr++] ^= x & 255;\n rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n}\n\n// Mix in the current time (w/milliseconds) into the pool\nfunction rng_seed_time() {\n rng_seed_int(new Date().getTime());\n}\n\n// Initialize the pool with junk if needed.\nif(rng_pool == null) {\n rng_pool = new Array();\n rng_pptr = 0;\n var t;\n if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\" && window.crypto) {\n // Extract entropy (256 bits) from NS4 RNG if available\n var z = window.crypto.random(32);\n for(t = 0; t < z.length; ++t)\n rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n } \n while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n t = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = t >>> 8;\n rng_pool[rng_pptr++] = t & 255;\n }\n rng_pptr = 0;\n rng_seed_time();\n //rng_seed_int(window.screenX);\n //rng_seed_int(window.screenY);\n}\n\nfunction rng_get_byte() {\n if(rng_state == null) {\n rng_seed_time();\n rng_state = prng_newstate();\n rng_state.init(rng_pool);\n for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n rng_pool[rng_pptr] = 0;\n rng_pptr = 0;\n //rng_pool = null;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\n\nfunction rng_get_bytes(ba) {\n var i;\n for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n}\n\nfunction SecureRandom() {}\n\nSecureRandom.prototype.nextBytes = rng_get_bytes;\n\ndefine(\"spice-rng\", function(){});\n\n","/*\r\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\r\n * in FIPS 180-1\r\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\r\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\r\n * Distributed under the BSD License\r\n * See http://pajhome.org.uk/crypt/md5 for details.\r\n */\r\n\r\n /* Downloaded 6/1/2012 from the above address by Jeremy White.\r\n License reproduce here for completeness:\r\n\r\nCopyright (c) 1998 - 2009, Paul Johnston & Contributors\r\nAll rights reserved.\r\n\r\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\r\n\r\nRedistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\r\n\r\nNeither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\r\n\r\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\r\n */\r\n\r\n/*\r\n * Configurable variables. You may need to tweak these to be compatible with\r\n * the server-side, but the defaults work in most cases.\r\n */\r\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\r\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\r\n\r\n/*\r\n * These are the functions you'll usually want to call\r\n * They take string arguments and return either hex or base-64 encoded strings\r\n */\r\nfunction hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); }\r\nfunction b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); }\r\nfunction any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); }\r\nfunction hex_hmac_sha1(k, d)\r\n { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\r\nfunction b64_hmac_sha1(k, d)\r\n { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\r\nfunction any_hmac_sha1(k, d, e)\r\n { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\r\n\r\n/*\r\n * Perform a simple self-test to see if the VM is working\r\n */\r\nfunction sha1_vm_test()\r\n{\r\n return hex_sha1(\"abc\").toLowerCase() == \"a9993e364706816aba3e25717850c26c9cd0d89d\";\r\n}\r\n\r\n/*\r\n * Calculate the SHA1 of a raw string\r\n */\r\nfunction rstr_sha1(s)\r\n{\r\n return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\r\n}\r\n\r\n/*\r\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\r\n */\r\nfunction rstr_hmac_sha1(key, data)\r\n{\r\n var bkey = rstr2binb(key);\r\n if(bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8);\r\n\r\n var ipad = Array(16), opad = Array(16);\r\n for(var i = 0; i < 16; i++)\r\n {\r\n ipad[i] = bkey[i] ^ 0x36363636;\r\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\r\n }\r\n\r\n var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\r\n return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160));\r\n}\r\n\r\n/*\r\n * Convert a raw string to a hex string\r\n */\r\nfunction rstr2hex(input)\r\n{\r\n try { hexcase } catch(e) { hexcase=0; }\r\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\r\n var output = \"\";\r\n var x;\r\n for(var i = 0; i < input.length; i++)\r\n {\r\n x = input.charCodeAt(i);\r\n output += hex_tab.charAt((x >>> 4) & 0x0F)\r\n + hex_tab.charAt( x & 0x0F);\r\n }\r\n return output;\r\n}\r\n\r\n/*\r\n * Convert a raw string to a base-64 string\r\n */\r\nfunction rstr2b64(input)\r\n{\r\n try { b64pad } catch(e) { b64pad=''; }\r\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n var output = \"\";\r\n var len = input.length;\r\n for(var i = 0; i < len; i += 3)\r\n {\r\n var triplet = (input.charCodeAt(i) << 16)\r\n | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)\r\n | (i + 2 < len ? input.charCodeAt(i+2) : 0);\r\n for(var j = 0; j < 4; j++)\r\n {\r\n if(i * 8 + j * 6 > input.length * 8) output += b64pad;\r\n else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);\r\n }\r\n }\r\n return output;\r\n}\r\n\r\n/*\r\n * Convert a raw string to an arbitrary string encoding\r\n */\r\nfunction rstr2any(input, encoding)\r\n{\r\n var divisor = encoding.length;\r\n var remainders = Array();\r\n var i, q, x, quotient;\r\n\r\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\r\n var dividend = Array(Math.ceil(input.length / 2));\r\n for(i = 0; i < dividend.length; i++)\r\n {\r\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\r\n }\r\n\r\n /*\r\n * Repeatedly perform a long division. The binary array forms the dividend,\r\n * the length of the encoding is the divisor. Once computed, the quotient\r\n * forms the dividend for the next step. We stop when the dividend is zero.\r\n * All remainders are stored for later use.\r\n */\r\n while(dividend.length > 0)\r\n {\r\n quotient = Array();\r\n x = 0;\r\n for(i = 0; i < dividend.length; i++)\r\n {\r\n x = (x << 16) + dividend[i];\r\n q = Math.floor(x / divisor);\r\n x -= q * divisor;\r\n if(quotient.length > 0 || q > 0)\r\n quotient[quotient.length] = q;\r\n }\r\n remainders[remainders.length] = x;\r\n dividend = quotient;\r\n }\r\n\r\n /* Convert the remainders to the output string */\r\n var output = \"\";\r\n for(i = remainders.length - 1; i >= 0; i--)\r\n output += encoding.charAt(remainders[i]);\r\n\r\n /* Append leading zero equivalents */\r\n var full_length = Math.ceil(input.length * 8 /\r\n (Math.log(encoding.length) / Math.log(2)))\r\n for(i = output.length; i < full_length; i++)\r\n output = encoding[0] + output;\r\n\r\n return output;\r\n}\r\n\r\n/*\r\n * Encode a string as utf-8.\r\n * For efficiency, this assumes the input is valid utf-16.\r\n */\r\nfunction str2rstr_utf8(input)\r\n{\r\n var output = \"\";\r\n var i = -1;\r\n var x, y;\r\n\r\n while(++i < input.length)\r\n {\r\n /* Decode utf-16 surrogate pairs */\r\n x = input.charCodeAt(i);\r\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\r\n if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)\r\n {\r\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\r\n i++;\r\n }\r\n\r\n /* Encode output as utf-8 */\r\n if(x <= 0x7F)\r\n output += String.fromCharCode(x);\r\n else if(x <= 0x7FF)\r\n output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),\r\n 0x80 | ( x & 0x3F));\r\n else if(x <= 0xFFFF)\r\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\r\n 0x80 | ((x >>> 6 ) & 0x3F),\r\n 0x80 | ( x & 0x3F));\r\n else if(x <= 0x1FFFFF)\r\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\r\n 0x80 | ((x >>> 12) & 0x3F),\r\n 0x80 | ((x >>> 6 ) & 0x3F),\r\n 0x80 | ( x & 0x3F));\r\n }\r\n return output;\r\n}\r\n\r\n/*\r\n * Encode a string as utf-16\r\n */\r\nfunction str2rstr_utf16le(input)\r\n{\r\n var output = \"\";\r\n for(var i = 0; i < input.length; i++)\r\n output += String.fromCharCode( input.charCodeAt(i) & 0xFF,\r\n (input.charCodeAt(i) >>> 8) & 0xFF);\r\n return output;\r\n}\r\n\r\nfunction str2rstr_utf16be(input)\r\n{\r\n var output = \"\";\r\n for(var i = 0; i < input.length; i++)\r\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\r\n input.charCodeAt(i) & 0xFF);\r\n return output;\r\n}\r\n\r\n/*\r\n * Convert a raw string to an array of big-endian words\r\n * Characters >255 have their high-byte silently ignored.\r\n */\r\nfunction rstr2binb(input)\r\n{\r\n var output = Array(input.length >> 2);\r\n for(var i = 0; i < output.length; i++)\r\n output[i] = 0;\r\n for(var i = 0; i < input.length * 8; i += 8)\r\n output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\r\n return output;\r\n}\r\n\r\n/*\r\n * Convert an array of big-endian words to a string\r\n */\r\nfunction binb2rstr(input)\r\n{\r\n var output = \"\";\r\n for(var i = 0; i < input.length * 32; i += 8)\r\n output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);\r\n return output;\r\n}\r\n\r\n/*\r\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\r\n */\r\nfunction binb_sha1(x, len)\r\n{\r\n /* append padding */\r\n x[len >> 5] |= 0x80 << (24 - len % 32);\r\n x[((len + 64 >> 9) << 4) + 15] = len;\r\n\r\n var w = Array(80);\r\n var a = 1732584193;\r\n var b = -271733879;\r\n var c = -1732584194;\r\n var d = 271733878;\r\n var e = -1009589776;\r\n\r\n for(var i = 0; i < x.length; i += 16)\r\n {\r\n var olda = a;\r\n var oldb = b;\r\n var oldc = c;\r\n var oldd = d;\r\n var olde = e;\r\n\r\n for(var j = 0; j < 80; j++)\r\n {\r\n if(j < 16) w[j] = x[i + j];\r\n else w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);\r\n var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\r\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\r\n e = d;\r\n d = c;\r\n c = bit_rol(b, 30);\r\n b = a;\r\n a = t;\r\n }\r\n\r\n a = safe_add(a, olda);\r\n b = safe_add(b, oldb);\r\n c = safe_add(c, oldc);\r\n d = safe_add(d, oldd);\r\n e = safe_add(e, olde);\r\n }\r\n return Array(a, b, c, d, e);\r\n\r\n}\r\n\r\n/*\r\n * Perform the appropriate triplet combination function for the current\r\n * iteration\r\n */\r\nfunction sha1_ft(t, b, c, d)\r\n{\r\n if(t < 20) return (b & c) | ((~b) & d);\r\n if(t < 40) return b ^ c ^ d;\r\n if(t < 60) return (b & c) | (b & d) | (c & d);\r\n return b ^ c ^ d;\r\n}\r\n\r\n/*\r\n * Determine the appropriate additive constant for the current iteration\r\n */\r\nfunction sha1_kt(t)\r\n{\r\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\r\n (t < 60) ? -1894007588 : -899497514;\r\n}\r\n\r\n/*\r\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\r\n * to work around bugs in some JS interpreters.\r\n */\r\nfunction safe_add(x, y)\r\n{\r\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\r\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\r\n return (msw << 16) | (lsw & 0xFFFF);\r\n}\r\n\r\n/*\r\n * Bitwise rotate a 32-bit number to the left.\r\n */\r\nfunction bit_rol(num, cnt)\r\n{\r\n return (num << cnt) | (num >>> (32 - cnt));\r\n}\r\n;\ndefine(\"spice-sha1\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\nvar SHA_DIGEST_LENGTH = 20;\n\n/*----------------------------------------------------------------------------\n** General ticket RSA encryption functions - just good enough to\n** support what we need to send back an encrypted ticket.\n**--------------------------------------------------------------------------*/\n\n\n/*----------------------------------------------------------------------------\n** OAEP padding functions. Inspired by the OpenSSL implementation.\n**--------------------------------------------------------------------------*/\nfunction MGF1(mask, seed)\n{\n var i, j, outlen;\n for (i = 0, outlen = 0; outlen < mask.length; i++)\n {\n var combo_buf = new String;\n\n for (j = 0; j < seed.length; j++)\n combo_buf += String.fromCharCode(seed[j]);\n combo_buf += String.fromCharCode((i >> 24) & 255);\n combo_buf += String.fromCharCode((i >> 16) & 255);\n combo_buf += String.fromCharCode((i >> 8) & 255);\n combo_buf += String.fromCharCode((i) & 255);\n\n var combo_hash = rstr_sha1(combo_buf);\n for (j = 0; j < combo_hash.length && outlen < mask.length; j++, outlen++)\n {\n mask[outlen] = combo_hash.charCodeAt(j);\n }\n }\n}\n\n\nfunction RSA_padding_add_PKCS1_OAEP(tolen, from, param)\n{\n var seed = new Array(SHA_DIGEST_LENGTH);\n var rand = new SecureRandom();\n rand.nextBytes(seed);\n\n var dblen = tolen - 1 - seed.length;\n var db = new Array(dblen);\n var padlen = dblen - from.length - 1;\n var i;\n\n if (param === undefined)\n param = \"\";\n\n if (padlen < SHA_DIGEST_LENGTH)\n {\n console.log(\"Error - data too large for key size.\");\n return null;\n }\n\n for (i = 0; i < padlen; i++)\n db[i] = 0;\n\n var param_hash = rstr_sha1(param);\n for (i = 0; i < param_hash.length; i++)\n db[i] = param_hash.charCodeAt(i);\n\n db[padlen] = 1;\n for (i = 0; i < from.length; i++)\n db[i + padlen + 1] = from.charCodeAt(i);\n\n var dbmask = new Array(dblen);\n if (MGF1(dbmask, seed) < 0)\n return null;\n\n for (i = 0; i < dbmask.length; i++)\n db[i] ^= dbmask[i];\n\n\n var seedmask = Array(SHA_DIGEST_LENGTH);\n if (MGF1(seedmask, db) < 0)\n return null;\n\n for (i = 0; i < seedmask.length; i++)\n seed[i] ^= seedmask[i];\n\n var ret = new String;\n ret += String.fromCharCode(0);\n for (i = 0; i < seed.length; i++)\n ret += String.fromCharCode(seed[i]);\n for (i = 0; i < db.length; i++)\n ret += String.fromCharCode(db[i]);\n return ret;\n}\n\n\nfunction asn_get_length(u8, at)\n{\n var len = u8[at++];\n if (len > 0x80)\n {\n if (len != 0x81)\n {\n console.log(\"Error: we lazily don't support keys bigger than 255 bytes. It'd be easy to fix.\");\n return null;\n }\n len = u8[at++];\n }\n\n return [ at, len];\n}\n\nfunction find_sequence(u8, at)\n{\n var lenblock;\n at = at || 0;\n if (u8[at++] != 0x30)\n {\n console.log(\"Error: public key should start with a sequence flag.\");\n return null;\n }\n\n lenblock = asn_get_length(u8, at);\n if (! lenblock)\n return null;\n return lenblock;\n}\n\n/*----------------------------------------------------------------------------\n** Extract an RSA key from a memory buffer\n**--------------------------------------------------------------------------*/\nfunction create_rsa_from_mb(mb, at)\n{\n var u8 = new Uint8Array(mb);\n var lenblock;\n var seq;\n var ba;\n var i;\n var ret;\n\n /* We have a sequence which contains a sequence followed by a bit string */\n seq = find_sequence(u8, at);\n if (! seq)\n return null;\n\n at = seq[0];\n seq = find_sequence(u8, at);\n if (! seq)\n return null;\n\n /* Skip over the contained sequence */\n at = seq[0] + seq[1];\n if (u8[at++] != 0x3)\n {\n console.log(\"Error: expecting bit string next.\");\n return null;\n }\n\n /* Get the bit string, which is *itself* a sequence. Having fun yet? */\n lenblock = asn_get_length(u8, at);\n if (! lenblock)\n return null;\n\n at = lenblock[0];\n if (u8[at] != 0 && u8[at + 1] != 0x30)\n {\n console.log(\"Error: unexpected values in bit string.\");\n return null;\n }\n\n /* Okay, now we have a sequence of two binary values, we hope. */\n seq = find_sequence(u8, at + 1);\n if (! seq)\n return null;\n\n at = seq[0];\n if (u8[at++] != 0x02)\n {\n console.log(\"Error: expecting integer n next.\");\n return null;\n }\n lenblock = asn_get_length(u8, at);\n if (! lenblock)\n return null;\n at = lenblock[0];\n\n ba = new Array(lenblock[1]);\n for (i = 0; i < lenblock[1]; i++)\n ba[i] = u8[at + i];\n\n ret = new RSAKey();\n ret.n = new BigInteger(ba);\n\n at += lenblock[1];\n\n if (u8[at++] != 0x02)\n {\n console.log(\"Error: expecting integer e next.\");\n return null;\n }\n lenblock = asn_get_length(u8, at);\n if (! lenblock)\n return null;\n at = lenblock[0];\n\n ret.e = u8[at++];\n for (i = 1; i < lenblock[1]; i++)\n {\n ret.e <<= 8;\n ret.e |= u8[at++];\n }\n\n return ret;\n}\n\nfunction rsa_encrypt(rsa, str)\n{\n var i;\n var ret = [];\n var oaep = RSA_padding_add_PKCS1_OAEP((rsa.n.bitLength()+7)>>3, str);\n if (! oaep)\n return null;\n\n var ba = new Array(oaep.length);\n\n for (i = 0; i < oaep.length; i++)\n ba[i] = oaep.charCodeAt(i);\n var bigint = new BigInteger(ba);\n var enc = rsa.doPublic(bigint);\n var h = enc.toString(16);\n if ((h.length & 1) != 0)\n h = \"0\" + h;\n for (i = 0; i < h.length; i += 2)\n ret[i / 2] = parseInt(h.substring(i, i + 2), 16);\n return ret;\n}\n;\ndefine(\"spice-ticket\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2014 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** resize.js\n** This bit of Javascript is a set of logic to help with window\n** resizing, using the agent channel to request screen resizes.\n**\n** It's a bit tricky, as we want to wait for resizing to settle down\n** before sending a size. Further, while horizontal resizing to use the whole\n** browser width is fairly easy to arrange with css, resizing an element to use\n** the whole vertical space (or to force a middle div to consume the bulk of the browser\n** window size) is tricky, and the consensus seems to be that Javascript is\n** the only right way to do it.\n**--------------------------------------------------------------------------*/\nfunction resize_helper(sc)\n{\n var w = document.getElementById(sc.screen_id).clientWidth;\n var h = document.getElementById(sc.screen_id).clientHeight;\n\n var m = document.getElementById(sc.message_id);\n\n /* Resize vertically; basically we leave a 20 pixel margin\n at the bottom, and use the position of the message window\n to figure out how to resize */\n var hd = window.innerHeight - m.offsetHeight - m.offsetTop - 20;\n\n /* Xorg requires height be a multiple of 8; round up */\n h = h + hd;\n if (h % 8 > 0)\n h += (8 - (h % 8));\n\n /* Xorg requires width be a multiple of 8; round up */\n if (w % 8 > 0)\n w += (8 - (w % 8));\n\n\n sc.resize_window(0, w, h, 32, 0, 0);\n sc.spice_resize_timer = undefined;\n}\n\nfunction handle_resize(e)\n{\n var sc = window.spice_connection;\n\n if (sc && sc.spice_resize_timer)\n {\n window.clearTimeout(sc.spice_resize_timer);\n sc.spice_resize_timer = undefined;\n }\n\n sc.spice_resize_timer = window.setTimeout(resize_helper, 200, sc);\n}\n;\ndefine(\"spice-resize\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2014 Red Hat, Inc.\n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\nfunction SpiceFileXferTask(id, file)\n{\n this.id = id;\n this.file = file;\n}\n\nSpiceFileXferTask.prototype.create_progressbar = function()\n{\n var _this = this;\n var cancel = document.createElement(\"input\");\n this.progressbar_container = document.createElement(\"div\");\n this.progressbar = document.createElement(\"progress\");\n\n cancel.type = 'button';\n cancel.value = 'Cancel';\n cancel.style.float = 'right';\n cancel.onclick = function()\n {\n _this.cancelled = true;\n _this.remove_progressbar();\n };\n\n this.progressbar.setAttribute('max', this.file.size);\n this.progressbar.setAttribute('value', 0);\n this.progressbar.style.width = '100%';\n this.progressbar.style.margin = '4px auto';\n this.progressbar.style.display = 'inline-block';\n this.progressbar_container.style.width = '90%';\n this.progressbar_container.style.margin = 'auto';\n this.progressbar_container.style.padding = '4px';\n this.progressbar_container.textContent = this.file.name;\n this.progressbar_container.appendChild(cancel);\n this.progressbar_container.appendChild(this.progressbar);\n document.getElementById('spice-xfer-area').appendChild(this.progressbar_container);\n}\n\nSpiceFileXferTask.prototype.update_progressbar = function(value)\n{\n this.progressbar.setAttribute('value', value);\n}\n\nSpiceFileXferTask.prototype.remove_progressbar = function()\n{\n if (this.progressbar_container && this.progressbar_container.parentNode)\n this.progressbar_container.parentNode.removeChild(this.progressbar_container);\n}\n\nfunction handle_file_dragover(e)\n{\n e.stopPropagation();\n e.preventDefault();\n e.dataTransfer.dropEffect = 'copy';\n}\n\nfunction handle_file_drop(e)\n{\n var sc = window.spice_connection;\n var files = e.dataTransfer.files;\n\n e.stopPropagation();\n e.preventDefault();\n for (var i = files.length - 1; i >= 0; i--)\n {\n if (files[i].type); // do not copy a directory\n sc.file_xfer_start(files[i]);\n }\n\n}\n;\ndefine(\"spice-filexfer\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** SpiceMainConn\n** This is the master Javascript class for establishing and\n** managing a connection to a Spice Server.\n** \n** Invocation: You must pass an object with properties as follows:\n** uri (required) Uri of a WebSocket listener that is\n** connected to a spice server.\n** password (required) Password to send to the spice server\n** message_id (optional) Identifier of an element in the DOM\n** where SpiceConn will write messages.\n** It will use classes spice-messages-x,\n** where x is one of info, warning, or error.\n** screen_id (optional) Identifier of an element in the DOM\n** where SpiceConn will create any new\n** client screens. This is the main UI.\n** dump_id (optional) If given, an element to use for\n** dumping every single image + canvas drawn.\n** Sometimes useful for debugging.\n** onerror (optional) If given, a function to receive async\n** errors. Note that you should also catch\n** errors for ones that occur inline\n** onagent (optional) If given, a function to be called when\n** a VD agent is connected; a good opportunity\n** to request a resize\n**\n** Throws error if there are troubles. Requires a modern (by 2012 standards)\n** browser, including WebSocket and WebSocket.binaryType == arraybuffer\n**\n**--------------------------------------------------------------------------*/\nfunction SpiceMainConn()\n{\n if (typeof WebSocket === \"undefined\")\n throw new Error(\"WebSocket unavailable. You need to use a different browser.\");\n\n SpiceConn.apply(this, arguments);\n\n this.agent_msg_queue = [];\n this.file_xfer_tasks = {};\n this.file_xfer_task_id = 0;\n this.file_xfer_read_queue = [];\n}\n\nSpiceMainConn.prototype = Object.create(SpiceConn.prototype);\nSpiceMainConn.prototype.process_channel_message = function(msg)\n{\n if (msg.type == SPICE_MSG_MAIN_INIT)\n {\n this.log_info(\"Connected to \" + this.ws.url);\n this.report_success(\"Connected\")\n this.main_init = new SpiceMsgMainInit(msg.data);\n this.connection_id = this.main_init.session_id;\n this.agent_tokens = this.main_init.agent_tokens;\n\n if (DEBUG > 0)\n {\n // FIXME - there is a lot here we don't handle; mouse modes, agent,\n // ram_hint, multi_media_time\n this.log_info(\"session id \" + this.main_init.session_id +\n \" ; display_channels_hint \" + this.main_init.display_channels_hint +\n \" ; supported_mouse_modes \" + this.main_init.supported_mouse_modes +\n \" ; current_mouse_mode \" + this.main_init.current_mouse_mode +\n \" ; agent_connected \" + this.main_init.agent_connected +\n \" ; agent_tokens \" + this.main_init.agent_tokens +\n \" ; multi_media_time \" + this.main_init.multi_media_time +\n \" ; ram_hint \" + this.main_init.ram_hint);\n }\n\n this.handle_mouse_mode(this.main_init.current_mouse_mode,\n this.main_init.supported_mouse_modes);\n\n if (this.main_init.agent_connected)\n this.connect_agent();\n\n var attach = new SpiceMiniData;\n attach.type = SPICE_MSGC_MAIN_ATTACH_CHANNELS;\n attach.size = attach.buffer_size();\n this.send_msg(attach);\n return true;\n }\n\n if (msg.type == SPICE_MSG_MAIN_MOUSE_MODE)\n {\n var mode = new SpiceMsgMainMouseMode(msg.data);\n DEBUG > 0 && this.log_info(\"Mouse supported modes \" + mode.supported_modes + \"; current \" + mode.current_mode);\n this.handle_mouse_mode(mode.current_mode, mode.supported_modes);\n return true;\n }\n\n if (msg.type == SPICE_MSG_MAIN_CHANNELS_LIST)\n {\n var i;\n var chans;\n DEBUG > 0 && console.log(\"channels\");\n chans = new SpiceMsgChannels(msg.data);\n for (i = 0; i < chans.channels.length; i++)\n {\n var conn = {\n uri: this.ws.url,\n parent: this,\n connection_id : this.connection_id,\n type : chans.channels[i].type,\n chan_id : chans.channels[i].id\n };\n if (chans.channels[i].type == SPICE_CHANNEL_DISPLAY)\n this.display = new SpiceDisplayConn(conn);\n else if (chans.channels[i].type == SPICE_CHANNEL_INPUTS)\n {\n this.inputs = new SpiceInputsConn(conn);\n this.inputs.mouse_mode = this.mouse_mode;\n }\n else if (chans.channels[i].type == SPICE_CHANNEL_CURSOR)\n this.cursor = new SpiceCursorConn(conn);\n else if (chans.channels[i].type == SPICE_CHANNEL_PLAYBACK)\n this.cursor = new SpicePlaybackConn(conn);\n else\n {\n this.log_err(\"Channel type \" + chans.channels[i].type + \" unknown.\");\n if (! (\"extra_channels\" in this))\n this.extra_channels = [];\n this.extra_channels[i] = new SpiceConn(conn);\n }\n\n }\n\n return true;\n }\n\n if (msg.type == SPICE_MSG_MAIN_AGENT_CONNECTED)\n {\n this.connect_agent();\n return true;\n }\n\n if (msg.type == SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS)\n {\n var connected_tokens = new SpiceMsgMainAgentTokens(msg.data);\n this.agent_tokens = connected_tokens.num_tokens;\n this.connect_agent();\n return true;\n }\n\n if (msg.type == SPICE_MSG_MAIN_AGENT_TOKEN)\n {\n var remaining_tokens, tokens = new SpiceMsgMainAgentTokens(msg.data);\n this.agent_tokens += tokens.num_tokens;\n this.send_agent_message_queue();\n\n remaining_tokens = this.agent_tokens;\n while (remaining_tokens > 0 && this.file_xfer_read_queue.length > 0)\n {\n var xfer_task = this.file_xfer_read_queue.shift();\n this.file_xfer_read(xfer_task, xfer_task.read_bytes);\n remaining_tokens--;\n }\n return true;\n }\n\n if (msg.type == SPICE_MSG_MAIN_AGENT_DISCONNECTED)\n {\n this.agent_connected = false;\n return true;\n }\n\n if (msg.type == SPICE_MSG_MAIN_AGENT_DATA)\n {\n var agent_data = new SpiceMsgMainAgentData(msg.data);\n if (agent_data.type == VD_AGENT_ANNOUNCE_CAPABILITIES)\n {\n var agent_caps = new VDAgentAnnounceCapabilities(agent_data.data);\n if (agent_caps.request)\n this.announce_agent_capabilities(0);\n return true;\n }\n else if (agent_data.type == VD_AGENT_FILE_XFER_STATUS)\n {\n this.handle_file_xfer_status(new VDAgentFileXferStatusMessage(agent_data.data));\n return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nSpiceMainConn.prototype.stop = function(msg)\n{\n this.state = \"closing\";\n\n if (this.inputs)\n {\n this.inputs.cleanup();\n this.inputs = undefined;\n }\n\n if (this.cursor)\n {\n this.cursor.cleanup();\n this.cursor = undefined;\n }\n\n if (this.display)\n {\n this.display.cleanup();\n this.display.destroy_surfaces();\n this.display = undefined;\n }\n\n this.cleanup();\n\n if (\"extra_channels\" in this)\n for (var e in this.extra_channels)\n this.extra_channels[e].cleanup();\n this.extra_channels = undefined;\n}\n\nSpiceMainConn.prototype.send_agent_message_queue = function(message)\n{\n if (!this.agent_connected)\n return;\n\n if (message)\n this.agent_msg_queue.push(message);\n\n while (this.agent_tokens > 0 && this.agent_msg_queue.length > 0)\n {\n var mr = this.agent_msg_queue.shift();\n this.send_msg(mr);\n this.agent_tokens--;\n }\n}\n\nSpiceMainConn.prototype.send_agent_message = function(type, message)\n{\n var agent_data = new SpiceMsgcMainAgentData(type, message);\n var sb = 0, maxsize = VD_AGENT_MAX_DATA_SIZE - SpiceMiniData.prototype.buffer_size();\n var data = new ArrayBuffer(agent_data.buffer_size());\n agent_data.to_buffer(data);\n while (sb < agent_data.buffer_size())\n {\n var eb = Math.min(sb + maxsize, agent_data.buffer_size());\n var mr = new SpiceMiniData();\n mr.type = SPICE_MSGC_MAIN_AGENT_DATA;\n mr.size = eb - sb;\n mr.data = data.slice(sb, eb);\n this.send_agent_message_queue(mr);\n sb = eb;\n }\n}\n\nSpiceMainConn.prototype.announce_agent_capabilities = function(request)\n{\n var caps = new VDAgentAnnounceCapabilities(request, (1 << VD_AGENT_CAP_MOUSE_STATE) |\n (1 << VD_AGENT_CAP_MONITORS_CONFIG) |\n (1 << VD_AGENT_CAP_REPLY));\n this.send_agent_message(VD_AGENT_ANNOUNCE_CAPABILITIES, caps);\n}\n\nSpiceMainConn.prototype.resize_window = function(flags, width, height, depth, x, y)\n{\n var monitors_config = new VDAgentMonitorsConfig(flags, width, height, depth, x, y);\n this.send_agent_message(VD_AGENT_MONITORS_CONFIG, monitors_config);\n}\n\nSpiceMainConn.prototype.file_xfer_start = function(file)\n{\n var task_id, xfer_start, task;\n\n task_id = this.file_xfer_task_id++;\n task = new SpiceFileXferTask(task_id, file);\n task.create_progressbar();\n this.file_xfer_tasks[task_id] = task;\n xfer_start = new VDAgentFileXferStartMessage(task_id, file.name, file.size);\n this.send_agent_message(VD_AGENT_FILE_XFER_START, xfer_start);\n}\n\nSpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status)\n{\n var xfer_error, xfer_task;\n if (!this.file_xfer_tasks[file_xfer_status.id])\n {\n return;\n }\n xfer_task = this.file_xfer_tasks[file_xfer_status.id];\n switch (file_xfer_status.result)\n {\n case VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA:\n this.file_xfer_read(xfer_task);\n return;\n case VD_AGENT_FILE_XFER_STATUS_CANCELLED:\n xfer_error = \"transfer is cancelled by spice agent\";\n break;\n case VD_AGENT_FILE_XFER_STATUS_ERROR:\n xfer_error = \"some errors occurred in the spice agent\";\n break;\n case VD_AGENT_FILE_XFER_STATUS_SUCCESS:\n break;\n default:\n xfer_error = \"unhandled status type: \" + file_xfer_status.result;\n break;\n }\n\n this.file_xfer_completed(xfer_task, xfer_error)\n}\n\nSpiceMainConn.prototype.file_xfer_read = function(file_xfer_task, start_byte)\n{\n var FILE_XFER_CHUNK_SIZE = 32 * VD_AGENT_MAX_DATA_SIZE;\n var _this = this;\n var sb, eb;\n var slice, reader;\n\n if (!file_xfer_task ||\n !this.file_xfer_tasks[file_xfer_task.id] ||\n (start_byte > 0 && start_byte == file_xfer_task.file.size))\n {\n return;\n }\n\n if (file_xfer_task.cancelled)\n {\n var xfer_status = new VDAgentFileXferStatusMessage(file_xfer_task.id,\n VD_AGENT_FILE_XFER_STATUS_CANCELLED);\n this.send_agent_message(VD_AGENT_FILE_XFER_STATUS, xfer_status);\n delete this.file_xfer_tasks[file_xfer_task.id];\n return;\n }\n\n sb = start_byte || 0,\n eb = Math.min(sb + FILE_XFER_CHUNK_SIZE, file_xfer_task.file.size);\n\n if (!this.agent_tokens)\n {\n file_xfer_task.read_bytes = sb;\n this.file_xfer_read_queue.push(file_xfer_task);\n return;\n }\n\n reader = new FileReader();\n reader.onload = function(e)\n {\n var xfer_data = new VDAgentFileXferDataMessage(file_xfer_task.id,\n e.target.result.byteLength,\n e.target.result);\n _this.send_agent_message(VD_AGENT_FILE_XFER_DATA, xfer_data);\n _this.file_xfer_read(file_xfer_task, eb);\n file_xfer_task.update_progressbar(eb);\n };\n\n slice = file_xfer_task.file.slice(sb, eb);\n reader.readAsArrayBuffer(slice);\n}\n\nSpiceMainConn.prototype.file_xfer_completed = function(file_xfer_task, error)\n{\n if (error)\n this.log_err(error);\n else\n this.log_info(\"transfer of '\" + file_xfer_task.file.name +\"' was successful\");\n\n file_xfer_task.remove_progressbar();\n\n delete this.file_xfer_tasks[file_xfer_task.id];\n}\n\nSpiceMainConn.prototype.connect_agent = function()\n{\n this.agent_connected = true;\n\n var agent_start = new SpiceMsgcMainAgentStart(~0);\n var mr = new SpiceMiniData();\n mr.build_msg(SPICE_MSGC_MAIN_AGENT_START, agent_start);\n this.send_msg(mr);\n\n this.announce_agent_capabilities(1);\n\n if (this.onagent !== undefined)\n this.onagent(this);\n\n}\n\nSpiceMainConn.prototype.handle_mouse_mode = function(current, supported)\n{\n this.mouse_mode = current;\n if (current != SPICE_MOUSE_MODE_CLIENT && (supported & SPICE_MOUSE_MODE_CLIENT))\n {\n var mode_request = new SpiceMsgcMainMouseModeRequest(SPICE_MOUSE_MODE_CLIENT);\n var mr = new SpiceMiniData();\n mr.build_msg(SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST, mode_request);\n this.send_msg(mr);\n }\n\n if (this.inputs)\n this.inputs.mouse_mode = current;\n}\n\n;\ndefine(\"spice-main\", [\"spice-spiceconn\",\"spice-spicearraybuffer\",\"spice-enums\",\"spice-atKeynames\",\"spice-utils\",\"spice-png\",\"spice-lz\",\"spice-quic\",\"spice-bitmap\",\"spice-spicedataview\",\"spice-spicetype\",\"spice-spicemsg\",\"spice-wire\",\"spice-display\",\"spice-inputs\",\"spice-webm\",\"spice-playback\",\"spice-simulatecursor\",\"spice-cursor\",\"spice-jsbn\",\"spice-rsa\",\"spice-prng4\",\"spice-rng\",\"spice-sha1\",\"spice-ticket\",\"spice-resize\",\"spice-filexfer\"], (function (global) {\n return function () {\n var ret, fn;\n return ret || global.SpiceMainConn;\n };\n}(this)));\n\n","/**\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/almond for details\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*jslint sloppy: true */\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name && name.charAt(0) === \".\") {\n //If have a base name, try to normalize against it,\n //otherwise, assume it is a top-level require that will\n //be relative to baseUrl in the end.\n if (baseName) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // Node .js allowance:\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n //Lop off the last part of baseParts, so that . matches the\n //\"directory\" and not name of the baseName's module. For instance,\n //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\n //want the directory, \"one/two\" for this normalization.\n name = baseParts.slice(0, baseParts.length - 1).concat(name);\n\n //start trimDots\n for (i = 0; i < name.length; i += 1) {\n part = name[i];\n if (part === \".\") {\n name.splice(i, 1);\n i -= 1;\n } else if (part === \"..\") {\n if (i === 1 && (name[2] === '..' || name[0] === '..')) {\n //End of the line. Keep at least one non-dot\n //path segment at the front so it can be mapped\n //correctly to disk. Otherwise, there is likely\n //no path mapping for a path starting with '..'.\n //This can still fail, but catches the most reasonable\n //uses of ..\n break;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join(\"/\");\n } else if (name.indexOf('./') === 0) {\n // No baseName, so this is ID is resolved relative\n // to baseUrl, pull off the leading dot.\n name = name.substring(2);\n }\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relName) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relName));\n } else {\n name = normalize(name, relName);\n }\n } else {\n name = normalize(name, relName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relName);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, callback).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\ndefine(\"almond\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n\n/*----------------------------------------------------------------------------\n** enums.js\n** 'constants' for Spice\n**--------------------------------------------------------------------------*/\nvar SPICE_MAGIC = \"REDQ\";\nvar SPICE_VERSION_MAJOR = 2;\nvar SPICE_VERSION_MINOR = 2;\n\nvar SPICE_CONNECT_TIMEOUT = (30 * 1000);\n\nvar SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION = 0;\nvar SPICE_COMMON_CAP_AUTH_SPICE = 1;\nvar SPICE_COMMON_CAP_AUTH_SASL = 2;\nvar SPICE_COMMON_CAP_MINI_HEADER = 3;\n\nvar SPICE_TICKET_KEY_PAIR_LENGTH = 1024;\nvar SPICE_TICKET_PUBKEY_BYTES = (SPICE_TICKET_KEY_PAIR_LENGTH / 8 + 34);\n\nvar SPICE_LINK_ERR_OK = 0,\n SPICE_LINK_ERR_ERROR = 1,\n SPICE_LINK_ERR_INVALID_MAGIC = 2,\n SPICE_LINK_ERR_INVALID_DATA = 3,\n SPICE_LINK_ERR_VERSION_MISMATCH = 4,\n SPICE_LINK_ERR_NEED_SECURED = 5,\n SPICE_LINK_ERR_NEED_UNSECURED = 6,\n SPICE_LINK_ERR_PERMISSION_DENIED = 7,\n SPICE_LINK_ERR_BAD_CONNECTION_ID = 8,\n SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE = 9;\n\nvar SPICE_MSG_MIGRATE = 1;\nvar SPICE_MSG_MIGRATE_DATA = 2;\nvar SPICE_MSG_SET_ACK = 3;\nvar SPICE_MSG_PING = 4;\nvar SPICE_MSG_WAIT_FOR_CHANNELS = 5;\nvar SPICE_MSG_DISCONNECTING = 6;\nvar SPICE_MSG_NOTIFY = 7;\nvar SPICE_MSG_LIST = 8;\n\nvar SPICE_MSG_MAIN_MIGRATE_BEGIN = 101;\nvar SPICE_MSG_MAIN_MIGRATE_CANCEL = 102;\nvar SPICE_MSG_MAIN_INIT = 103;\nvar SPICE_MSG_MAIN_CHANNELS_LIST = 104;\nvar SPICE_MSG_MAIN_MOUSE_MODE = 105;\nvar SPICE_MSG_MAIN_MULTI_MEDIA_TIME = 106;\nvar SPICE_MSG_MAIN_AGENT_CONNECTED = 107;\nvar SPICE_MSG_MAIN_AGENT_DISCONNECTED = 108;\nvar SPICE_MSG_MAIN_AGENT_DATA = 109;\nvar SPICE_MSG_MAIN_AGENT_TOKEN = 110;\nvar SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST = 111;\nvar SPICE_MSG_MAIN_MIGRATE_END = 112;\nvar SPICE_MSG_MAIN_NAME = 113;\nvar SPICE_MSG_MAIN_UUID = 114;\nvar SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS = 115;\nvar SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS = 116;\nvar SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK = 117;\nvar SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK = 118;\nvar SPICE_MSG_END_MAIN = 119;\n\n\n\nvar SPICE_MSGC_ACK_SYNC = 1;\nvar SPICE_MSGC_ACK = 2;\nvar SPICE_MSGC_PONG = 3;\nvar SPICE_MSGC_MIGRATE_FLUSH_MARK = 4;\nvar SPICE_MSGC_MIGRATE_DATA = 5;\nvar SPICE_MSGC_DISCONNECTING = 6;\n\n\nvar SPICE_MSGC_MAIN_CLIENT_INFO = 101;\nvar SPICE_MSGC_MAIN_MIGRATE_CONNECTED = 102;\nvar SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR = 103;\nvar SPICE_MSGC_MAIN_ATTACH_CHANNELS = 104;\nvar SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST = 105;\nvar SPICE_MSGC_MAIN_AGENT_START = 106;\nvar SPICE_MSGC_MAIN_AGENT_DATA = 107;\nvar SPICE_MSGC_MAIN_AGENT_TOKEN = 108;\nvar SPICE_MSGC_MAIN_MIGRATE_END = 109;\nvar SPICE_MSGC_END_MAIN = 110;\n\nvar SPICE_MSG_DISPLAY_MODE = 101;\nvar SPICE_MSG_DISPLAY_MARK = 102;\nvar SPICE_MSG_DISPLAY_RESET = 103;\nvar SPICE_MSG_DISPLAY_COPY_BITS = 104;\nvar SPICE_MSG_DISPLAY_INVAL_LIST = 105;\nvar SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS = 106;\nvar SPICE_MSG_DISPLAY_INVAL_PALETTE = 107;\nvar SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES= 108;\n\nvar SPICE_MSG_DISPLAY_STREAM_CREATE = 122;\nvar SPICE_MSG_DISPLAY_STREAM_DATA = 123;\nvar SPICE_MSG_DISPLAY_STREAM_CLIP = 124;\nvar SPICE_MSG_DISPLAY_STREAM_DESTROY = 125;\nvar SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL= 126;\n\nvar SPICE_MSG_DISPLAY_DRAW_FILL = 302;\nvar SPICE_MSG_DISPLAY_DRAW_OPAQUE = 303;\nvar SPICE_MSG_DISPLAY_DRAW_COPY = 304;\nvar SPICE_MSG_DISPLAY_DRAW_BLEND = 305;\nvar SPICE_MSG_DISPLAY_DRAW_BLACKNESS = 306;\nvar SPICE_MSG_DISPLAY_DRAW_WHITENESS = 307;\nvar SPICE_MSG_DISPLAY_DRAW_INVERS = 308;\nvar SPICE_MSG_DISPLAY_DRAW_ROP3 = 309;\nvar SPICE_MSG_DISPLAY_DRAW_STROKE = 310;\nvar SPICE_MSG_DISPLAY_DRAW_TEXT = 311;\nvar SPICE_MSG_DISPLAY_DRAW_TRANSPARENT = 312;\nvar SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND = 313;\nvar SPICE_MSG_DISPLAY_SURFACE_CREATE = 314;\nvar SPICE_MSG_DISPLAY_SURFACE_DESTROY = 315;\n\nvar SPICE_MSGC_DISPLAY_INIT = 101;\n\nvar SPICE_MSG_INPUTS_INIT = 101;\nvar SPICE_MSG_INPUTS_KEY_MODIFIERS = 102;\n\nvar SPICE_MSG_INPUTS_MOUSE_MOTION_ACK = 111;\n\nvar SPICE_MSGC_INPUTS_KEY_DOWN = 101;\nvar SPICE_MSGC_INPUTS_KEY_UP = 102;\nvar SPICE_MSGC_INPUTS_KEY_MODIFIERS = 103;\n\nvar SPICE_MSGC_INPUTS_MOUSE_MOTION = 111;\nvar SPICE_MSGC_INPUTS_MOUSE_POSITION = 112;\nvar SPICE_MSGC_INPUTS_MOUSE_PRESS = 113;\nvar SPICE_MSGC_INPUTS_MOUSE_RELEASE = 114;\n\nvar SPICE_MSG_CURSOR_INIT = 101;\nvar SPICE_MSG_CURSOR_RESET = 102;\nvar SPICE_MSG_CURSOR_SET = 103;\nvar SPICE_MSG_CURSOR_MOVE = 104;\nvar SPICE_MSG_CURSOR_HIDE = 105;\nvar SPICE_MSG_CURSOR_TRAIL = 106;\nvar SPICE_MSG_CURSOR_INVAL_ONE = 107;\nvar SPICE_MSG_CURSOR_INVAL_ALL = 108;\n\nvar SPICE_MSG_PLAYBACK_DATA = 101;\nvar SPICE_MSG_PLAYBACK_MODE = 102;\nvar SPICE_MSG_PLAYBACK_START = 103;\nvar SPICE_MSG_PLAYBACK_STOP = 104;\nvar SPICE_MSG_PLAYBACK_VOLUME = 105;\nvar SPICE_MSG_PLAYBACK_MUTE = 106;\nvar SPICE_MSG_PLAYBACK_LATENCY = 107;\n\nvar SPICE_PLAYBACK_CAP_CELT_0_5_1 = 0;\nvar SPICE_PLAYBACK_CAP_VOLUME = 1;\nvar SPICE_PLAYBACK_CAP_LATENCY = 2;\nvar SPICE_PLAYBACK_CAP_OPUS = 3;\n\nvar SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE = 0;\nvar SPICE_MAIN_CAP_NAME_AND_UUID = 1;\nvar SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS = 2;\nvar SPICE_MAIN_CAP_SEAMLESS_MIGRATE = 3;\n\nvar SPICE_AUDIO_DATA_MODE_INVALID = 0;\nvar SPICE_AUDIO_DATA_MODE_RAW = 1;\nvar SPICE_AUDIO_DATA_MODE_CELT_0_5_1 = 2;\nvar SPICE_AUDIO_DATA_MODE_OPUS = 3;\n\nvar SPICE_AUDIO_FMT_INVALID = 0;\nvar SPICE_AUDIO_FMT_S16 = 1;\n\nvar SPICE_CHANNEL_MAIN = 1;\nvar SPICE_CHANNEL_DISPLAY = 2;\nvar SPICE_CHANNEL_INPUTS = 3;\nvar SPICE_CHANNEL_CURSOR = 4;\nvar SPICE_CHANNEL_PLAYBACK = 5;\nvar SPICE_CHANNEL_RECORD = 6;\nvar SPICE_CHANNEL_TUNNEL = 7;\nvar SPICE_CHANNEL_SMARTCARD = 8;\nvar SPICE_CHANNEL_USBREDIR = 9;\n\nvar SPICE_SURFACE_FLAGS_PRIMARY = (1 << 0);\n\nvar SPICE_NOTIFY_SEVERITY_INFO = 0;\nvar SPICE_NOTIFY_SEVERITY_WARN = 1;\nvar SPICE_NOTIFY_SEVERITY_ERROR = 2;\n\nvar SPICE_MOUSE_MODE_SERVER = (1 << 0),\n SPICE_MOUSE_MODE_CLIENT = (1 << 1),\n SPICE_MOUSE_MODE_MASK = 0x3;\n\nvar SPICE_CLIP_TYPE_NONE = 0;\nvar SPICE_CLIP_TYPE_RECTS = 1;\n\nvar SPICE_IMAGE_TYPE_BITMAP = 0;\nvar SPICE_IMAGE_TYPE_QUIC = 1;\nvar SPICE_IMAGE_TYPE_RESERVED = 2;\nvar SPICE_IMAGE_TYPE_LZ_PLT = 100;\nvar SPICE_IMAGE_TYPE_LZ_RGB = 101;\nvar SPICE_IMAGE_TYPE_GLZ_RGB = 102;\nvar SPICE_IMAGE_TYPE_FROM_CACHE = 103;\nvar SPICE_IMAGE_TYPE_SURFACE = 104;\nvar SPICE_IMAGE_TYPE_JPEG = 105;\nvar SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS = 106;\nvar SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB = 107;\nvar SPICE_IMAGE_TYPE_JPEG_ALPHA = 108;\n\nvar SPICE_IMAGE_FLAGS_CACHE_ME = (1 << 0),\n SPICE_IMAGE_FLAGS_HIGH_BITS_SET = (1 << 1),\n SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME = (1 << 2);\n\nvar SPICE_BITMAP_FLAGS_PAL_CACHE_ME = (1 << 0),\n SPICE_BITMAP_FLAGS_PAL_FROM_CACHE = (1 << 1),\n SPICE_BITMAP_FLAGS_TOP_DOWN = (1 << 2),\n SPICE_BITMAP_FLAGS_MASK = 0x7;\n\nvar SPICE_BITMAP_FMT_INVALID = 0,\n SPICE_BITMAP_FMT_1BIT_LE = 1,\n SPICE_BITMAP_FMT_1BIT_BE = 2,\n SPICE_BITMAP_FMT_4BIT_LE = 3,\n SPICE_BITMAP_FMT_4BIT_BE = 4,\n SPICE_BITMAP_FMT_8BIT = 5,\n SPICE_BITMAP_FMT_16BIT = 6,\n SPICE_BITMAP_FMT_24BIT = 7,\n SPICE_BITMAP_FMT_32BIT = 8,\n SPICE_BITMAP_FMT_RGBA = 9;\n\n\nvar SPICE_CURSOR_FLAGS_NONE = (1 << 0),\n SPICE_CURSOR_FLAGS_CACHE_ME = (1 << 1),\n SPICE_CURSOR_FLAGS_FROM_CACHE = (1 << 2),\n SPICE_CURSOR_FLAGS_MASK = 0x7;\n\nvar SPICE_MOUSE_BUTTON_MASK_LEFT = (1 << 0),\n SPICE_MOUSE_BUTTON_MASK_MIDDLE = (1 << 1),\n SPICE_MOUSE_BUTTON_MASK_RIGHT = (1 << 2),\n SPICE_MOUSE_BUTTON_MASK_MASK = 0x7;\n \nvar SPICE_MOUSE_BUTTON_INVALID = 0;\nvar SPICE_MOUSE_BUTTON_LEFT = 1;\nvar SPICE_MOUSE_BUTTON_MIDDLE = 2;\nvar SPICE_MOUSE_BUTTON_RIGHT = 3;\nvar SPICE_MOUSE_BUTTON_UP = 4;\nvar SPICE_MOUSE_BUTTON_DOWN = 5;\n\nvar SPICE_BRUSH_TYPE_NONE = 0,\n SPICE_BRUSH_TYPE_SOLID = 1,\n SPICE_BRUSH_TYPE_PATTERN = 2;\n\nvar SPICE_SURFACE_FMT_INVALID = 0,\n SPICE_SURFACE_FMT_1_A = 1,\n SPICE_SURFACE_FMT_8_A = 8,\n SPICE_SURFACE_FMT_16_555 = 16,\n SPICE_SURFACE_FMT_32_xRGB = 32,\n SPICE_SURFACE_FMT_16_565 = 80,\n SPICE_SURFACE_FMT_32_ARGB = 96;\n\nvar SPICE_ROPD_INVERS_SRC = (1 << 0),\n SPICE_ROPD_INVERS_BRUSH = (1 << 1),\n SPICE_ROPD_INVERS_DEST = (1 << 2),\n SPICE_ROPD_OP_PUT = (1 << 3),\n SPICE_ROPD_OP_OR = (1 << 4),\n SPICE_ROPD_OP_AND = (1 << 5),\n SPICE_ROPD_OP_XOR = (1 << 6),\n SPICE_ROPD_OP_BLACKNESS = (1 << 7),\n SPICE_ROPD_OP_WHITENESS = (1 << 8),\n SPICE_ROPD_OP_INVERS = (1 << 9),\n SPICE_ROPD_INVERS_RES = (1 << 10),\n SPICE_ROPD_MASK = 0x7ff;\n\nvar LZ_IMAGE_TYPE_INVALID = 0,\n LZ_IMAGE_TYPE_PLT1_LE = 1,\n LZ_IMAGE_TYPE_PLT1_BE = 2, // PLT stands for palette\n LZ_IMAGE_TYPE_PLT4_LE = 3,\n LZ_IMAGE_TYPE_PLT4_BE = 4,\n LZ_IMAGE_TYPE_PLT8 = 5,\n LZ_IMAGE_TYPE_RGB16 = 6,\n LZ_IMAGE_TYPE_RGB24 = 7,\n LZ_IMAGE_TYPE_RGB32 = 8,\n LZ_IMAGE_TYPE_RGBA = 9,\n LZ_IMAGE_TYPE_XXXA = 10;\n\n\nvar QUIC_IMAGE_TYPE_INVALID = 0,\n QUIC_IMAGE_TYPE_GRAY = 1,\n QUIC_IMAGE_TYPE_RGB16 = 2,\n QUIC_IMAGE_TYPE_RGB24 = 3,\n QUIC_IMAGE_TYPE_RGB32 = 4,\n QUIC_IMAGE_TYPE_RGBA = 5;\n\nvar SPICE_INPUT_MOTION_ACK_BUNCH = 4;\n\n\nvar SPICE_CURSOR_TYPE_ALPHA = 0,\n SPICE_CURSOR_TYPE_MONO = 1,\n SPICE_CURSOR_TYPE_COLOR4 = 2,\n SPICE_CURSOR_TYPE_COLOR8 = 3,\n SPICE_CURSOR_TYPE_COLOR16 = 4,\n SPICE_CURSOR_TYPE_COLOR24 = 5,\n SPICE_CURSOR_TYPE_COLOR32 = 6;\n\nvar SPICE_VIDEO_CODEC_TYPE_MJPEG = 1;\n\nvar VD_AGENT_PROTOCOL = 1;\nvar VD_AGENT_MAX_DATA_SIZE = 2048;\n\nvar VD_AGENT_MOUSE_STATE = 1,\n VD_AGENT_MONITORS_CONFIG = 2,\n VD_AGENT_REPLY = 3,\n VD_AGENT_CLIPBOARD = 4,\n VD_AGENT_DISPLAY_CONFIG = 5,\n VD_AGENT_ANNOUNCE_CAPABILITIES = 6,\n VD_AGENT_CLIPBOARD_GRAB = 7,\n VD_AGENT_CLIPBOARD_REQUEST = 8,\n VD_AGENT_CLIPBOARD_RELEASE = 9,\n VD_AGENT_FILE_XFER_START =10,\n VD_AGENT_FILE_XFER_STATUS =11,\n VD_AGENT_FILE_XFER_DATA =12,\n VD_AGENT_CLIENT_DISCONNECTED =13,\n VD_AGENT_MAX_CLIPBOARD =14;\n\nvar VD_AGENT_CAP_MOUSE_STATE = 0,\n VD_AGENT_CAP_MONITORS_CONFIG = 1,\n VD_AGENT_CAP_REPLY = 2,\n VD_AGENT_CAP_CLIPBOARD = 3,\n VD_AGENT_CAP_DISPLAY_CONFIG = 4,\n VD_AGENT_CAP_CLIPBOARD_BY_DEMAND = 5,\n VD_AGENT_CAP_CLIPBOARD_SELECTION = 6,\n VD_AGENT_CAP_SPARSE_MONITORS_CONFIG = 7,\n VD_AGENT_CAP_GUEST_LINEEND_LF = 8,\n VD_AGENT_CAP_GUEST_LINEEND_CRLF = 9,\n VD_AGENT_CAP_MAX_CLIPBOARD = 10,\n VD_AGENT_END_CAP = 11;\n\nvar VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA = 0,\n VD_AGENT_FILE_XFER_STATUS_CANCELLED = 1,\n VD_AGENT_FILE_XFER_STATUS_ERROR = 2,\n VD_AGENT_FILE_XFER_STATUS_SUCCESS = 3;\n\ndefine(\"spice-enums\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2012 by Aric Stewart \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n/*\n * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.\n *\n * Permission to use, copy, modify, distribute, and sell this software and its\n * documentation for any purpose is hereby granted without fee, provided that\n * the above copyright notice appear in all copies and that both that\n * copyright notice and this permission notice appear in supporting\n * documentation, and that the name of Thomas Roell not be used in\n * advertising or publicity pertaining to distribution of the software without\n * specific, written prior permission. Thomas Roell makes no representations\n * about the suitability of this software for any purpose. It is provided\n * \"as is\" without express or implied warranty.\n *\n * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,\n * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO\n * EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR\n * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,\n * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n *\n */\n/*\n * Copyright (c) 1994-2003 by The XFree86 Project, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR\n * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n *\n * Except as contained in this notice, the name of the copyright holder(s)\n * and author(s) shall not be used in advertising or otherwise to promote\n * the sale, use or other dealings in this Software without prior written\n * authorization from the copyright holder(s) and author(s).\n */\n\n/*\n * NOTE: The AT/MF keyboards can generate (via the 8042) two (MF: three)\n * sets of scancodes. Set3 can only be generated by a MF keyboard.\n * Set2 sends a makecode for keypress, and the same code prefixed by a\n * F0 for keyrelease. This is a little bit ugly to handle. Thus we use\n * here for X386 the PC/XT compatible Set1. This set uses 8bit scancodes.\n * Bit 7 ist set if the key is released. The code E0 switches to a\n * different meaning to add the new MF cursorkeys, while not breaking old\n * applications. E1 is another special prefix. Since I assume that there\n * will be further versions of PC/XT scancode compatible keyboards, we\n * may be in trouble one day.\n *\n * IDEA: 1) Use Set2 on AT84 keyboards and translate it to MF Set3.\n * 2) Use the keyboards native set and translate it to common keysyms.\n */\n\n/*\n * definition of the AT84/MF101/MF102 Keyboard:\n * ============================================================\n * Defined Key Cap Glyphs Pressed value\n * Key Name Main Also (hex) (dec)\n * ---------------- ---------- ------- ------ ------\n */\n\nvar KEY_Escape =/* Escape 0x01 */ 1\nvar KEY_1 =/* 1 ! 0x02 */ 2\nvar KEY_2 =/* 2 @ 0x03 */ 3\nvar KEY_3 =/* 3 # 0x04 */ 4\nvar KEY_4 =/* 4 $ 0x05 */ 5\nvar KEY_5 =/* 5 % 0x06 */ 6\nvar KEY_6 =/* 6 ^ 0x07 */ 7\nvar KEY_7 =/* 7 & 0x08 */ 8\nvar KEY_8 =/* 8 * 0x09 */ 9\nvar KEY_9 =/* 9 ( 0x0a */ 10\nvar KEY_0 =/* 0 ) 0x0b */ 11\nvar KEY_Minus =/* - (Minus) _ (Under) 0x0c */ 12\nvar KEY_Equal =/* = (Equal) + 0x0d */ 13\nvar KEY_BackSpace =/* Back Space 0x0e */ 14\nvar KEY_Tab =/* Tab 0x0f */ 15\nvar KEY_Q =/* Q 0x10 */ 16\nvar KEY_W =/* W 0x11 */ 17\nvar KEY_E =/* E 0x12 */ 18\nvar KEY_R =/* R 0x13 */ 19\nvar KEY_T =/* T 0x14 */ 20\nvar KEY_Y =/* Y 0x15 */ 21\nvar KEY_U =/* U 0x16 */ 22\nvar KEY_I =/* I 0x17 */ 23\nvar KEY_O =/* O 0x18 */ 24\nvar KEY_P =/* P 0x19 */ 25\nvar KEY_LBrace =/* [ { 0x1a */ 26\nvar KEY_RBrace =/* ] } 0x1b */ 27\nvar KEY_Enter =/* Enter 0x1c */ 28\nvar KEY_LCtrl =/* Ctrl(left) 0x1d */ 29\nvar KEY_A =/* A 0x1e */ 30\nvar KEY_S =/* S 0x1f */ 31\nvar KEY_D =/* D 0x20 */ 32\nvar KEY_F =/* F 0x21 */ 33\nvar KEY_G =/* G 0x22 */ 34\nvar KEY_H =/* H 0x23 */ 35\nvar KEY_J =/* J 0x24 */ 36\nvar KEY_K =/* K 0x25 */ 37\nvar KEY_L =/* L 0x26 */ 38\nvar KEY_SemiColon =/* ;(SemiColon) :(Colon) 0x27 */ 39\nvar KEY_Quote =/* ' (Apostr) \" (Quote) 0x28 */ 40\nvar KEY_Tilde =/* ` (Accent) ~ (Tilde) 0x29 */ 41\nvar KEY_ShiftL =/* Shift(left) 0x2a */ 42\nvar KEY_BSlash =/* \\(BckSlash) |(VertBar)0x2b */ 43\nvar KEY_Z =/* Z 0x2c */ 44\nvar KEY_X =/* X 0x2d */ 45\nvar KEY_C =/* C 0x2e */ 46\nvar KEY_V =/* V 0x2f */ 47\nvar KEY_B =/* B 0x30 */ 48\nvar KEY_N =/* N 0x31 */ 49\nvar KEY_M =/* M 0x32 */ 50\nvar KEY_Comma =/* , (Comma) < (Less) 0x33 */ 51\nvar KEY_Period =/* . (Period) >(Greater)0x34 */ 52\nvar KEY_Slash =/* / (Slash) ? 0x35 */ 53\nvar KEY_ShiftR =/* Shift(right) 0x36 */ 54\nvar KEY_KP_Multiply =/* * 0x37 */ 55\nvar KEY_Alt =/* Alt(left) 0x38 */ 56\nvar KEY_Space =/* (SpaceBar) 0x39 */ 57\nvar KEY_CapsLock =/* CapsLock 0x3a */ 58\nvar KEY_F1 =/* F1 0x3b */ 59\nvar KEY_F2 =/* F2 0x3c */ 60\nvar KEY_F3 =/* F3 0x3d */ 61\nvar KEY_F4 =/* F4 0x3e */ 62\nvar KEY_F5 =/* F5 0x3f */ 63\nvar KEY_F6 =/* F6 0x40 */ 64\nvar KEY_F7 =/* F7 0x41 */ 65\nvar KEY_F8 =/* F8 0x42 */ 66\nvar KEY_F9 =/* F9 0x43 */ 67\nvar KEY_F10 =/* F10 0x44 */ 68\nvar KEY_NumLock =/* NumLock 0x45 */ 69\nvar KEY_ScrollLock =/* ScrollLock 0x46 */ 70\nvar KEY_KP_7 =/* 7 Home 0x47 */ 71\nvar KEY_KP_8 =/* 8 Up 0x48 */ 72\nvar KEY_KP_9 =/* 9 PgUp 0x49 */ 73\nvar KEY_KP_Minus =/* - (Minus) 0x4a */ 74\nvar KEY_KP_4 =/* 4 Left 0x4b */ 75\nvar KEY_KP_5 =/* 5 0x4c */ 76\nvar KEY_KP_6 =/* 6 Right 0x4d */ 77\nvar KEY_KP_Plus =/* + (Plus) 0x4e */ 78\nvar KEY_KP_1 =/* 1 End 0x4f */ 79\nvar KEY_KP_2 =/* 2 Down 0x50 */ 80\nvar KEY_KP_3 =/* 3 PgDown 0x51 */ 81\nvar KEY_KP_0 =/* 0 Insert 0x52 */ 82\nvar KEY_KP_Decimal =/* . (Decimal) Delete 0x53 */ 83\nvar KEY_SysReqest =/* SysReqest 0x54 */ 84\n /* NOTUSED 0x55 */\nvar KEY_Less =/* < (Less) >(Greater) 0x56 */ 86\nvar KEY_F11 =/* F11 0x57 */ 87\nvar KEY_F12 =/* F12 0x58 */ 88\n\nvar KEY_Prefix0 =/* special 0x60 */ 96\nvar KEY_Prefix1 =/* specail 0x61 */ 97\n;\ndefine(\"spice-atKeynames\", function(){});\n\n","\"use strict\";\n/*\n Copyright (C) 2013 by Jeremy P. White \n\n This file is part of spice-html5.\n\n spice-html5 is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n spice-html5 is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with spice-html5. If not, see .\n*/\n\n/*----------------------------------------------------------------------------\n** SpiceSimulateCursor\n** Internet Explorer 10 does not support data uri's in cursor assignment.\n** This file provides a number of gimmicks to compensate. First, if there\n** is a preloaded cursor available, we will use that. Failing that, we will\n** simulate a cursor using an image that is moved around the screen.\n**--------------------------------------------------------------------------*/\nvar SpiceSimulateCursor = {\n\ncursors : new Array(),\nunknown_cursors : new Array(),\nwarned: false,\n\nadd_cursor: function(sha1, value)\n{\n SpiceSimulateCursor.cursors[sha1] = value;\n},\n\nunknown_cursor: function(sha1, curdata)\n{\n if (! SpiceSimulateCursor.warned)\n {\n SpiceSimulateCursor.warned = true;\n alert(\"Internet Explorer does not support dynamic cursors. \" +\n \"This page will now simulate cursors with images, \" +\n \"which will be imperfect. We recommend using Chrome or Firefox instead. \" +\n \"\\n\\nIf you need to use Internet Explorer, you can create a static cursor \" +\n \"file for each cursor your application uses. \" +\n \"View the console log for more information on creating static cursors for your environment.\");\n }\n\n if (! SpiceSimulateCursor.unknown_cursors[sha1])\n {\n SpiceSimulateCursor.unknown_cursors[sha1] = curdata;\n console.log('Unknown cursor. Simulation required. To avoid simulation for this cursor, create and include a custom javascript file, and add the following line:');\n console.log('SpiceCursorSimulator.add_cursor(\"' + sha1 + '\"), \".cur\");');\n console.log('And then run following command, redirecting output into .cur:');\n console.log('php -r \"echo urldecode(\\'' + curdata + '\\');\"');\n }\n},\n\nsimulate_cursor: function (spicecursor, cursor, screen, pngstr)\n{\n var cursor_sha = hex_sha1(pngstr + ' ' + cursor.header.hot_spot_x + ' ' + cursor.header.hot_spot_y);\n if (typeof SpiceSimulateCursor.cursors != 'undefined')\n if (typeof SpiceSimulateCursor.cursors[cursor_sha] != 'undefined')\n {\n var curstr = 'url(' + SpiceSimulateCursor.cursors[cursor_sha] + '), default';\n screen.style.cursor = curstr;\n }\n\n if (window.getComputedStyle(screen, null).cursor == 'auto')\n {\n SpiceSimulateCursor.unknown_cursor(cursor_sha, \n SpiceSimulateCursor.create_icondir(cursor.header.width, cursor.header.height,\n cursor.data.byteLength, cursor.header.hot_spot_x, cursor.header.hot_spot_y) + pngstr);\n\n document.getElementById(spicecursor.parent.screen_id).style.cursor = 'none';\n if (! spicecursor.spice_simulated_cursor)\n {\n spicecursor.spice_simulated_cursor = document.createElement('img');\n\n spicecursor.spice_simulated_cursor.style.position = 'absolute';\n spicecursor.spice_simulated_cursor.style.display = 'none';\n spicecursor.spice_simulated_cursor.style.overflow = 'hidden';\n\n spicecursor.spice_simulated_cursor.spice_screen = document.getElementById(spicecursor.parent.screen_id);\n\n spicecursor.spice_simulated_cursor.addEventListener('mousemove', SpiceSimulateCursor.handle_sim_mousemove);\n\n spicecursor.spice_simulated_cursor.spice_screen.appendChild(spicecursor.spice_simulated_cursor);\n }\n\n spicecursor.spice_simulated_cursor.src = 'data:image/png,' + pngstr;\n\n spicecursor.spice_simulated_cursor.spice_hot_x = cursor.header.hot_spot_x;\n spicecursor.spice_simulated_cursor.spice_hot_y = cursor.header.hot_spot_y;\n\n spicecursor.spice_simulated_cursor.style.pointerEvents = \"none\";\n }\n else\n { \n if (spicecursor.spice_simulated_cursor)\n {\n spicecursor.spice_simulated_cursor.spice_screen.removeChild(spicecursor.spice_simulated_cursor);\n delete spicecursor.spice_simulated_cursor;\n }\n }\n},\n\nhandle_sim_mousemove: function(e)\n{\n var retval;\n var f = SpiceSimulateCursor.duplicate_mouse_event(e, this.spice_screen);\n return this.spice_screen.dispatchEvent(f);\n},\n\nduplicate_mouse_event: function(e, target)\n{\n var evt = document.createEvent(\"mouseevent\");\n evt.initMouseEvent(e.type, true, true, e.view, e.detail,\n e.screenX, e.screenY, e.clientX, e.clientY,\n e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);\n return evt;\n},\n\nICONDIR: function ()\n{\n},\n\nICONDIRENTRY: function(width, height, bytes, hot_x, hot_y)\n{\n this.width = width;\n this.height = height;\n this.bytes = bytes;\n this.hot_x = hot_x;\n this.hot_y = hot_y;\n},\n\n\ncreate_icondir: function (width, height, bytes, hot_x, hot_y)\n{\n var i;\n var header = new SpiceSimulateCursor.ICONDIR();\n var entry = new SpiceSimulateCursor.ICONDIRENTRY(width, height, bytes, hot_x, hot_y);\n\n var mb = new ArrayBuffer(header.buffer_size() + entry.buffer_size());\n var at = header.to_buffer(mb);\n at = entry.to_buffer(mb, at);\n\n var u8 = new Uint8Array(mb);\n var str = \"\";\n for (i = 0; i < at; i++)\n {\n str += \"%\";\n if (u8[i] < 16)\n str += \"0\";\n str += u8[i].toString(16);\n }\n return str;\n},\n\n};\n\nSpiceSimulateCursor.ICONDIR.prototype = \n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint16(at, 0, true); at += 2;\n dv.setUint16(at, 2, true); at += 2;\n dv.setUint16(at, 1, true); at += 2;\n return at;\n },\n buffer_size: function()\n {\n return 6;\n }\n};\n\nSpiceSimulateCursor.ICONDIRENTRY.prototype =\n{\n to_buffer: function(a, at)\n {\n at = at || 0;\n var dv = new SpiceDataView(a);\n dv.setUint8(at, this.width); at++;\n dv.setUint8(at, this.height); at++;\n dv.setUint8(at, 0); at++; /* color palette count, unused */\n dv.setUint8(at, 0); at++; /* reserved */\n dv.setUint16(at, this.hot_x, true); at += 2;\n dv.setUint16(at, this.hot_y, true); at += 2;\n dv.setUint32(at, this.bytes, true); at += 4;\n dv.setUint32(at, at + 4, true); at += 4; /* Offset to bytes */\n return at;\n },\n buffer_size: function()\n {\n return 16;\n }\n};\n\ndefine(\"spice-simulatecursor\", function(){});\n\n","define('console/spice',['require','spice-main'],function(require) {\n require('spice-main');\n \n var host = null, port = null;\n var sc;\n\n function spice_set_cookie(name, value, days) {\n var date, expires;\n date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toGMTString();\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\n };\n\n function spice_query_var(name, defvalue) {\n var match = RegExp('[?&]' + name + '=([^&]*)')\n .exec(window.location.search);\n return match ?\n decodeURIComponent(match[1].replace(/\\+/g, ' '))\n : defvalue;\n }\n\n function spice_error(e) {\n disconnect();\n }\n\n function connect() {\n var host, port, password, scheme = \"ws://\", uri;\n\n // By default, use the host and port of server that served this file\n host = spice_query_var('host', window.location.hostname);\n\n // Note that using the web server port only makes sense\n // if your web server has a reverse proxy to relay the WebSocket\n // traffic to the correct destination port.\n var default_port = window.location.port;\n if (!default_port) {\n if (window.location.protocol == 'http:') {\n default_port = 80;\n } else if (window.location.protocol == 'https:') {\n default_port = 443;\n }\n }\n port = spice_query_var('port', default_port);\n if (window.location.protocol == 'https:') {\n scheme = \"wss://\";\n }\n\n // If a token variable is passed in, set the parameter in a cookie.\n // This is used by nova-spiceproxy.\n token = spice_query_var('token', null);\n if (token) {\n spice_set_cookie('token', token, 1)\n }\n\n password = spice_query_var('password', '');\n path = spice_query_var('path', 'websockify');\n\n if ((!host) || (!port)) {\n console.log(\"must specify host and port in URL\");\n return;\n }\n\n if (sc) {\n sc.stop();\n }\n\n uri = scheme + host + \":\" + port + \"?token=\" + token;\n\n try {\n sc = new SpiceMainConn({uri: uri, screen_id: \"spice-screen\", dump_id: \"debug-div\",\n message_id: \"message-div\", password: password, onerror: spice_error, onagent: agent_connected});\n }\n catch (e) {\n alert(e.toString());\n disconnect();\n }\n\n }\n\n function disconnect() {\n console.log(\">> disconnect\");\n if (sc) {\n sc.stop();\n }\n if (window.File && window.FileReader && window.FileList && window.Blob) {\n var spice_xfer_area = document.getElementById('spice-xfer-area');\n document.getElementById('spice-area').removeChild(spice_xfer_area);\n document.getElementById('spice-area').removeEventListener('dragover', handle_file_dragover, false);\n document.getElementById('spice-area').removeEventListener('drop', handle_file_drop, false);\n }\n console.log(\"<< disconnect\");\n }\n\n function agent_connected(sc) {\n window.addEventListener('resize', handle_resize);\n window.spice_connection = this;\n\n resize_helper(this);\n\n if (window.File && window.FileReader && window.FileList && window.Blob) {\n var spice_xfer_area = document.createElement(\"div\");\n spice_xfer_area.setAttribute('id', 'spice-xfer-area');\n document.getElementById('spice-area').addEventListener('dragover', handle_file_dragover, false);\n document.getElementById('spice-area').addEventListener('drop', handle_file_drop, false);\n } else {\n console.log(\"File API is not supported\");\n }\n }\n\n connect();\n});\n\n"]} \ No newline at end of file diff --git a/src/sunstone/public/dist/console/vnc.js b/src/sunstone/public/dist/console/vnc.js deleted file mode 100644 index 30b55d9dc1..0000000000 --- a/src/sunstone/public/dist/console/vnc.js +++ /dev/null @@ -1,6 +0,0 @@ -function Websock(){"use strict";this._websocket=null,this._rQ=[],this._rQi=0,this._rQmax=1e4,this._sQ=[],this._mode="base64",this.maxBufferedAmount=200,this._eventHandlers={message:function(){},open:function(){},close:function(){},error:function(){}}}function DES(t){"use strict";function e(t){var e,i,s,r,n,o,a,h,_,c,u=[],l=[],d=[];for(i=0,s=56;56>i;++i,s-=8)s+=-5>s?65:-3>s?31:-1>s?63:27===s?35:0,r=7&s,u[i]=0!==(t[s>>>3]&1<e;++e){for(r=e<<1,n=r+1,d[r]=d[n]=0,o=28;59>o;o+=28)for(i=o-28;o>i;++i)s=i+v[e],l[i]=o>s?u[s]:u[s-28];for(i=0;24>i;++i)0!==l[b[i]]&&(d[r]|=1<<23-i),0!==l[b[i+24]]&&(d[n]|=1<<23-i)}for(e=0,_=0,c=0;16>e;++e)a=d[_++],h=d[_++],w[c]=(16515072&a)<<6,w[c]|=(4032&a)<<10,w[c]|=(16515072&h)>>>10,w[c]|=(4032&h)>>>6,++c,w[c]=(258048&a)<<12,w[c]|=(63&a)<<16,w[c]|=(258048&h)>>>4,w[c]|=63&h,++c}function i(t){var e,i,s,r,n=0,o=t.slice(),a=0;for(i=o[n++]<<24|o[n++]<<16|o[n++]<<8|o[n++],s=o[n++]<<24|o[n++]<<16|o[n++]<<8|o[n++],r=252645135&(i>>>4^s),s^=r,i^=r<<4,r=65535&(i>>>16^s),s^=r,i^=r<<16,r=858993459&(s>>>2^i),i^=r,s^=r<<2,r=16711935&(s>>>8^i),i^=r,s^=r<<8,s=s<<1|s>>>31&1,r=2863311530&(i^s),i^=r,s^=r,i=i<<1|i>>>31&1,n=0;8>n;++n)r=s<<28|s>>>4,r^=w[a++],e=g[63&r],e|=f[r>>>8&63],e|=l[r>>>16&63],e|=c[r>>>24&63],r=s^w[a++],e|=y[63&r],e|=p[r>>>8&63],e|=d[r>>>16&63],e|=u[r>>>24&63],i^=e,r=i<<28|i>>>4,r^=w[a++],e=g[63&r],e|=f[r>>>8&63],e|=l[r>>>16&63],e|=c[r>>>24&63],r=i^w[a++],e|=y[63&r],e|=p[r>>>8&63],e|=d[r>>>16&63],e|=u[r>>>24&63],s^=e;for(s=s<<31|s>>>1,r=2863311530&(i^s),i^=r,s^=r,i=i<<31|i>>>1,r=16711935&(i>>>8^s),s^=r,i^=r<<8,r=858993459&(i>>>2^s),s^=r,i^=r<<2,r=65535&(s>>>16^i),i^=r,s^=r<<16,r=252645135&(s>>>4^i),i^=r,s^=r<<4,r=[s,i],n=0;8>n;n++)o[n]=(r[n>>>2]>>>8*(3-n%4))%256,o[n]<0&&(o[n]+=256);return o}function s(t){return i(t.slice(0,8)).concat(i(t.slice(8,16)))}var r,n,o,a,h,_,c,u,l,d,f,p,g,y,b=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],v=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],m=0,w=[];return r=65536,n=1<<24,o=r|n,a=4,h=1024,_=a|h,c=[o|h,m|m,r|m,o|_,o|a,r|_,m|a,r|m,m|h,o|h,o|_,m|h,n|_,o|a,n|m,m|a,m|_,n|h,n|h,r|h,r|h,o|m,o|m,n|_,r|a,n|a,n|a,r|a,m|m,m|_,r|_,n|m,r|m,o|_,m|a,o|m,o|h,n|m,n|m,m|h,o|a,r|m,r|h,n|a,m|h,m|a,n|_,r|_,o|_,r|a,o|m,n|_,n|a,m|_,r|_,o|h,m|_,n|h,n|h,m|m,r|a,r|h,m|m,o|a],r=1<<20,n=1<<31,o=r|n,a=32,h=32768,_=a|h,u=[o|_,n|h,m|h,r|_,r|m,m|a,o|a,n|_,n|a,o|_,o|h,n|m,n|h,r|m,m|a,o|a,r|h,r|a,n|_,m|m,n|m,m|h,r|_,o|m,r|a,n|a,m|m,r|h,m|_,o|h,o|m,m|_,m|m,r|_,o|a,r|m,n|_,o|m,o|h,m|h,o|m,n|h,m|a,o|_,r|_,m|a,m|h,n|m,m|_,o|h,r|m,n|a,r|a,n|_,n|a,r|a,r|h,m|m,n|h,m|_,n|m,o|a,o|_,r|h],r=1<<17,n=1<<27,o=r|n,a=8,h=512,_=a|h,l=[m|_,o|h,m|m,o|a,n|h,m|m,r|_,n|h,r|a,n|a,n|a,r|m,o|_,r|a,o|m,m|_,n|m,m|a,o|h,m|h,r|h,o|m,o|a,r|_,n|_,r|h,r|m,n|_,m|a,o|_,m|h,n|m,o|h,n|m,r|a,m|_,r|m,o|h,n|h,m|m,m|h,r|a,o|_,n|h,n|a,m|h,m|m,o|a,n|_,r|m,n|m,o|_,m|a,r|_,r|h,n|a,o|m,n|_,m|_,o|m,r|_,m|a,o|a,r|h],r=8192,n=1<<23,o=r|n,a=1,h=128,_=a|h,d=[o|a,r|_,r|_,m|h,o|h,n|_,n|a,r|a,m|m,o|m,o|m,o|_,m|_,m|m,n|h,n|a,m|a,r|m,n|m,o|a,m|h,n|m,r|a,r|h,n|_,m|a,r|h,n|h,r|m,o|h,o|_,m|_,n|h,n|a,o|m,o|_,m|_,m|m,m|m,o|m,r|h,n|h,n|_,m|a,o|a,r|_,r|_,m|h,o|_,m|_,m|a,r|m,n|a,r|a,o|h,n|_,r|a,r|h,n|m,o|a,m|h,n|m,r|m,o|h],r=1<<25,n=1<<30,o=r|n,a=256,h=1<<19,_=a|h,f=[m|a,r|_,r|h,o|a,m|h,m|a,n|m,r|h,n|_,m|h,r|a,n|_,o|a,o|h,m|_,n|m,r|m,n|h,n|h,m|m,n|a,o|_,o|_,r|a,o|h,n|a,m|m,o|m,r|_,r|m,o|m,m|_,m|h,o|a,m|a,r|m,n|m,r|h,o|a,n|_,r|a,n|m,o|h,r|_,n|_,m|a,r|m,o|h,o|_,m|_,o|m,o|_,r|h,m|m,n|h,o|m,m|_,r|a,n|a,m|h,m|m,n|h,r|_,n|a],r=1<<22,n=1<<29,o=r|n,a=16,h=16384,_=a|h,p=[n|a,o|m,m|h,o|_,o|m,m|a,o|_,r|m,n|h,r|_,r|m,n|a,r|a,n|h,n|m,m|_,m|m,r|a,n|_,m|h,r|h,n|_,m|a,o|a,o|a,m|m,r|_,o|h,m|_,r|h,o|h,n|m,n|h,m|a,o|a,r|h,o|_,r|m,m|_,n|a,r|m,n|h,n|m,m|_,n|a,o|_,r|h,o|m,r|_,o|h,m|m,o|a,m|a,m|h,o|m,r|_,m|h,r|a,n|_,m|m,o|h,n|m,r|a,n|_],r=1<<21,n=1<<26,o=r|n,a=2,h=2048,_=a|h,g=[r|m,o|a,n|_,m|m,m|h,n|_,r|_,o|h,o|_,r|m,m|m,n|a,m|a,n|m,o|a,m|_,n|h,r|_,r|a,n|h,n|a,o|m,o|h,r|a,o|m,m|h,m|_,o|_,r|h,m|a,n|m,r|h,n|m,r|h,r|m,n|_,n|_,o|a,o|a,m|a,r|a,n|m,n|h,r|m,o|h,m|_,r|_,o|h,m|_,n|a,o|_,o|m,r|h,m|m,m|a,o|_,m|m,r|_,o|m,m|h,n|a,n|h,m|h,r|a],r=1<<18,n=1<<28,o=r|n,a=64,h=4096,_=a|h,y=[n|_,m|h,r|m,o|_,n|m,n|_,m|a,n|m,r|a,o|m,o|_,r|h,o|h,r|_,m|h,m|a,o|m,n|a,n|h,m|_,r|h,r|a,o|a,o|h,m|_,m|m,m|m,o|a,n|a,n|h,r|_,r|m,r|_,r|m,o|h,m|h,m|a,o|a,m|h,r|_,n|h,m|a,n|a,o|m,o|a,n|m,r|m,n|_,m|m,o|_,r|a,n|a,o|m,n|h,n|_,m|m,o|_,r|h,r|h,m|_,m|_,r|a,n|m,o|h],e(t),{encrypt:s}}function KeyEventDecoder(t,e){"use strict";function i(t){for(var i=0;i>5&15)-1,r=1980+(t>>9&127),n=2*(31&e),o=e>>5&63;return hour=e>>11&31,new Date(r,s,i,hour,o,n)},this.open=function(t){if(this.data=t,this.files=[],this.data.length<22)return{status:!1,error:"Invalid data"};for(var e=this.data.length-22;e>=0&&101010256!=this.getInt(e,4);)--e;if(0>e)return{status:!1,error:"Invalid data"};if(0!=this.getInt(e+4,2)||0!=this.getInt(e+6,2))return{status:!1,error:"No multidisk support"};var i=this.getInt(e+8,2),s=this.getInt(e+16,4),r=this.getInt(e+20,2);this.comment=this.data.slice(e+22,e+22+r);for(var n=s,o=0;i>o;++o){if(33639248!=this.getInt(n+0,4))return{status:!1,error:"Invalid data"};if(this.getInt(n+6,2)>20)return{status:!1,error:"Unsupported version"};if(1&this.getInt(n+8,2))return{status:!1,error:"Encryption not implemented"};var a=this.getInt(n+10,2);if(0!=a&&8!=a)return{status:!1,error:"Unsupported compression method"};var h=this.getInt(n+12,2),_=this.getInt(n+14,2),c=this.getDOSDate(_,h),u=(this.getInt(n+16,4),this.getInt(n+20,4)),l=this.getInt(n+24,4),d=this.getInt(n+28,2),f=this.getInt(n+30,2),p=this.getInt(n+32,2),g=this.getInt(n+42,4),y=this.data.slice(n+46,n+46+d),b=this.data.slice(n+46+d+f,n+46+d+f+p);if(67324752!=this.getInt(g+0,4))return{status:!1,error:"Invalid data"};var v=this.getInt(g+26,2),m=this.getInt(g+28,2),w=g+30+v+m;this.files[y]={fileComment:b,compressionMethod:a,compressedSize:u,uncompressedSize:l,localFileContent:w,lastModifiedDate:c},n+=46+d+f+p}return{status:!0}},this.read=function(t){var e=this.files[t];if(e){if(8==e.compressionMethod){tinf||(tinf=new TINF,tinf.init());var i=tinf.uncompress(this.data,e.localFileContent);return i.status==tinf.OK?{status:!0,data:i.data}:{status:!1,error:i.error}}return{status:!0,data:this.data.slice(e.localFileContent,e.localFileContent+e.uncompressedSize)}}return{status:!1,error:"File '"+t+"' doesn't exist in zip"}}}function TINF(){function t(t,e,i,s,r){for(var n=0;24>e;)i|=(255&t[s++])<>16-r,i>>=r,e-=r,[e,i,s,n]}this.OK=0,this.DATA_ERROR=-3,this.WINDOW_SIZE=32768,this.TREE=function(){this.table=new Array(16),this.trans=new Array(288)},this.DATA=function(t){this.source="",this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=[],this.history=[],this.ltree=new t.TREE,this.dtree=new t.TREE},this.sltree=new this.TREE,this.sdtree=new this.TREE,this.length_bits=new Array(30),this.length_base=new Array(30),this.dist_bits=new Array(30),this.dist_base=new Array(30),this.clcidx=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],this.build_bits_base=function(t,e,i,s){var r,n;for(r=0;i>r;++r)t[r]=0;for(r=0;30-i>r;++r)t[r+i]=Math.floor(r/i);for(n=s,r=0;30>r;++r)e[r]=n,n+=1<i;++i)t.table[i]=0;for(t.table[7]=24,t.table[8]=152,t.table[9]=112,i=0;24>i;++i)t.trans[i]=256+i;for(i=0;144>i;++i)t.trans[24+i]=i;for(i=0;8>i;++i)t.trans[168+i]=280+i;for(i=0;112>i;++i)t.trans[176+i]=144+i;for(i=0;5>i;++i)e.table[i]=0;for(e.table[5]=32,i=0;32>i;++i)e.trans[i]=i},this.build_tree=function(t,e,i,s){var r,n,o=new Array(16);for(r=0;16>r;++r)t.table[r]=0;for(r=0;s>r;++r)t.table[e[i+r]]++;for(t.table[0]=0,n=0,r=0;16>r;++r)o[r]=n,n+=t.table[r];for(r=0;s>r;++r)e[i+r]&&(t.trans[o[e[i+r]]++]=r)},this.getbit=function(t){var e;return t.bitcount--||(t.tag=255&t.source[t.sourceIndex++],t.bitcount=7),e=1&t.tag,t.tag>>=1,e},this.read_bits=function(e,i,s){if(!i)return s;var r=t(e.source,e.bitcount,e.tag,e.sourceIndex,i);return e.bitcount=r[0],e.tag=r[1],e.sourceIndex=r[2],r[3]+s},this.decode_symbol=function(t,e){for(;t.bitcount<16;)t.tag=t.tag|(255&t.source[t.sourceIndex++])<>r),++r,i+=e.table[r],s-=e.table[r];while(s>=0);return t.tag>>=r,t.bitcount-=r,e.trans[i+s]},this.decode_trees=function(t,e,i){var s,r,n,o,a,h,_=new this.TREE,c=new Array(320);for(s=this.read_bits(t,5,257),r=this.read_bits(t,5,1),n=this.read_bits(t,4,4),o=0;19>o;++o)c[o]=0;for(o=0;n>o;++o){var u=this.read_bits(t,3,0);c[this.clcidx[o]]=u}for(this.build_tree(_,c,0,19),a=0;s+r>a;){var l=this.decode_symbol(t,_);switch(l){case 16:var d=c[a-1];for(h=this.read_bits(t,2,3);h;--h)c[a++]=d;break;case 17:for(h=this.read_bits(t,3,3);h;--h)c[a++]=0;break;case 18:for(h=this.read_bits(t,7,11);h;--h)c[a++]=0;break;default:c[a++]=l}}this.build_tree(e,c,0,s),this.build_tree(i,c,s,r)},this.inflate_block_data=function(t,e,i){for(var s=t.dest,r=s.length;;){var n=this.decode_symbol(t,e);if(256==n)return this.OK;if(256>n)s[r++]=n,t.history.push(n);else{var o,a,h,_;if(n-=257,o=this.read_bits(t,this.length_bits[n],this.length_base[n]),a=this.decode_symbol(t,i),h=t.history.length-this.read_bits(t,this.dist_bits[a],this.dist_base[a]),0>h)throw"Invalid zlib offset "+h;for(_=h;h+o>_;++_)s[r++]=t.history[_],t.history.push(t.history[_])}}},this.inflate_uncompressed_block=function(t){var e,i,s;if(t.bitcount>7){var r=Math.floor(t.bitcount/8);t.sourceIndex-=r,t.bitcount=0,t.tag=0}if(e=t.source[t.sourceIndex+1],e=256*e+t.source[t.sourceIndex],i=t.source[t.sourceIndex+3],i=256*i+t.source[t.sourceIndex+2],e!=(65535&~i))return this.DATA_ERROR;for(t.sourceIndex+=4,s=e;s;--s)t.history.push(t.source[t.sourceIndex]),t.dest[t.dest.length]=t.source[t.sourceIndex++];return t.bitcount=0,this.OK},this.inflate_fixed_block=function(t){return this.inflate_block_data(t,this.sltree,this.sdtree)},this.inflate_dynamic_block=function(t){return this.decode_trees(t,t.ltree,t.dtree),this.inflate_block_data(t,t.ltree,t.dtree)},this.init=function(){this.build_fixed_trees(this.sltree,this.sdtree),this.build_bits_base(this.length_bits,this.length_base,4,3),this.build_bits_base(this.dist_bits,this.dist_base,2,1),this.length_bits[28]=0,this.length_base[28]=258,this.reset()},this.reset=function(){this.d=new this.DATA(this),delete this.header},this.uncompress=function(t,e){var i,s=this.d;s.source=t,s.sourceIndex=e,s.bitcount=0,s.dest=[],"undefined"==typeof this.header&&(this.header=this.read_bits(s,16,0));var r=0;do{var n,o;switch(i=this.getbit(s),n=this.read_bits(s,2,0)){case 0:o=this.inflate_uncompressed_block(s);break;case 1:o=this.inflate_fixed_block(s);break;case 2:o=this.inflate_dynamic_block(s);break;default:return{status:this.DATA_ERROR}}if(o!=this.OK)return{status:this.DATA_ERROR};r++}while(!i&&s.sourceIndex0&&(t.splice(c-1,2),c-=2)}t=t.join("/")}else 0===t.indexOf("./")&&(t=t.substring(2));if((d||g)&&f){for(i=t.split("/"),c=i.length;c>0;c-=1){if(s=i.slice(0,c).join("/"),d)for(u=d.length;u>0;u-=1)if(r=f[d.slice(0,u).join("/")],r&&(r=r[s])){n=r,a=c;break}if(n)break;!h&&g&&g[s]&&(h=g[s],_=c)}!n&&h&&(n=h,a=_),n&&(i.splice(0,a,n),t=i.join("/"))}return t}function s(e,i){return function(){var s=b.call(arguments,0);return"string"!=typeof s[0]&&1===s.length&&s.push(null),c.apply(t,s.concat([e,i]))}}function r(t){return function(e){return i(e,t)}}function n(t){return function(e){d[t]=e}}function o(i){if(e(f,i)){var s=f[i];delete f[i],g[i]=!0,_.apply(t,s)}if(!e(d,i)&&!e(g,i))throw new Error("No "+i);return d[i]}function a(t){var e,i=t?t.indexOf("!"):-1;return i>-1&&(e=t.substring(0,i),t=t.substring(i+1,t.length)),[e,t]}function h(t){return function(){return p&&p.config&&p.config[t]||{}}}var _,c,u,l,d={},f={},p={},g={},y=Object.prototype.hasOwnProperty,b=[].slice,v=/\.js$/;u=function(t,e){var s,n=a(t),h=n[0];return t=n[1],h&&(h=i(h,e),s=o(h)),h?t=s&&s.normalize?s.normalize(t,r(e)):i(t,e):(t=i(t,e),n=a(t),h=n[0],t=n[1],h&&(s=o(h))),{f:h?h+"!"+t:t,n:t,pr:h,p:s}},l={require:function(t){return s(t)},exports:function(t){var e=d[t];return"undefined"!=typeof e?e:d[t]={}},module:function(t){return{id:t,uri:"",exports:d[t],config:h(t)}}},_=function(i,r,a,h){var _,c,p,y,b,v,m=[],w=typeof a;if(h=h||i,"undefined"===w||"function"===w){for(r=!r.length&&a.length?["require","exports","module"]:r,b=0;b>8&255,255&t)}),addFunc(Array,"push32",function(t){"use strict";this.push(t>>24&255,t>>16&255,t>>8&255,255&t)}),addFunc(Array,"map",function(t){"use strict";var e=this.length;if("function"!=typeof t)throw new TypeError;for(var i=new Array(e),s=arguments[1],r=0;e>r;r++)r in this&&(i[r]=t.call(s,this[r],r,this));return i}),addFunc(Array,"indexOf",function(t){"use strict";var e=this.length>>>0,i=Number(arguments[1])||0;for(i=0>i?Math.ceil(i):Math.floor(i),0>i&&(i+=e);e>i;i++)if(i in this&&this[i]===t)return i;return-1}),Object.keys||(Object.keys=function(){"use strict";var t=Object.prototype.hasOwnProperty,e=!{toString:null}.propertyIsEnumerable("toString"),i=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],s=i.length;return function(r){if("object"!=typeof r&&("function"!=typeof r||null===r))throw new TypeError("Object.keys called on non-object");var n,o,a=[];for(n in r)t.call(r,n)&&a.push(n);if(e)for(o=0;s>o;o++)t.call(r,i[o])&&a.push(i[o]);return a}}()),addFunc(Function,"bind",function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var e=Array.prototype.slice.call(arguments,1),i=this,s=function(){},r=function(){return i.apply(this instanceof s&&t?this:t,e.concat(Array.prototype.slice.call(arguments)))};return s.prototype=this.prototype,r.prototype=new s,r}),window.requestAnimFrame=function(){"use strict";return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){window.setTimeout(t,1e3/60)}}(),Util._log_level="warn",Util.init_logging=function(t){"use strict";switch("undefined"==typeof t?t=Util._log_level:Util._log_level=t,"undefined"==typeof window.console&&(window.console="undefined"!=typeof window.opera?{log:window.opera.postError,warn:window.opera.postError,error:window.opera.postError}:{log:function(){},warn:function(){},error:function(){}}),Util.Debug=Util.Info=Util.Warn=Util.Error=function(){},t){case"debug":Util.Debug=function(t){console.log(t)};case"info":Util.Info=function(t){console.log(t)};case"warn":Util.Warn=function(t){console.warn(t)};case"error":Util.Error=function(t){console.error(t)};case"none":break;default:throw new Error("invalid logging type '"+t+"'")}},Util.get_logging=function(){return Util._log_level},Util.init_logging(),Util.make_property=function(t,e,i,s){"use strict";var r;r="arr"===s?function(t){return"undefined"!=typeof t?this["_"+e][t]:this["_"+e]}:function(){return this["_"+e]};var n,o=function(t){return t?function(i,s){"undefined"!=typeof s?this["_"+e][s]=t(i):this["_"+e]=t(i)}:function(t,i){"undefined"!=typeof i?this["_"+e][i]=t:this["_"+e]=t}};if("bool"===s)n=o(function(t){return!t||t in{0:1,no:1,"false":1}?!1:!0});else if("int"===s)n=o(function(t){return parseInt(t,10)});else if("float"===s)n=o(parseFloat);else if("str"===s)n=o(String);else if("func"===s)n=o(function(t){return t?t:function(){}});else{if("arr"!==s&&"dom"!==s&&"raw"!=s)throw new Error("Unknown property type "+s);n=o()}"undefined"==typeof t["get_"+e]&&(t["get_"+e]=r),"undefined"==typeof t["set_"+e]&&("rw"===i?t["set_"+e]=n:"wo"===i&&(t["set_"+e]=function(t,i){if("undefined"!=typeof this["_"+e])throw new Error(e+" can only be set once");n.call(this,t,i)})),t["_raw_set_"+e]=function(t,e){n.call(this,t,e)}},Util.make_properties=function(t,e){"use strict";for(var i=0;i0&&("loaded"===s[0].readyState||"complete"===s[0].readyState);){var t=s.shift();i.appendChild(t)}(!this.readyState||Util.Engine.presto&&"loaded"===this.readyState||"complete"===this.readyState)&&r.indexOf(this)>=0&&(this.onload=this.onreadystatechange=null,r.splice(r.indexOf(this),1),0===r.length&&window.onscriptsload&&window.onscriptsload())},o=0;o1&&"object"==typeof t[r])s+=WebUtil.dirObj(t[r],e-1,i+"."+r);else{var n="";n="undefined"==typeof t[r]?"undefined":t[r].toString().replace("\n"," "),n.length>30&&(n=n.substr(0,30)+"..."),s+=i+"."+r+": "+n+"\n"}return s},WebUtil.getQueryVar=function(t,e){"use strict";var i=new RegExp(".*[?&]"+t+"=([^&#]*)"),s=document.location.href.match(i);return"undefined"==typeof e&&(e=null),s?decodeURIComponent(s[1]):e},WebUtil.createCookie=function(t,e,i){"use strict";var s,r;i?(s=new Date,s.setTime(s.getTime()+24*i*60*60*1e3),r="; expires="+s.toGMTString()):r="";var n;n="https:"===document.location.protocol?"; secure":"",document.cookie=t+"="+e+r+"; path=/"+n},WebUtil.readCookie=function(t,e){"use strict";for(var i=t+"=",s=document.cookie.split(";"),r=0;r-1&&e.push(t[i]);return e},WebUtil.selectStylesheet=function(t){"use strict";"undefined"==typeof t&&(t="default");for(var e=WebUtil.getStylesheets(),i=0;in;n+=3)e+=i[t[n]>>2],e+=i[((3&t[n])<<4)+(t[n+1]>>4)],e+=i[((15&t[n+1])<<2)+(t[n+2]>>6)],e+=i[63&t[n+2]];var o=0;return 2===r?(o=s-r,e+=i[t[o]>>2],e+=i[((3&t[o])<<4)+(t[o+1]>>4)],e+=i[(15&t[o+1])<<2],e+=i[64]):1===r&&(o=s-r,e+=i[t[o]>>2],e+=i[(3&t[o])<<4],e+=i[64],e+=i[64]),e},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode:function(t,e){"use strict";e="undefined"!=typeof e?e:0;var i,s,r=Base64.toBinaryTable,n=Base64.base64Pad,o=0,a=0,h=t.indexOf("=")-e;0>h&&(h=t.length-e),s=3*(h>>2)+Math.floor(h%4/1.5),i=new Array(s);for(var _=0,c=e;c=8&&(o-=8,l||(i[_++]=a>>o&255),a&=(1<s){if(i){if(this._rQi0&&(this._websocket.send(this._encode_message()),this._sQ=[]),!0):(Util.Info("Delaying send, bufferedAmount: "+this._websocket.bufferedAmount),!1)},send:function(t){return this._sQ=this._sQ.concat(t),this.flush()},send_string:function(t){this.send(t.split("").map(function(t){return t.charCodeAt(0)}))},on:function(t,e){this._eventHandlers[t]=e},init:function(t,e){this._rQ=[],this._rQi=0,this._sQ=[],this._websocket=null;var i=!1;"Uint8Array"in window&&"set"in Uint8Array.prototype&&(i=!0);var s=!1;try{i&&("binaryType"in WebSocket.prototype||new WebSocket(e+"://.").binaryType)&&(Util.Info("Detected binaryType support in WebSockets"),s=!0)}catch(r){}if("undefined"==typeof t&&(t=s?["binary","base64"]:"base64"),!s){if("binary"===t)throw new Error("WebSocket binary sub-protocol requested but not supported");if("object"==typeof t){for(var n=[],o=0;o0))throw new Error("Only WebSocket binary sub-protocol was requested and is not supported.");t=n}}return t},open:function(t,e){var i=t.match(/^([a-z]+):\/\//)[1];e=this.init(e,i),this._websocket=new WebSocket(t,e),e.indexOf("binary")>=0&&(this._websocket.binaryType="arraybuffer"),this._websocket.onmessage=this._recv_message.bind(this),this._websocket.onopen=function(){Util.Debug(">> WebSock.onopen"),this._websocket.protocol?(this._mode=this._websocket.protocol,Util.Info("Server choose sub-protocol: "+this._websocket.protocol)):(this._mode="base64",Util.Error("Server select no sub-protocol!: "+this._websocket.protocol)),this._eventHandlers.open(),Util.Debug("<< WebSock.onopen")}.bind(this),this._websocket.onclose=function(t){Util.Debug(">> WebSock.onclose"),this._eventHandlers.close(t),Util.Debug("<< WebSock.onclose")}.bind(this),this._websocket.onerror=function(t){Util.Debug(">> WebSock.onerror: "+t),this._eventHandlers.error(t),Util.Debug("<< WebSock.onerror: "+t)}.bind(this)},close:function(){this._websocket&&((this._websocket.readyState===WebSocket.OPEN||this._websocket.readyState===WebSocket.CONNECTING)&&(Util.Info("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=function(){})},_encode_message:function(){return"binary"===this._mode?new Uint8Array(this._sQ).buffer:Base64.encode(this._sQ)},_decode_message:function(t){if("binary"===this._mode)for(var e=new Uint8Array(t),i=0;i0?(this._eventHandlers.message(),this._rQ.length>this._rQmax&&(this._rQ=this._rQ.slice(this._rQi),this._rQi=0)):Util.Debug("Ignoring empty message")}catch(e){var i="";e.name&&(i+="\n name: "+e.name+"\n",i+=" message: "+e.message+"\n"),"undefined"!=typeof e.description&&(i+=" description: "+e.description+"\n"),"undefined"!=typeof e.stack&&(i+=e.stack),Util.Error(i.length>0?"recv_message, caught exception: "+i:"recv_message, caught exception: "+e),this._eventHandlers.error("undefined"!=typeof e.name?e.name+": "+e.message:e)}}}}(),define("vnc-websock",["vnc-util"],function(){}),define("vnc-des",["vnc-util"],function(){});var keysyms=function(){"use strict";function t(t){return t?{keysym:t,keyname:e?e[t]:t}:void 0}var e=null,i={32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:92,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:126,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:960,257:992,258:451,259:483,260:417,261:433,262:454,263:486,264:710,265:742,266:709,267:741,268:456,269:488,270:463,271:495,272:464,273:496,274:938,275:954,278:972,279:1004,280:458,281:490,282:460,283:492,284:728,285:760,286:683,287:699,288:725,289:757,290:939,291:955,292:678,293:694,294:673,295:689,296:933,297:949,298:975,299:1007,300:16777516,301:16777517,302:967,303:999,304:681,305:697,308:684,309:700,310:979,311:1011,312:930,313:453,314:485,315:934,316:950,317:421,318:437,321:419,322:435,323:465,324:497,325:977,326:1009,327:466,328:498,330:957,331:959,332:978,333:1010,336:469,337:501,338:5052,339:5053,340:448,341:480,342:931,343:947,344:472,345:504,346:422,347:438,348:734,349:766,350:426,351:442,352:425,353:441,354:478,355:510,356:427,357:443,358:940,359:956,360:989,361:1021,362:990,363:1022,364:733,365:765,366:473,367:505,368:475,369:507,370:985,371:1017,372:16777588,373:16777589,374:16777590,375:16777591,376:5054,377:428,378:444,379:431,380:447,381:430,382:446,399:16777615,402:2294,415:16777631,416:16777632,417:16777633,431:16777647,432:16777648,437:16777653,438:16777654,439:16777655,466:16777681,486:16777702,487:16777703,601:16777817,629:16777845,658:16777874,711:439,728:418,729:511,731:434,733:445,901:1966,902:1953,904:1954,905:1955,906:1956,908:1959,910:1960,911:1963,912:1974,913:1985,914:1986,915:1987,916:1988,917:1989,918:1990,919:1991,920:1992,921:1993,922:1994,923:1995,924:1996,925:1997,926:1998,927:1999,928:2e3,929:2001,931:2002,932:2004,933:2005,934:2006,935:2007,936:2008,937:2009,938:1957,939:1961,940:1969,941:1970,942:1971,943:1972,944:1978,945:2017,946:2018,947:2019,948:2020,949:2021,950:2022,951:2023,952:2024,953:2025,954:2026,955:2027,956:2028,957:2029,958:2030,959:2031,960:2032,961:2033,962:2035,963:2034,964:2036,965:2037,966:2038,967:2039,968:2040,969:2041,970:1973,971:1977,972:1975,973:1976,974:1979,1025:1715,1026:1713,1027:1714,1028:1716,1029:1717,1030:1718,1031:1719,1032:1720,1033:1721,1034:1722,1035:1723,1036:1724,1038:1726,1039:1727,1040:1761,1041:1762,1042:1783,1043:1767,1044:1764,1045:1765,1046:1782,1047:1786,1048:1769,1049:1770,1050:1771,1051:1772,1052:1773,1053:1774,1054:1775,1055:1776,1056:1778,1057:1779,1058:1780,1059:1781,1060:1766,1061:1768,1062:1763,1063:1790,1064:1787,1065:1789,1066:1791,1067:1785,1068:1784,1069:1788,1070:1760,1071:1777,1072:1729,1073:1730,1074:1751,1075:1735,1076:1732,1077:1733,1078:1750,1079:1754,1080:1737,1081:1738,1082:1739,1083:1740,1084:1741,1085:1742,1086:1743,1087:1744,1088:1746,1089:1747,1090:1748,1091:1749,1092:1734,1093:1736,1094:1731,1095:1758,1096:1755,1097:1757,1098:1759,1099:1753,1100:1752,1101:1756,1102:1728,1103:1745,1105:1699,1106:1697,1107:1698,1108:1700,1109:1701,1110:1702,1111:1703,1112:1704,1113:1705,1114:1706,1115:1707,1116:1708,1118:1710,1119:1711,1168:1725,1169:1709,1170:16778386,1171:16778387,1174:16778390,1175:16778391,1178:16778394,1179:16778395,1180:16778396,1181:16778397,1186:16778402,1187:16778403,1198:16778414,1199:16778415,1200:16778416,1201:16778417,1202:16778418,1203:16778419,1206:16778422,1207:16778423,1208:16778424,1209:16778425,1210:16778426,1211:16778427,1240:16778456,1241:16778457,1250:16778466,1251:16778467,1256:16778472,1257:16778473,1262:16778478,1263:16778479,1329:16778545,1330:16778546,1331:16778547,1332:16778548,1333:16778549,1334:16778550,1335:16778551,1336:16778552,1337:16778553,1338:16778554,1339:16778555,1340:16778556,1341:16778557,1342:16778558,1343:16778559,1344:16778560,1345:16778561,1346:16778562,1347:16778563,1348:16778564,1349:16778565,1350:16778566,1351:16778567,1352:16778568,1353:16778569,1354:16778570,1355:16778571,1356:16778572,1357:16778573,1358:16778574,1359:16778575,1360:16778576,1361:16778577,1362:16778578,1363:16778579,1364:16778580,1365:16778581,1366:16778582,1370:16778586,1371:16778587,1372:16778588,1373:16778589,1374:16778590,1377:16778593,1378:16778594,1379:16778595,1380:16778596,1381:16778597,1382:16778598,1383:16778599,1384:16778600,1385:16778601,1386:16778602,1387:16778603,1388:16778604,1389:16778605,1390:16778606,1391:16778607,1392:16778608,1393:16778609,1394:16778610,1395:16778611,1396:16778612,1397:16778613,1398:16778614,1399:16778615,1400:16778616,1401:16778617,1402:16778618,1403:16778619,1404:16778620,1405:16778621,1406:16778622,1407:16778623,1408:16778624,1409:16778625,1410:16778626,1411:16778627,1412:16778628,1413:16778629,1414:16778630,1415:16778631,1417:16778633,1418:16778634,1488:3296,1489:3297,1490:3298,1491:3299,1492:3300,1493:3301,1494:3302,1495:3303,1496:3304,1497:3305,1498:3306,1499:3307,1500:3308,1501:3309,1502:3310,1503:3311,1504:3312,1505:3313,1506:3314,1507:3315,1508:3316,1509:3317,1510:3318,1511:3319,1512:3320,1513:3321,1514:3322,1548:1452,1563:1467,1567:1471,1569:1473,1570:1474,1571:1475,1572:1476,1573:1477,1574:1478,1575:1479,1576:1480,1577:1481,1578:1482,1579:1483,1580:1484,1581:1485,1582:1486,1583:1487,1584:1488,1585:1489,1586:1490,1587:1491,1588:1492,1589:1493,1590:1494,1591:1495,1592:1496,1593:1497,1594:1498,1600:1504,1601:1505,1602:1506,1603:1507,1604:1508,1605:1509,1606:1510,1607:1511,1608:1512,1609:1513,1610:1514,1611:1515,1612:1516,1613:1517,1614:1518,1615:1519,1616:1520,1617:1521,1618:1522,1619:16778835,1620:16778836,1621:16778837,1632:16778848,1633:16778849,1634:16778850,1635:16778851,1636:16778852,1637:16778853,1638:16778854,1639:16778855,1640:16778856,1641:16778857,1642:16778858,1648:16778864,1657:16778873,1662:16778878,1670:16778886,1672:16778888,1681:16778897,1688:16778904,1700:16778916,1705:16778921,1711:16778927,1722:16778938,1726:16778942,1729:16778945,1740:16778956,1746:16778962,1748:16778964,1776:16778992,1777:16778993,1778:16778994,1779:16778995,1780:16778996,1781:16778997,1782:16778998,1783:16778999,1784:16779e3,1785:16779001,3458:16780674,3459:16780675,3461:16780677,3462:16780678,3463:16780679,3464:16780680,3465:16780681,3466:16780682,3467:16780683,3468:16780684,3469:16780685,3470:16780686,3471:16780687,3472:16780688,3473:16780689,3474:16780690,3475:16780691,3476:16780692,3477:16780693,3478:16780694,3482:16780698,3483:16780699,3484:16780700,3485:16780701,3486:16780702,3487:16780703,3488:16780704,3489:16780705,3490:16780706,3491:16780707,3492:16780708,3493:16780709,3494:16780710,3495:16780711,3496:16780712,3497:16780713,3498:16780714,3499:16780715,3500:16780716,3501:16780717,3502:16780718,3503:16780719,3504:16780720,3505:16780721,3507:16780723,3508:16780724,3509:16780725,3510:16780726,3511:16780727,3512:16780728,3513:16780729,3514:16780730,3515:16780731,3517:16780733,3520:16780736,3521:16780737,3522:16780738,3523:16780739,3524:16780740,3525:16780741,3526:16780742,3530:16780746,3535:16780751,3536:16780752,3537:16780753,3538:16780754,3539:16780755,3540:16780756,3542:16780758,3544:16780760,3545:16780761,3546:16780762,3547:16780763,3548:16780764,3549:16780765,3550:16780766,3551:16780767,3570:16780786,3571:16780787,3572:16780788,3585:3489,3586:3490,3587:3491,3588:3492,3589:3493,3590:3494,3591:3495,3592:3496,3593:3497,3594:3498,3595:3499,3596:3500,3597:3501,3598:3502,3599:3503,3600:3504,3601:3505,3602:3506,3603:3507,3604:3508,3605:3509,3606:3510,3607:3511,3608:3512,3609:3513,3610:3514,3611:3515,3612:3516,3613:3517,3614:3518,3615:3519,3616:3520,3617:3521,3618:3522,3619:3523,3620:3524,3621:3525,3622:3526,3623:3527,3624:3528,3625:3529,3626:3530,3627:3531,3628:3532,3629:3533,3630:3534,3631:3535,3632:3536,3633:3537,3634:3538,3635:3539,3636:3540,3637:3541,3638:3542,3639:3543,3640:3544,3641:3545,3642:3546,3647:3551,3648:3552,3649:3553,3650:3554,3651:3555,3652:3556,3653:3557,3654:3558,3655:3559,3656:3560,3657:3561,3658:3562,3659:3563,3660:3564,3661:3565,3664:3568,3665:3569,3666:3570,3667:3571,3668:3572,3669:3573,3670:3574,3671:3575,3672:3576,3673:3577,4304:16781520,4305:16781521,4306:16781522,4307:16781523,4308:16781524,4309:16781525,4310:16781526,4311:16781527,4312:16781528,4313:16781529,4314:16781530,4315:16781531,4316:16781532,4317:16781533,4318:16781534,4319:16781535,4320:16781536,4321:16781537,4322:16781538,4323:16781539,4324:16781540,4325:16781541,4326:16781542,4327:16781543,4328:16781544,4329:16781545,4330:16781546,4331:16781547,4332:16781548,4333:16781549,4334:16781550,4335:16781551,4336:16781552,4337:16781553,4338:16781554,4339:16781555,4340:16781556,4341:16781557,4342:16781558,7682:16784898,7683:16784899,7690:16784906,7691:16784907,7710:16784926,7711:16784927,7734:16784950,7735:16784951,7744:16784960,7745:16784961,7766:16784982,7767:16784983,7776:16784992,7777:16784993,7786:16785002,7787:16785003,7808:16785024,7809:16785025,7810:16785026,7811:16785027,7812:16785028,7813:16785029,7818:16785034,7819:16785035,7840:16785056,7841:16785057,7842:16785058,7843:16785059,7844:16785060,7845:16785061,7846:16785062,7847:16785063,7848:16785064,7849:16785065,7850:16785066,7851:16785067,7852:16785068,7853:16785069,7854:16785070,7855:16785071,7856:16785072,7857:16785073,7858:16785074,7859:16785075,7860:16785076,7861:16785077,7862:16785078,7863:16785079,7864:16785080,7865:16785081,7866:16785082,7867:16785083,7868:16785084,7869:16785085,7870:16785086,7871:16785087,7872:16785088,7873:16785089,7874:16785090,7875:16785091,7876:16785092,7877:16785093,7878:16785094,7879:16785095,7880:16785096,7881:16785097,7882:16785098,7883:16785099,7884:16785100,7885:16785101,7886:16785102,7887:16785103,7888:16785104,7889:16785105,7890:16785106,7891:16785107,7892:16785108,7893:16785109,7894:16785110,7895:16785111,7896:16785112,7897:16785113,7898:16785114,7899:16785115,7900:16785116,7901:16785117,7902:16785118,7903:16785119,7904:16785120,7905:16785121,7906:16785122,7907:16785123,7908:16785124,7909:16785125,7910:16785126,7911:16785127,7912:16785128,7913:16785129,7914:16785130,7915:16785131,7916:16785132,7917:16785133,7918:16785134,7919:16785135,7920:16785136,7921:16785137,7922:16785138,7923:16785139,7924:16785140,7925:16785141,7926:16785142,7927:16785143,7928:16785144,7929:16785145,8194:2722,8195:2721,8196:2723,8197:2724,8199:2725,8200:2726,8201:2727,8202:2728,8210:2747,8211:2730,8212:2729,8213:1967,8215:3295,8216:2768,8217:2769,8218:2813,8220:2770,8221:2771,8222:2814,8224:2801,8225:2802,8226:2790,8229:2735,8230:2734,8240:2773,8242:2774,8243:2775,8248:2812,8254:1150,8304:16785520,8308:16785524,8309:16785525,8310:16785526,8311:16785527,8312:16785528,8313:16785529,8320:16785536,8321:16785537,8322:16785538,8323:16785539,8324:16785540,8325:16785541,8326:16785542,8327:16785543,8328:16785544,8329:16785545,8352:16785568,8353:16785569,8354:16785570,8355:16785571,8356:16785572,8357:16785573,8358:16785574,8359:16785575,8360:16785576,8361:3839,8362:16785578,8363:16785579,8364:8364,8453:2744,8470:1712,8471:2811,8478:2772,8482:2761,8531:2736,8532:2737,8533:2738,8534:2739,8535:2740,8536:2741,8537:2742,8538:2743,8539:2755,8540:2756,8541:2757,8542:2758,8592:2299,8593:2300,8594:2301,8595:2302,8658:2254,8660:2253,8706:2287,8709:16785925,8711:2245,8712:16785928,8713:16785929,8715:16785931,8728:3018,8730:2262,8731:16785947,8732:16785948,8733:2241,8734:2242,8743:2270,8744:2271,8745:2268,8746:2269,8747:2239,8748:16785964,8749:16785965,8756:2240,8757:16785973,8764:2248,8771:2249,8773:16785992,8775:16785991,8800:2237,8801:2255,8802:16786018,8803:16786019,8804:2236,8805:2238,8834:2266,8835:2267,8866:3068,8867:3036,8868:3010,8869:3022,8968:3027,8970:3012,8981:2810,8992:2212,8993:2213,9109:3020,9115:2219,9117:2220,9118:2221,9120:2222,9121:2215,9123:2216,9124:2217,9126:2218,9128:2223,9132:2224,9143:2209,9146:2543,9147:2544,9148:2546,9149:2547,9225:2530,9226:2533,9227:2537,9228:2531,9229:2532,9251:2732,9252:2536,9472:2211,9474:2214,9484:2210,9488:2539,9492:2541,9496:2538,9500:2548,9508:2549,9516:2551,9524:2550,9532:2542,9618:2529,9642:2791,9643:2785,9644:2779,9645:2786,9646:2783,9647:2767,9650:2792,9651:2787,9654:2781,9655:2765,9660:2793,9661:2788,9664:2780,9665:2764,9670:2528,9675:2766,9679:2782,9702:2784,9734:2789,9742:2809,9747:2762,9756:2794,9758:2795,9792:2808,9794:2807,9827:2796,9829:2798,9830:2797,9837:2806,9839:2805,10003:2803,10007:2804,10013:2777,10016:2800,10216:2748,10217:2750,10240:16787456,10241:16787457,10242:16787458,10243:16787459,10244:16787460,10245:16787461,10246:16787462,10247:16787463,10248:16787464,10249:16787465,10250:16787466,10251:16787467,10252:16787468,10253:16787469,10254:16787470,10255:16787471,10256:16787472,10257:16787473,10258:16787474,10259:16787475,10260:16787476,10261:16787477,10262:16787478,10263:16787479,10264:16787480,10265:16787481,10266:16787482,10267:16787483,10268:16787484,10269:16787485,10270:16787486,10271:16787487,10272:16787488,10273:16787489,10274:16787490,10275:16787491,10276:16787492,10277:16787493,10278:16787494,10279:16787495,10280:16787496,10281:16787497,10282:16787498,10283:16787499,10284:16787500,10285:16787501,10286:16787502,10287:16787503,10288:16787504,10289:16787505,10290:16787506,10291:16787507,10292:16787508,10293:16787509,10294:16787510,10295:16787511,10296:16787512,10297:16787513,10298:16787514,10299:16787515,10300:16787516,10301:16787517,10302:16787518,10303:16787519,10304:16787520,10305:16787521,10306:16787522,10307:16787523,10308:16787524,10309:16787525,10310:16787526,10311:16787527,10312:16787528,10313:16787529,10314:16787530,10315:16787531,10316:16787532,10317:16787533,10318:16787534,10319:16787535,10320:16787536,10321:16787537,10322:16787538,10323:16787539,10324:16787540,10325:16787541,10326:16787542,10327:16787543,10328:16787544,10329:16787545,10330:16787546,10331:16787547,10332:16787548,10333:16787549,10334:16787550,10335:16787551,10336:16787552,10337:16787553,10338:16787554,10339:16787555,10340:16787556,10341:16787557,10342:16787558,10343:16787559,10344:16787560,10345:16787561,10346:16787562,10347:16787563,10348:16787564,10349:16787565,10350:16787566,10351:16787567,10352:16787568,10353:16787569,10354:16787570,10355:16787571,10356:16787572,10357:16787573,10358:16787574,10359:16787575,10360:16787576,10361:16787577,10362:16787578,10363:16787579,10364:16787580,10365:16787581,10366:16787582,10367:16787583,10368:16787584,10369:16787585,10370:16787586,10371:16787587,10372:16787588,10373:16787589,10374:16787590,10375:16787591,10376:16787592,10377:16787593,10378:16787594,10379:16787595,10380:16787596,10381:16787597,10382:16787598,10383:16787599,10384:16787600,10385:16787601,10386:16787602,10387:16787603,10388:16787604,10389:16787605,10390:16787606,10391:16787607,10392:16787608,10393:16787609,10394:16787610,10395:16787611,10396:16787612,10397:16787613,10398:16787614,10399:16787615,10400:16787616,10401:16787617,10402:16787618,10403:16787619,10404:16787620,10405:16787621,10406:16787622,10407:16787623,10408:16787624,10409:16787625,10410:16787626,10411:16787627,10412:16787628,10413:16787629,10414:16787630,10415:16787631,10416:16787632,10417:16787633,10418:16787634,10419:16787635,10420:16787636,10421:16787637,10422:16787638,10423:16787639,10424:16787640,10425:16787641,10426:16787642,10427:16787643,10428:16787644,10429:16787645,10430:16787646,10431:16787647,10432:16787648,10433:16787649,10434:16787650,10435:16787651,10436:16787652,10437:16787653,10438:16787654,10439:16787655,10440:16787656,10441:16787657,10442:16787658,10443:16787659,10444:16787660,10445:16787661,10446:16787662,10447:16787663,10448:16787664,10449:16787665,10450:16787666,10451:16787667,10452:16787668,10453:16787669,10454:16787670,10455:16787671,10456:16787672,10457:16787673,10458:16787674,10459:16787675,10460:16787676,10461:16787677,10462:16787678,10463:16787679,10464:16787680,10465:16787681,10466:16787682,10467:16787683,10468:16787684,10469:16787685,10470:16787686,10471:16787687,10472:16787688,10473:16787689,10474:16787690,10475:16787691,10476:16787692,10477:16787693,10478:16787694,10479:16787695,10480:16787696,10481:16787697,10482:16787698,10483:16787699,10484:16787700,10485:16787701,10486:16787702,10487:16787703,10488:16787704,10489:16787705,10490:16787706,10491:16787707,10492:16787708,10493:16787709,10494:16787710,10495:16787711,12289:1188,12290:1185,12300:1186,12301:1187,12443:1246,12444:1247,12449:1191,12450:1201,12451:1192,12452:1202,12453:1193,12454:1203,12455:1194,12456:1204,12457:1195,12458:1205,12459:1206,12461:1207,12463:1208,12465:1209,12467:1210,12469:1211,12471:1212,12473:1213,12475:1214,12477:1215,12479:1216,12481:1217,12483:1199,12484:1218,12486:1219,12488:1220,12490:1221,12491:1222,12492:1223,12493:1224,12494:1225,12495:1226,12498:1227,12501:1228,12504:1229,12507:1230,12510:1231,12511:1232,12512:1233,12513:1234,12514:1235,12515:1196,12516:1236,12517:1197,12518:1237,12519:1198,12520:1238,12521:1239,12522:1240,12523:1241,12524:1242,12525:1243,12527:1244,12530:1190,12531:1245,12539:1189,12540:1200};return{fromUnicode:function(e){return t(i[e])},lookup:t}}();define("vnc-keysymdef",["vnc-util"],function(){});var kbdUtil=function(){"use strict";function t(t){var e={536:350,537:351,538:354,539:355},i=e[t];return i?i:t}function e(){return navigator&&!!/mac/i.exec(navigator.platform)}function i(){return navigator&&!!/win/i.exec(navigator.platform)}function s(){return navigator&&!!/linux/i.exec(navigator.platform)}function r(t,e){var i={};for(var s in e)parseInt(s)!==XK_Shift_L&&(i[s]=e[s]);var r=0;for(var o in e)i[o]&&++r;return n(t,i)?r>t.length:r>0}function n(t,e){if(0===t.length)return!1;for(var i=0;i=48&&57>=t)return t;if(t>=65&&90>=t)return e?t:t+32;if(t>=96&&105>=t)return XK_KP_0+(t-96);switch(t){case 32:return XK_space;case 106:return XK_KP_Multiply;case 107:return XK_KP_Add;case 108:return XK_KP_Separator;case 109:return XK_KP_Subtract;case 110:return XK_KP_Decimal;case 111:return XK_KP_Divide;case 187:return XK_plus;case 188:return XK_comma;case 189:return XK_minus;case 190:return XK_period}return c({keyCode:t})}function c(t){if(!t.keyCode)return null;var e=t.keyCode;if(e>=112&&135>=e)return XK_F1+e-112;switch(e){case 8:return XK_BackSpace;case 13:return XK_Return;case 9:return XK_Tab;case 27:return XK_Escape;case 46:return XK_Delete;case 36:return XK_Home;case 35:return XK_End;case 33:return XK_Page_Up;case 34:return XK_Page_Down;case 45:return XK_Insert;case 37:return XK_Left;case 38:return XK_Up;case 39:return XK_Right;case 40:return XK_Down;case 16:return XK_Shift_L;case 17:return XK_Control_L;case 18:return XK_Alt_L;case 224:return XK_Meta_L;case 225:return XK_ISO_Level3_Shift;case 91:return XK_Super_L;case 92:return XK_Super_R;case 93:return XK_Menu;default:return null}}return{hasShortcutModifier:r,hasCharModifier:n,ModifierSync:o,getKey:a,getKeysym:h,keysymFromKeyCode:_,nonCharacterKey:c,substituteCodepoint:t}}();define("vnc-keyboard",["vnc-util"],function(){});var Keyboard,Mouse;!function(){"use strict";Keyboard=function(t){this._keyDownList=[],Util.set_defaults(this,t,{target:document,focused:!0}),this._handler=new KeyEventDecoder(kbdUtil.ModifierSync(),VerifyCharModifier(TrackKeyState(EscapeModifiers(this._handleRfbEvent.bind(this))))),this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),keypress:this._handleKeyPress.bind(this),blur:this._allKeysUp.bind(this)}},Keyboard.prototype={_handleRfbEvent:function(t){this._onKeyPress&&(Util.Debug("onKeyPress "+("keydown"==t.type?"down":"up")+", keysym: "+t.keysym.keysym+"("+t.keysym.keyname+")"),this._onKeyPress(t.keysym.keysym,"keydown"==t.type))},_handleKeyDown:function(t){return this._focused&&this._handler.keydown(t)?(Util.stopEvent(t),!1):!0},_handleKeyPress:function(t){return this._focused&&this._handler.keypress(t)?(Util.stopEvent(t),!1):!0},_handleKeyUp:function(t){return this._focused&&this._handler.keyup(t)?(Util.stopEvent(t),!1):!0},_allKeysUp:function(){Util.Debug(">> Keyboard.allKeysUp"),this._handler.releaseAll(),Util.Debug("<< Keyboard.allKeysUp")},grab:function(){var t=this._target;Util.addEvent(t,"keydown",this._eventHandlers.keydown),Util.addEvent(t,"keyup",this._eventHandlers.keyup),Util.addEvent(t,"keypress",this._eventHandlers.keypress),Util.addEvent(window,"blur",this._eventHandlers.blur)},ungrab:function(){var t=this._target;Util.removeEvent(t,"keydown",this._eventHandlers.keydown),Util.removeEvent(t,"keyup",this._eventHandlers.keyup),Util.removeEvent(t,"keypress",this._eventHandlers.keypress),Util.removeEvent(window,"blur",this._eventHandlers.blur),this._allKeysUp()},sync:function(t){this._handler.syncModifiers(t)}},Util.make_properties(Keyboard,[["target","wo","dom"],["focused","rw","bool"],["onKeyPress","rw","func"]]),Mouse=function(t){this._mouseCaptured=!1,this._doubleClickTimer=null,this._lastTouchPos=null,Util.set_defaults(this,t,{target:document,focused:!0,scale:1,touchButton:1}),this._eventHandlers={mousedown:this._handleMouseDown.bind(this),mouseup:this._handleMouseUp.bind(this),mousemove:this._handleMouseMove.bind(this),mousewheel:this._handleMouseWheel.bind(this),mousedisable:this._handleMouseDisable.bind(this)}},Mouse.prototype={_captureMouse:function(){this._target.setCapture&&this._target.setCapture(),this._mouseCaptured=!0},_releaseMouse:function(){this._target.releaseCapture&&this._target.releaseCapture(),this._mouseCaptured=!1},_resetDoubleClickTimer:function(){this._doubleClickTimer=null},_handleMouseButton:function(t,e){if(!this._focused)return!0;this._notify&&this._notify(t);var i,s=t?t:window.event,r=Util.getEventPosition(t,this._target,this._scale);if(t.touches||t.changedTouches){if(1==e){if(null===this._doubleClickTimer)this._lastTouchPos=r;else{clearTimeout(this._doubleClickTimer);var n=this._lastTouchPos.x-r.x,o=this._lastTouchPos.y-r.y,a=Math.sqrt(n*n+o*o);a<20*window.devicePixelRatio&&(r=this._lastTouchPos)}this._doubleClickTimer=setTimeout(this._resetDoubleClickTimer.bind(this),500)}i=this._touchButton}else i=s.which?1<0?8:16,this._onMouseButton&&(this._onMouseButton(s.x,s.y,1,e),this._onMouseButton(s.x,s.y,0,e)),Util.stopEvent(t),!1},_handleMouseMove:function(t){if(!this._focused)return!0;this._notify&&this._notify(t);var e=(t?t:window.event,Util.getEventPosition(t,this._target,this._scale));return this._onMouseMove&&this._onMouseMove(e.x,e.y),Util.stopEvent(t),!1},_handleMouseDisable:function(t){if(!this._focused)return!0;var e=(t?t:window.event,Util.getEventPosition(t,this._target,this._scale));return e.realx>=0&&e.realy>=0&&e.realx> Display.constructor"),!this._target)throw new Error("Target must be set");if("string"==typeof this._target)throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");if(this._drawCtx||(this._drawCtx=this._target.getContext("2d")),Util.Debug("User Agent: "+navigator.userAgent),Util.Engine.gecko&&Util.Debug("Browser: gecko "+Util.Engine.gecko),Util.Engine.webkit&&Util.Debug("Browser: webkit "+Util.Engine.webkit),Util.Engine.trident&&Util.Debug("Browser: trident "+Util.Engine.trident),Util.Engine.presto&&Util.Debug("Browser: presto "+Util.Engine.presto),this.clear(),!("createImageData"in this._drawCtx))throw new Error("Canvas does not support createImageData");this._render_mode="canvas rendering",null===this._prefer_js&&(Util.Info("Prefering javascript operations"),this._prefer_js=!0);for(var e=[],i=0;256>i;i++)e.push(255);try{var s=this._target.style.cursor;Display.changeCursor(this._target,e,e,2,2,8,8),this._target.style.cursor?((null===this._cursor_uri||void 0===this._cursor_uri)&&(this._cursor_uri=!0),Util.Info("Data URI scheme cursor supported")):((null===this._cursor_uri||void 0===this._cursor_uri)&&(this._cursor_uri=!1),Util.Warn("Data URI scheme cursor not supported")),this._target.style.cursor=s}catch(r){Util.Error("Data URI scheme cursor test exception: "+r),this._cursor_uri=!1}Util.Debug("<< Display.constructor")},Display.prototype={viewportChange:function(t,e,i,s){var r=this._viewportLoc,n=this._cleanRect,o=this._target;if(this._viewport||(Util.Debug("Setting viewport to full display region"),t=-r.w,e=-r.h,i=this._fb_width,s=this._fb_height),"undefined"==typeof t&&(t=0),"undefined"==typeof e&&(e=0),"undefined"==typeof i&&(i=r.w),"undefined"==typeof s&&(s=r.h),i>this._fb_width&&(i=this._fb_width),s>this._fb_height&&(s=this._fb_height),r.w!==i||r.h!==s){ir.x+i-1&&(n.x2=r.x+i-1),r.w=i,sr.y+s-1&&(n.y2=r.y+s-1),r.h=s; -var a=null;if(r.w>0&&r.h>0&&o.width>0&&o.height>0){var h=o.widtht&&r.x+t<0&&(t=-r.x),c+t>=this._fb_width&&(t-=c+t-this._fb_width+1),r.y+e<0&&(e=-r.y),u+e>=this._fb_height&&(e-=u+e-this._fb_height+1),0!==t||0!==e){Util.Debug("viewportChange deltaX: "+t+", deltaY: "+e),r.x+=t,c+=t,r.y+=e,u+=e,r.x>n.x1&&(n.x1=r.x),cn.y1&&(n.y1=r.y),ut?(l=0,d=-t):(l=r.w-t,d=t);var f,p;0>e?(f=0,p=-e):(f=r.h-e,p=e);var g=this._drawCtx.fillStyle;this._drawCtx.fillStyle="rgb(255,255,255)",0!==t&&(this._drawCtx.drawImage(o,0,0,r.w,r.h,-t,0,r.w,r.h),this._drawCtx.fillRect(l,0,d,r.h)),0!==e&&(this._drawCtx.drawImage(o,0,0,r.w,r.h,0,-e,r.w,r.h),this._drawCtx.fillRect(0,f,r.w,p)),this._drawCtx.fillStyle=g}},getCleanDirtyReset:function(){var t=this._viewportLoc,e=this._cleanRect,i={x:e.x1,y:e.y1,w:e.x2-e.x1+1,h:e.y2-e.y1+1},s=[];if(e.x1>=e.x2||e.y1>=e.y2)s.push({x:t.x,y:t.y,w:t.w,h:t.h});else{var r=t.x+t.w-1,n=t.y+t.h-1;t.xe.x2&&s.push({x:e.x2+1,y:t.y,w:r-e.x2,h:t.h}),t.ye.y2&&s.push({x:e.x1,y:e.y2+1,w:e.x2-e.x1+1,h:n-e.y2})}return this._cleanRect={x1:t.x,y1:t.y,x2:t.x+t.w-1,y2:t.y+t.h-1},{cleanBox:i,dirtyBoxes:s}},absX:function(t){return t+this._viewportLoc.x},absY:function(t){return t+this._viewportLoc.y},resize:function(t,e){this._prevDrawStyle="",this._fb_width=t,this._fb_height=e,this._rescale(this._scale),this.viewportChange()},clear:function(){this._logo?(this.resize(this._logo.width,this._logo.height),this.blitStringImage(this._logo.data,0,0)):(6===Util.Engine.trident&&this._drawCtx.clearRect(0,0,this._viewportLoc.w,this._viewportLoc.h),this.resize(240,20),this._drawCtx.clearRect(0,0,this._viewportLoc.w,this._viewportLoc.h)),this._renderQ=[]},fillRect:function(t,e,i,s,r){this._setFillColor(r),this._drawCtx.fillRect(t-this._viewportLoc.x,e-this._viewportLoc.y,i,s)},copyImage:function(t,e,i,s,r,n){var o=t-this._viewportLoc.x,a=e-this._viewportLoc.y,h=i-this._viewportLoc.x,_=s-this._viewportLoc.y;this._drawCtx.drawImage(this._target,o,a,r,n,h,_,r,n)},startTile:function(t,e,i,s,r){if(this._tile_x=t,this._tile_y=e,this._tile=16===i&&16===s?this._tile16x16:this._drawCtx.createImageData(i,s),this._prefer_js){var n;n=this._true_color?r:this._colourMap[r[0]];for(var o=n[2],a=n[1],h=n[0],_=this._tile.data,c=0;i*s*4>c;c+=4)_[c]=o,_[c+1]=a,_[c+2]=h,_[c+3]=255}else this.fillRect(t,e,i,s,r)},subTile:function(t,e,i,s,r){if(this._prefer_js){var n;n=this._true_color?r:this._colourMap[r[0]];for(var o=n[2],a=n[1],h=n[0],_=t+i,c=e+s,u=this._tile.data,l=this._tile.width,d=e;c>d;d++)for(var f=t;_>f;f++){var p=4*(f+d*l);u[p]=o,u[p+1]=a,u[p+2]=h,u[p+3]=255}}else this.fillRect(this._tile_x+t,this._tile_y+e,i,s,r)},finishTile:function(){this._prefer_js&&this._drawCtx.putImageData(this._tile,this._tile_x-this._viewportLoc.x,this._tile_y-this._viewportLoc.y)},blitImage:function(t,e,i,s,r,n){this._true_color?this._bgrxImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,i,s,r,n):this._cmapImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,i,s,r,n)},blitRgbImage:function(t,e,i,s,r,n){this._true_color?this._rgbImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,i,s,r,n):this._cmapImageData(t,e,this._viewportLoc.x,this._viewportLoc.y,i,s,r,n)},blitStringImage:function(t,e,i){var s=new Image;return s.onload=function(){this._drawCtx.drawImage(s,e-this._viewportLoc.x,i-this._viewportLoc.y)}.bind(this),s.src=t,s},drawImage:function(t,e,i){this._drawCtx.drawImage(t,e-this._viewportLoc.x,i-this._viewportLoc.y)},renderQ_push:function(t){this._renderQ.push(t),1===this._renderQ.length&&this._scan_renderQ()},changeCursor:function(t,e,i,s,r,n){return this._cursor_uri===!1?void Util.Warn("changeCursor called but no cursor data URI support"):void(this._true_color?Display.changeCursor(this._target,t,e,i,s,r,n):Display.changeCursor(this._target,t,e,i,s,r,n,this._colourMap))},defaultCursor:function(){this._target.style.cursor="default"},get_context:function(){return this._drawCtx},set_scale:function(t){this._rescale(t)},set_width:function(t){this.resize(t,this._fb_height)},get_width:function(){return this._fb_width},set_height:function(t){this.resize(this._fb_width,t)},get_height:function(){return this._fb_height},_rescale:function(t){for(var e,i=this._target,s=["transform","WebkitTransform","MozTransform"];(e=s.shift())&&"undefined"==typeof i.style[e];);if(null===e)return void Util.Debug("No scaling support");if("undefined"==typeof t?t=this._scale:t>1?t=1:.1>t&&(t=.1),this._scale!==t){this._scale=t;var r=i.width-i.width*t,n=i.height-i.height*t;i.style[e]="scale("+this._scale+") translate(-"+r+"px, -"+n+"px)"}},_setFillColor:function(t){var e;e=this._true_color?t:this._colourMap[t[0]];var i="rgb("+e[2]+","+e[1]+","+e[0]+")";i!==this._prevDrawStyle&&(this._drawCtx.fillStyle=i,this._prevDrawStyle=i)},_rgbImageData:function(t,e,i,s,r,n,o,a){for(var h=this._drawCtx.createImageData(r,n),_=h.data,c=0,u=a;r*n*4>c;c+=4,u+=3)_[c]=o[u],_[c+1]=o[u+1],_[c+2]=o[u+2],_[c+3]=255;this._drawCtx.putImageData(h,t-i,e-s)},_bgrxImageData:function(t,e,i,s,r,n,o,a){for(var h=this._drawCtx.createImageData(r,n),_=h.data,c=0,u=a;r*n*4>c;c+=4,u+=4)_[c]=o[u+2],_[c+1]=o[u+1],_[c+2]=o[u],_[c+3]=255;this._drawCtx.putImageData(h,t-i,e-s)},_cmapImageData:function(t,e,i,s,r,n,o,a){for(var h=this._drawCtx.createImageData(r,n),_=h.data,c=this._colourMap,u=0,l=a;r*n*4>u;u+=4,l++){var d=c[o[l]];_[u]=d[2],_[u+1]=d[1],_[u+2]=d[0],_[u+3]=255}this._drawCtx.putImageData(h,t-i,e-s)},_scan_renderQ:function(){for(var t=!0;t&&this._renderQ.length>0;){var e=this._renderQ[0];switch(e.type){case"copy":this.copyImage(e.old_x,e.old_y,e.x,e.y,e.width,e.height);break;case"fill":this.fillRect(e.x,e.y,e.width,e.height,e.color);break;case"blit":this.blitImage(e.x,e.y,e.width,e.height,e.data,0);break;case"blitRgb":this.blitRgbImage(e.x,e.y,e.width,e.height,e.data,0);break;case"img":e.img.complete?this.drawImage(e.img,e.x,e.y):t=!1}t&&this._renderQ.shift()}this._renderQ.length>0&&requestAnimFrame(this._scan_renderQ.bind(this))}},Util.make_properties(Display,[["target","wo","dom"],["context","ro","raw"],["logo","rw","raw"],["true_color","rw","bool"],["colourMap","rw","arr"],["scale","rw","float"],["viewport","rw","bool"],["width","rw","int"],["height","rw","int"],["render_mode","ro","str"],["prefer_js","rw","str"],["cursor_uri","rw","raw"]]),Display.changeCursor=function(t,e,i,s,r,n,o,a){var h=n,_=o;h>_?_=h:h=_;var c=[];c.push16le=function(t){this.push(255&t,t>>8&255)},c.push32le=function(t){this.push(255&t,t>>8&255,t>>16&255,t>>24&255)};var u=40,l=h*_*4,d=Math.ceil(h*_/8),f=Math.ceil(h*_/8);c.push16le(0),c.push16le(2),c.push16le(1),c.push(h),c.push(_),c.push(0),c.push(0),c.push16le(s),c.push16le(r),c.push32le(u+l+d+f),c.push32le(22),c.push32le(u),c.push32le(h),c.push32le(2*_),c.push16le(1),c.push16le(32),c.push32le(0),c.push32le(d+f),c.push32le(0),c.push32le(0),c.push32le(0),c.push32le(0);var p,g;for(p=_-1;p>=0;p--)for(g=0;h>g;g++)if(g>=n||p>=o)c.push(0),c.push(0),c.push(0),c.push(0);else{var y=p*Math.ceil(n/8)+Math.floor(g/8),b=i[y]<p;p++)for(g=0;gp;p++)for(g=0;g> RFB.constructor"),Object.keys(RFB.encodingHandlers).forEach(function(t){this._encHandlers[t]=RFB.encodingHandlers[t].bind(this)}.bind(this));for(var e=0;eAdobe Flash is required"):"file://"===document.location.href.substr(0,7)?this._updateState("fatal","'file://' URL is incompatible with Adobe Flash"):this._updateState("loaded","noVNC ready: WebSockets emulation, "+s)),Util.Debug("<< RFB.constructor")},RFB.prototype={connect:function(t,e,i,s){return this._rfb_host=t,this._rfb_port=e,this._rfb_password=void 0!==i?i:"",this._rfb_path=void 0!==s?s:"",this._rfb_host&&this._rfb_port?void this._updateState("connect"):this._fail("Must set host and port")},disconnect:function(){this._updateState("disconnect","Disconnecting")},sendPassword:function(t){this._rfb_password=t,this._rfb_state="Authentication",setTimeout(this._init_msg.bind(this),1)},sendCtrlAltDel:function(){if("normal"!==this._rfb_state||this._view_only)return!1;Util.Info("Sending Ctrl-Alt-Del");var t=[];t=t.concat(RFB.messages.keyEvent(XK_Control_L,1)),t=t.concat(RFB.messages.keyEvent(XK_Alt_L,1)),t=t.concat(RFB.messages.keyEvent(XK_Delete,1)),t=t.concat(RFB.messages.keyEvent(XK_Delete,0)),t=t.concat(RFB.messages.keyEvent(XK_Alt_L,0)),t=t.concat(RFB.messages.keyEvent(XK_Control_L,0)),this._sock.send(t)},xvpOp:function(t,e){return this._rfb_xvp_ver> RFB.connect");var t;t="undefined"!=typeof UsingSocketIO?"http":this._encrypt?"wss":"ws",t+="://"+this._rfb_host+":"+this._rfb_port+"/"+this._rfb_path,Util.Info("connecting to "+t),this._sock.open(t,this._wsProtocols),Util.Debug("<< RFB.connect")},_init_vars:function(){this._sock.init(),this._FBU.rects=0,this._FBU.subrects=0,this._FBU.lines=0,this._FBU.tiles=0,this._FBU.zlibs=[],this._mouse_buttonMask=0,this._mouse_arr=[],this._rfb_tightvnc=!1;var t;for(t=0;tt;t++)this._FBU.zlibs[t]=new TINF,this._FBU.zlibs[t].init()},_print_stats:function(){Util.Info("Encoding stats for this connection:");var t,e;for(t=0;t0&&Util.Info(" "+this._encodings[t][0]+": "+e[0]+" rects");for(Util.Info("Encoding stats since page load:"),t=0;t0&&(null===this._msgTimer?(Util.Debug("More data to process, creating timer"),this._msgTimer=setTimeout(function(){this._msgTimer=null,this._handle_message()}.bind(this),10)):Util.Debug("More data to process, existing timer"));break;default:this._init_msg()}},_checkEvents:function(){"normal"===this._rfb_state&&!this._viewportDragging&&this._mouse_arr.length>0&&(this._sock.send(this._mouse_arr),this._mouse_arr=[])},_handleKeyPress:function(t,e){this._view_only||this._sock.send(RFB.messages.keyEvent(t,e))},_handleMouseButton:function(t,e,i,s){if(i?this._mouse_buttonMask|=s:this._mouse_buttonMask^=s,this._viewportDrag){if(i&&!this._viewportDragging)return this._viewportDragging=!0,void(this._viewportDragPos={x:t,y:e});this._viewportDragging=!1}this._view_only||(this._mouse_arr=this._mouse_arr.concat(RFB.messages.pointerEvent(this._display.absX(t),this._display.absY(e),this._mouse_buttonMask)),this._sock.send(this._mouse_arr),this._mouse_arr=[])},_handleMouseMove:function(t,e){if(this._viewportDragging){var i=this._viewportDragPos.x-t,s=this._viewportDragPos.y-e;return this._viewportDragPos={x:t,y:e},void this._display.viewportChange(i,s)}this._view_only||(this._mouse_arr=this._mouse_arr.concat(RFB.messages.pointerEvent(this._display.absX(t),this._display.absY(e),this._mouse_buttonMask)),this._checkEvents())},_negotiate_protocol_version:function(){if(this._sock.rQlen()<12)return this._fail("Incomplete protocol version");var t=this._sock.rQshiftStr(12).substr(4,7);Util.Info("Server ProtocolVersion: "+t);var e=0;switch(t){case"000.000":e=1;break;case"003.003":case"003.006":case"003.889":this._rfb_version=3.3;break;case"003.007":this._rfb_version=3.7;break;case"003.008":case"004.000":case"004.001":this._rfb_version=3.8;break;default:return this._fail("Invalid server version "+t)}if(e){for(var i=this._repeaterID;i.length<250;)i+="\x00";return this._sock.send_string(i),!0}this._rfb_version>this._rfb_max_version&&(this._rfb_version=this._rfb_max_version),this._sendTimer=setInterval(this._sock.flush.bind(this._sock),50);var s="00"+parseInt(this._rfb_version,10)+".00"+10*this._rfb_version%10;this._sock.send_string("RFB "+s+"\n"),this._updateState("Security","Sent ProtocolVersion: "+s)},_negotiate_security:function(){if(this._rfb_version>=3.7){var t=this._sock.rQshift8();if(this._sock.rQwait("security type",t,1))return!1;if(0===t){var e=this._sock.rQshift32(),i=this._sock.rQshiftStr(e);return this._fail("Security failure: "+i)}this._rfb_auth_scheme=0;var s=this._sock.rQshiftBytes(t);Util.Debug("Server security types: "+s);for(var r=0;rthis._rfb_auth_scheme&&(s[r]<=16||22==s[r])&&(this._rfb_auth_scheme=s[r]);if(0===this._rfb_auth_scheme)return this._fail("Unsupported security types: "+s);this._sock.send([this._rfb_auth_scheme])}else{if(this._sock.rQwait("security scheme",4))return!1;this._rfb_auth_scheme=this._sock.rQshift32()}return this._updateState("Authentication","Authenticating using scheme: "+this._rfb_auth_scheme),this._init_msg()},_negotiate_xvp_auth:function(){var t=this._xvp_password_sep,e=this._rfb_password.split(t);if(e.length<3)return this._updateState("password","XVP credentials required (user"+t+"target"+t+"password) -- got only "+this._rfb_password),this._onPasswordRequired(this),!1;var i=String.fromCharCode(e[0].length)+String.fromCharCode(e[1].length)+e[0]+e[1];return this._sock.send_string(i),this._rfb_password=e.slice(2).join(t),this._rfb_auth_scheme=2,this._negotiate_authentication()},_negotiate_std_vnc_auth:function(){if(0===this._rfb_password.length&&(this._updateState("password","Password Required"),this._onPasswordRequired(this)),this._sock.rQwait("auth challenge",16))return!1;var t=this._sock.rQshiftBytes(16),e=RFB.genDES(this._rfb_password,t);return this._sock.send(e),this._updateState("SecurityResult"),!0},_negotiate_tight_tunnels:function(t){for(var e={0:{vendor:"TGHT",signature:"NOTUNNEL"}},i={},s=0;t>s;s++){var r=this._sock.rQshift32(),n=this._sock.rQshiftStr(4),o=this._sock.rQshiftStr(8);i[r]={vendor:n,signature:o}}return i[0]?i[0].vendor!=e[0].vendor||i[0].signature!=e[0].signature?this._fail("Client's tunnel type had the incorrect vendor or signature"):(this._sock.send([0,0,0,0]),!1):this._fail("Server wanted tunnels, but doesn't support the notunnel type")},_negotiate_tight_auth:function(){if(!this._rfb_tightvnc){if(this._sock.rQwait("num tunnels",4))return!1;var t=this._sock.rQshift32();if(t>0&&this._sock.rQwait("tunnel capabilities",16*t,4))return!1;if(this._rfb_tightvnc=!0,t>0)return this._negotiate_tight_tunnels(t),!1}if(this._sock.rQwait("sub auth count",4))return!1;var e=this._sock.rQshift32();if(this._sock.rQwait("sub auth capabilities",16*e,4))return!1;for(var i={STDVNOAUTH__:1,STDVVNCAUTH_:2},s=[],r=0;e>r;r++){var n=(this._sock.rQshift32(),this._sock.rQshiftStr(12));s.push(n)}for(var o in i)if(-1!=s.indexOf(o))switch(this._sock.send([0,0,0,i[o]]),o){case"STDVNOAUTH__":return this._updateState("SecurityResult"),!0;case"STDVVNCAUTH_":return this._rfb_auth_scheme=2,this._init_msg();default:return this._fail("Unsupported tiny auth scheme: "+o)}this._fail("No supported sub-auth types!")},_negotiate_authentication:function(){switch(this._rfb_auth_scheme){case 0:if(this._sock.rQwait("auth reason",4))return!1;var t=this._sock.rQshift32(),e=this._sock.rQshiftStr(t);return this._fail("Auth failure: "+e);case 1:return this._rfb_version>=3.8?(this._updateState("SecurityResult"),!0):(this._updateState("ClientInitialisation","No auth required"),this._init_msg());case 22:return this._negotiate_xvp_auth();case 2:return this._negotiate_std_vnc_auth();case 16:return this._negotiate_tight_auth();default:return this._fail("Unsupported auth scheme: "+this._rfb_auth_scheme)}},_handle_security_result:function(){if(this._sock.rQwait("VNC auth response ",4))return!1;switch(this._sock.rQshift32()){case 0:return this._updateState("ClientInitialisation","Authentication OK"),this._init_msg();case 1:if(this._rfb_version>=3.8){var t=this._sock.rQshift32();if(this._sock.rQwait("SecurityResult reason",t,8))return!1;var e=this._sock.rQshiftStr(t);return this._fail(e)}return this._fail("Authentication failure");case 2:return this._fail("Too many auth attempts")}},_negotiate_server_init:function(){if(this._sock.rQwait("server initialization",24))return!1;this._fb_width=this._sock.rQshift16(),this._fb_height=this._sock.rQshift16();var t=this._sock.rQshift8(),e=this._sock.rQshift8(),i=this._sock.rQshift8(),s=this._sock.rQshift8(),r=this._sock.rQshift16(),n=this._sock.rQshift16(),o=this._sock.rQshift16(),a=this._sock.rQshift8(),h=this._sock.rQshift8(),_=this._sock.rQshift8();this._sock.rQskipBytes(3);var c=this._sock.rQshift32();if(this._sock.rQwait("server init name",c,24))return!1;if(this._fb_name=Util.decodeUTF8(this._sock.rQshiftStr(c)),this._rfb_tightvnc){if(this._sock.rQwait("TightVNC extended server init header",8,24+c))return!1;var u=this._sock.rQshift16(),l=this._sock.rQshift16(),d=this._sock.rQshift16();this._sock.rQskipBytes(2);var f=16*(u+l+d);if(this._sock.rQwait("TightVNC extended server init header",f,32+c))return!1;var p;for(p=0;u>p;p++){this._sock.rQshiftStr(16)}for(p=0;l>p;p++){this._sock.rQshiftStr(16)}for(p=0;d>p;p++){this._sock.rQshiftStr(16)}}Util.Info("Screen: "+this._fb_width+"x"+this._fb_height+", bpp: "+t+", depth: "+e+", big_endian: "+i+", true_color: "+s+", red_max: "+r+", green_max: "+n+", blue_max: "+o+", red_shift: "+a+", green_shift: "+h+", blue_shift: "+_),0!==i&&Util.Warn("Server native endian is not little endian"),16!==a&&Util.Warn("Server native red-shift is not 16"),0!==_&&Util.Warn("Server native blue-shift is not 0"),this._onDesktopName(this,this._fb_name),this._true_color&&"Intel(r) AMT KVM"===this._fb_name&&(Util.Warn("Intel AMT KVM only supports 8/16 bit depths. Disabling true color"),this._true_color=!1),this._display.set_true_color(this._true_color),this._onFBResize(this,this._fb_width,this._fb_height),this._display.resize(this._fb_width,this._fb_height),this._keyboard.grab(),this._mouse.grab(),this._true_color?(this._fb_Bpp=4,this._fb_depth=3):(this._fb_Bpp=1,this._fb_depth=1);var g=RFB.messages.pixelFormat(this._fb_Bpp,this._fb_depth,this._true_color);g=g.concat(RFB.messages.clientEncodings(this._encodings,this._local_cursor,this._true_color)),g=g.concat(RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),this._fb_width,this._fb_height)),this._timing.fbu_rt_start=(new Date).getTime(),this._timing.pixels=0,this._sock.send(g),this._checkEvents(),this._encrypt?this._updateState("normal","Connected (encrypted) to: "+this._fb_name):this._updateState("normal","Connected (unencrypted) to: "+this._fb_name)},_init_msg:function(){switch(this._rfb_state){case"ProtocolVersion":return this._negotiate_protocol_version();case"Security":return this._negotiate_security();case"Authentication":return this._negotiate_authentication();case"SecurityResult":return this._handle_security_result();case"ClientInitialisation":return this._sock.send([this._shared?1:0]),this._updateState("ServerInitialisation","Authentication OK"),!0;case"ServerInitialisation":return this._negotiate_server_init()}},_handle_set_colour_map_msg:function(){Util.Debug("SetColorMapEntries"),this._sock.rQskip8();var t=this._sock.rQshift16(),e=this._sock.rQshift16();if(this._sock.rQwait("SetColorMapEntries",6*e,6))return!1;for(var i=0;e>i;i++){var s=parseInt(this._sock.rQshift16()/256,10),r=parseInt(this._sock.rQshift16()/256,10),n=parseInt(this._sock.rQshift16()/256,10);this._display.set_colourMap([n,r,s],t+i)}return Util.Debug("colourMap: "+this._display.get_colourMap()),Util.Info("Registered "+e+" colourMap entries"),!0},_handle_server_cut_text:function(){if(Util.Debug("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);var t=this._sock.rQshift32();if(this._sock.rQwait("ServerCutText",t,8))return!1;var e=this._sock.rQshiftStr(t);return this._onClipboard(this,e),!0},_handle_xvp_msg:function(){if(this._sock.rQwait("XVP version and message",3,1))return!1;this._sock.rQskip8();var t=this._sock.rQshift8(),e=this._sock.rQshift8();switch(e){case 0:this._updateState(this._rfb_state,"Operation Failed");break;case 1:this._rfb_xvp_ver=t,Util.Info("XVP extensions enabled (version "+this._rfb_xvp_ver+")"),this._onXvpInit(this._rfb_xvp_ver);break;default:this._fail("Disconnected: illegal server XVP message "+e)}return!0},_normal_msg:function(){var t;switch(t=this._FBU.rects>0?0:this._sock.rQshift8()){case 0:var e=this._framebufferUpdate();return e&&this._sock.send(RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),this._fb_width,this._fb_height)),e;case 1:return this._handle_set_colour_map_msg();case 2:return Util.Debug("Bell"),this._onBell(this),!0;case 3:return this._handle_server_cut_text();case 250:return this._handle_xvp_msg();default:return this._fail("Disconnected: illegal server message type "+t),Util.Debug("sock.rQslice(0, 30): "+this._sock.rQslice(0,30)),!0}},_framebufferUpdate:function(){var t,e=!0;if(0===this._FBU.rects){if(this._sock.rQwait("FBU header",3,1))return!1;this._sock.rQskip8(),this._FBU.rects=this._sock.rQshift16(),this._FBU.bytes=0,this._timing.cur_fbu=0,this._timing.fbu_rt_start>0&&(t=(new Date).getTime(),Util.Info("First FBU latency: "+(t-this._timing.fbu_rt_start)))}for(;this._FBU.rects>0;){if("normal"!==this._rfb_state)return!1;if(this._sock.rQwait("FBU",this._FBU.bytes))return!1;if(0===this._FBU.bytes){if(this._sock.rQwait("rect header",12))return!1;var i=this._sock.rQshiftBytes(12);if(this._FBU.x=(i[0]<<8)+i[1],this._FBU.y=(i[2]<<8)+i[3],this._FBU.width=(i[4]<<8)+i[5],this._FBU.height=(i[6]<<8)+i[7],this._FBU.encoding=parseInt((i[8]<<24)+(i[9]<<16)+(i[10]<<8)+i[11],10),this._onFBUReceive(this,{x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height,encoding:this._FBU.encoding,encodingName:this._encNames[this._FBU.encoding]}),!this._encNames[this._FBU.encoding])return this._fail("Disconnected: unsupported encoding "+this._FBU.encoding),!1}if(this._timing.last_fbu=(new Date).getTime(),e=this._encHandlers[this._FBU.encoding](),t=(new Date).getTime(),this._timing.cur_fbu+=t-this._timing.last_fbu,e&&(this._encStats[this._FBU.encoding][0]++,this._encStats[this._FBU.encoding][1]++,this._timing.pixels+=this._FBU.width*this._FBU.height),this._timing.pixels>=this._fb_width*this._fb_height&&((this._FBU.width===this._fb_width&&this._FBU.height===this._fb_height||this._timing.fbu_rt_start>0)&&(this._timing.full_fbu_total+=this._timing.cur_fbu,this._timing.full_fbu_cnt++,Util.Info("Timing of full FBU, curr: "+this._timing.cur_fbu+", total: "+this._timing.full_fbu_total+", cnt: "+this._timing.full_fbu_cnt+", avg: "+this._timing.full_fbu_total/this._timing.full_fbu_cnt)),this._timing.fbu_rt_start>0)){var s=t-this._timing.fbu_rt_start;this._timing.fbu_rt_total+=s,this._timing.fbu_rt_cnt++,Util.Info("full FBU round-trip, cur: "+s+", total: "+this._timing.fbu_rt_total+", cnt: "+this._timing.fbu_rt_cnt+", avg: "+this._timing.fbu_rt_total/this._timing.fbu_rt_cnt),this._timing.fbu_rt_start=0}if(!e)return e}return this._onFBUComplete(this,{x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height,encoding:this._FBU.encoding,encodingName:this._encNames[this._FBU.encoding]}),!0}},Util.make_properties(RFB,[["target","wo","dom"],["focusContainer","wo","dom"],["encrypt","rw","bool"],["true_color","rw","bool"],["local_cursor","rw","bool"],["shared","rw","bool"],["view_only","rw","bool"],["xvp_password_sep","rw","str"],["disconnectTimeout","rw","int"],["wsProtocols","rw","arr"],["repeaterID","rw","str"],["viewportDrag","rw","bool"],["onUpdateState","rw","func"],["onPasswordRequired","rw","func"],["onClipboard","rw","func"],["onBell","rw","func"],["onFBUReceive","rw","func"],["onFBUComplete","rw","func"],["onFBResize","rw","func"],["onDesktopName","rw","func"],["onXvpInit","rw","func"]]),RFB.prototype.set_local_cursor=function(t){!t||t in{0:1,no:1,"false":1}?this._local_cursor=!1:this._display.get_cursor_uri()?this._local_cursor=!0:Util.Warn("Browser does not support local cursor")},RFB.prototype.get_display=function(){return this._display},RFB.prototype.get_keyboard=function(){return this._keyboard},RFB.prototype.get_mouse=function(){return this._mouse},RFB.messages={keyEvent:function(t,e){var i=[4];return i.push8(e),i.push16(0),i.push32(t),i},pointerEvent:function(t,e,i){var s=[5];return s.push8(i),s.push16(t),s.push16(e),s},clientCutText:function(t){var e=[6];e.push8(0),e.push8(0),e.push8(0),e.push32(t.length);for(var i=t.length,s=0;i>s;s++)e.push(t.charCodeAt(s));return e},pixelFormat:function(t,e,i){var s=[0];return s.push8(0),s.push8(0),s.push8(0),s.push8(8*t),s.push8(8*e),s.push8(0),s.push8(i?1:0),s.push16(255),s.push16(255),s.push16(255),s.push8(16),s.push8(8),s.push8(0),s.push8(0),s.push8(0),s.push8(0),s},clientEncodings:function(t,e,i){var s,r=[];for(s=0;s0&&o.h>0&&(s="undefined"==typeof o.w?e:o.w,r="undefined"==typeof o.h?i:o.h,n=n.concat(RFB.messages.fbUpdateRequest(1,o.x,o.y,s,r)));for(var a=0;a0?this._FBU.bytes=this._FBU.width*this._fb_Bpp:(this._FBU.rects--,this._FBU.bytes=0),!0},COPYRECT:function(){return this._FBU.bytes=4,this._sock.rQwait("COPYRECT",4)?!1:(this._display.renderQ_push({type:"copy",old_x:this._sock.rQshift16(),old_y:this._sock.rQshift16(),x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height}),this._FBU.rects--,this._FBU.bytes=0,!0)},RRE:function(){var t;if(0===this._FBU.subrects){if(this._FBU.bytes=4+this._fb_Bpp,this._sock.rQwait("RRE",4+this._fb_Bpp))return!1;this._FBU.subrects=this._sock.rQshift32(),t=this._sock.rQshiftBytes(this._fb_Bpp),this._display.fillRect(this._FBU.x,this._FBU.y,this._FBU.width,this._FBU.height,t)}for(;this._FBU.subrects>0&&this._sock.rQlen()>=this._fb_Bpp+8;){t=this._sock.rQshiftBytes(this._fb_Bpp);var e=this._sock.rQshift16(),i=this._sock.rQshift16(),s=this._sock.rQshift16(),r=this._sock.rQshift16();this._display.fillRect(this._FBU.x+e,this._FBU.y+i,s,r,t),this._FBU.subrects--}if(this._FBU.subrects>0){var n=Math.min(this._rre_chunk_sz,this._FBU.subrects);this._FBU.bytes=(this._fb_Bpp+8)*n}else this._FBU.rects--,this._FBU.bytes=0;return!0},HEXTILE:function(){var t=this._sock.get_rQ(),e=this._sock.get_rQi();for(0===this._FBU.tiles&&(this._FBU.tiles_x=Math.ceil(this._FBU.width/16),this._FBU.tiles_y=Math.ceil(this._FBU.height/16),this._FBU.total_tiles=this._FBU.tiles_x*this._FBU.tiles_y,this._FBU.tiles=this._FBU.total_tiles);this._FBU.tiles>0;){if(this._FBU.bytes=1,this._sock.rQwait("HEXTILE subencoding",this._FBU.bytes))return!1;var i=t[e];if(i>30)return this._fail("Disconnected: illegal hextile subencoding "+i),!1;var s=0,r=this._FBU.total_tiles-this._FBU.tiles,n=r%this._FBU.tiles_x,o=Math.floor(r/this._FBU.tiles_x),a=this._FBU.x+16*n,h=this._FBU.y+16*o,_=Math.min(16,this._FBU.x+this._FBU.width-a),c=Math.min(16,this._FBU.y+this._FBU.height-h);if(1&i)this._FBU.bytes+=_*c*this._fb_Bpp;else if(2&i&&(this._FBU.bytes+=this._fb_Bpp),4&i&&(this._FBU.bytes+=this._fb_Bpp),8&i){if(this._FBU.bytes++,this._sock.rQwait("hextile subrects header",this._FBU.bytes))return!1;s=t[e+this._FBU.bytes-1],this._FBU.bytes+=16&i?s*(this._fb_Bpp+2):2*s}if(this._sock.rQwait("hextile",this._FBU.bytes))return!1;if(this._FBU.subencoding=t[e],e++,0===this._FBU.subencoding)1&this._FBU.lastsubencoding?Util.Debug(" Ignoring blank after RAW"):this._display.fillRect(a,h,_,c,this._FBU.background);else if(1&this._FBU.subencoding)this._display.blitImage(a,h,_,c,t,e),e+=this._FBU.bytes-1;else{if(2&this._FBU.subencoding&&(this._FBU.background=t.slice(e,e+this._fb_Bpp),e+=this._fb_Bpp),4&this._FBU.subencoding&&(this._FBU.foreground=t.slice(e,e+this._fb_Bpp),e+=this._fb_Bpp),this._display.startTile(a,h,_,c,this._FBU.background),8&this._FBU.subencoding){s=t[e],e++;for(var u=0;s>u;u++){var l;16&this._FBU.subencoding?(l=t.slice(e,e+this._fb_Bpp),e+=this._fb_Bpp):l=this._FBU.foreground;var d=t[e];e++;var f=d>>4,p=15&d,g=t[e];e++;var y=(g>>4)+1,b=(15&g)+1;this._display.subTile(f,p,y,b,l)}}this._display.finishTile()}this._sock.set_rQi(e),this._FBU.lastsubencoding=this._FBU.subencoding,this._FBU.bytes=0,this._FBU.tiles--}return 0===this._FBU.tiles&&this._FBU.rects--,!0},getTightCLength:function(t){var e=1,i=0;return i+=127&t[0],128&t[0]&&(e++,i+=(127&t[1])<<7,128&t[1]&&(e++,i+=t[2]<<14)),[e,i]},display_tight:function(t){if(1===this._fb_depth&&this._fail("Tight protocol handler only implements true color mode"),this._FBU.bytes=1,this._sock.rQwait("TIGHT compression-control",this._FBU.bytes))return!1;var e,i,s,r=0,n=-1,o=function(t){for(var e=0;4>e;e++)r>>e&1&&(this._FBU.zlibs[e].reset(),Util.Info("Reset zlib stream "+e));var i=this._FBU.zlibs[n].uncompress(t,0);return 0!==i.status&&Util.Error("Invalid data in zlib stream"),i.data}.bind(this),a=function(t,e,i,s,r){var n,o,a,h,_=[];if(2===e){var c=Math.floor((s+7)/8),u=Math.floor(s/8);for(o=0;r>o;o++){var l;for(n=0;u>n;n++)for(l=7;l>=0;l--)a=3*(o*s+8*n+7-l),h=3*(t[o*c+n]>>l&1),_[a]=i[h],_[a+1]=i[h+1],_[a+2]=i[h+2];for(l=7;l>=8-s%8;l--)a=3*(o*s+8*n+7-l),h=3*(t[o*c+n]>>l&1),_[a]=i[h],_[a+1]=i[h+1],_[a+2]=i[h+2]}}else for(o=0;r>o;o++)for(n=0;s>n;n++)a=3*(o*s+n),h=3*t[o*s+n],_[a]=i[h],_[a+1]=i[h+1],_[a+2]=i[h+2];return _}.bind(this),h=this._sock.get_rQ(),_=this._sock.get_rQi(),c=function(){var t=h[_+2]+1,r=t*this._fb_depth;if(this._FBU.bytes+=r,this._sock.rQwait("TIGHT palette "+e,this._FBU.bytes))return!1;var n=2>=t?1:8,c=Math.floor((this._FBU.width*n+7)/8),u=!1;if(c*this._FBU.height<12?(u=!0,i=[0,c*this._FBU.height]):i=RFB.encodingHandlers.getTightCLength(this._sock.rQslice(3+r,3+r+3)),this._FBU.bytes+=i[0]+i[1],this._sock.rQwait("TIGHT "+e,this._FBU.bytes))return!1;this._sock.rQskipBytes(3);var l=this._sock.rQshiftBytes(r);this._sock.rQskipBytes(i[0]),s=u?this._sock.rQshiftBytes(i[1]):o(this._sock.rQshiftBytes(i[1]));var d=a(s,t,l,this._FBU.width,this._FBU.height);return this._display.renderQ_push({type:"blitRgb",data:d,x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height}),!0}.bind(this),u=function(){var t=!1,r=this._FBU.width*this._FBU.height*this._fb_depth;return 12>r?(t=!0,i=[0,r]):i=RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1,4)),this._FBU.bytes=1+i[0]+i[1],this._sock.rQwait("TIGHT "+e,this._FBU.bytes)?!1:(this._sock.rQshiftBytes(1+i[0]),s=t?this._sock.rQshiftBytes(i[1]):o(this._sock.rQshiftBytes(i[1])),this._display.renderQ_push({type:"blitRgb",data:s,x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height}),!0)}.bind(this),l=this._sock.rQpeek8();if(r=15&l,l>>=4,n=3&l,8===l)e="fill";else if(9===l)e="jpeg";else if(10===l)e="png";else if(4&l)e="filter";else{if(!(4>l))return this._fail("Illegal tight compression received, ctl: "+l);e="copy"}if(t&&("filter"===e||"copy"===e))return this._fail("filter/copy received in tightPNG mode");switch(e){case"fill":this._FBU.bytes+=this._fb_depth;break;case"jpeg":this._FBU.bytes+=3;break;case"png":this._FBU.bytes+=3;break;case"filter":this._FBU.bytes+=2;break;case"copy":}if(this._sock.rQwait("TIGHT "+e,this._FBU.bytes))return!1;switch(e){case"fill":this._sock.rQskip8();var d=this._sock.rQshiftBytes(this._fb_depth);this._display.renderQ_push({type:"fill",x:this._FBU.x,y:this._FBU.y,width:this._FBU.width,height:this._FBU.height,color:[d[2],d[1],d[0]]});break;case"png":case"jpeg":if(i=RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1,4)),this._FBU.bytes=1+i[0]+i[1],this._sock.rQwait("TIGHT "+e,this._FBU.bytes))return!1;this._sock.rQskipBytes(1+i[0]);var f=new Image;f.src="data: image/"+e+RFB.extract_data_uri(this._sock.rQshiftBytes(i[1])),this._display.renderQ_push({type:"img",img:f,x:this._FBU.x,y:this._FBU.y}),f=null;break;case"filter":var p=h[_+1];if(1!==p)throw new Error("Unsupported tight subencoding received, filter: "+p);if(!c())return!1;break;case"copy":if(!u())return!1}return this._FBU.bytes=0,this._FBU.rects--,!0},TIGHT:function(){return this._encHandlers.display_tight(!1)},TIGHT_PNG:function(){return this._encHandlers.display_tight(!0)},last_rect:function(){return this._FBU.rects=0,!0},DesktopSize:function(){return Util.Debug(">> set_desktopsize"),this._fb_width=this._FBU.width,this._fb_height=this._FBU.height,this._onFBResize(this,this._fb_width,this._fb_height),this._display.resize(this._fb_width,this._fb_height),this._timing.fbu_rt_start=(new Date).getTime(),this._FBU.bytes=0,this._FBU.rects--,Util.Debug("<< set_desktopsize"),!0},Cursor:function(){Util.Debug(">> set_cursor");var t=this._FBU.x,e=this._FBU.y,i=this._FBU.width,s=this._FBU.height,r=i*s*this._fb_Bpp,n=Math.floor((i+7)/8)*s;return this._FBU.bytes=r+n,this._sock.rQwait("cursor encoding",this._FBU.bytes)?!1:(this._display.changeCursor(this._sock.rQshiftBytes(r),this._sock.rQshiftBytes(n),t,e,i,s),this._FBU.bytes=0,this._FBU.rects--,Util.Debug("<< set_cursor"),!0)},JPEG_quality_lo:function(){Util.Error("Server sent jpeg_quality pseudo-encoding")},compress_lo:function(){Util.Error("Server sent compress level pseudo-encoding")}}}(),define("vnc-rfb",["vnc-util"],function(){});var XK_VoidSymbol=16777215,XK_BackSpace=65288,XK_Tab=65289,XK_Linefeed=65290,XK_Clear=65291,XK_Return=65293,XK_Pause=65299,XK_Scroll_Lock=65300,XK_Sys_Req=65301,XK_Escape=65307,XK_Delete=65535,XK_Home=65360,XK_Left=65361,XK_Up=65362,XK_Right=65363,XK_Down=65364,XK_Prior=65365,XK_Page_Up=65365,XK_Next=65366,XK_Page_Down=65366,XK_End=65367,XK_Begin=65368,XK_Select=65376,XK_Print=65377,XK_Execute=65378,XK_Insert=65379,XK_Undo=65381,XK_Redo=65382,XK_Menu=65383,XK_Find=65384,XK_Cancel=65385,XK_Help=65386,XK_Break=65387,XK_Mode_switch=65406,XK_script_switch=65406,XK_Num_Lock=65407,XK_KP_Space=65408,XK_KP_Tab=65417,XK_KP_Enter=65421,XK_KP_F1=65425,XK_KP_F2=65426,XK_KP_F3=65427,XK_KP_F4=65428,XK_KP_Home=65429,XK_KP_Left=65430,XK_KP_Up=65431,XK_KP_Right=65432,XK_KP_Down=65433,XK_KP_Prior=65434,XK_KP_Page_Up=65434;XK_KP_Next=65435,XK_KP_Page_Down=65435,XK_KP_End=65436,XK_KP_Begin=65437,XK_KP_Insert=65438,XK_KP_Delete=65439,XK_KP_Equal=65469,XK_KP_Multiply=65450,XK_KP_Add=65451,XK_KP_Separator=65452,XK_KP_Subtract=65453,XK_KP_Decimal=65454,XK_KP_Divide=65455,XK_KP_0=65456,XK_KP_1=65457,XK_KP_2=65458,XK_KP_3=65459,XK_KP_4=65460,XK_KP_5=65461,XK_KP_6=65462,XK_KP_7=65463,XK_KP_8=65464,XK_KP_9=65465,XK_F1=65470,XK_F2=65471,XK_F3=65472,XK_F4=65473,XK_F5=65474,XK_F6=65475,XK_F7=65476,XK_F8=65477,XK_F9=65478,XK_F10=65479,XK_F11=65480,XK_L1=65480,XK_F12=65481,XK_L2=65481,XK_F13=65482,XK_L3=65482,XK_F14=65483,XK_L4=65483,XK_F15=65484,XK_L5=65484,XK_F16=65485,XK_L6=65485,XK_F17=65486,XK_L7=65486,XK_F18=65487,XK_L8=65487,XK_F19=65488,XK_L9=65488,XK_F20=65489,XK_L10=65489,XK_F21=65490,XK_R1=65490,XK_F22=65491,XK_R2=65491,XK_F23=65492,XK_R3=65492,XK_F24=65493,XK_R4=65493,XK_F25=65494,XK_R5=65494,XK_F26=65495,XK_R6=65495,XK_F27=65496,XK_R7=65496,XK_F28=65497,XK_R8=65497,XK_F29=65498,XK_R9=65498,XK_F30=65499,XK_R10=65499,XK_F31=65500,XK_R11=65500,XK_F32=65501,XK_R12=65501,XK_F33=65502,XK_R13=65502,XK_F34=65503,XK_R14=65503,XK_F35=65504,XK_R15=65504,XK_Shift_L=65505,XK_Shift_R=65506,XK_Control_L=65507,XK_Control_R=65508,XK_Caps_Lock=65509,XK_Shift_Lock=65510,XK_Meta_L=65511,XK_Meta_R=65512,XK_Alt_L=65513,XK_Alt_R=65514,XK_Super_L=65515,XK_Super_R=65516,XK_Hyper_L=65517,XK_Hyper_R=65518,XK_ISO_Level3_Shift=65027,XK_space=32,XK_exclam=33,XK_quotedbl=34,XK_numbersign=35,XK_dollar=36,XK_percent=37,XK_ampersand=38,XK_apostrophe=39,XK_quoteright=39,XK_parenleft=40,XK_parenright=41,XK_asterisk=42,XK_plus=43,XK_comma=44,XK_minus=45,XK_period=46,XK_slash=47,XK_0=48,XK_1=49,XK_2=50,XK_3=51,XK_4=52,XK_5=53,XK_6=54,XK_7=55,XK_8=56,XK_9=57,XK_colon=58,XK_semicolon=59,XK_less=60,XK_equal=61,XK_greater=62,XK_question=63,XK_at=64,XK_A=65,XK_B=66,XK_C=67,XK_D=68,XK_E=69,XK_F=70,XK_G=71,XK_H=72,XK_I=73,XK_J=74,XK_K=75,XK_L=76,XK_M=77,XK_N=78,XK_O=79,XK_P=80,XK_Q=81,XK_R=82,XK_S=83,XK_T=84,XK_U=85,XK_V=86,XK_W=87,XK_X=88,XK_Y=89,XK_Z=90,XK_bracketleft=91,XK_backslash=92,XK_bracketright=93,XK_asciicircum=94,XK_underscore=95,XK_grave=96,XK_quoteleft=96,XK_a=97,XK_b=98,XK_c=99,XK_d=100,XK_e=101,XK_f=102,XK_g=103,XK_h=104,XK_i=105,XK_j=106,XK_k=107,XK_l=108,XK_m=109,XK_n=110,XK_o=111,XK_p=112,XK_q=113,XK_r=114,XK_s=115,XK_t=116,XK_u=117,XK_v=118,XK_w=119,XK_x=120,XK_y=121,XK_z=122,XK_braceleft=123,XK_bar=124,XK_braceright=125,XK_asciitilde=126,XK_nobreakspace=160,XK_exclamdown=161,XK_cent=162,XK_sterling=163,XK_currency=164,XK_yen=165,XK_brokenbar=166,XK_section=167,XK_diaeresis=168,XK_copyright=169,XK_ordfeminine=170,XK_guillemotleft=171,XK_notsign=172,XK_hyphen=173,XK_registered=174,XK_macron=175,XK_degree=176,XK_plusminus=177,XK_twosuperior=178,XK_threesuperior=179,XK_acute=180,XK_mu=181,XK_paragraph=182,XK_periodcentered=183,XK_cedilla=184,XK_onesuperior=185,XK_masculine=186,XK_guillemotright=187,XK_onequarter=188,XK_onehalf=189,XK_threequarters=190,XK_questiondown=191,XK_Agrave=192,XK_Aacute=193,XK_Acircumflex=194,XK_Atilde=195,XK_Adiaeresis=196,XK_Aring=197,XK_AE=198,XK_Ccedilla=199,XK_Egrave=200,XK_Eacute=201,XK_Ecircumflex=202,XK_Ediaeresis=203,XK_Igrave=204,XK_Iacute=205,XK_Icircumflex=206,XK_Idiaeresis=207,XK_ETH=208,XK_Eth=208,XK_Ntilde=209,XK_Ograve=210,XK_Oacute=211,XK_Ocircumflex=212,XK_Otilde=213,XK_Odiaeresis=214,XK_multiply=215,XK_Oslash=216,XK_Ooblique=216,XK_Ugrave=217,XK_Uacute=218,XK_Ucircumflex=219,XK_Udiaeresis=220,XK_Yacute=221,XK_THORN=222,XK_Thorn=222,XK_ssharp=223,XK_agrave=224,XK_aacute=225,XK_acircumflex=226,XK_atilde=227,XK_adiaeresis=228,XK_aring=229,XK_ae=230,XK_ccedilla=231,XK_egrave=232,XK_eacute=233,XK_ecircumflex=234,XK_ediaeresis=235,XK_igrave=236,XK_iacute=237,XK_icircumflex=238,XK_idiaeresis=239,XK_eth=240,XK_ntilde=241,XK_ograve=242,XK_oacute=243,XK_ocircumflex=244,XK_otilde=245,XK_odiaeresis=246,XK_division=247,XK_oslash=248,XK_ooblique=248,XK_ugrave=249,XK_uacute=250,XK_ucircumflex=251,XK_udiaeresis=252,XK_yacute=253,XK_thorn=254,XK_ydiaeresis=255,define("vnc-keysym",["vnc-util"],function(){}),define("console/vnc",["require","vnc-util","vnc-webutil","vnc-base64","vnc-websock","vnc-des","vnc-keysymdef","vnc-keyboard","vnc-input","vnc-display","vnc-jsunzip","vnc-rfb","vnc-keysym"],function(t){function e(){var t;t='
=1?"inline":"none"}t("vnc-util"),t("vnc-webutil"),t("vnc-base64"),t("vnc-websock"),t("vnc-des"),t("vnc-keysymdef"),t("vnc-keyboard"),t("vnc-input"),t("vnc-display"),t("vnc-jsunzip"),t("vnc-rfb"),t("vnc-keysym");var h,_,c,u,l,d;return $D("sendCtrlAltDelButton").style.display="inline",$D("sendCtrlAltDelButton").onclick=i,$D("xvpShutdownButton").onclick=s,$D("xvpRebootButton").onclick=r,$D("xvpResetButton").onclick=n,WebUtil.init_logging(WebUtil.getQueryVar("logging","warn")),document.title=unescape(WebUtil.getQueryVar("title","noVNC")),_=WebUtil.getQueryVar("host",window.location.hostname),c=WebUtil.getQueryVar("port",window.location.port),c||("http"==window.location.protocol.substring(0,4)?c=80:"https"==window.location.protocol.substring(0,5)&&(c=443)),d=WebUtil.getQueryVar("token",null),d&&WebUtil.createCookie("token",d,1),u=WebUtil.getQueryVar("password",""),l=WebUtil.getQueryVar("path","websockify"),_&&c?(h=new RFB({target:$D("noVNC_canvas"),encrypt:WebUtil.getQueryVar("encrypt","https:"===window.location.protocol),repeaterID:WebUtil.getQueryVar("repeaterID",""),true_color:WebUtil.getQueryVar("true_color",!0),local_cursor:WebUtil.getQueryVar("cursor",!0),shared:WebUtil.getQueryVar("shared",!0),view_only:WebUtil.getQueryVar("view_only",!1),onUpdateState:o,onXvpInit:a,onPasswordRequired:e}),void h.connect(_,c,u,l+"?token="+d)):void o("failed","Must specify host and port in URL")}),require(["console/vnc"]); -//# sourceMappingURL=vnc.js -//# sourceMappingURL=vnc.js.map \ No newline at end of file diff --git a/src/sunstone/public/dist/console/vnc.js.map b/src/sunstone/public/dist/console/vnc.js.map deleted file mode 100644 index 26bddea56d..0000000000 --- a/src/sunstone/public/dist/console/vnc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vnc.js","sources":["../../bower_components/no-vnc/include/websock.js","../../bower_components/no-vnc/include/des.js","../../bower_components/no-vnc/include/keyboard.js","../../bower_components/no-vnc/include/jsunzip.js","../../bower_components/almond/almond.js","../../bower_components/no-vnc/include/util.js","../../bower_components/no-vnc/include/webutil.js","../../bower_components/no-vnc/include/base64.js","../../bower_components/no-vnc/include/keysymdef.js","../../bower_components/no-vnc/include/input.js","../../bower_components/no-vnc/include/display.js","../../bower_components/no-vnc/include/rfb.js","../../bower_components/no-vnc/include/keysym.js","vnc.js"],"names":["Websock","this","_websocket","_rQ","_rQi","_rQmax","_sQ","_mode","maxBufferedAmount","_eventHandlers","message","open","close","error","DES","passwd","setKeys","keyBlock","i","j","l","m","n","o","raw0","raw1","rawi","KnLi","pc1m","pcr","kn","totrot","PC2","keys","enc8","text","fval","r","x","b","slice","keysi","SP7","SP5","SP3","SP1","SP8","SP6","SP4","SP2","encrypt","t","concat","a","c","d","e","f","z","KeyEventDecoder","modifierState","next","sendAll","evts","length","process","evt","type","result","keyId","kbdUtil","getKey","keysym","getKeysym","hasModifier","hasShortcutModifier","activeCharModifier","nonCharacterKey","isShift","keyCode","key","suppress","stall","active","isCharModifier","escape","keydown","keypress","keyup","syncModifiers","syncAny","releaseAll","VerifyCharModifier","timer","delayProcess","clearTimeout","queue","cur","splice","setTimeout","push","TrackKeyState","state","last","keysyms","ignoreKeyPress","console","log","idx","item","clone","Clone","obj","prototype","out","EscapeModifiers","undefined","lookup","JSUnzip","getInt","offset","size","data","charCodeAt","getDOSDate","dosdate","dostime","day","month","year","second","minute","hour","Date","files","status","endOfCentralDirectory","entriesInThisDisk","centralDirectoryOffset","globalCommentLength","comment","fileOffset","compressionMethod","lastModFileTime","lastModFileDate","lastModifiedDate","compressedSize","uncompressedSize","fileNameLength","extraFieldLength","fileCommentLength","relativeOffsetOfLocalHeader","fileName","fileComment","localFileNameLength","localExtraFieldLength","localFileContent","read","fileInfo","tinf","TINF","init","uncompress","OK","read_bits_direct","source","bitcount","tag","num","val","DATA_ERROR","WINDOW_SIZE","TREE","table","Array","trans","DATA","that","sourceIndex","dest","history","ltree","dtree","sltree","sdtree","length_bits","length_base","dist_bits","dist_base","clcidx","build_bits_base","bits","base","delta","first","sum","Math","floor","build_fixed_trees","lt","dt","build_tree","lengths","loffset","offs","getbit","bit","read_bits","ret","decode_symbol","len","decode_trees","hlit","hdist","hclen","code_tree","clen","sym","prev","inflate_block_data","ddest","ddestlength","dist","inflate_uncompressed_block","invlength","overflow","inflate_fixed_block","inflate_dynamic_block","reset","header","bfinal","blocks","btype","res","requirejs","require","define","undef","hasProp","prop","hasOwn","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","part","baseParts","split","map","config","starMap","charAt","nodeIdCompat","jsSuffixRegExp","test","replace","join","indexOf","substring","makeRequire","relName","forceSync","args","aps","arguments","req","apply","makeNormalize","makeLoad","depName","value","defined","callDep","waiting","defining","main","Error","splitPrefix","prefix","index","makeConfig","makeMap","handlers","Object","hasOwnProperty","plugin","parts","pr","p","exports","module","id","uri","deps","callback","cjsModule","usingExports","callbackType","load","alt","cfg","_defined","amd","jQuery","Util","addFunc","cl","func","defineProperty","enumerable","fun","TypeError","thisp","elt","from","Number","ceil","hasDontEnumBug","toString","propertyIsEnumerable","dontEnums","dontEnumsLength","Function","oThis","aArgs","fToBind","fNOP","fBound","window","requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","_log_level","init_logging","level","opera","postError","warn","Debug","Info","Warn","msg","get_logging","make_property","proto","mode","getter","setter","make_setter","process_val","0","no","false","parseInt","parseFloat","String","make_properties","constructor","arr","set_defaults","conf","defaults","defaults_keys","conf_keys","keys_obj","decodeUTF8","utf8string","decodeURIComponent","get_include_uri","INCLUDE_URI","_loading_scripts","_pending_scripts","load_scripts","script","head","document","getElementsByTagName","ls","ps","loadFunc","readyState","s","shift","appendChild","Engine","presto","onload","onreadystatechange","onscriptsload","createElement","src","trident","async","getPosition","getStyle","styleProp","y","currentStyle","getComputedStyle","scrollDist","myScrollTop","myScrollLeft","html","scrollTop","documentElement","body","scrollLeft","curleft","curtop","scr","fixed","parentNode","scrDist","offsetLeft","offsetTop","offsetParent","getEventPosition","scale","docX","docY","pos","event","changedTouches","touches","pageX","pageY","clientX","clientY","realx","realy","max","min","width","height","addEvent","evType","fn","attachEvent","addEventListener","removeEvent","detachEvent","removeEventListener","stopEvent","stopPropagation","cancelBubble","preventDefault","returnValue","Features","xpath","air","query","detectPresto","detectTrident","ActiveXObject","XMLHttpRequest","detectInitialWebkit","navigator","taintEnabled","detectActualWebkit","initial_ver","re","str_ver","userAgent","match","detectGecko","getBoxObjectFor","mozInnerScreenX","webkit","gecko","Flash","v","version","plugins","description","err1","GetVariable","err2","build","global","WebUtil","$D","getElementById","all","layers","param","location","href","dirObj","depth","parent","substr","getQueryVar","defVal","RegExp","createCookie","days","date","expires","setTime","getTime","toGMTString","secure","protocol","cookie","readCookie","defaultValue","nameEQ","ca","eraseCookie","initSettings","callbackArgs","chrome","storage","sync","get","settings","writeSetting","set","localStorage","setItem","readSetting","getItem","eraseSetting","remove","removeItem","getStylesheets","links","sheets","title","rel","toUpperCase","selectStylesheet","sheet","link","disabled","Base64","toBase64Table","base64Pad","encode","lengthpad","toBinaryTable","decode","result_length","leftbits","leftdata","data_length","padding","err","WebSocket","WEB_SOCKET_FORCE_FLASH","Websock_native","MozWebSocket","WEB_SOCKET_SWF_LOCATION","random","get_sQ","get_rQ","get_rQi","set_rQi","rQlen","rQpeek8","rQshift8","rQskip8","rQskipBytes","rQunshift8","unshift","rQshift16","rQshift32","rQshiftStr","fromCharCode","rQshiftBytes","rQslice","start","end","rQwait","goback","flush","bufferedAmount","send","_encode_message","send_string","str","chr","on","handler","protocols","ws_schema","bt","Uint8Array","wsbt","exc","new_protocols","binaryType","onmessage","_recv_message","bind","onopen","onclose","onerror","OPEN","CONNECTING","buffer","_decode_message","u8","exception_str","stack","k","keyname","keynames","codepoints","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","308","309","310","311","312","313","314","315","316","317","318","321","322","323","324","325","326","327","328","330","331","332","333","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","399","402","415","416","417","431","432","437","438","439","466","486","487","601","629","658","711","728","729","731","733","901","902","904","905","906","908","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","931","932","933","934","935","936","937","938","939","940","941","942","943","944","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","1025","1026","1027","1028","1029","1030","1031","1032","1033","1034","1035","1036","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1105","1106","1107","1108","1109","1110","1111","1112","1113","1114","1115","1116","1118","1119","1168","1169","1170","1171","1174","1175","1178","1179","1180","1181","1186","1187","1198","1199","1200","1201","1202","1203","1206","1207","1208","1209","1210","1211","1240","1241","1250","1251","1256","1257","1262","1263","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","1339","1340","1341","1342","1343","1344","1345","1346","1347","1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366","1370","1371","1372","1373","1374","1377","1378","1379","1380","1381","1382","1383","1384","1385","1386","1387","1388","1389","1390","1391","1392","1393","1394","1395","1396","1397","1398","1399","1400","1401","1402","1403","1404","1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1417","1418","1488","1489","1490","1491","1492","1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1548","1563","1567","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1600","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620","1621","1632","1633","1634","1635","1636","1637","1638","1639","1640","1641","1642","1648","1657","1662","1670","1672","1681","1688","1700","1705","1711","1722","1726","1729","1740","1746","1748","1776","1777","1778","1779","1780","1781","1782","1783","1784","1785","3458","3459","3461","3462","3463","3464","3465","3466","3467","3468","3469","3470","3471","3472","3473","3474","3475","3476","3477","3478","3482","3483","3484","3485","3486","3487","3488","3489","3490","3491","3492","3493","3494","3495","3496","3497","3498","3499","3500","3501","3502","3503","3504","3505","3507","3508","3509","3510","3511","3512","3513","3514","3515","3517","3520","3521","3522","3523","3524","3525","3526","3530","3535","3536","3537","3538","3539","3540","3542","3544","3545","3546","3547","3548","3549","3550","3551","3570","3571","3572","3585","3586","3587","3588","3589","3590","3591","3592","3593","3594","3595","3596","3597","3598","3599","3600","3601","3602","3603","3604","3605","3606","3607","3608","3609","3610","3611","3612","3613","3614","3615","3616","3617","3618","3619","3620","3621","3622","3623","3624","3625","3626","3627","3628","3629","3630","3631","3632","3633","3634","3635","3636","3637","3638","3639","3640","3641","3642","3647","3648","3649","3650","3651","3652","3653","3654","3655","3656","3657","3658","3659","3660","3661","3664","3665","3666","3667","3668","3669","3670","3671","3672","3673","4304","4305","4306","4307","4308","4309","4310","4311","4312","4313","4314","4315","4316","4317","4318","4319","4320","4321","4322","4323","4324","4325","4326","4327","4328","4329","4330","4331","4332","4333","4334","4335","4336","4337","4338","4339","4340","4341","4342","7682","7683","7690","7691","7710","7711","7734","7735","7744","7745","7766","7767","7776","7777","7786","7787","7808","7809","7810","7811","7812","7813","7818","7819","7840","7841","7842","7843","7844","7845","7846","7847","7848","7849","7850","7851","7852","7853","7854","7855","7856","7857","7858","7859","7860","7861","7862","7863","7864","7865","7866","7867","7868","7869","7870","7871","7872","7873","7874","7875","7876","7877","7878","7879","7880","7881","7882","7883","7884","7885","7886","7887","7888","7889","7890","7891","7892","7893","7894","7895","7896","7897","7898","7899","7900","7901","7902","7903","7904","7905","7906","7907","7908","7909","7910","7911","7912","7913","7914","7915","7916","7917","7918","7919","7920","7921","7922","7923","7924","7925","7926","7927","7928","7929","8194","8195","8196","8197","8199","8200","8201","8202","8210","8211","8212","8213","8215","8216","8217","8218","8220","8221","8222","8224","8225","8226","8229","8230","8240","8242","8243","8248","8254","8304","8308","8309","8310","8311","8312","8313","8320","8321","8322","8323","8324","8325","8326","8327","8328","8329","8352","8353","8354","8355","8356","8357","8358","8359","8360","8361","8362","8363","8364","8453","8470","8471","8478","8482","8531","8532","8533","8534","8535","8536","8537","8538","8539","8540","8541","8542","8592","8593","8594","8595","8658","8660","8706","8709","8711","8712","8713","8715","8728","8730","8731","8732","8733","8734","8743","8744","8745","8746","8747","8748","8749","8756","8757","8764","8771","8773","8775","8800","8801","8802","8803","8804","8805","8834","8835","8866","8867","8868","8869","8968","8970","8981","8992","8993","9109","9115","9117","9118","9120","9121","9123","9124","9126","9128","9132","9143","9146","9147","9148","9149","9225","9226","9227","9228","9229","9251","9252","9472","9474","9484","9488","9492","9496","9500","9508","9516","9524","9532","9618","9642","9643","9644","9645","9646","9647","9650","9651","9654","9655","9660","9661","9664","9665","9670","9675","9679","9702","9734","9742","9747","9756","9758","9792","9794","9827","9829","9830","9837","9839","10003","10007","10013","10016","10216","10217","10240","10241","10242","10243","10244","10245","10246","10247","10248","10249","10250","10251","10252","10253","10254","10255","10256","10257","10258","10259","10260","10261","10262","10263","10264","10265","10266","10267","10268","10269","10270","10271","10272","10273","10274","10275","10276","10277","10278","10279","10280","10281","10282","10283","10284","10285","10286","10287","10288","10289","10290","10291","10292","10293","10294","10295","10296","10297","10298","10299","10300","10301","10302","10303","10304","10305","10306","10307","10308","10309","10310","10311","10312","10313","10314","10315","10316","10317","10318","10319","10320","10321","10322","10323","10324","10325","10326","10327","10328","10329","10330","10331","10332","10333","10334","10335","10336","10337","10338","10339","10340","10341","10342","10343","10344","10345","10346","10347","10348","10349","10350","10351","10352","10353","10354","10355","10356","10357","10358","10359","10360","10361","10362","10363","10364","10365","10366","10367","10368","10369","10370","10371","10372","10373","10374","10375","10376","10377","10378","10379","10380","10381","10382","10383","10384","10385","10386","10387","10388","10389","10390","10391","10392","10393","10394","10395","10396","10397","10398","10399","10400","10401","10402","10403","10404","10405","10406","10407","10408","10409","10410","10411","10412","10413","10414","10415","10416","10417","10418","10419","10420","10421","10422","10423","10424","10425","10426","10427","10428","10429","10430","10431","10432","10433","10434","10435","10436","10437","10438","10439","10440","10441","10442","10443","10444","10445","10446","10447","10448","10449","10450","10451","10452","10453","10454","10455","10456","10457","10458","10459","10460","10461","10462","10463","10464","10465","10466","10467","10468","10469","10470","10471","10472","10473","10474","10475","10476","10477","10478","10479","10480","10481","10482","10483","10484","10485","10486","10487","10488","10489","10490","10491","10492","10493","10494","10495","12289","12290","12300","12301","12443","12444","12449","12450","12451","12452","12453","12454","12455","12456","12457","12458","12459","12461","12463","12465","12467","12469","12471","12473","12475","12477","12479","12481","12483","12484","12486","12488","12490","12491","12492","12493","12494","12495","12498","12501","12504","12507","12510","12511","12512","12513","12514","12515","12516","12517","12518","12519","12520","12521","12522","12523","12524","12525","12527","12530","12531","12539","12540","fromUnicode","u","substituteCodepoint","cp","substitutions",536,537,538,539,"sub","isMac","exec","platform","isWindows","isLinux","charModifier","currentModifiers","mods","XK_Shift_L","hasCharModifier","ModifierSync","syncKey","ctrlKey","XK_Control_L","altKey","XK_Alt_L","altGraphKey","XK_ISO_Level3_Shift","shiftKey","metaKey","XK_Meta_L","syncKeyEvent","down","codepoint","charCode","keysymFromKeyCode","which","keycode","shiftPressed","XK_KP_0","XK_space","XK_KP_Multiply","XK_KP_Add","XK_KP_Separator","XK_KP_Subtract","XK_KP_Decimal","XK_KP_Divide","XK_plus","XK_comma","XK_minus","XK_period","XK_F1","XK_BackSpace","XK_Return","XK_Tab","XK_Escape","XK_Delete","XK_Home","XK_End","XK_Page_Up","XK_Page_Down","XK_Insert","XK_Left","XK_Up","XK_Right","XK_Down","XK_Super_L","XK_Super_R","XK_Menu","Keyboard","Mouse","_keyDownList","target","focused","_handler","_handleRfbEvent","_handleKeyUp","_handleKeyDown","_handleKeyPress","blur","_allKeysUp","_onKeyPress","_focused","grab","_target","ungrab","_mouseCaptured","_doubleClickTimer","_lastTouchPos","touchButton","mousedown","_handleMouseDown","mouseup","_handleMouseUp","mousemove","_handleMouseMove","mousewheel","_handleMouseWheel","mousedisable","_handleMouseDisable","_captureMouse","setCapture","_releaseMouse","releaseCapture","_resetDoubleClickTimer","_handleMouseButton","_notify","bmask","_scale","xs","ys","sqrt","devicePixelRatio","_touchButton","button","_onMouseButton","wheelData","detail","wheelDelta","_onMouseMove","offsetWidth","offsetHeight","Display","_drawCtx","_c_forceCanvas","_renderQ","_fb_width","_fb_height","_viewportLoc","w","h","_cleanRect","x1","y1","x2","y2","_prevDrawStyle","_tile","_tile16x16","_tile_x","_tile_y","true_color","colourMap","viewport","render_mode","getContext","clear","_render_mode","_prefer_js","curDat","curSave","style","cursor","changeCursor","_cursor_uri","viewportChange","deltaX","deltaY","vp","cr","canvas","_viewport","saveImg","img_width","img_height","getImageData","putImageData","vx2","vy2","saveStyle","fillStyle","drawImage","fillRect","getCleanDirtyReset","cleanBox","dirtyBoxes","absX","absY","resize","_rescale","_logo","blitStringImage","clearRect","color","_setFillColor","copyImage","old_x","old_y","new_x","new_y","startTile","createImageData","bgr","_true_color","_colourMap","red","green","blue","subTile","xend","yend","finishTile","blitImage","_bgrxImageData","_cmapImageData","blitRgbImage","_rgbImageData","img","Image","renderQ_push","action","_scan_renderQ","pixels","mask","hotx","hoty","defaultCursor","get_context","set_scale","set_width","get_width","set_height","get_height","factor","transform_prop","properties","newStyle","vx","vy","cmap","ready","complete","w0","h0","push16le","push32le","IHDRsz","RGBsz","XORsz","ANDsz","alpha","rgb","url","RFB","_rfb_host","_rfb_port","_rfb_password","_rfb_path","_rfb_state","_rfb_version","_rfb_max_version","_rfb_auth_scheme","_rfb_tightvnc","_rfb_xvp_ver","_encodings","_encHandlers","_encNames","_encStats","_sock","_display","_keyboard","_mouse","_sendTimer","_disconnTimer","_msgTimer","_FBU","rects","subrects","lines","tiles","bytes","encoding","subencoding","background","zlib","_fb_Bpp","_fb_depth","_fb_name","_rre_chunk_sz","_timing","last_fbu","fbu_total","fbu_total_cnt","full_fbu_total","full_fbu_cnt","fbu_rt_start","fbu_rt_total","fbu_rt_cnt","_mouse_buttonMask","_mouse_arr","_viewportDragging","_viewportDragPos","focusContainer","local_cursor","shared","view_only","xvp_password_sep","disconnectTimeout","wsProtocols","repeaterID","viewportDrag","onUpdateState","onPasswordRequired","onClipboard","onBell","onFBUReceive","onFBUComplete","onFBResize","onDesktopName","onXvpInit","encodingHandlers","forEach","encName","_updateState","_focusContainer","onKeyPress","onMouseButton","onMouseMove","notify","_handle_message","_fail","code","reason","failed","disconnected","_init_vars","rmode","get_render_mode","connect","host","port","password","path","disconnect","sendPassword","_init_msg","sendCtrlAltDel","_view_only","messages","keyEvent","xvpOp","ver","op","xvpShutdown","xvpReboot","xvpReset","sendKey","clipboardPasteFrom","clientCutText","_connect","UsingSocketIO","_encrypt","_wsProtocols","zlibs","_print_stats","statusMsg","oldstate","loaded","fatal","clearInterval","cmsg","_disconnectTimeout","_onUpdateState","_normal_msg","_checkEvents","_viewportDrag","pointerEvent","_negotiate_protocol_version","sversion","is_repeater","_repeaterID","setInterval","cversion","_negotiate_security","num_types","strlen","types","_negotiate_xvp_auth","xvp_sep","_xvp_password_sep","xvp_auth","_onPasswordRequired","xvp_auth_str","_negotiate_authentication","_negotiate_std_vnc_auth","challenge","response","genDES","_negotiate_tight_tunnels","numTunnels","clientSupportedTunnelTypes","vendor","signature","serverSupportedTunnelTypes","cap_code","cap_vendor","cap_signature","_negotiate_tight_auth","subAuthCount","clientSupportedTypes","STDVNOAUTH__","STDVVNCAUTH_","serverSupportedTypes","capabilities","authType","_handle_security_result","_negotiate_server_init","bpp","big_endian","red_max","green_max","blue_max","red_shift","green_shift","blue_shift","name_length","numServerMessages","numClientMessages","numEncodings","totalMessagesLength","_onDesktopName","set_true_color","_onFBResize","pixelFormat","clientEncodings","_local_cursor","fbUpdateRequests","_shared","_handle_set_colour_map_msg","first_colour","num_colours","set_colourMap","get_colourMap","_handle_server_cut_text","_onClipboard","_handle_xvp_msg","xvp_ver","xvp_msg","_onXvpInit","msg_type","_framebufferUpdate","_onBell","now","cur_fbu","hdr","_onFBUReceive","encodingName","fbu_rt_diff","_onFBUComplete","set_local_cursor","get_cursor_uri","get_display","get_keyboard","get_mouse","push8","push16","push32","encodings","encList","cleanDirty","fb_width","fb_height","cb","fbUpdateRequest","db","incremental","extract_data_uri","RAW","cur_y","curr_height","COPYRECT","RRE","chunk","HEXTILE","rQ","rQi","tiles_x","tiles_y","total_tiles","curr_tile","tile_x","tile_y","lastsubencoding","foreground","xy","sx","sy","wh","sw","sh","getTightCLength","display_tight","isTightPNG","cmode","clength","resetStreams","streamId","decompress","uncompressed","indexedToRGB","numColors","palette","dp","sp","w1","handlePalette","paletteSize","rowSize","raw","handleCopy","ctl","filterId","TIGHT","TIGHT_PNG","last_rect","DesktopSize","Cursor","pixelslength","masklength","JPEG_quality_lo","compress_lo","XK_VoidSymbol","XK_Linefeed","XK_Clear","XK_Pause","XK_Scroll_Lock","XK_Sys_Req","XK_Prior","XK_Next","XK_Begin","XK_Select","XK_Print","XK_Execute","XK_Undo","XK_Redo","XK_Find","XK_Cancel","XK_Help","XK_Break","XK_Mode_switch","XK_script_switch","XK_Num_Lock","XK_KP_Space","XK_KP_Tab","XK_KP_Enter","XK_KP_F1","XK_KP_F2","XK_KP_F3","XK_KP_F4","XK_KP_Home","XK_KP_Left","XK_KP_Up","XK_KP_Right","XK_KP_Down","XK_KP_Prior","XK_KP_Page_Up","XK_KP_Next","XK_KP_Page_Down","XK_KP_End","XK_KP_Begin","XK_KP_Insert","XK_KP_Delete","XK_KP_Equal","XK_KP_1","XK_KP_2","XK_KP_3","XK_KP_4","XK_KP_5","XK_KP_6","XK_KP_7","XK_KP_8","XK_KP_9","XK_F2","XK_F3","XK_F4","XK_F5","XK_F6","XK_F7","XK_F8","XK_F9","XK_F10","XK_F11","XK_L1","XK_F12","XK_L2","XK_F13","XK_L3","XK_F14","XK_L4","XK_F15","XK_L5","XK_F16","XK_L6","XK_F17","XK_L7","XK_F18","XK_L8","XK_F19","XK_L9","XK_F20","XK_L10","XK_F21","XK_R1","XK_F22","XK_R2","XK_F23","XK_R3","XK_F24","XK_R4","XK_F25","XK_R5","XK_F26","XK_R6","XK_F27","XK_R7","XK_F28","XK_R8","XK_F29","XK_R9","XK_F30","XK_R10","XK_F31","XK_R11","XK_F32","XK_R12","XK_F33","XK_R13","XK_F34","XK_R14","XK_F35","XK_R15","XK_Shift_R","XK_Control_R","XK_Caps_Lock","XK_Shift_Lock","XK_Meta_R","XK_Alt_R","XK_Hyper_L","XK_Hyper_R","XK_exclam","XK_quotedbl","XK_numbersign","XK_dollar","XK_percent","XK_ampersand","XK_apostrophe","XK_quoteright","XK_parenleft","XK_parenright","XK_asterisk","XK_slash","XK_0","XK_1","XK_2","XK_3","XK_4","XK_5","XK_6","XK_7","XK_8","XK_9","XK_colon","XK_semicolon","XK_less","XK_equal","XK_greater","XK_question","XK_at","XK_A","XK_B","XK_C","XK_D","XK_E","XK_F","XK_G","XK_H","XK_I","XK_J","XK_K","XK_L","XK_M","XK_N","XK_O","XK_P","XK_Q","XK_R","XK_S","XK_T","XK_U","XK_V","XK_W","XK_X","XK_Y","XK_Z","XK_bracketleft","XK_backslash","XK_bracketright","XK_asciicircum","XK_underscore","XK_grave","XK_quoteleft","XK_a","XK_b","XK_c","XK_d","XK_e","XK_f","XK_g","XK_h","XK_i","XK_j","XK_k","XK_l","XK_m","XK_n","XK_o","XK_p","XK_q","XK_r","XK_s","XK_t","XK_u","XK_v","XK_w","XK_x","XK_y","XK_z","XK_braceleft","XK_bar","XK_braceright","XK_asciitilde","XK_nobreakspace","XK_exclamdown","XK_cent","XK_sterling","XK_currency","XK_yen","XK_brokenbar","XK_section","XK_diaeresis","XK_copyright","XK_ordfeminine","XK_guillemotleft","XK_notsign","XK_hyphen","XK_registered","XK_macron","XK_degree","XK_plusminus","XK_twosuperior","XK_threesuperior","XK_acute","XK_mu","XK_paragraph","XK_periodcentered","XK_cedilla","XK_onesuperior","XK_masculine","XK_guillemotright","XK_onequarter","XK_onehalf","XK_threequarters","XK_questiondown","XK_Agrave","XK_Aacute","XK_Acircumflex","XK_Atilde","XK_Adiaeresis","XK_Aring","XK_AE","XK_Ccedilla","XK_Egrave","XK_Eacute","XK_Ecircumflex","XK_Ediaeresis","XK_Igrave","XK_Iacute","XK_Icircumflex","XK_Idiaeresis","XK_ETH","XK_Eth","XK_Ntilde","XK_Ograve","XK_Oacute","XK_Ocircumflex","XK_Otilde","XK_Odiaeresis","XK_multiply","XK_Oslash","XK_Ooblique","XK_Ugrave","XK_Uacute","XK_Ucircumflex","XK_Udiaeresis","XK_Yacute","XK_THORN","XK_Thorn","XK_ssharp","XK_agrave","XK_aacute","XK_acircumflex","XK_atilde","XK_adiaeresis","XK_aring","XK_ae","XK_ccedilla","XK_egrave","XK_eacute","XK_ecircumflex","XK_ediaeresis","XK_igrave","XK_iacute","XK_icircumflex","XK_idiaeresis","XK_eth","XK_ntilde","XK_ograve","XK_oacute","XK_ocircumflex","XK_otilde","XK_odiaeresis","XK_division","XK_oslash","XK_ooblique","XK_ugrave","XK_uacute","XK_ucircumflex","XK_udiaeresis","XK_yacute","XK_thorn","XK_ydiaeresis","passwordRequired","setAttribute","innerHTML","rfb","updateState","sb","cad","xvpInit","xvpbuttons","display","token","onclick","unescape","hostname"],"mappings":"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,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,GAAA,GAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,SAAAC,IAAA,KAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,SAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,QAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,SAAAC,KAAA,SAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,KAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,SAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MAAA,KAAAC,MA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","sourcesContent":["/*\n * Websock: high-performance binary WebSockets\n * Copyright (C) 2012 Joel Martin\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * Websock is similar to the standard WebSocket object but Websock\n * enables communication with raw TCP sockets (i.e. the binary stream)\n * via websockify. This is accomplished by base64 encoding the data\n * stream between Websock and websockify.\n *\n * Websock has built-in receive queue buffering; the message event\n * does not contain actual data but is simply a notification that\n * there is new data available. Several rQ* methods are available to\n * read binary data off of the receive queue.\n */\n\n/*jslint browser: true, bitwise: true */\n/*global Util, Base64 */\n\n\n// Load Flash WebSocket emulator if needed\n\n// To force WebSocket emulator even when native WebSocket available\n//window.WEB_SOCKET_FORCE_FLASH = true;\n// To enable WebSocket emulator debug:\n//window.WEB_SOCKET_DEBUG=1;\n\nif (window.WebSocket && !window.WEB_SOCKET_FORCE_FLASH) {\n Websock_native = true;\n} else if (window.MozWebSocket && !window.WEB_SOCKET_FORCE_FLASH) {\n Websock_native = true;\n window.WebSocket = window.MozWebSocket;\n} else {\n /* no builtin WebSocket so load web_socket.js */\n\n Websock_native = false;\n (function () {\n window.WEB_SOCKET_SWF_LOCATION = Util.get_include_uri() +\n \"web-socket-js/WebSocketMain.swf\";\n if (Util.Engine.trident) {\n Util.Debug(\"Forcing uncached load of WebSocketMain.swf\");\n window.WEB_SOCKET_SWF_LOCATION += \"?\" + Math.random();\n }\n Util.load_scripts([\"web-socket-js/swfobject.js\",\n \"web-socket-js/web_socket.js\"]);\n })();\n}\n\n\nfunction Websock() {\n \"use strict\";\n\n this._websocket = null; // WebSocket object\n this._rQ = []; // Receive queue\n this._rQi = 0; // Receive queue index\n this._rQmax = 10000; // Max receive queue size before compacting\n this._sQ = []; // Send queue\n\n this._mode = 'base64'; // Current WebSocket mode: 'binary', 'base64'\n this.maxBufferedAmount = 200;\n\n this._eventHandlers = {\n 'message': function () {},\n 'open': function () {},\n 'close': function () {},\n 'error': function () {}\n };\n}\n\n(function () {\n \"use strict\";\n Websock.prototype = {\n // Getters and Setters\n get_sQ: function () {\n return this._sQ;\n },\n\n get_rQ: function () {\n return this._rQ;\n },\n\n get_rQi: function () {\n return this._rQi;\n },\n\n set_rQi: function (val) {\n this._rQi = val;\n },\n\n // Receive Queue\n rQlen: function () {\n return this._rQ.length - this._rQi;\n },\n\n rQpeek8: function () {\n return this._rQ[this._rQi];\n },\n\n rQshift8: function () {\n return this._rQ[this._rQi++];\n },\n\n rQskip8: function () {\n this._rQi++;\n },\n\n rQskipBytes: function (num) {\n this._rQi += num;\n },\n\n rQunshift8: function (num) {\n if (this._rQi === 0) {\n this._rQ.unshift(num);\n } else {\n this._rQi--;\n this._rQ[this._rQi] = num;\n }\n },\n\n rQshift16: function () {\n return (this._rQ[this._rQi++] << 8) +\n this._rQ[this._rQi++];\n },\n\n rQshift32: function () {\n return (this._rQ[this._rQi++] << 24) +\n (this._rQ[this._rQi++] << 16) +\n (this._rQ[this._rQi++] << 8) +\n this._rQ[this._rQi++];\n },\n\n rQshiftStr: function (len) {\n if (typeof(len) === 'undefined') { len = this.rQlen(); }\n var arr = this._rQ.slice(this._rQi, this._rQi + len);\n this._rQi += len;\n return String.fromCharCode.apply(null, arr);\n },\n\n rQshiftBytes: function (len) {\n if (typeof(len) === 'undefined') { len = this.rQlen(); }\n this._rQi += len;\n return this._rQ.slice(this._rQi - len, this._rQi);\n },\n\n rQslice: function (start, end) {\n if (end) {\n return this._rQ.slice(this._rQi + start, this._rQi + end);\n } else {\n return this._rQ.slice(this._rQi + start);\n }\n },\n\n // Check to see if we must wait for 'num' bytes (default to FBU.bytes)\n // to be available in the receive queue. Return true if we need to\n // wait (and possibly print a debug message), otherwise false.\n rQwait: function (msg, num, goback) {\n var rQlen = this._rQ.length - this._rQi; // Skip rQlen() function call\n if (rQlen < num) {\n if (goback) {\n if (this._rQi < goback) {\n throw new Error(\"rQwait cannot backup \" + goback + \" bytes\");\n }\n this._rQi -= goback;\n }\n return true; // true means need more data\n }\n return false;\n },\n\n // Send Queue\n\n flush: function () {\n if (this._websocket.bufferedAmount !== 0) {\n Util.Debug(\"bufferedAmount: \" + this._websocket.bufferedAmount);\n }\n\n if (this._websocket.bufferedAmount < this.maxBufferedAmount) {\n if (this._sQ.length > 0) {\n this._websocket.send(this._encode_message());\n this._sQ = [];\n }\n\n return true;\n } else {\n Util.Info(\"Delaying send, bufferedAmount: \" +\n this._websocket.bufferedAmount);\n return false;\n }\n },\n\n send: function (arr) {\n this._sQ = this._sQ.concat(arr);\n return this.flush();\n },\n\n send_string: function (str) {\n this.send(str.split('').map(function (chr) {\n return chr.charCodeAt(0);\n }));\n },\n\n // Event Handlers\n on: function (evt, handler) {\n this._eventHandlers[evt] = handler;\n },\n\n init: function (protocols, ws_schema) {\n this._rQ = [];\n this._rQi = 0;\n this._sQ = [];\n this._websocket = null;\n\n // Check for full typed array support\n var bt = false;\n if (('Uint8Array' in window) &&\n ('set' in Uint8Array.prototype)) {\n bt = true;\n }\n\n // Check for full binary type support in WebSockets\n // Inspired by:\n // https://github.com/Modernizr/Modernizr/issues/370\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/websockets/binary.js\n var wsbt = false;\n try {\n if (bt && ('binaryType' in WebSocket.prototype ||\n !!(new WebSocket(ws_schema + '://.').binaryType))) {\n Util.Info(\"Detected binaryType support in WebSockets\");\n wsbt = true;\n }\n } catch (exc) {\n // Just ignore failed test localhost connection\n }\n\n // Default protocols if not specified\n if (typeof(protocols) === \"undefined\") {\n if (wsbt) {\n protocols = ['binary', 'base64'];\n } else {\n protocols = 'base64';\n }\n }\n\n if (!wsbt) {\n if (protocols === 'binary') {\n throw new Error('WebSocket binary sub-protocol requested but not supported');\n }\n\n if (typeof(protocols) === 'object') {\n var new_protocols = [];\n\n for (var i = 0; i < protocols.length; i++) {\n if (protocols[i] === 'binary') {\n Util.Error('Skipping unsupported WebSocket binary sub-protocol');\n } else {\n new_protocols.push(protocols[i]);\n }\n }\n\n if (new_protocols.length > 0) {\n protocols = new_protocols;\n } else {\n throw new Error(\"Only WebSocket binary sub-protocol was requested and is not supported.\");\n }\n }\n }\n\n return protocols;\n },\n\n open: function (uri, protocols) {\n var ws_schema = uri.match(/^([a-z]+):\\/\\//)[1];\n protocols = this.init(protocols, ws_schema);\n\n this._websocket = new WebSocket(uri, protocols);\n\n if (protocols.indexOf('binary') >= 0) {\n this._websocket.binaryType = 'arraybuffer';\n }\n\n this._websocket.onmessage = this._recv_message.bind(this);\n this._websocket.onopen = (function () {\n Util.Debug('>> WebSock.onopen');\n if (this._websocket.protocol) {\n this._mode = this._websocket.protocol;\n Util.Info(\"Server choose sub-protocol: \" + this._websocket.protocol);\n } else {\n this._mode = 'base64';\n Util.Error('Server select no sub-protocol!: ' + this._websocket.protocol);\n }\n this._eventHandlers.open();\n Util.Debug(\"<< WebSock.onopen\");\n }).bind(this);\n this._websocket.onclose = (function (e) {\n Util.Debug(\">> WebSock.onclose\");\n this._eventHandlers.close(e);\n Util.Debug(\"<< WebSock.onclose\");\n }).bind(this);\n this._websocket.onerror = (function (e) {\n Util.Debug(\">> WebSock.onerror: \" + e);\n this._eventHandlers.error(e);\n Util.Debug(\"<< WebSock.onerror: \" + e);\n }).bind(this);\n },\n\n close: function () {\n if (this._websocket) {\n if ((this._websocket.readyState === WebSocket.OPEN) ||\n (this._websocket.readyState === WebSocket.CONNECTING)) {\n Util.Info(\"Closing WebSocket connection\");\n this._websocket.close();\n }\n\n this._websocket.onmessage = function (e) { return; };\n }\n },\n\n // private methods\n _encode_message: function () {\n if (this._mode === 'binary') {\n // Put in a binary arraybuffer\n return (new Uint8Array(this._sQ)).buffer;\n } else {\n // base64 encode\n return Base64.encode(this._sQ);\n }\n },\n\n _decode_message: function (data) {\n if (this._mode === 'binary') {\n // push arraybuffer values onto the end\n var u8 = new Uint8Array(data);\n for (var i = 0; i < u8.length; i++) {\n this._rQ.push(u8[i]);\n }\n } else {\n // base64 decode and concat to end\n this._rQ = this._rQ.concat(Base64.decode(data, 0));\n }\n },\n\n _recv_message: function (e) {\n try {\n this._decode_message(e.data);\n if (this.rQlen() > 0) {\n this._eventHandlers.message();\n // Compact the receive queue\n if (this._rQ.length > this._rQmax) {\n this._rQ = this._rQ.slice(this._rQi);\n this._rQi = 0;\n }\n } else {\n Util.Debug(\"Ignoring empty message\");\n }\n } catch (exc) {\n var exception_str = \"\";\n if (exc.name) {\n exception_str += \"\\n name: \" + exc.name + \"\\n\";\n exception_str += \" message: \" + exc.message + \"\\n\";\n }\n\n if (typeof exc.description !== 'undefined') {\n exception_str += \" description: \" + exc.description + \"\\n\";\n }\n\n if (typeof exc.stack !== 'undefined') {\n exception_str += exc.stack;\n }\n\n if (exception_str.length > 0) {\n Util.Error(\"recv_message, caught exception: \" + exception_str);\n } else {\n Util.Error(\"recv_message, caught exception: \" + exc);\n }\n\n if (typeof exc.name !== 'undefined') {\n this._eventHandlers.error(exc.name + \": \" + exc.message);\n } else {\n this._eventHandlers.error(exc);\n }\n }\n }\n };\n})();\n\ndefine(\"vnc-websock\", [\"vnc-util\"], function(){});\n\n","/*\n * Ported from Flashlight VNC ActionScript implementation:\n * http://www.wizhelp.com/flashlight-vnc/\n *\n * Full attribution follows:\n *\n * -------------------------------------------------------------------------\n *\n * This DES class has been extracted from package Acme.Crypto for use in VNC.\n * The unnecessary odd parity code has been removed.\n *\n * These changes are:\n * Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n *\n\n * DesCipher - the DES encryption method\n *\n * The meat of this code is by Dave Zimmerman , and is:\n *\n * Copyright (c) 1996 Widget Workshop, Inc. All Rights Reserved.\n *\n * Permission to use, copy, modify, and distribute this software\n * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and\n * without fee is hereby granted, provided that this copyright notice is kept \n * intact. \n * \n * WIDGET WORKSHOP MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY\n * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED\n * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. WIDGET WORKSHOP SHALL NOT BE LIABLE\n * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR\n * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.\n * \n * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE\n * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE\n * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT\n * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE\n * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE\n * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE\n * PHYSICAL OR ENVIRONMENTAL DAMAGE (\"HIGH RISK ACTIVITIES\"). WIDGET WORKSHOP\n * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR\n * HIGH RISK ACTIVITIES.\n *\n *\n * The rest is:\n *\n * Copyright (C) 1996 by Jef Poskanzer . All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * Visit the ACME Labs Java page for up-to-date versions of this and other\n * fine Java utilities: http://www.acme.com/java/\n */\n\n/* jslint white: false */\n\nfunction DES(passwd) {\n \"use strict\";\n\n // Tables, permutations, S-boxes, etc.\n // jshint -W013\n var PC2 = [13,16,10,23, 0, 4, 2,27,14, 5,20, 9,22,18,11, 3,\n 25, 7,15, 6,26,19,12, 1,40,51,30,36,46,54,29,39,\n 50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31 ],\n totrot = [ 1, 2, 4, 6, 8,10,12,14,15,17,19,21,23,25,27,28],\n z = 0x0, a,b,c,d,e,f, SP1,SP2,SP3,SP4,SP5,SP6,SP7,SP8,\n keys = [];\n\n // jshint -W015\n a=1<<16; b=1<<24; c=a|b; d=1<<2; e=1<<10; f=d|e;\n SP1 = [c|e,z|z,a|z,c|f,c|d,a|f,z|d,a|z,z|e,c|e,c|f,z|e,b|f,c|d,b|z,z|d,\n z|f,b|e,b|e,a|e,a|e,c|z,c|z,b|f,a|d,b|d,b|d,a|d,z|z,z|f,a|f,b|z,\n a|z,c|f,z|d,c|z,c|e,b|z,b|z,z|e,c|d,a|z,a|e,b|d,z|e,z|d,b|f,a|f,\n c|f,a|d,c|z,b|f,b|d,z|f,a|f,c|e,z|f,b|e,b|e,z|z,a|d,a|e,z|z,c|d];\n a=1<<20; b=1<<31; c=a|b; d=1<<5; e=1<<15; f=d|e;\n SP2 = [c|f,b|e,z|e,a|f,a|z,z|d,c|d,b|f,b|d,c|f,c|e,b|z,b|e,a|z,z|d,c|d,\n a|e,a|d,b|f,z|z,b|z,z|e,a|f,c|z,a|d,b|d,z|z,a|e,z|f,c|e,c|z,z|f,\n z|z,a|f,c|d,a|z,b|f,c|z,c|e,z|e,c|z,b|e,z|d,c|f,a|f,z|d,z|e,b|z,\n z|f,c|e,a|z,b|d,a|d,b|f,b|d,a|d,a|e,z|z,b|e,z|f,b|z,c|d,c|f,a|e];\n a=1<<17; b=1<<27; c=a|b; d=1<<3; e=1<<9; f=d|e;\n SP3 = [z|f,c|e,z|z,c|d,b|e,z|z,a|f,b|e,a|d,b|d,b|d,a|z,c|f,a|d,c|z,z|f,\n b|z,z|d,c|e,z|e,a|e,c|z,c|d,a|f,b|f,a|e,a|z,b|f,z|d,c|f,z|e,b|z,\n c|e,b|z,a|d,z|f,a|z,c|e,b|e,z|z,z|e,a|d,c|f,b|e,b|d,z|e,z|z,c|d,\n b|f,a|z,b|z,c|f,z|d,a|f,a|e,b|d,c|z,b|f,z|f,c|z,a|f,z|d,c|d,a|e];\n a=1<<13; b=1<<23; c=a|b; d=1<<0; e=1<<7; f=d|e;\n SP4 = [c|d,a|f,a|f,z|e,c|e,b|f,b|d,a|d,z|z,c|z,c|z,c|f,z|f,z|z,b|e,b|d,\n z|d,a|z,b|z,c|d,z|e,b|z,a|d,a|e,b|f,z|d,a|e,b|e,a|z,c|e,c|f,z|f,\n b|e,b|d,c|z,c|f,z|f,z|z,z|z,c|z,a|e,b|e,b|f,z|d,c|d,a|f,a|f,z|e,\n c|f,z|f,z|d,a|z,b|d,a|d,c|e,b|f,a|d,a|e,b|z,c|d,z|e,b|z,a|z,c|e];\n a=1<<25; b=1<<30; c=a|b; d=1<<8; e=1<<19; f=d|e;\n SP5 = [z|d,a|f,a|e,c|d,z|e,z|d,b|z,a|e,b|f,z|e,a|d,b|f,c|d,c|e,z|f,b|z,\n a|z,b|e,b|e,z|z,b|d,c|f,c|f,a|d,c|e,b|d,z|z,c|z,a|f,a|z,c|z,z|f,\n z|e,c|d,z|d,a|z,b|z,a|e,c|d,b|f,a|d,b|z,c|e,a|f,b|f,z|d,a|z,c|e,\n c|f,z|f,c|z,c|f,a|e,z|z,b|e,c|z,z|f,a|d,b|d,z|e,z|z,b|e,a|f,b|d];\n a=1<<22; b=1<<29; c=a|b; d=1<<4; e=1<<14; f=d|e;\n SP6 = [b|d,c|z,z|e,c|f,c|z,z|d,c|f,a|z,b|e,a|f,a|z,b|d,a|d,b|e,b|z,z|f,\n z|z,a|d,b|f,z|e,a|e,b|f,z|d,c|d,c|d,z|z,a|f,c|e,z|f,a|e,c|e,b|z,\n b|e,z|d,c|d,a|e,c|f,a|z,z|f,b|d,a|z,b|e,b|z,z|f,b|d,c|f,a|e,c|z,\n a|f,c|e,z|z,c|d,z|d,z|e,c|z,a|f,z|e,a|d,b|f,z|z,c|e,b|z,a|d,b|f];\n a=1<<21; b=1<<26; c=a|b; d=1<<1; e=1<<11; f=d|e;\n SP7 = [a|z,c|d,b|f,z|z,z|e,b|f,a|f,c|e,c|f,a|z,z|z,b|d,z|d,b|z,c|d,z|f,\n b|e,a|f,a|d,b|e,b|d,c|z,c|e,a|d,c|z,z|e,z|f,c|f,a|e,z|d,b|z,a|e,\n b|z,a|e,a|z,b|f,b|f,c|d,c|d,z|d,a|d,b|z,b|e,a|z,c|e,z|f,a|f,c|e,\n z|f,b|d,c|f,c|z,a|e,z|z,z|d,c|f,z|z,a|f,c|z,z|e,b|d,b|e,z|e,a|d];\n a=1<<18; b=1<<28; c=a|b; d=1<<6; e=1<<12; f=d|e;\n SP8 = [b|f,z|e,a|z,c|f,b|z,b|f,z|d,b|z,a|d,c|z,c|f,a|e,c|e,a|f,z|e,z|d,\n c|z,b|d,b|e,z|f,a|e,a|d,c|d,c|e,z|f,z|z,z|z,c|d,b|d,b|e,a|f,a|z,\n a|f,a|z,c|e,z|e,z|d,c|d,z|e,a|f,b|e,z|d,b|d,c|z,c|d,b|z,a|z,b|f,\n z|z,c|f,a|d,b|d,c|z,b|e,b|f,z|z,c|f,a|e,a|e,z|f,z|f,a|d,b|z,c|e];\n // jshint +W013,+W015\n\n // Set the key.\n function setKeys(keyBlock) {\n var i, j, l, m, n, o, pc1m = [], pcr = [], kn = [],\n raw0, raw1, rawi, KnLi;\n\n for (j = 0, l = 56; j < 56; ++j, l -= 8) {\n l += l < -5 ? 65 : l < -3 ? 31 : l < -1 ? 63 : l === 27 ? 35 : 0; // PC1\n m = l & 0x7;\n pc1m[j] = ((keyBlock[l >>> 3] & (1<>> 10;\n keys[KnLi] |= (raw1 & 0x00000fc0) >>> 6;\n ++KnLi;\n keys[KnLi] = (raw0 & 0x0003f000) << 12;\n keys[KnLi] |= (raw0 & 0x0000003f) << 16;\n keys[KnLi] |= (raw1 & 0x0003f000) >>> 4;\n keys[KnLi] |= (raw1 & 0x0000003f);\n ++KnLi;\n }\n }\n\n // Encrypt 8 bytes of text\n function enc8(text) {\n var i = 0, b = text.slice(), fval, keysi = 0,\n l, r, x; // left, right, accumulator\n\n // Squash 8 bytes to 2 ints\n l = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++];\n r = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++];\n\n x = ((l >>> 4) ^ r) & 0x0f0f0f0f;\n r ^= x;\n l ^= (x << 4);\n x = ((l >>> 16) ^ r) & 0x0000ffff;\n r ^= x;\n l ^= (x << 16);\n x = ((r >>> 2) ^ l) & 0x33333333;\n l ^= x;\n r ^= (x << 2);\n x = ((r >>> 8) ^ l) & 0x00ff00ff;\n l ^= x;\n r ^= (x << 8);\n r = (r << 1) | ((r >>> 31) & 1);\n x = (l ^ r) & 0xaaaaaaaa;\n l ^= x;\n r ^= x;\n l = (l << 1) | ((l >>> 31) & 1);\n\n for (i = 0; i < 8; ++i) {\n x = (r << 28) | (r >>> 4);\n x ^= keys[keysi++];\n fval = SP7[x & 0x3f];\n fval |= SP5[(x >>> 8) & 0x3f];\n fval |= SP3[(x >>> 16) & 0x3f];\n fval |= SP1[(x >>> 24) & 0x3f];\n x = r ^ keys[keysi++];\n fval |= SP8[x & 0x3f];\n fval |= SP6[(x >>> 8) & 0x3f];\n fval |= SP4[(x >>> 16) & 0x3f];\n fval |= SP2[(x >>> 24) & 0x3f];\n l ^= fval;\n x = (l << 28) | (l >>> 4);\n x ^= keys[keysi++];\n fval = SP7[x & 0x3f];\n fval |= SP5[(x >>> 8) & 0x3f];\n fval |= SP3[(x >>> 16) & 0x3f];\n fval |= SP1[(x >>> 24) & 0x3f];\n x = l ^ keys[keysi++];\n fval |= SP8[x & 0x0000003f];\n fval |= SP6[(x >>> 8) & 0x3f];\n fval |= SP4[(x >>> 16) & 0x3f];\n fval |= SP2[(x >>> 24) & 0x3f];\n r ^= fval;\n }\n\n r = (r << 31) | (r >>> 1);\n x = (l ^ r) & 0xaaaaaaaa;\n l ^= x;\n r ^= x;\n l = (l << 31) | (l >>> 1);\n x = ((l >>> 8) ^ r) & 0x00ff00ff;\n r ^= x;\n l ^= (x << 8);\n x = ((l >>> 2) ^ r) & 0x33333333;\n r ^= x;\n l ^= (x << 2);\n x = ((r >>> 16) ^ l) & 0x0000ffff;\n l ^= x;\n r ^= (x << 16);\n x = ((r >>> 4) ^ l) & 0x0f0f0f0f;\n l ^= x;\n r ^= (x << 4);\n\n // Spread ints to bytes\n x = [r, l];\n for (i = 0; i < 8; i++) {\n b[i] = (x[i>>>2] >>> (8 * (3 - (i % 4)))) % 256;\n if (b[i] < 0) { b[i] += 256; } // unsigned\n }\n return b;\n }\n\n // Encrypt 16 bytes of text using passwd as key\n function encrypt(t) {\n return enc8(t.slice(0, 8)).concat(enc8(t.slice(8, 16)));\n }\n\n setKeys(passwd); // Setup keys\n return {'encrypt': encrypt}; // Public interface\n\n} // function DES\n;\ndefine(\"vnc-des\", [\"vnc-util\"], function(){});\n\n","var kbdUtil = (function() {\n \"use strict\";\n\n function substituteCodepoint(cp) {\n // Any Unicode code points which do not have corresponding keysym entries\n // can be swapped out for another code point by adding them to this table\n var substitutions = {\n // {S,s} with comma below -> {S,s} with cedilla\n 0x218 : 0x15e,\n 0x219 : 0x15f,\n // {T,t} with comma below -> {T,t} with cedilla\n 0x21a : 0x162,\n 0x21b : 0x163\n };\n\n var sub = substitutions[cp];\n return sub ? sub : cp;\n }\n\n function isMac() {\n return navigator && !!(/mac/i).exec(navigator.platform);\n }\n function isWindows() {\n return navigator && !!(/win/i).exec(navigator.platform);\n }\n function isLinux() {\n return navigator && !!(/linux/i).exec(navigator.platform);\n }\n\n // Return true if a modifier which is not the specified char modifier (and is not shift) is down\n function hasShortcutModifier(charModifier, currentModifiers) {\n var mods = {};\n for (var key in currentModifiers) {\n if (parseInt(key) !== XK_Shift_L) {\n mods[key] = currentModifiers[key];\n }\n }\n\n var sum = 0;\n for (var k in currentModifiers) {\n if (mods[k]) {\n ++sum;\n }\n }\n if (hasCharModifier(charModifier, mods)) {\n return sum > charModifier.length;\n }\n else {\n return sum > 0;\n }\n }\n\n // Return true if the specified char modifier is currently down\n function hasCharModifier(charModifier, currentModifiers) {\n if (charModifier.length === 0) { return false; }\n\n for (var i = 0; i < charModifier.length; ++i) {\n if (!currentModifiers[charModifier[i]]) {\n return false;\n }\n }\n return true;\n }\n\n // Helper object tracking modifier key state\n // and generates fake key events to compensate if it gets out of sync\n function ModifierSync(charModifier) {\n if (!charModifier) {\n if (isMac()) {\n // on Mac, Option (AKA Alt) is used as a char modifier\n charModifier = [XK_Alt_L];\n }\n else if (isWindows()) {\n // on Windows, Ctrl+Alt is used as a char modifier\n charModifier = [XK_Alt_L, XK_Control_L];\n }\n else if (isLinux()) {\n // on Linux, ISO Level 3 Shift (AltGr) is used as a char modifier\n charModifier = [XK_ISO_Level3_Shift];\n }\n else {\n charModifier = [];\n }\n }\n\n var state = {};\n state[XK_Control_L] = false;\n state[XK_Alt_L] = false;\n state[XK_ISO_Level3_Shift] = false;\n state[XK_Shift_L] = false;\n state[XK_Meta_L] = false;\n\n function sync(evt, keysym) {\n var result = [];\n function syncKey(keysym) {\n return {keysym: keysyms.lookup(keysym), type: state[keysym] ? 'keydown' : 'keyup'};\n }\n\n if (evt.ctrlKey !== undefined &&\n evt.ctrlKey !== state[XK_Control_L] && keysym !== XK_Control_L) {\n state[XK_Control_L] = evt.ctrlKey;\n result.push(syncKey(XK_Control_L));\n }\n if (evt.altKey !== undefined &&\n evt.altKey !== state[XK_Alt_L] && keysym !== XK_Alt_L) {\n state[XK_Alt_L] = evt.altKey;\n result.push(syncKey(XK_Alt_L));\n }\n if (evt.altGraphKey !== undefined &&\n evt.altGraphKey !== state[XK_ISO_Level3_Shift] && keysym !== XK_ISO_Level3_Shift) {\n state[XK_ISO_Level3_Shift] = evt.altGraphKey;\n result.push(syncKey(XK_ISO_Level3_Shift));\n }\n if (evt.shiftKey !== undefined &&\n evt.shiftKey !== state[XK_Shift_L] && keysym !== XK_Shift_L) {\n state[XK_Shift_L] = evt.shiftKey;\n result.push(syncKey(XK_Shift_L));\n }\n if (evt.metaKey !== undefined &&\n evt.metaKey !== state[XK_Meta_L] && keysym !== XK_Meta_L) {\n state[XK_Meta_L] = evt.metaKey;\n result.push(syncKey(XK_Meta_L));\n }\n return result;\n }\n function syncKeyEvent(evt, down) {\n var obj = getKeysym(evt);\n var keysym = obj ? obj.keysym : null;\n\n // first, apply the event itself, if relevant\n if (keysym !== null && state[keysym] !== undefined) {\n state[keysym] = down;\n }\n return sync(evt, keysym);\n }\n\n return {\n // sync on the appropriate keyboard event\n keydown: function(evt) { return syncKeyEvent(evt, true);},\n keyup: function(evt) { return syncKeyEvent(evt, false);},\n // Call this with a non-keyboard event (such as mouse events) to use its modifier state to synchronize anyway\n syncAny: function(evt) { return sync(evt);},\n\n // is a shortcut modifier down?\n hasShortcutModifier: function() { return hasShortcutModifier(charModifier, state); },\n // if a char modifier is down, return the keys it consists of, otherwise return null\n activeCharModifier: function() { return hasCharModifier(charModifier, state) ? charModifier : null; }\n };\n }\n\n // Get a key ID from a keyboard event\n // May be a string or an integer depending on the available properties\n function getKey(evt){\n if ('keyCode' in evt && 'key' in evt) {\n return evt.key + ':' + evt.keyCode;\n }\n else if ('keyCode' in evt) {\n return evt.keyCode;\n }\n else {\n return evt.key;\n }\n }\n\n // Get the most reliable keysym value we can get from a key event\n // if char/charCode is available, prefer those, otherwise fall back to key/keyCode/which\n function getKeysym(evt){\n var codepoint;\n if (evt.char && evt.char.length === 1) {\n codepoint = evt.char.charCodeAt();\n }\n else if (evt.charCode) {\n codepoint = evt.charCode;\n }\n else if (evt.keyCode && evt.type === 'keypress') {\n // IE10 stores the char code as keyCode, and has no other useful properties\n codepoint = evt.keyCode;\n }\n if (codepoint) {\n var res = keysyms.fromUnicode(substituteCodepoint(codepoint));\n if (res) {\n return res;\n }\n }\n // we could check evt.key here.\n // Legal values are defined in http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list,\n // so we \"just\" need to map them to keysym, but AFAIK this is only available in IE10, which also provides evt.key\n // so we don't *need* it yet\n if (evt.keyCode) {\n return keysyms.lookup(keysymFromKeyCode(evt.keyCode, evt.shiftKey));\n }\n if (evt.which) {\n return keysyms.lookup(keysymFromKeyCode(evt.which, evt.shiftKey));\n }\n return null;\n }\n\n // Given a keycode, try to predict which keysym it might be.\n // If the keycode is unknown, null is returned.\n function keysymFromKeyCode(keycode, shiftPressed) {\n if (typeof(keycode) !== 'number') {\n return null;\n }\n // won't be accurate for azerty\n if (keycode >= 0x30 && keycode <= 0x39) {\n return keycode; // digit\n }\n if (keycode >= 0x41 && keycode <= 0x5a) {\n // remap to lowercase unless shift is down\n return shiftPressed ? keycode : keycode + 32; // A-Z\n }\n if (keycode >= 0x60 && keycode <= 0x69) {\n return XK_KP_0 + (keycode - 0x60); // numpad 0-9\n }\n\n switch(keycode) {\n case 0x20: return XK_space;\n case 0x6a: return XK_KP_Multiply;\n case 0x6b: return XK_KP_Add;\n case 0x6c: return XK_KP_Separator;\n case 0x6d: return XK_KP_Subtract;\n case 0x6e: return XK_KP_Decimal;\n case 0x6f: return XK_KP_Divide;\n case 0xbb: return XK_plus;\n case 0xbc: return XK_comma;\n case 0xbd: return XK_minus;\n case 0xbe: return XK_period;\n }\n\n return nonCharacterKey({keyCode: keycode});\n }\n\n // if the key is a known non-character key (any key which doesn't generate character data)\n // return its keysym value. Otherwise return null\n function nonCharacterKey(evt) {\n // evt.key not implemented yet\n if (!evt.keyCode) { return null; }\n var keycode = evt.keyCode;\n\n if (keycode >= 0x70 && keycode <= 0x87) {\n return XK_F1 + keycode - 0x70; // F1-F24\n }\n switch (keycode) {\n\n case 8 : return XK_BackSpace;\n case 13 : return XK_Return;\n\n case 9 : return XK_Tab;\n\n case 27 : return XK_Escape;\n case 46 : return XK_Delete;\n\n case 36 : return XK_Home;\n case 35 : return XK_End;\n case 33 : return XK_Page_Up;\n case 34 : return XK_Page_Down;\n case 45 : return XK_Insert;\n\n case 37 : return XK_Left;\n case 38 : return XK_Up;\n case 39 : return XK_Right;\n case 40 : return XK_Down;\n\n case 16 : return XK_Shift_L;\n case 17 : return XK_Control_L;\n case 18 : return XK_Alt_L; // also: Option-key on Mac\n\n case 224 : return XK_Meta_L;\n case 225 : return XK_ISO_Level3_Shift; // AltGr\n case 91 : return XK_Super_L; // also: Windows-key\n case 92 : return XK_Super_R; // also: Windows-key\n case 93 : return XK_Menu; // also: Windows-Menu, Command on Mac\n default: return null;\n }\n }\n return {\n hasShortcutModifier : hasShortcutModifier,\n hasCharModifier : hasCharModifier,\n ModifierSync : ModifierSync,\n getKey : getKey,\n getKeysym : getKeysym,\n keysymFromKeyCode : keysymFromKeyCode,\n nonCharacterKey : nonCharacterKey,\n substituteCodepoint : substituteCodepoint\n };\n})();\n\n// Takes a DOM keyboard event and:\n// - determines which keysym it represents\n// - determines a keyId identifying the key that was pressed (corresponding to the key/keyCode properties on the DOM event)\n// - synthesizes events to synchronize modifier key state between which modifiers are actually down, and which we thought were down\n// - marks each event with an 'escape' property if a modifier was down which should be \"escaped\"\n// - generates a \"stall\" event in cases where it might be necessary to wait and see if a keypress event follows a keydown\n// This information is collected into an object which is passed to the next() function. (one call per event)\nfunction KeyEventDecoder(modifierState, next) {\n \"use strict\";\n function sendAll(evts) {\n for (var i = 0; i < evts.length; ++i) {\n next(evts[i]);\n }\n }\n function process(evt, type) {\n var result = {type: type};\n var keyId = kbdUtil.getKey(evt);\n if (keyId) {\n result.keyId = keyId;\n }\n\n var keysym = kbdUtil.getKeysym(evt);\n\n var hasModifier = modifierState.hasShortcutModifier() || !!modifierState.activeCharModifier();\n // Is this a case where we have to decide on the keysym right away, rather than waiting for the keypress?\n // \"special\" keys like enter, tab or backspace don't send keypress events,\n // and some browsers don't send keypresses at all if a modifier is down\n if (keysym && (type !== 'keydown' || kbdUtil.nonCharacterKey(evt) || hasModifier)) {\n result.keysym = keysym;\n }\n\n var isShift = evt.keyCode === 0x10 || evt.key === 'Shift';\n\n // Should we prevent the browser from handling the event?\n // Doing so on a keydown (in most browsers) prevents keypress from being generated\n // so only do that if we have to.\n var suppress = !isShift && (type !== 'keydown' || modifierState.hasShortcutModifier() || !!kbdUtil.nonCharacterKey(evt));\n\n // If a char modifier is down on a keydown, we need to insert a stall,\n // so VerifyCharModifier knows to wait and see if a keypress is comnig\n var stall = type === 'keydown' && modifierState.activeCharModifier() && !kbdUtil.nonCharacterKey(evt);\n\n // if a char modifier is pressed, get the keys it consists of (on Windows, AltGr is equivalent to Ctrl+Alt)\n var active = modifierState.activeCharModifier();\n\n // If we have a char modifier down, and we're able to determine a keysym reliably\n // then (a) we know to treat the modifier as a char modifier,\n // and (b) we'll have to \"escape\" the modifier to undo the modifier when sending the char.\n if (active && keysym) {\n var isCharModifier = false;\n for (var i = 0; i < active.length; ++i) {\n if (active[i] === keysym.keysym) {\n isCharModifier = true;\n }\n }\n if (type === 'keypress' && !isCharModifier) {\n result.escape = modifierState.activeCharModifier();\n }\n }\n\n if (stall) {\n // insert a fake \"stall\" event\n next({type: 'stall'});\n }\n next(result);\n\n return suppress;\n }\n\n return {\n keydown: function(evt) {\n sendAll(modifierState.keydown(evt));\n return process(evt, 'keydown');\n },\n keypress: function(evt) {\n return process(evt, 'keypress');\n },\n keyup: function(evt) {\n sendAll(modifierState.keyup(evt));\n return process(evt, 'keyup');\n },\n syncModifiers: function(evt) {\n sendAll(modifierState.syncAny(evt));\n },\n releaseAll: function() { next({type: 'releaseall'}); }\n };\n}\n\n// Combines keydown and keypress events where necessary to handle char modifiers.\n// On some OS'es, a char modifier is sometimes used as a shortcut modifier.\n// For example, on Windows, AltGr is synonymous with Ctrl-Alt. On a Danish keyboard layout, AltGr-2 yields a @, but Ctrl-Alt-D does nothing\n// so when used with the '2' key, Ctrl-Alt counts as a char modifier (and should be escaped), but when used with 'D', it does not.\n// The only way we can distinguish these cases is to wait and see if a keypress event arrives\n// When we receive a \"stall\" event, wait a few ms before processing the next keydown. If a keypress has also arrived, merge the two\nfunction VerifyCharModifier(next) {\n \"use strict\";\n var queue = [];\n var timer = null;\n function process() {\n if (timer) {\n return;\n }\n\n var delayProcess = function () {\n clearTimeout(timer);\n timer = null;\n process();\n };\n\n while (queue.length !== 0) {\n var cur = queue[0];\n queue = queue.splice(1);\n switch (cur.type) {\n case 'stall':\n // insert a delay before processing available events.\n /* jshint loopfunc: true */\n timer = setTimeout(delayProcess, 5);\n /* jshint loopfunc: false */\n return;\n case 'keydown':\n // is the next element a keypress? Then we should merge the two\n if (queue.length !== 0 && queue[0].type === 'keypress') {\n // Firefox sends keypress even when no char is generated.\n // so, if keypress keysym is the same as we'd have guessed from keydown,\n // the modifier didn't have any effect, and should not be escaped\n if (queue[0].escape && (!cur.keysym || cur.keysym.keysym !== queue[0].keysym.keysym)) {\n cur.escape = queue[0].escape;\n }\n cur.keysym = queue[0].keysym;\n queue = queue.splice(1);\n }\n break;\n }\n\n // swallow stall events, and pass all others to the next stage\n if (cur.type !== 'stall') {\n next(cur);\n }\n }\n }\n return function(evt) {\n queue.push(evt);\n process();\n };\n}\n\n// Keeps track of which keys we (and the server) believe are down\n// When a keyup is received, match it against this list, to determine the corresponding keysym(s)\n// in some cases, a single key may produce multiple keysyms, so the corresponding keyup event must release all of these chars\n// key repeat events should be merged into a single entry.\n// Because we can't always identify which entry a keydown or keyup event corresponds to, we sometimes have to guess\nfunction TrackKeyState(next) {\n \"use strict\";\n var state = [];\n\n return function (evt) {\n var last = state.length !== 0 ? state[state.length-1] : null;\n\n switch (evt.type) {\n case 'keydown':\n // insert a new entry if last seen key was different.\n if (!last || !evt.keyId || last.keyId !== evt.keyId) {\n last = {keyId: evt.keyId, keysyms: {}};\n state.push(last);\n }\n if (evt.keysym) {\n // make sure last event contains this keysym (a single \"logical\" keyevent\n // can cause multiple key events to be sent to the VNC server)\n last.keysyms[evt.keysym.keysym] = evt.keysym;\n last.ignoreKeyPress = true;\n next(evt);\n }\n break;\n case 'keypress':\n if (!last) {\n last = {keyId: evt.keyId, keysyms: {}};\n state.push(last);\n }\n if (!evt.keysym) {\n console.log('keypress with no keysym:', evt);\n }\n\n // If we didn't expect a keypress, and already sent a keydown to the VNC server\n // based on the keydown, make sure to skip this event.\n if (evt.keysym && !last.ignoreKeyPress) {\n last.keysyms[evt.keysym.keysym] = evt.keysym;\n evt.type = 'keydown';\n next(evt);\n }\n break;\n case 'keyup':\n if (state.length === 0) {\n return;\n }\n var idx = null;\n // do we have a matching key tracked as being down?\n for (var i = 0; i !== state.length; ++i) {\n if (state[i].keyId === evt.keyId) {\n idx = i;\n break;\n }\n }\n // if we couldn't find a match (it happens), assume it was the last key pressed\n if (idx === null) {\n idx = state.length - 1;\n }\n\n var item = state.splice(idx, 1)[0];\n // for each keysym tracked by this key entry, clone the current event and override the keysym\n var clone = (function(){\n function Clone(){}\n return function (obj) { Clone.prototype=obj; return new Clone(); };\n }());\n for (var key in item.keysyms) {\n var out = clone(evt);\n out.keysym = item.keysyms[key];\n next(out);\n }\n break;\n case 'releaseall':\n /* jshint shadow: true */\n for (var i = 0; i < state.length; ++i) {\n for (var key in state[i].keysyms) {\n var keysym = state[i].keysyms[key];\n next({keyId: 0, keysym: keysym, type: 'keyup'});\n }\n }\n /* jshint shadow: false */\n state = [];\n }\n };\n}\n\n// Handles \"escaping\" of modifiers: if a char modifier is used to produce a keysym (such as AltGr-2 to generate an @),\n// then the modifier must be \"undone\" before sending the @, and \"redone\" afterwards.\nfunction EscapeModifiers(next) {\n \"use strict\";\n return function(evt) {\n if (evt.type !== 'keydown' || evt.escape === undefined) {\n next(evt);\n return;\n }\n // undo modifiers\n for (var i = 0; i < evt.escape.length; ++i) {\n next({type: 'keyup', keyId: 0, keysym: keysyms.lookup(evt.escape[i])});\n }\n // send the character event\n next(evt);\n // redo modifiers\n /* jshint shadow: true */\n for (var i = 0; i < evt.escape.length; ++i) {\n next({type: 'keydown', keyId: 0, keysym: keysyms.lookup(evt.escape[i])});\n }\n /* jshint shadow: false */\n };\n}\n;\ndefine(\"vnc-keyboard\", [\"vnc-util\"], function(){});\n\n","/*\n * JSUnzip\n *\n * Copyright (c) 2011 by Erik Moller\n * All Rights Reserved\n *\n * This software is provided 'as-is', without any express\n * or implied warranty. In no event will the authors be\n * held liable for any damages arising from the use of\n * this software.\n *\n * Permission is granted to anyone to use this software\n * for any purpose, including commercial applications,\n * and to alter it and redistribute it freely, subject to\n * the following restrictions:\n *\n * 1. The origin of this software must not be\n * misrepresented; you must not claim that you\n * wrote the original software. If you use this\n * software in a product, an acknowledgment in\n * the product documentation would be appreciated\n * but is not required.\n *\n * 2. Altered source versions must be plainly marked\n * as such, and must not be misrepresented as\n * being the original software.\n *\n * 3. This notice may not be removed or altered from\n * any source distribution.\n */\n \nvar tinf;\n\nfunction JSUnzip() {\n\n this.getInt = function(offset, size) {\n switch (size) {\n case 4:\n return (this.data.charCodeAt(offset + 3) & 0xff) << 24 | \n (this.data.charCodeAt(offset + 2) & 0xff) << 16 | \n (this.data.charCodeAt(offset + 1) & 0xff) << 8 | \n (this.data.charCodeAt(offset + 0) & 0xff);\n break;\n case 2:\n return (this.data.charCodeAt(offset + 1) & 0xff) << 8 | \n (this.data.charCodeAt(offset + 0) & 0xff);\n break;\n default:\n return this.data.charCodeAt(offset) & 0xff;\n break;\n }\n };\n\n this.getDOSDate = function(dosdate, dostime) {\n var day = dosdate & 0x1f;\n var month = ((dosdate >> 5) & 0xf) - 1;\n var year = 1980 + ((dosdate >> 9) & 0x7f)\n var second = (dostime & 0x1f) * 2;\n var minute = (dostime >> 5) & 0x3f;\n hour = (dostime >> 11) & 0x1f;\n return new Date(year, month, day, hour, minute, second);\n }\n\n this.open = function(data) {\n this.data = data;\n this.files = [];\n\n if (this.data.length < 22)\n return { 'status' : false, 'error' : 'Invalid data' };\n var endOfCentralDirectory = this.data.length - 22;\n while (endOfCentralDirectory >= 0 && this.getInt(endOfCentralDirectory, 4) != 0x06054b50)\n --endOfCentralDirectory;\n if (endOfCentralDirectory < 0)\n return { 'status' : false, 'error' : 'Invalid data' };\n if (this.getInt(endOfCentralDirectory + 4, 2) != 0 || this.getInt(endOfCentralDirectory + 6, 2) != 0)\n return { 'status' : false, 'error' : 'No multidisk support' };\n\n var entriesInThisDisk = this.getInt(endOfCentralDirectory + 8, 2);\n var centralDirectoryOffset = this.getInt(endOfCentralDirectory + 16, 4);\n var globalCommentLength = this.getInt(endOfCentralDirectory + 20, 2);\n this.comment = this.data.slice(endOfCentralDirectory + 22, endOfCentralDirectory + 22 + globalCommentLength);\n\n var fileOffset = centralDirectoryOffset;\n\n for (var i = 0; i < entriesInThisDisk; ++i) {\n if (this.getInt(fileOffset + 0, 4) != 0x02014b50)\n return { 'status' : false, 'error' : 'Invalid data' };\n if (this.getInt(fileOffset + 6, 2) > 20)\n return { 'status' : false, 'error' : 'Unsupported version' };\n if (this.getInt(fileOffset + 8, 2) & 1)\n return { 'status' : false, 'error' : 'Encryption not implemented' };\n\n var compressionMethod = this.getInt(fileOffset + 10, 2);\n if (compressionMethod != 0 && compressionMethod != 8)\n return { 'status' : false, 'error' : 'Unsupported compression method' };\n\n var lastModFileTime = this.getInt(fileOffset + 12, 2);\n var lastModFileDate = this.getInt(fileOffset + 14, 2);\n var lastModifiedDate = this.getDOSDate(lastModFileDate, lastModFileTime);\n\n var crc = this.getInt(fileOffset + 16, 4);\n // TODO: crc\n\n var compressedSize = this.getInt(fileOffset + 20, 4);\n var uncompressedSize = this.getInt(fileOffset + 24, 4);\n\n var fileNameLength = this.getInt(fileOffset + 28, 2);\n var extraFieldLength = this.getInt(fileOffset + 30, 2);\n var fileCommentLength = this.getInt(fileOffset + 32, 2);\n\n var relativeOffsetOfLocalHeader = this.getInt(fileOffset + 42, 4);\n\n var fileName = this.data.slice(fileOffset + 46, fileOffset + 46 + fileNameLength);\n var fileComment = this.data.slice(fileOffset + 46 + fileNameLength + extraFieldLength, fileOffset + 46 + fileNameLength + extraFieldLength + fileCommentLength);\n\n if (this.getInt(relativeOffsetOfLocalHeader + 0, 4) != 0x04034b50)\n return { 'status' : false, 'error' : 'Invalid data' };\n var localFileNameLength = this.getInt(relativeOffsetOfLocalHeader + 26, 2);\n var localExtraFieldLength = this.getInt(relativeOffsetOfLocalHeader + 28, 2);\n var localFileContent = relativeOffsetOfLocalHeader + 30 + localFileNameLength + localExtraFieldLength;\n\n this.files[fileName] = \n {\n 'fileComment' : fileComment,\n 'compressionMethod' : compressionMethod,\n 'compressedSize' : compressedSize,\n 'uncompressedSize' : uncompressedSize,\n 'localFileContent' : localFileContent,\n 'lastModifiedDate' : lastModifiedDate\n };\n\n fileOffset += 46 + fileNameLength + extraFieldLength + fileCommentLength;\n }\n return { 'status' : true }\n }; \n \n\n this.read = function(fileName) {\n var fileInfo = this.files[fileName];\n if (fileInfo) {\n if (fileInfo.compressionMethod == 8) {\n if (!tinf) {\n tinf = new TINF();\n tinf.init();\n }\n var result = tinf.uncompress(this.data, fileInfo.localFileContent);\n if (result.status == tinf.OK)\n return { 'status' : true, 'data' : result.data };\n else\n return { 'status' : false, 'error' : result.error };\n } else {\n return { 'status' : true, 'data' : this.data.slice(fileInfo.localFileContent, fileInfo.localFileContent + fileInfo.uncompressedSize) };\n }\n }\n return { 'status' : false, 'error' : \"File '\" + fileName + \"' doesn't exist in zip\" };\n };\n \n};\n\n\n\n/*\n * tinflate - tiny inflate\n *\n * Copyright (c) 2003 by Joergen Ibsen / Jibz\n * All Rights Reserved\n *\n * http://www.ibsensoftware.com/\n *\n * This software is provided 'as-is', without any express\n * or implied warranty. In no event will the authors be\n * held liable for any damages arising from the use of\n * this software.\n *\n * Permission is granted to anyone to use this software\n * for any purpose, including commercial applications,\n * and to alter it and redistribute it freely, subject to\n * the following restrictions:\n *\n * 1. The origin of this software must not be\n * misrepresented; you must not claim that you\n * wrote the original software. If you use this\n * software in a product, an acknowledgment in\n * the product documentation would be appreciated\n * but is not required.\n *\n * 2. Altered source versions must be plainly marked\n * as such, and must not be misrepresented as\n * being the original software.\n *\n * 3. This notice may not be removed or altered from\n * any source distribution.\n */\n\n/*\n * tinflate javascript port by Erik Moller in May 2011.\n * emoller@opera.com\n * \n * read_bits() patched by mike@imidio.com to allow\n * reading more then 8 bits (needed in some zlib streams)\n */\n\n\"use strict\";\n\nfunction TINF() {\n \nthis.OK = 0;\nthis.DATA_ERROR = (-3);\nthis.WINDOW_SIZE = 32768;\n\n/* ------------------------------ *\n * -- internal data structures -- *\n * ------------------------------ */\n\nthis.TREE = function() {\n this.table = new Array(16); /* table of code length counts */\n this.trans = new Array(288); /* code -> symbol translation table */\n};\n\nthis.DATA = function(that) {\n this.source = '';\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n\n this.dest = [];\n \n this.history = [];\n\n this.ltree = new that.TREE(); /* dynamic length/symbol tree */\n this.dtree = new that.TREE(); /* dynamic distance tree */\n};\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nthis.sltree = new this.TREE(); /* fixed length/symbol tree */\nthis.sdtree = new this.TREE(); /* fixed distance tree */\n\n/* extra bits and base tables for length codes */\nthis.length_bits = new Array(30);\nthis.length_base = new Array(30);\n\n/* extra bits and base tables for distance codes */\nthis.dist_bits = new Array(30);\nthis.dist_base = new Array(30);\n\n/* special ordering of code length codes */\nthis.clcidx = [\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n];\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nthis.build_bits_base = function(bits, base, delta, first)\n{\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = Math.floor(i / delta);\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i)\n {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nthis.build_fixed_trees = function(lt, dt)\n{\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nthis.build_tree = function(t, lengths, loffset, num)\n{\n var offs = new Array(16);\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[loffset + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i)\n {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i)\n {\n if (lengths[loffset + i]) t.trans[offs[lengths[loffset + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nthis.getbit = function(d)\n{\n var bit;\n\n /* check if tag is empty */\n if (!d.bitcount--)\n {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++] & 0xff;\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n bit = d.tag & 0x01;\n d.tag >>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction read_bits_direct(source, bitcount, tag, idx, num)\n{\n var val = 0;\n while (bitcount < 24) {\n tag = tag | (source[idx++] & 0xff) << bitcount;\n bitcount += 8;\n }\n val = tag & (0xffff >> (16 - num));\n tag >>= num;\n bitcount -= num;\n return [bitcount, tag, idx, val];\n}\nthis.read_bits = function(d, num, base)\n{\n if (!num)\n return base;\n\n var ret = read_bits_direct(d.source, d.bitcount, d.tag, d.sourceIndex, num);\n d.bitcount = ret[0];\n d.tag = ret[1];\n d.sourceIndex = ret[2];\n return ret[3] + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nthis.decode_symbol = function(d, t)\n{\n while (d.bitcount < 16) {\n d.tag = d.tag | (d.source[d.sourceIndex++] & 0xff) << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n do {\n cur = 2 * cur + ((d.tag & (1 << len)) >> len);\n\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n\n } while (cur >= 0);\n\n d.tag >>= len;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nthis.decode_trees = function(d, lt, dt)\n{\n var code_tree = new this.TREE();\n var lengths = new Array(288+32);\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = this.read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = this.read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = this.read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i)\n {\n /* get 3 bits code length (0-7) */\n var clen = this.read_bits(d, 3, 0);\n\n lengths[this.clcidx[i]] = clen;\n }\n\n /* build code length tree */\n this.build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist; )\n {\n var sym = this.decode_symbol(d, code_tree);\n\n switch (sym)\n {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n {\n var prev = lengths[num - 1];\n for (length = this.read_bits(d, 2, 3); length; --length)\n {\n lengths[num++] = prev;\n }\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = this.read_bits(d, 3, 3); length; --length)\n {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = this.read_bits(d, 7, 11); length; --length)\n {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n this.build_tree(lt, lengths, 0, hlit);\n this.build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nthis.inflate_block_data = function(d, lt, dt)\n{\n // js optimization.\n var ddest = d.dest;\n var ddestlength = ddest.length;\n\n while (1)\n {\n var sym = this.decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym == 256)\n {\n return this.OK;\n }\n\n if (sym < 256)\n {\n ddest[ddestlength++] = sym; // ? String.fromCharCode(sym);\n d.history.push(sym);\n } else {\n\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = this.read_bits(d, this.length_bits[sym], this.length_base[sym]);\n\n dist = this.decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.history.length - this.read_bits(d, this.dist_bits[dist], this.dist_base[dist]);\n\n if (offs < 0)\n throw (\"Invalid zlib offset \" + offs);\n \n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n //ddest[ddestlength++] = ddest[i];\n ddest[ddestlength++] = d.history[i];\n d.history.push(d.history[i]);\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nthis.inflate_uncompressed_block = function(d)\n{\n var length, invlength;\n var i;\n\n if (d.bitcount > 7) {\n var overflow = Math.floor(d.bitcount / 8);\n d.sourceIndex -= overflow;\n d.bitcount = 0;\n d.tag = 0;\n }\n \n /* get length */\n length = d.source[d.sourceIndex+1];\n length = 256*length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex+3];\n invlength = 256*invlength + d.source[d.sourceIndex+2];\n\n /* check length */\n if (length != (~invlength & 0x0000ffff)) return this.DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i) {\n d.history.push(d.source[d.sourceIndex]);\n d.dest[d.dest.length] = d.source[d.sourceIndex++];\n }\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return this.OK;\n}\n\n/* inflate a block of data compressed with fixed huffman trees */\nthis.inflate_fixed_block = function(d)\n{\n /* decode block using fixed trees */\n return this.inflate_block_data(d, this.sltree, this.sdtree);\n}\n\n/* inflate a block of data compressed with dynamic huffman trees */\nthis.inflate_dynamic_block = function(d)\n{\n /* decode trees from stream */\n this.decode_trees(d, d.ltree, d.dtree);\n\n /* decode block using decoded trees */\n return this.inflate_block_data(d, d.ltree, d.dtree);\n}\n\n/* ---------------------- *\n * -- public functions -- *\n * ---------------------- */\n\n/* initialize global (static) data */\nthis.init = function()\n{\n /* build fixed huffman trees */\n this.build_fixed_trees(this.sltree, this.sdtree);\n\n /* build extra bits and base tables */\n this.build_bits_base(this.length_bits, this.length_base, 4, 3);\n this.build_bits_base(this.dist_bits, this.dist_base, 2, 1);\n\n /* fix a special case */\n this.length_bits[28] = 0;\n this.length_base[28] = 258;\n\n this.reset(); \n}\n\nthis.reset = function()\n{\n this.d = new this.DATA(this);\n delete this.header;\n}\n\n/* inflate stream from source to dest */\nthis.uncompress = function(source, offset)\n{\n\n var d = this.d;\n var bfinal;\n\n /* initialise data */\n d.source = source;\n d.sourceIndex = offset;\n d.bitcount = 0;\n\n d.dest = [];\n\n // Skip zlib header at start of stream\n if (typeof this.header == 'undefined') {\n this.header = this.read_bits(d, 16, 0);\n /* byte 0: 0x78, 7 = 32k window size, 8 = deflate */\n /* byte 1: check bits for header and other flags */\n }\n\n var blocks = 0;\n \n do {\n\n var btype;\n var res;\n\n /* read final block flag */\n bfinal = this.getbit(d);\n\n /* read block type (2 bits) */\n btype = this.read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype)\n {\n case 0:\n /* decompress uncompressed block */\n res = this.inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = this.inflate_fixed_block(d);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n res = this.inflate_dynamic_block(d);\n break;\n default:\n return { 'status' : this.DATA_ERROR };\n }\n\n if (res != this.OK) return { 'status' : this.DATA_ERROR };\n blocks++;\n \n } while (!bfinal && d.sourceIndex < d.source.length);\n\n d.history = d.history.slice(-this.WINDOW_SIZE);\n \n return { 'status' : this.OK, 'data' : d.dest };\n}\n\n};\n\ndefine(\"vnc-jsunzip\", [\"vnc-util\"], function(){});\n\n","/**\n * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/almond for details\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*jslint sloppy: true */\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name && name.charAt(0) === \".\") {\n //If have a base name, try to normalize against it,\n //otherwise, assume it is a top-level require that will\n //be relative to baseUrl in the end.\n if (baseName) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // Node .js allowance:\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n //Lop off the last part of baseParts, so that . matches the\n //\"directory\" and not name of the baseName's module. For instance,\n //baseName of \"one/two/three\", maps to \"one/two/three.js\", but we\n //want the directory, \"one/two\" for this normalization.\n name = baseParts.slice(0, baseParts.length - 1).concat(name);\n\n //start trimDots\n for (i = 0; i < name.length; i += 1) {\n part = name[i];\n if (part === \".\") {\n name.splice(i, 1);\n i -= 1;\n } else if (part === \"..\") {\n if (i === 1 && (name[2] === '..' || name[0] === '..')) {\n //End of the line. Keep at least one non-dot\n //path segment at the front so it can be mapped\n //correctly to disk. Otherwise, there is likely\n //no path mapping for a path starting with '..'.\n //This can still fail, but catches the most reasonable\n //uses of ..\n break;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join(\"/\");\n } else if (name.indexOf('./') === 0) {\n // No baseName, so this is ID is resolved relative\n // to baseUrl, pull off the leading dot.\n name = name.substring(2);\n }\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relName) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relName));\n } else {\n name = normalize(name, relName);\n }\n } else {\n name = normalize(name, relName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relName);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, callback).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\ndefine(\"almond\", function(){});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n */\n\n/* jshint white: false, nonstandard: true */\n/*global window, console, document, navigator, ActiveXObject, INCLUDE_URI */\n\n// Globals defined here\nvar Util = {};\n\n\n/*\n * Make arrays quack\n */\n\nvar addFunc = function (cl, name, func) {\n if (!cl.prototype[name]) {\n Object.defineProperty(cl.prototype, name, { enumerable: false, value: func });\n }\n};\n\naddFunc(Array, 'push8', function (num) {\n \"use strict\";\n this.push(num & 0xFF);\n});\n\naddFunc(Array, 'push16', function (num) {\n \"use strict\";\n this.push((num >> 8) & 0xFF,\n num & 0xFF);\n});\n\naddFunc(Array, 'push32', function (num) {\n \"use strict\";\n this.push((num >> 24) & 0xFF,\n (num >> 16) & 0xFF,\n (num >> 8) & 0xFF,\n num & 0xFF);\n});\n\n// IE does not support map (even in IE9)\n//This prototype is provided by the Mozilla foundation and\n//is distributed under the MIT license.\n//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license\naddFunc(Array, 'map', function (fun /*, thisp*/) {\n \"use strict\";\n var len = this.length;\n if (typeof fun != \"function\") {\n throw new TypeError();\n }\n\n var res = new Array(len);\n var thisp = arguments[1];\n for (var i = 0; i < len; i++) {\n if (i in this) {\n res[i] = fun.call(thisp, this[i], i, this);\n }\n }\n\n return res;\n});\n\n// IE <9 does not support indexOf\n//This prototype is provided by the Mozilla foundation and\n//is distributed under the MIT license.\n//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license\naddFunc(Array, 'indexOf', function (elt /*, from*/) {\n \"use strict\";\n var len = this.length >>> 0;\n\n var from = Number(arguments[1]) || 0;\n from = (from < 0) ? Math.ceil(from) : Math.floor(from);\n if (from < 0) {\n from += len;\n }\n\n for (; from < len; from++) {\n if (from in this &&\n this[from] === elt) {\n return from;\n }\n }\n return -1;\n});\n\n// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys\nif (!Object.keys) {\n Object.keys = (function () {\n 'use strict';\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),\n dontEnums = [\n 'toString',\n 'toLocaleString',\n 'valueOf',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'constructor'\n ],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {\n throw new TypeError('Object.keys called on non-object');\n }\n\n var result = [], prop, i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n return result;\n };\n })();\n}\n\n// PhantomJS 1.x doesn't support bind,\n// so leave this in until PhantomJS 2.0 is released\n//This prototype is provided by the Mozilla foundation and\n//is distributed under the MIT license.\n//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license\naddFunc(Function, 'bind', function (oThis) {\n if (typeof this !== \"function\") {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError(\"Function.prototype.bind - \" +\n \"what is trying to be bound is not callable\");\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function () {},\n fBound = function () {\n return fToBind.apply(this instanceof fNOP && oThis ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n fNOP.prototype = this.prototype;\n fBound.prototype = new fNOP();\n\n return fBound;\n});\n\n//\n// requestAnimationFrame shim with setTimeout fallback\n//\n\nwindow.requestAnimFrame = (function () {\n \"use strict\";\n return window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) {\n window.setTimeout(callback, 1000 / 60);\n };\n})();\n\n/*\n * ------------------------------------------------------\n * Namespaced in Util\n * ------------------------------------------------------\n */\n\n/*\n * Logging/debug routines\n */\n\nUtil._log_level = 'warn';\nUtil.init_logging = function (level) {\n \"use strict\";\n if (typeof level === 'undefined') {\n level = Util._log_level;\n } else {\n Util._log_level = level;\n }\n if (typeof window.console === \"undefined\") {\n if (typeof window.opera !== \"undefined\") {\n window.console = {\n 'log' : window.opera.postError,\n 'warn' : window.opera.postError,\n 'error': window.opera.postError\n };\n } else {\n window.console = {\n 'log' : function (m) {},\n 'warn' : function (m) {},\n 'error': function (m) {}\n };\n }\n }\n\n Util.Debug = Util.Info = Util.Warn = Util.Error = function (msg) {};\n /* jshint -W086 */\n switch (level) {\n case 'debug':\n Util.Debug = function (msg) { console.log(msg); };\n case 'info':\n Util.Info = function (msg) { console.log(msg); };\n case 'warn':\n Util.Warn = function (msg) { console.warn(msg); };\n case 'error':\n Util.Error = function (msg) { console.error(msg); };\n case 'none':\n break;\n default:\n throw new Error(\"invalid logging type '\" + level + \"'\");\n }\n /* jshint +W086 */\n};\nUtil.get_logging = function () {\n return Util._log_level;\n};\n// Initialize logging level\nUtil.init_logging();\n\nUtil.make_property = function (proto, name, mode, type) {\n \"use strict\";\n\n var getter;\n if (type === 'arr') {\n getter = function (idx) {\n if (typeof idx !== 'undefined') {\n return this['_' + name][idx];\n } else {\n return this['_' + name];\n }\n };\n } else {\n getter = function () {\n return this['_' + name];\n };\n }\n\n var make_setter = function (process_val) {\n if (process_val) {\n return function (val, idx) {\n if (typeof idx !== 'undefined') {\n this['_' + name][idx] = process_val(val);\n } else {\n this['_' + name] = process_val(val);\n }\n };\n } else {\n return function (val, idx) {\n if (typeof idx !== 'undefined') {\n this['_' + name][idx] = val;\n } else {\n this['_' + name] = val;\n }\n };\n }\n };\n\n var setter;\n if (type === 'bool') {\n setter = make_setter(function (val) {\n if (!val || (val in {'0': 1, 'no': 1, 'false': 1})) {\n return false;\n } else {\n return true;\n }\n });\n } else if (type === 'int') {\n setter = make_setter(function (val) { return parseInt(val, 10); });\n } else if (type === 'float') {\n setter = make_setter(parseFloat);\n } else if (type === 'str') {\n setter = make_setter(String);\n } else if (type === 'func') {\n setter = make_setter(function (val) {\n if (!val) {\n return function () {};\n } else {\n return val;\n }\n });\n } else if (type === 'arr' || type === 'dom' || type == 'raw') {\n setter = make_setter();\n } else {\n throw new Error('Unknown property type ' + type); // some sanity checking\n }\n\n // set the getter\n if (typeof proto['get_' + name] === 'undefined') {\n proto['get_' + name] = getter;\n }\n\n // set the setter if needed\n if (typeof proto['set_' + name] === 'undefined') {\n if (mode === 'rw') {\n proto['set_' + name] = setter;\n } else if (mode === 'wo') {\n proto['set_' + name] = function (val, idx) {\n if (typeof this['_' + name] !== 'undefined') {\n throw new Error(name + \" can only be set once\");\n }\n setter.call(this, val, idx);\n };\n }\n }\n\n // make a special setter that we can use in set defaults\n proto['_raw_set_' + name] = function (val, idx) {\n setter.call(this, val, idx);\n //delete this['_init_set_' + name]; // remove it after use\n };\n};\n\nUtil.make_properties = function (constructor, arr) {\n \"use strict\";\n for (var i = 0; i < arr.length; i++) {\n Util.make_property(constructor.prototype, arr[i][0], arr[i][1], arr[i][2]);\n }\n};\n\nUtil.set_defaults = function (obj, conf, defaults) {\n var defaults_keys = Object.keys(defaults);\n var conf_keys = Object.keys(conf);\n var keys_obj = {};\n var i;\n for (i = 0; i < defaults_keys.length; i++) { keys_obj[defaults_keys[i]] = 1; }\n for (i = 0; i < conf_keys.length; i++) { keys_obj[conf_keys[i]] = 1; }\n var keys = Object.keys(keys_obj);\n\n for (i = 0; i < keys.length; i++) {\n var setter = obj['_raw_set_' + keys[i]];\n if (!setter) {\n Util.Warn('Invalid property ' + keys[i]);\n continue;\n }\n\n if (keys[i] in conf) {\n setter.call(obj, conf[keys[i]]);\n } else {\n setter.call(obj, defaults[keys[i]]);\n }\n }\n};\n\n/*\n * Decode from UTF-8\n */\nUtil.decodeUTF8 = function (utf8string) {\n \"use strict\";\n return decodeURIComponent(escape(utf8string));\n};\n\n\n\n/*\n * Cross-browser routines\n */\n\n\n// Dynamically load scripts without using document.write()\n// Reference: http://unixpapa.com/js/dyna.html\n//\n// Handles the case where load_scripts is invoked from a script that\n// itself is loaded via load_scripts. Once all scripts are loaded the\n// window.onscriptsloaded handler is called (if set).\nUtil.get_include_uri = function () {\n return (typeof INCLUDE_URI !== \"undefined\") ? INCLUDE_URI : \"include/\";\n};\nUtil._loading_scripts = [];\nUtil._pending_scripts = [];\nUtil.load_scripts = function (files) {\n \"use strict\";\n var head = document.getElementsByTagName('head')[0], script,\n ls = Util._loading_scripts, ps = Util._pending_scripts;\n\n var loadFunc = function (e) {\n while (ls.length > 0 && (ls[0].readyState === 'loaded' ||\n ls[0].readyState === 'complete')) {\n // For IE, append the script to trigger execution\n var s = ls.shift();\n //console.log(\"loaded script: \" + s.src);\n head.appendChild(s);\n }\n if (!this.readyState ||\n (Util.Engine.presto && this.readyState === 'loaded') ||\n this.readyState === 'complete') {\n if (ps.indexOf(this) >= 0) {\n this.onload = this.onreadystatechange = null;\n //console.log(\"completed script: \" + this.src);\n ps.splice(ps.indexOf(this), 1);\n\n // Call window.onscriptsload after last script loads\n if (ps.length === 0 && window.onscriptsload) {\n window.onscriptsload();\n }\n }\n }\n };\n\n for (var f = 0; f < files.length; f++) {\n script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = Util.get_include_uri() + files[f];\n //console.log(\"loading script: \" + script.src);\n script.onload = script.onreadystatechange = loadFunc;\n // In-order script execution tricks\n if (Util.Engine.trident) {\n // For IE wait until readyState is 'loaded' before\n // appending it which will trigger execution\n // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order\n ls.push(script);\n } else {\n // For webkit and firefox set async=false and append now\n // https://developer.mozilla.org/en-US/docs/HTML/Element/script\n script.async = false;\n head.appendChild(script);\n }\n ps.push(script);\n }\n};\n\n\n// Get DOM element position on page\n// This solution is based based on http://www.greywyvern.com/?post=331\n// Thanks to Brian Huisman AKA GreyWyvern!\nUtil.getPosition = (function () {\n \"use strict\";\n function getStyle(obj, styleProp) {\n var y;\n if (obj.currentStyle) {\n y = obj.currentStyle[styleProp];\n } else if (window.getComputedStyle)\n y = window.getComputedStyle(obj, null)[styleProp];\n return y;\n }\n\n function scrollDist() {\n var myScrollTop = 0, myScrollLeft = 0;\n var html = document.getElementsByTagName('html')[0];\n\n // get the scrollTop part\n if (html.scrollTop && document.documentElement.scrollTop) {\n myScrollTop = html.scrollTop;\n } else if (html.scrollTop || document.documentElement.scrollTop) {\n myScrollTop = html.scrollTop + document.documentElement.scrollTop;\n } else if (document.body.scrollTop) {\n myScrollTop = document.body.scrollTop;\n } else {\n myScrollTop = 0;\n }\n\n // get the scrollLeft part\n if (html.scrollLeft && document.documentElement.scrollLeft) {\n myScrollLeft = html.scrollLeft;\n } else if (html.scrollLeft || document.documentElement.scrollLeft) {\n myScrollLeft = html.scrollLeft + document.documentElement.scrollLeft;\n } else if (document.body.scrollLeft) {\n myScrollLeft = document.body.scrollLeft;\n } else {\n myScrollLeft = 0;\n }\n\n return [myScrollLeft, myScrollTop];\n }\n\n return function (obj) {\n var curleft = 0, curtop = 0, scr = obj, fixed = false;\n while ((scr = scr.parentNode) && scr != document.body) {\n curleft -= scr.scrollLeft || 0;\n curtop -= scr.scrollTop || 0;\n if (getStyle(scr, \"position\") == \"fixed\") {\n fixed = true;\n }\n }\n if (fixed && !window.opera) {\n var scrDist = scrollDist();\n curleft += scrDist[0];\n curtop += scrDist[1];\n }\n\n do {\n curleft += obj.offsetLeft;\n curtop += obj.offsetTop;\n } while ((obj = obj.offsetParent));\n\n return {'x': curleft, 'y': curtop};\n };\n})();\n\n\n// Get mouse event position in DOM element\nUtil.getEventPosition = function (e, obj, scale) {\n \"use strict\";\n var evt, docX, docY, pos;\n //if (!e) evt = window.event;\n evt = (e ? e : window.event);\n evt = (evt.changedTouches ? evt.changedTouches[0] : evt.touches ? evt.touches[0] : evt);\n if (evt.pageX || evt.pageY) {\n docX = evt.pageX;\n docY = evt.pageY;\n } else if (evt.clientX || evt.clientY) {\n docX = evt.clientX + document.body.scrollLeft +\n document.documentElement.scrollLeft;\n docY = evt.clientY + document.body.scrollTop +\n document.documentElement.scrollTop;\n }\n pos = Util.getPosition(obj);\n if (typeof scale === \"undefined\") {\n scale = 1;\n }\n var realx = docX - pos.x;\n var realy = docY - pos.y;\n var x = Math.max(Math.min(realx, obj.width - 1), 0);\n var y = Math.max(Math.min(realy, obj.height - 1), 0);\n return {'x': x / scale, 'y': y / scale, 'realx': realx / scale, 'realy': realy / scale};\n};\n\n\n// Event registration. Based on: http://www.scottandrew.com/weblog/articles/cbs-events\nUtil.addEvent = function (obj, evType, fn) {\n \"use strict\";\n if (obj.attachEvent) {\n var r = obj.attachEvent(\"on\" + evType, fn);\n return r;\n } else if (obj.addEventListener) {\n obj.addEventListener(evType, fn, false);\n return true;\n } else {\n throw new Error(\"Handler could not be attached\");\n }\n};\n\nUtil.removeEvent = function (obj, evType, fn) {\n \"use strict\";\n if (obj.detachEvent) {\n var r = obj.detachEvent(\"on\" + evType, fn);\n return r;\n } else if (obj.removeEventListener) {\n obj.removeEventListener(evType, fn, false);\n return true;\n } else {\n throw new Error(\"Handler could not be removed\");\n }\n};\n\nUtil.stopEvent = function (e) {\n \"use strict\";\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n};\n\n\n// Set browser engine versions. Based on mootools.\nUtil.Features = {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)};\n\n(function () {\n \"use strict\";\n // 'presto': (function () { return (!window.opera) ? false : true; }()),\n var detectPresto = function () {\n return !!window.opera;\n };\n\n // 'trident': (function () { return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);\n var detectTrident = function () {\n if (!window.ActiveXObject) {\n return false;\n } else {\n if (window.XMLHttpRequest) {\n return (document.querySelectorAll) ? 6 : 5;\n } else {\n return 4;\n }\n }\n };\n\n // 'webkit': (function () { try { return (navigator.taintEnabled) ? false : ((Util.Features.xpath) ? ((Util.Features.query) ? 525 : 420) : 419); } catch (e) { return false; } }()),\n var detectInitialWebkit = function () {\n try {\n if (navigator.taintEnabled) {\n return false;\n } else {\n if (Util.Features.xpath) {\n return (Util.Features.query) ? 525 : 420;\n } else {\n return 419;\n }\n }\n } catch (e) {\n return false;\n }\n };\n\n var detectActualWebkit = function (initial_ver) {\n var re = /WebKit\\/([0-9\\.]*) /;\n var str_ver = (navigator.userAgent.match(re) || ['', initial_ver])[1];\n return parseFloat(str_ver, 10);\n };\n\n // 'gecko': (function () { return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19ssName) ? 19 : 18 : 18); }())\n var detectGecko = function () {\n /* jshint -W041 */\n if (!document.getBoxObjectFor && window.mozInnerScreenX == null) {\n return false;\n } else {\n return (document.getElementsByClassName) ? 19 : 18;\n }\n /* jshint +W041 */\n };\n\n Util.Engine = {\n // Version detection break in Opera 11.60 (errors on arguments.callee.caller reference)\n //'presto': (function() {\n // return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925)); }()),\n 'presto': detectPresto(),\n 'trident': detectTrident(),\n 'webkit': detectInitialWebkit(),\n 'gecko': detectGecko(),\n };\n\n if (Util.Engine.webkit) {\n // Extract actual webkit version if available\n Util.Engine.webkit = detectActualWebkit(Util.Engine.webkit);\n }\n})();\n\nUtil.Flash = (function () {\n \"use strict\";\n var v, version;\n try {\n v = navigator.plugins['Shockwave Flash'].description;\n } catch (err1) {\n try {\n v = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');\n } catch (err2) {\n v = '0 r0';\n }\n }\n version = v.match(/\\d+/g);\n return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};\n}());\n\ndefine(\"vnc-util\", (function (global) {\n return function () {\n var ret, fn;\n return ret || global.Util;\n };\n}(this)));\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Copyright (C) 2013 NTT corp.\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n */\n\n/*jslint bitwise: false, white: false, browser: true, devel: true */\n/*global Util, window, document */\n\n// Globals defined here\nvar WebUtil = {}, $D;\n\n/*\n * Simple DOM selector by ID\n */\nif (!window.$D) {\n window.$D = function (id) {\n if (document.getElementById) {\n return document.getElementById(id);\n } else if (document.all) {\n return document.all[id];\n } else if (document.layers) {\n return document.layers[id];\n }\n return undefined;\n };\n}\n\n\n/*\n * ------------------------------------------------------\n * Namespaced in WebUtil\n * ------------------------------------------------------\n */\n\n// init log level reading the logging HTTP param\nWebUtil.init_logging = function (level) {\n \"use strict\";\n if (typeof level !== \"undefined\") {\n Util._log_level = level;\n } else {\n var param = document.location.href.match(/logging=([A-Za-z0-9\\._\\-]*)/);\n Util._log_level = (param || ['', Util._log_level])[1];\n }\n Util.init_logging();\n};\n\n\nWebUtil.dirObj = function (obj, depth, parent) {\n \"use strict\";\n if (! depth) { depth = 2; }\n if (! parent) { parent = \"\"; }\n\n // Print the properties of the passed-in object\n var msg = \"\";\n for (var i in obj) {\n if ((depth > 1) && (typeof obj[i] === \"object\")) {\n // Recurse attributes that are objects\n msg += WebUtil.dirObj(obj[i], depth - 1, parent + \".\" + i);\n } else {\n //val = new String(obj[i]).replace(\"\\n\", \" \");\n var val = \"\";\n if (typeof(obj[i]) === \"undefined\") {\n val = \"undefined\";\n } else {\n val = obj[i].toString().replace(\"\\n\", \" \");\n }\n if (val.length > 30) {\n val = val.substr(0, 30) + \"...\";\n }\n msg += parent + \".\" + i + \": \" + val + \"\\n\";\n }\n }\n return msg;\n};\n\n// Read a query string variable\nWebUtil.getQueryVar = function (name, defVal) {\n \"use strict\";\n var re = new RegExp('.*[?&]' + name + '=([^&#]*)'),\n match = document.location.href.match(re);\n if (typeof defVal === 'undefined') { defVal = null; }\n if (match) {\n return decodeURIComponent(match[1]);\n } else {\n return defVal;\n }\n};\n\n\n/*\n * Cookie handling. Dervied from: http://www.quirksmode.org/js/cookies.html\n */\n\n// No days means only for this browser session\nWebUtil.createCookie = function (name, value, days) {\n \"use strict\";\n var date, expires;\n if (days) {\n date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toGMTString();\n } else {\n expires = \"\";\n }\n\n var secure;\n if (document.location.protocol === \"https:\") {\n secure = \"; secure\";\n } else {\n secure = \"\";\n }\n document.cookie = name + \"=\" + value + expires + \"; path=/\" + secure;\n};\n\nWebUtil.readCookie = function (name, defaultValue) {\n \"use strict\";\n var nameEQ = name + \"=\",\n ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i += 1) {\n var c = ca[i];\n while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }\n if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); }\n }\n return (typeof defaultValue !== 'undefined') ? defaultValue : null;\n};\n\nWebUtil.eraseCookie = function (name) {\n \"use strict\";\n WebUtil.createCookie(name, \"\", -1);\n};\n\n/*\n * Setting handling.\n */\n\nWebUtil.initSettings = function (callback /*, ...callbackArgs */) {\n \"use strict\";\n var callbackArgs = Array.prototype.slice.call(arguments, 1);\n if (window.chrome && window.chrome.storage) {\n window.chrome.storage.sync.get(function (cfg) {\n WebUtil.settings = cfg;\n console.log(WebUtil.settings);\n if (callback) {\n callback.apply(this, callbackArgs);\n }\n });\n } else {\n // No-op\n if (callback) {\n callback.apply(this, callbackArgs);\n }\n }\n};\n\n// No days means only for this browser session\nWebUtil.writeSetting = function (name, value) {\n \"use strict\";\n if (window.chrome && window.chrome.storage) {\n //console.log(\"writeSetting:\", name, value);\n if (WebUtil.settings[name] !== value) {\n WebUtil.settings[name] = value;\n window.chrome.storage.sync.set(WebUtil.settings);\n }\n } else {\n localStorage.setItem(name, value);\n }\n};\n\nWebUtil.readSetting = function (name, defaultValue) {\n \"use strict\";\n var value;\n if (window.chrome && window.chrome.storage) {\n value = WebUtil.settings[name];\n } else {\n value = localStorage.getItem(name);\n }\n if (typeof value === \"undefined\") {\n value = null;\n }\n if (value === null && typeof defaultValue !== undefined) {\n return defaultValue;\n } else {\n return value;\n }\n};\n\nWebUtil.eraseSetting = function (name) {\n \"use strict\";\n if (window.chrome && window.chrome.storage) {\n window.chrome.storage.sync.remove(name);\n delete WebUtil.settings[name];\n } else {\n localStorage.removeItem(name);\n }\n};\n\n/*\n * Alternate stylesheet selection\n */\nWebUtil.getStylesheets = function () {\n \"use strict\";\n var links = document.getElementsByTagName(\"link\");\n var sheets = [];\n\n for (var i = 0; i < links.length; i += 1) {\n if (links[i].title &&\n links[i].rel.toUpperCase().indexOf(\"STYLESHEET\") > -1) {\n sheets.push(links[i]);\n }\n }\n return sheets;\n};\n\n// No sheet means try and use value from cookie, null sheet used to\n// clear all alternates.\nWebUtil.selectStylesheet = function (sheet) {\n \"use strict\";\n if (typeof sheet === 'undefined') {\n sheet = 'default';\n }\n\n var sheets = WebUtil.getStylesheets();\n for (var i = 0; i < sheets.length; i += 1) {\n var link = sheets[i];\n if (link.title === sheet) {\n Util.Debug(\"Using stylesheet \" + sheet);\n link.disabled = false;\n } else {\n //Util.Debug(\"Skipping stylesheet \" + link.title);\n link.disabled = true;\n }\n }\n return sheet;\n};\n\ndefine(\"vnc-webutil\", [\"vnc-util\"], function(){});\n\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\n// From: http://hg.mozilla.org/mozilla-central/raw-file/ec10630b1a54/js/src/devtools/jint/sunspider/string-base64.js\n\n/*jslint white: false */\n/*global console */\n\nvar Base64 = {\n /* Convert data (an array of integers) to a Base64 string. */\n toBase64Table : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split(''),\n base64Pad : '=',\n\n encode: function (data) {\n \"use strict\";\n var result = '';\n var toBase64Table = Base64.toBase64Table;\n var length = data.length;\n var lengthpad = (length % 3);\n // Convert every three bytes to 4 ascii characters.\n\n for (var i = 0; i < (length - 2); i += 3) {\n result += toBase64Table[data[i] >> 2];\n result += toBase64Table[((data[i] & 0x03) << 4) + (data[i + 1] >> 4)];\n result += toBase64Table[((data[i + 1] & 0x0f) << 2) + (data[i + 2] >> 6)];\n result += toBase64Table[data[i + 2] & 0x3f];\n }\n\n // Convert the remaining 1 or 2 bytes, pad out to 4 characters.\n var j = 0;\n if (lengthpad === 2) {\n j = length - lengthpad;\n result += toBase64Table[data[j] >> 2];\n result += toBase64Table[((data[j] & 0x03) << 4) + (data[j + 1] >> 4)];\n result += toBase64Table[(data[j + 1] & 0x0f) << 2];\n result += toBase64Table[64];\n } else if (lengthpad === 1) {\n j = length - lengthpad;\n result += toBase64Table[data[j] >> 2];\n result += toBase64Table[(data[j] & 0x03) << 4];\n result += toBase64Table[64];\n result += toBase64Table[64];\n }\n\n return result;\n },\n\n /* Convert Base64 data to a string */\n /* jshint -W013 */\n toBinaryTable : [\n -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,\n -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,\n 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,\n -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,\n 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,\n -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,\n 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1\n ],\n /* jshint +W013 */\n\n decode: function (data, offset) {\n \"use strict\";\n offset = typeof(offset) !== 'undefined' ? offset : 0;\n var toBinaryTable = Base64.toBinaryTable;\n var base64Pad = Base64.base64Pad;\n var result, result_length;\n var leftbits = 0; // number of bits decoded, but yet to be appended\n var leftdata = 0; // bits decoded, but yet to be appended\n var data_length = data.indexOf('=') - offset;\n\n if (data_length < 0) { data_length = data.length - offset; }\n\n /* Every four characters is 3 resulting numbers */\n result_length = (data_length >> 2) * 3 + Math.floor((data_length % 4) / 1.5);\n result = new Array(result_length);\n\n // Convert one by one.\n for (var idx = 0, i = offset; i < data.length; i++) {\n var c = toBinaryTable[data.charCodeAt(i) & 0x7f];\n var padding = (data.charAt(i) === base64Pad);\n // Skip illegal characters and whitespace\n if (c === -1) {\n console.error(\"Illegal character code \" + data.charCodeAt(i) + \" at position \" + i);\n continue;\n }\n \n // Collect data into leftdata, update bitcount\n leftdata = (leftdata << 6) | c;\n leftbits += 6;\n\n // If we have 8 or more bits, append 8 bits to the result\n if (leftbits >= 8) {\n leftbits -= 8;\n // Append if not padding.\n if (!padding) {\n result[idx++] = (leftdata >> leftbits) & 0xff;\n }\n leftdata &= (1 << leftbits) - 1;\n }\n }\n\n // If there are any bits left, the base64 string was corrupted\n if (leftbits) {\n err = new Error('Corrupted base64 string');\n err.name = 'Base64-Error';\n throw err;\n }\n\n return result;\n }\n}; /* End of Base64 namespace */\n;\ndefine(\"vnc-base64\", [\"vnc-util\"], function(){});\n\n","// This file describes mappings from Unicode codepoints to the keysym values\n// (and optionally, key names) expected by the RFB protocol\n// How this file was generated:\n// node /Users/jalf/dev/mi/novnc/utils/parse.js /opt/X11/include/X11/keysymdef.h\nvar keysyms = (function(){\n \"use strict\";\n var keynames = null;\n var codepoints = {\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"37\":37,\"38\":38,\"39\":39,\"40\":40,\"41\":41,\"42\":42,\"43\":43,\"44\":44,\"45\":45,\"46\":46,\"47\":47,\"48\":48,\"49\":49,\"50\":50,\"51\":51,\"52\":52,\"53\":53,\"54\":54,\"55\":55,\"56\":56,\"57\":57,\"58\":58,\"59\":59,\"60\":60,\"61\":61,\"62\":62,\"63\":63,\"64\":64,\"65\":65,\"66\":66,\"67\":67,\"68\":68,\"69\":69,\"70\":70,\"71\":71,\"72\":72,\"73\":73,\"74\":74,\"75\":75,\"76\":76,\"77\":77,\"78\":78,\"79\":79,\"80\":80,\"81\":81,\"82\":82,\"83\":83,\"84\":84,\"85\":85,\"86\":86,\"87\":87,\"88\":88,\"89\":89,\"90\":90,\"91\":91,\"92\":92,\"93\":93,\"94\":94,\"95\":95,\"96\":96,\"97\":97,\"98\":98,\"99\":99,\"100\":100,\"101\":101,\"102\":102,\"103\":103,\"104\":104,\"105\":105,\"106\":106,\"107\":107,\"108\":108,\"109\":109,\"110\":110,\"111\":111,\"112\":112,\"113\":113,\"114\":114,\"115\":115,\"116\":116,\"117\":117,\"118\":118,\"119\":119,\"120\":120,\"121\":121,\"122\":122,\"123\":123,\"124\":124,\"125\":125,\"126\":126,\"160\":160,\"161\":161,\"162\":162,\"163\":163,\"164\":164,\"165\":165,\"166\":166,\"167\":167,\"168\":168,\"169\":169,\"170\":170,\"171\":171,\"172\":172,\"173\":173,\"174\":174,\"175\":175,\"176\":176,\"177\":177,\"178\":178,\"179\":179,\"180\":180,\"181\":181,\"182\":182,\"183\":183,\"184\":184,\"185\":185,\"186\":186,\"187\":187,\"188\":188,\"189\":189,\"190\":190,\"191\":191,\"192\":192,\"193\":193,\"194\":194,\"195\":195,\"196\":196,\"197\":197,\"198\":198,\"199\":199,\"200\":200,\"201\":201,\"202\":202,\"203\":203,\"204\":204,\"205\":205,\"206\":206,\"207\":207,\"208\":208,\"209\":209,\"210\":210,\"211\":211,\"212\":212,\"213\":213,\"214\":214,\"215\":215,\"216\":216,\"217\":217,\"218\":218,\"219\":219,\"220\":220,\"221\":221,\"222\":222,\"223\":223,\"224\":224,\"225\":225,\"226\":226,\"227\":227,\"228\":228,\"229\":229,\"230\":230,\"231\":231,\"232\":232,\"233\":233,\"234\":234,\"235\":235,\"236\":236,\"237\":237,\"238\":238,\"239\":239,\"240\":240,\"241\":241,\"242\":242,\"243\":243,\"244\":244,\"245\":245,\"246\":246,\"247\":247,\"248\":248,\"249\":249,\"250\":250,\"251\":251,\"252\":252,\"253\":253,\"254\":254,\"255\":255,\"256\":960,\"257\":992,\"258\":451,\"259\":483,\"260\":417,\"261\":433,\"262\":454,\"263\":486,\"264\":710,\"265\":742,\"266\":709,\"267\":741,\"268\":456,\"269\":488,\"270\":463,\"271\":495,\"272\":464,\"273\":496,\"274\":938,\"275\":954,\"278\":972,\"279\":1004,\"280\":458,\"281\":490,\"282\":460,\"283\":492,\"284\":728,\"285\":760,\"286\":683,\"287\":699,\"288\":725,\"289\":757,\"290\":939,\"291\":955,\"292\":678,\"293\":694,\"294\":673,\"295\":689,\"296\":933,\"297\":949,\"298\":975,\"299\":1007,\"300\":16777516,\"301\":16777517,\"302\":967,\"303\":999,\"304\":681,\"305\":697,\"308\":684,\"309\":700,\"310\":979,\"311\":1011,\"312\":930,\"313\":453,\"314\":485,\"315\":934,\"316\":950,\"317\":421,\"318\":437,\"321\":419,\"322\":435,\"323\":465,\"324\":497,\"325\":977,\"326\":1009,\"327\":466,\"328\":498,\"330\":957,\"331\":959,\"332\":978,\"333\":1010,\"336\":469,\"337\":501,\"338\":5052,\"339\":5053,\"340\":448,\"341\":480,\"342\":931,\"343\":947,\"344\":472,\"345\":504,\"346\":422,\"347\":438,\"348\":734,\"349\":766,\"350\":426,\"351\":442,\"352\":425,\"353\":441,\"354\":478,\"355\":510,\"356\":427,\"357\":443,\"358\":940,\"359\":956,\"360\":989,\"361\":1021,\"362\":990,\"363\":1022,\"364\":733,\"365\":765,\"366\":473,\"367\":505,\"368\":475,\"369\":507,\"370\":985,\"371\":1017,\"372\":16777588,\"373\":16777589,\"374\":16777590,\"375\":16777591,\"376\":5054,\"377\":428,\"378\":444,\"379\":431,\"380\":447,\"381\":430,\"382\":446,\"399\":16777615,\"402\":2294,\"415\":16777631,\"416\":16777632,\"417\":16777633,\"431\":16777647,\"432\":16777648,\"437\":16777653,\"438\":16777654,\"439\":16777655,\"466\":16777681,\"486\":16777702,\"487\":16777703,\"601\":16777817,\"629\":16777845,\"658\":16777874,\"711\":439,\"728\":418,\"729\":511,\"731\":434,\"733\":445,\"901\":1966,\"902\":1953,\"904\":1954,\"905\":1955,\"906\":1956,\"908\":1959,\"910\":1960,\"911\":1963,\"912\":1974,\"913\":1985,\"914\":1986,\"915\":1987,\"916\":1988,\"917\":1989,\"918\":1990,\"919\":1991,\"920\":1992,\"921\":1993,\"922\":1994,\"923\":1995,\"924\":1996,\"925\":1997,\"926\":1998,\"927\":1999,\"928\":2000,\"929\":2001,\"931\":2002,\"932\":2004,\"933\":2005,\"934\":2006,\"935\":2007,\"936\":2008,\"937\":2009,\"938\":1957,\"939\":1961,\"940\":1969,\"941\":1970,\"942\":1971,\"943\":1972,\"944\":1978,\"945\":2017,\"946\":2018,\"947\":2019,\"948\":2020,\"949\":2021,\"950\":2022,\"951\":2023,\"952\":2024,\"953\":2025,\"954\":2026,\"955\":2027,\"956\":2028,\"957\":2029,\"958\":2030,\"959\":2031,\"960\":2032,\"961\":2033,\"962\":2035,\"963\":2034,\"964\":2036,\"965\":2037,\"966\":2038,\"967\":2039,\"968\":2040,\"969\":2041,\"970\":1973,\"971\":1977,\"972\":1975,\"973\":1976,\"974\":1979,\"1025\":1715,\"1026\":1713,\"1027\":1714,\"1028\":1716,\"1029\":1717,\"1030\":1718,\"1031\":1719,\"1032\":1720,\"1033\":1721,\"1034\":1722,\"1035\":1723,\"1036\":1724,\"1038\":1726,\"1039\":1727,\"1040\":1761,\"1041\":1762,\"1042\":1783,\"1043\":1767,\"1044\":1764,\"1045\":1765,\"1046\":1782,\"1047\":1786,\"1048\":1769,\"1049\":1770,\"1050\":1771,\"1051\":1772,\"1052\":1773,\"1053\":1774,\"1054\":1775,\"1055\":1776,\"1056\":1778,\"1057\":1779,\"1058\":1780,\"1059\":1781,\"1060\":1766,\"1061\":1768,\"1062\":1763,\"1063\":1790,\"1064\":1787,\"1065\":1789,\"1066\":1791,\"1067\":1785,\"1068\":1784,\"1069\":1788,\"1070\":1760,\"1071\":1777,\"1072\":1729,\"1073\":1730,\"1074\":1751,\"1075\":1735,\"1076\":1732,\"1077\":1733,\"1078\":1750,\"1079\":1754,\"1080\":1737,\"1081\":1738,\"1082\":1739,\"1083\":1740,\"1084\":1741,\"1085\":1742,\"1086\":1743,\"1087\":1744,\"1088\":1746,\"1089\":1747,\"1090\":1748,\"1091\":1749,\"1092\":1734,\"1093\":1736,\"1094\":1731,\"1095\":1758,\"1096\":1755,\"1097\":1757,\"1098\":1759,\"1099\":1753,\"1100\":1752,\"1101\":1756,\"1102\":1728,\"1103\":1745,\"1105\":1699,\"1106\":1697,\"1107\":1698,\"1108\":1700,\"1109\":1701,\"1110\":1702,\"1111\":1703,\"1112\":1704,\"1113\":1705,\"1114\":1706,\"1115\":1707,\"1116\":1708,\"1118\":1710,\"1119\":1711,\"1168\":1725,\"1169\":1709,\"1170\":16778386,\"1171\":16778387,\"1174\":16778390,\"1175\":16778391,\"1178\":16778394,\"1179\":16778395,\"1180\":16778396,\"1181\":16778397,\"1186\":16778402,\"1187\":16778403,\"1198\":16778414,\"1199\":16778415,\"1200\":16778416,\"1201\":16778417,\"1202\":16778418,\"1203\":16778419,\"1206\":16778422,\"1207\":16778423,\"1208\":16778424,\"1209\":16778425,\"1210\":16778426,\"1211\":16778427,\"1240\":16778456,\"1241\":16778457,\"1250\":16778466,\"1251\":16778467,\"1256\":16778472,\"1257\":16778473,\"1262\":16778478,\"1263\":16778479,\"1329\":16778545,\"1330\":16778546,\"1331\":16778547,\"1332\":16778548,\"1333\":16778549,\"1334\":16778550,\"1335\":16778551,\"1336\":16778552,\"1337\":16778553,\"1338\":16778554,\"1339\":16778555,\"1340\":16778556,\"1341\":16778557,\"1342\":16778558,\"1343\":16778559,\"1344\":16778560,\"1345\":16778561,\"1346\":16778562,\"1347\":16778563,\"1348\":16778564,\"1349\":16778565,\"1350\":16778566,\"1351\":16778567,\"1352\":16778568,\"1353\":16778569,\"1354\":16778570,\"1355\":16778571,\"1356\":16778572,\"1357\":16778573,\"1358\":16778574,\"1359\":16778575,\"1360\":16778576,\"1361\":16778577,\"1362\":16778578,\"1363\":16778579,\"1364\":16778580,\"1365\":16778581,\"1366\":16778582,\"1370\":16778586,\"1371\":16778587,\"1372\":16778588,\"1373\":16778589,\"1374\":16778590,\"1377\":16778593,\"1378\":16778594,\"1379\":16778595,\"1380\":16778596,\"1381\":16778597,\"1382\":16778598,\"1383\":16778599,\"1384\":16778600,\"1385\":16778601,\"1386\":16778602,\"1387\":16778603,\"1388\":16778604,\"1389\":16778605,\"1390\":16778606,\"1391\":16778607,\"1392\":16778608,\"1393\":16778609,\"1394\":16778610,\"1395\":16778611,\"1396\":16778612,\"1397\":16778613,\"1398\":16778614,\"1399\":16778615,\"1400\":16778616,\"1401\":16778617,\"1402\":16778618,\"1403\":16778619,\"1404\":16778620,\"1405\":16778621,\"1406\":16778622,\"1407\":16778623,\"1408\":16778624,\"1409\":16778625,\"1410\":16778626,\"1411\":16778627,\"1412\":16778628,\"1413\":16778629,\"1414\":16778630,\"1415\":16778631,\"1417\":16778633,\"1418\":16778634,\"1488\":3296,\"1489\":3297,\"1490\":3298,\"1491\":3299,\"1492\":3300,\"1493\":3301,\"1494\":3302,\"1495\":3303,\"1496\":3304,\"1497\":3305,\"1498\":3306,\"1499\":3307,\"1500\":3308,\"1501\":3309,\"1502\":3310,\"1503\":3311,\"1504\":3312,\"1505\":3313,\"1506\":3314,\"1507\":3315,\"1508\":3316,\"1509\":3317,\"1510\":3318,\"1511\":3319,\"1512\":3320,\"1513\":3321,\"1514\":3322,\"1548\":1452,\"1563\":1467,\"1567\":1471,\"1569\":1473,\"1570\":1474,\"1571\":1475,\"1572\":1476,\"1573\":1477,\"1574\":1478,\"1575\":1479,\"1576\":1480,\"1577\":1481,\"1578\":1482,\"1579\":1483,\"1580\":1484,\"1581\":1485,\"1582\":1486,\"1583\":1487,\"1584\":1488,\"1585\":1489,\"1586\":1490,\"1587\":1491,\"1588\":1492,\"1589\":1493,\"1590\":1494,\"1591\":1495,\"1592\":1496,\"1593\":1497,\"1594\":1498,\"1600\":1504,\"1601\":1505,\"1602\":1506,\"1603\":1507,\"1604\":1508,\"1605\":1509,\"1606\":1510,\"1607\":1511,\"1608\":1512,\"1609\":1513,\"1610\":1514,\"1611\":1515,\"1612\":1516,\"1613\":1517,\"1614\":1518,\"1615\":1519,\"1616\":1520,\"1617\":1521,\"1618\":1522,\"1619\":16778835,\"1620\":16778836,\"1621\":16778837,\"1632\":16778848,\"1633\":16778849,\"1634\":16778850,\"1635\":16778851,\"1636\":16778852,\"1637\":16778853,\"1638\":16778854,\"1639\":16778855,\"1640\":16778856,\"1641\":16778857,\"1642\":16778858,\"1648\":16778864,\"1657\":16778873,\"1662\":16778878,\"1670\":16778886,\"1672\":16778888,\"1681\":16778897,\"1688\":16778904,\"1700\":16778916,\"1705\":16778921,\"1711\":16778927,\"1722\":16778938,\"1726\":16778942,\"1729\":16778945,\"1740\":16778956,\"1746\":16778962,\"1748\":16778964,\"1776\":16778992,\"1777\":16778993,\"1778\":16778994,\"1779\":16778995,\"1780\":16778996,\"1781\":16778997,\"1782\":16778998,\"1783\":16778999,\"1784\":16779000,\"1785\":16779001,\"3458\":16780674,\"3459\":16780675,\"3461\":16780677,\"3462\":16780678,\"3463\":16780679,\"3464\":16780680,\"3465\":16780681,\"3466\":16780682,\"3467\":16780683,\"3468\":16780684,\"3469\":16780685,\"3470\":16780686,\"3471\":16780687,\"3472\":16780688,\"3473\":16780689,\"3474\":16780690,\"3475\":16780691,\"3476\":16780692,\"3477\":16780693,\"3478\":16780694,\"3482\":16780698,\"3483\":16780699,\"3484\":16780700,\"3485\":16780701,\"3486\":16780702,\"3487\":16780703,\"3488\":16780704,\"3489\":16780705,\"3490\":16780706,\"3491\":16780707,\"3492\":16780708,\"3493\":16780709,\"3494\":16780710,\"3495\":16780711,\"3496\":16780712,\"3497\":16780713,\"3498\":16780714,\"3499\":16780715,\"3500\":16780716,\"3501\":16780717,\"3502\":16780718,\"3503\":16780719,\"3504\":16780720,\"3505\":16780721,\"3507\":16780723,\"3508\":16780724,\"3509\":16780725,\"3510\":16780726,\"3511\":16780727,\"3512\":16780728,\"3513\":16780729,\"3514\":16780730,\"3515\":16780731,\"3517\":16780733,\"3520\":16780736,\"3521\":16780737,\"3522\":16780738,\"3523\":16780739,\"3524\":16780740,\"3525\":16780741,\"3526\":16780742,\"3530\":16780746,\"3535\":16780751,\"3536\":16780752,\"3537\":16780753,\"3538\":16780754,\"3539\":16780755,\"3540\":16780756,\"3542\":16780758,\"3544\":16780760,\"3545\":16780761,\"3546\":16780762,\"3547\":16780763,\"3548\":16780764,\"3549\":16780765,\"3550\":16780766,\"3551\":16780767,\"3570\":16780786,\"3571\":16780787,\"3572\":16780788,\"3585\":3489,\"3586\":3490,\"3587\":3491,\"3588\":3492,\"3589\":3493,\"3590\":3494,\"3591\":3495,\"3592\":3496,\"3593\":3497,\"3594\":3498,\"3595\":3499,\"3596\":3500,\"3597\":3501,\"3598\":3502,\"3599\":3503,\"3600\":3504,\"3601\":3505,\"3602\":3506,\"3603\":3507,\"3604\":3508,\"3605\":3509,\"3606\":3510,\"3607\":3511,\"3608\":3512,\"3609\":3513,\"3610\":3514,\"3611\":3515,\"3612\":3516,\"3613\":3517,\"3614\":3518,\"3615\":3519,\"3616\":3520,\"3617\":3521,\"3618\":3522,\"3619\":3523,\"3620\":3524,\"3621\":3525,\"3622\":3526,\"3623\":3527,\"3624\":3528,\"3625\":3529,\"3626\":3530,\"3627\":3531,\"3628\":3532,\"3629\":3533,\"3630\":3534,\"3631\":3535,\"3632\":3536,\"3633\":3537,\"3634\":3538,\"3635\":3539,\"3636\":3540,\"3637\":3541,\"3638\":3542,\"3639\":3543,\"3640\":3544,\"3641\":3545,\"3642\":3546,\"3647\":3551,\"3648\":3552,\"3649\":3553,\"3650\":3554,\"3651\":3555,\"3652\":3556,\"3653\":3557,\"3654\":3558,\"3655\":3559,\"3656\":3560,\"3657\":3561,\"3658\":3562,\"3659\":3563,\"3660\":3564,\"3661\":3565,\"3664\":3568,\"3665\":3569,\"3666\":3570,\"3667\":3571,\"3668\":3572,\"3669\":3573,\"3670\":3574,\"3671\":3575,\"3672\":3576,\"3673\":3577,\"4304\":16781520,\"4305\":16781521,\"4306\":16781522,\"4307\":16781523,\"4308\":16781524,\"4309\":16781525,\"4310\":16781526,\"4311\":16781527,\"4312\":16781528,\"4313\":16781529,\"4314\":16781530,\"4315\":16781531,\"4316\":16781532,\"4317\":16781533,\"4318\":16781534,\"4319\":16781535,\"4320\":16781536,\"4321\":16781537,\"4322\":16781538,\"4323\":16781539,\"4324\":16781540,\"4325\":16781541,\"4326\":16781542,\"4327\":16781543,\"4328\":16781544,\"4329\":16781545,\"4330\":16781546,\"4331\":16781547,\"4332\":16781548,\"4333\":16781549,\"4334\":16781550,\"4335\":16781551,\"4336\":16781552,\"4337\":16781553,\"4338\":16781554,\"4339\":16781555,\"4340\":16781556,\"4341\":16781557,\"4342\":16781558,\"7682\":16784898,\"7683\":16784899,\"7690\":16784906,\"7691\":16784907,\"7710\":16784926,\"7711\":16784927,\"7734\":16784950,\"7735\":16784951,\"7744\":16784960,\"7745\":16784961,\"7766\":16784982,\"7767\":16784983,\"7776\":16784992,\"7777\":16784993,\"7786\":16785002,\"7787\":16785003,\"7808\":16785024,\"7809\":16785025,\"7810\":16785026,\"7811\":16785027,\"7812\":16785028,\"7813\":16785029,\"7818\":16785034,\"7819\":16785035,\"7840\":16785056,\"7841\":16785057,\"7842\":16785058,\"7843\":16785059,\"7844\":16785060,\"7845\":16785061,\"7846\":16785062,\"7847\":16785063,\"7848\":16785064,\"7849\":16785065,\"7850\":16785066,\"7851\":16785067,\"7852\":16785068,\"7853\":16785069,\"7854\":16785070,\"7855\":16785071,\"7856\":16785072,\"7857\":16785073,\"7858\":16785074,\"7859\":16785075,\"7860\":16785076,\"7861\":16785077,\"7862\":16785078,\"7863\":16785079,\"7864\":16785080,\"7865\":16785081,\"7866\":16785082,\"7867\":16785083,\"7868\":16785084,\"7869\":16785085,\"7870\":16785086,\"7871\":16785087,\"7872\":16785088,\"7873\":16785089,\"7874\":16785090,\"7875\":16785091,\"7876\":16785092,\"7877\":16785093,\"7878\":16785094,\"7879\":16785095,\"7880\":16785096,\"7881\":16785097,\"7882\":16785098,\"7883\":16785099,\"7884\":16785100,\"7885\":16785101,\"7886\":16785102,\"7887\":16785103,\"7888\":16785104,\"7889\":16785105,\"7890\":16785106,\"7891\":16785107,\"7892\":16785108,\"7893\":16785109,\"7894\":16785110,\"7895\":16785111,\"7896\":16785112,\"7897\":16785113,\"7898\":16785114,\"7899\":16785115,\"7900\":16785116,\"7901\":16785117,\"7902\":16785118,\"7903\":16785119,\"7904\":16785120,\"7905\":16785121,\"7906\":16785122,\"7907\":16785123,\"7908\":16785124,\"7909\":16785125,\"7910\":16785126,\"7911\":16785127,\"7912\":16785128,\"7913\":16785129,\"7914\":16785130,\"7915\":16785131,\"7916\":16785132,\"7917\":16785133,\"7918\":16785134,\"7919\":16785135,\"7920\":16785136,\"7921\":16785137,\"7922\":16785138,\"7923\":16785139,\"7924\":16785140,\"7925\":16785141,\"7926\":16785142,\"7927\":16785143,\"7928\":16785144,\"7929\":16785145,\"8194\":2722,\"8195\":2721,\"8196\":2723,\"8197\":2724,\"8199\":2725,\"8200\":2726,\"8201\":2727,\"8202\":2728,\"8210\":2747,\"8211\":2730,\"8212\":2729,\"8213\":1967,\"8215\":3295,\"8216\":2768,\"8217\":2769,\"8218\":2813,\"8220\":2770,\"8221\":2771,\"8222\":2814,\"8224\":2801,\"8225\":2802,\"8226\":2790,\"8229\":2735,\"8230\":2734,\"8240\":2773,\"8242\":2774,\"8243\":2775,\"8248\":2812,\"8254\":1150,\"8304\":16785520,\"8308\":16785524,\"8309\":16785525,\"8310\":16785526,\"8311\":16785527,\"8312\":16785528,\"8313\":16785529,\"8320\":16785536,\"8321\":16785537,\"8322\":16785538,\"8323\":16785539,\"8324\":16785540,\"8325\":16785541,\"8326\":16785542,\"8327\":16785543,\"8328\":16785544,\"8329\":16785545,\"8352\":16785568,\"8353\":16785569,\"8354\":16785570,\"8355\":16785571,\"8356\":16785572,\"8357\":16785573,\"8358\":16785574,\"8359\":16785575,\"8360\":16785576,\"8361\":3839,\"8362\":16785578,\"8363\":16785579,\"8364\":8364,\"8453\":2744,\"8470\":1712,\"8471\":2811,\"8478\":2772,\"8482\":2761,\"8531\":2736,\"8532\":2737,\"8533\":2738,\"8534\":2739,\"8535\":2740,\"8536\":2741,\"8537\":2742,\"8538\":2743,\"8539\":2755,\"8540\":2756,\"8541\":2757,\"8542\":2758,\"8592\":2299,\"8593\":2300,\"8594\":2301,\"8595\":2302,\"8658\":2254,\"8660\":2253,\"8706\":2287,\"8709\":16785925,\"8711\":2245,\"8712\":16785928,\"8713\":16785929,\"8715\":16785931,\"8728\":3018,\"8730\":2262,\"8731\":16785947,\"8732\":16785948,\"8733\":2241,\"8734\":2242,\"8743\":2270,\"8744\":2271,\"8745\":2268,\"8746\":2269,\"8747\":2239,\"8748\":16785964,\"8749\":16785965,\"8756\":2240,\"8757\":16785973,\"8764\":2248,\"8771\":2249,\"8773\":16785992,\"8775\":16785991,\"8800\":2237,\"8801\":2255,\"8802\":16786018,\"8803\":16786019,\"8804\":2236,\"8805\":2238,\"8834\":2266,\"8835\":2267,\"8866\":3068,\"8867\":3036,\"8868\":3010,\"8869\":3022,\"8968\":3027,\"8970\":3012,\"8981\":2810,\"8992\":2212,\"8993\":2213,\"9109\":3020,\"9115\":2219,\"9117\":2220,\"9118\":2221,\"9120\":2222,\"9121\":2215,\"9123\":2216,\"9124\":2217,\"9126\":2218,\"9128\":2223,\"9132\":2224,\"9143\":2209,\"9146\":2543,\"9147\":2544,\"9148\":2546,\"9149\":2547,\"9225\":2530,\"9226\":2533,\"9227\":2537,\"9228\":2531,\"9229\":2532,\"9251\":2732,\"9252\":2536,\"9472\":2211,\"9474\":2214,\"9484\":2210,\"9488\":2539,\"9492\":2541,\"9496\":2538,\"9500\":2548,\"9508\":2549,\"9516\":2551,\"9524\":2550,\"9532\":2542,\"9618\":2529,\"9642\":2791,\"9643\":2785,\"9644\":2779,\"9645\":2786,\"9646\":2783,\"9647\":2767,\"9650\":2792,\"9651\":2787,\"9654\":2781,\"9655\":2765,\"9660\":2793,\"9661\":2788,\"9664\":2780,\"9665\":2764,\"9670\":2528,\"9675\":2766,\"9679\":2782,\"9702\":2784,\"9734\":2789,\"9742\":2809,\"9747\":2762,\"9756\":2794,\"9758\":2795,\"9792\":2808,\"9794\":2807,\"9827\":2796,\"9829\":2798,\"9830\":2797,\"9837\":2806,\"9839\":2805,\"10003\":2803,\"10007\":2804,\"10013\":2777,\"10016\":2800,\"10216\":2748,\"10217\":2750,\"10240\":16787456,\"10241\":16787457,\"10242\":16787458,\"10243\":16787459,\"10244\":16787460,\"10245\":16787461,\"10246\":16787462,\"10247\":16787463,\"10248\":16787464,\"10249\":16787465,\"10250\":16787466,\"10251\":16787467,\"10252\":16787468,\"10253\":16787469,\"10254\":16787470,\"10255\":16787471,\"10256\":16787472,\"10257\":16787473,\"10258\":16787474,\"10259\":16787475,\"10260\":16787476,\"10261\":16787477,\"10262\":16787478,\"10263\":16787479,\"10264\":16787480,\"10265\":16787481,\"10266\":16787482,\"10267\":16787483,\"10268\":16787484,\"10269\":16787485,\"10270\":16787486,\"10271\":16787487,\"10272\":16787488,\"10273\":16787489,\"10274\":16787490,\"10275\":16787491,\"10276\":16787492,\"10277\":16787493,\"10278\":16787494,\"10279\":16787495,\"10280\":16787496,\"10281\":16787497,\"10282\":16787498,\"10283\":16787499,\"10284\":16787500,\"10285\":16787501,\"10286\":16787502,\"10287\":16787503,\"10288\":16787504,\"10289\":16787505,\"10290\":16787506,\"10291\":16787507,\"10292\":16787508,\"10293\":16787509,\"10294\":16787510,\"10295\":16787511,\"10296\":16787512,\"10297\":16787513,\"10298\":16787514,\"10299\":16787515,\"10300\":16787516,\"10301\":16787517,\"10302\":16787518,\"10303\":16787519,\"10304\":16787520,\"10305\":16787521,\"10306\":16787522,\"10307\":16787523,\"10308\":16787524,\"10309\":16787525,\"10310\":16787526,\"10311\":16787527,\"10312\":16787528,\"10313\":16787529,\"10314\":16787530,\"10315\":16787531,\"10316\":16787532,\"10317\":16787533,\"10318\":16787534,\"10319\":16787535,\"10320\":16787536,\"10321\":16787537,\"10322\":16787538,\"10323\":16787539,\"10324\":16787540,\"10325\":16787541,\"10326\":16787542,\"10327\":16787543,\"10328\":16787544,\"10329\":16787545,\"10330\":16787546,\"10331\":16787547,\"10332\":16787548,\"10333\":16787549,\"10334\":16787550,\"10335\":16787551,\"10336\":16787552,\"10337\":16787553,\"10338\":16787554,\"10339\":16787555,\"10340\":16787556,\"10341\":16787557,\"10342\":16787558,\"10343\":16787559,\"10344\":16787560,\"10345\":16787561,\"10346\":16787562,\"10347\":16787563,\"10348\":16787564,\"10349\":16787565,\"10350\":16787566,\"10351\":16787567,\"10352\":16787568,\"10353\":16787569,\"10354\":16787570,\"10355\":16787571,\"10356\":16787572,\"10357\":16787573,\"10358\":16787574,\"10359\":16787575,\"10360\":16787576,\"10361\":16787577,\"10362\":16787578,\"10363\":16787579,\"10364\":16787580,\"10365\":16787581,\"10366\":16787582,\"10367\":16787583,\"10368\":16787584,\"10369\":16787585,\"10370\":16787586,\"10371\":16787587,\"10372\":16787588,\"10373\":16787589,\"10374\":16787590,\"10375\":16787591,\"10376\":16787592,\"10377\":16787593,\"10378\":16787594,\"10379\":16787595,\"10380\":16787596,\"10381\":16787597,\"10382\":16787598,\"10383\":16787599,\"10384\":16787600,\"10385\":16787601,\"10386\":16787602,\"10387\":16787603,\"10388\":16787604,\"10389\":16787605,\"10390\":16787606,\"10391\":16787607,\"10392\":16787608,\"10393\":16787609,\"10394\":16787610,\"10395\":16787611,\"10396\":16787612,\"10397\":16787613,\"10398\":16787614,\"10399\":16787615,\"10400\":16787616,\"10401\":16787617,\"10402\":16787618,\"10403\":16787619,\"10404\":16787620,\"10405\":16787621,\"10406\":16787622,\"10407\":16787623,\"10408\":16787624,\"10409\":16787625,\"10410\":16787626,\"10411\":16787627,\"10412\":16787628,\"10413\":16787629,\"10414\":16787630,\"10415\":16787631,\"10416\":16787632,\"10417\":16787633,\"10418\":16787634,\"10419\":16787635,\"10420\":16787636,\"10421\":16787637,\"10422\":16787638,\"10423\":16787639,\"10424\":16787640,\"10425\":16787641,\"10426\":16787642,\"10427\":16787643,\"10428\":16787644,\"10429\":16787645,\"10430\":16787646,\"10431\":16787647,\"10432\":16787648,\"10433\":16787649,\"10434\":16787650,\"10435\":16787651,\"10436\":16787652,\"10437\":16787653,\"10438\":16787654,\"10439\":16787655,\"10440\":16787656,\"10441\":16787657,\"10442\":16787658,\"10443\":16787659,\"10444\":16787660,\"10445\":16787661,\"10446\":16787662,\"10447\":16787663,\"10448\":16787664,\"10449\":16787665,\"10450\":16787666,\"10451\":16787667,\"10452\":16787668,\"10453\":16787669,\"10454\":16787670,\"10455\":16787671,\"10456\":16787672,\"10457\":16787673,\"10458\":16787674,\"10459\":16787675,\"10460\":16787676,\"10461\":16787677,\"10462\":16787678,\"10463\":16787679,\"10464\":16787680,\"10465\":16787681,\"10466\":16787682,\"10467\":16787683,\"10468\":16787684,\"10469\":16787685,\"10470\":16787686,\"10471\":16787687,\"10472\":16787688,\"10473\":16787689,\"10474\":16787690,\"10475\":16787691,\"10476\":16787692,\"10477\":16787693,\"10478\":16787694,\"10479\":16787695,\"10480\":16787696,\"10481\":16787697,\"10482\":16787698,\"10483\":16787699,\"10484\":16787700,\"10485\":16787701,\"10486\":16787702,\"10487\":16787703,\"10488\":16787704,\"10489\":16787705,\"10490\":16787706,\"10491\":16787707,\"10492\":16787708,\"10493\":16787709,\"10494\":16787710,\"10495\":16787711,\"12289\":1188,\"12290\":1185,\"12300\":1186,\"12301\":1187,\"12443\":1246,\"12444\":1247,\"12449\":1191,\"12450\":1201,\"12451\":1192,\"12452\":1202,\"12453\":1193,\"12454\":1203,\"12455\":1194,\"12456\":1204,\"12457\":1195,\"12458\":1205,\"12459\":1206,\"12461\":1207,\"12463\":1208,\"12465\":1209,\"12467\":1210,\"12469\":1211,\"12471\":1212,\"12473\":1213,\"12475\":1214,\"12477\":1215,\"12479\":1216,\"12481\":1217,\"12483\":1199,\"12484\":1218,\"12486\":1219,\"12488\":1220,\"12490\":1221,\"12491\":1222,\"12492\":1223,\"12493\":1224,\"12494\":1225,\"12495\":1226,\"12498\":1227,\"12501\":1228,\"12504\":1229,\"12507\":1230,\"12510\":1231,\"12511\":1232,\"12512\":1233,\"12513\":1234,\"12514\":1235,\"12515\":1196,\"12516\":1236,\"12517\":1197,\"12518\":1237,\"12519\":1198,\"12520\":1238,\"12521\":1239,\"12522\":1240,\"12523\":1241,\"12524\":1242,\"12525\":1243,\"12527\":1244,\"12530\":1190,\"12531\":1245,\"12539\":1189,\"12540\":1200};\n\n function lookup(k) { return k ? {keysym: k, keyname: keynames ? keynames[k] : k} : undefined; }\n return {\n fromUnicode : function(u) { return lookup(codepoints[u]); },\n lookup : lookup\n };\n})();\n\ndefine(\"vnc-keysymdef\", [\"vnc-util\"], function(){});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Copyright (C) 2013 Samuel Mannehed for Cendio AB\n * Licensed under MPL 2.0 or any later version (see LICENSE.txt)\n */\n\n/*jslint browser: true, white: false */\n/*global window, Util */\n\nvar Keyboard, Mouse;\n\n(function () {\n \"use strict\";\n\n //\n // Keyboard event handler\n //\n\n Keyboard = function (defaults) {\n this._keyDownList = []; // List of depressed keys\n // (even if they are happy)\n\n Util.set_defaults(this, defaults, {\n 'target': document,\n 'focused': true\n });\n\n // create the keyboard handler\n this._handler = new KeyEventDecoder(kbdUtil.ModifierSync(),\n VerifyCharModifier( /* jshint newcap: false */\n TrackKeyState(\n EscapeModifiers(this._handleRfbEvent.bind(this))\n )\n )\n ); /* jshint newcap: true */\n\n // keep these here so we can refer to them later\n this._eventHandlers = {\n 'keyup': this._handleKeyUp.bind(this),\n 'keydown': this._handleKeyDown.bind(this),\n 'keypress': this._handleKeyPress.bind(this),\n 'blur': this._allKeysUp.bind(this)\n };\n };\n\n Keyboard.prototype = {\n // private methods\n\n _handleRfbEvent: function (e) {\n if (this._onKeyPress) {\n Util.Debug(\"onKeyPress \" + (e.type == 'keydown' ? \"down\" : \"up\") +\n \", keysym: \" + e.keysym.keysym + \"(\" + e.keysym.keyname + \")\");\n this._onKeyPress(e.keysym.keysym, e.type == 'keydown');\n }\n },\n\n _handleKeyDown: function (e) {\n if (!this._focused) { return true; }\n\n if (this._handler.keydown(e)) {\n // Suppress bubbling/default actions\n Util.stopEvent(e);\n return false;\n } else {\n // Allow the event to bubble and become a keyPress event which\n // will have the character code translated\n return true;\n }\n },\n\n _handleKeyPress: function (e) {\n if (!this._focused) { return true; }\n\n if (this._handler.keypress(e)) {\n // Suppress bubbling/default actions\n Util.stopEvent(e);\n return false;\n } else {\n // Allow the event to bubble and become a keyPress event which\n // will have the character code translated\n return true;\n }\n },\n\n _handleKeyUp: function (e) {\n if (!this._focused) { return true; }\n\n if (this._handler.keyup(e)) {\n // Suppress bubbling/default actions\n Util.stopEvent(e);\n return false;\n } else {\n // Allow the event to bubble and become a keyPress event which\n // will have the character code translated\n return true;\n }\n },\n\n _allKeysUp: function () {\n Util.Debug(\">> Keyboard.allKeysUp\");\n this._handler.releaseAll();\n Util.Debug(\"<< Keyboard.allKeysUp\");\n },\n\n // Public methods\n\n grab: function () {\n //Util.Debug(\">> Keyboard.grab\");\n var c = this._target;\n\n Util.addEvent(c, 'keydown', this._eventHandlers.keydown);\n Util.addEvent(c, 'keyup', this._eventHandlers.keyup);\n Util.addEvent(c, 'keypress', this._eventHandlers.keypress);\n\n // Release (key up) if window loses focus\n Util.addEvent(window, 'blur', this._eventHandlers.blur);\n\n //Util.Debug(\"<< Keyboard.grab\");\n },\n\n ungrab: function () {\n //Util.Debug(\">> Keyboard.ungrab\");\n var c = this._target;\n\n Util.removeEvent(c, 'keydown', this._eventHandlers.keydown);\n Util.removeEvent(c, 'keyup', this._eventHandlers.keyup);\n Util.removeEvent(c, 'keypress', this._eventHandlers.keypress);\n Util.removeEvent(window, 'blur', this._eventHandlers.blur);\n\n // Release (key up) all keys that are in a down state\n this._allKeysUp();\n\n //Util.Debug(\">> Keyboard.ungrab\");\n },\n\n sync: function (e) {\n this._handler.syncModifiers(e);\n }\n };\n\n Util.make_properties(Keyboard, [\n ['target', 'wo', 'dom'], // DOM element that captures keyboard input\n ['focused', 'rw', 'bool'], // Capture and send key events\n\n ['onKeyPress', 'rw', 'func'] // Handler for key press/release\n ]);\n\n //\n // Mouse event handler\n //\n\n Mouse = function (defaults) {\n this._mouseCaptured = false;\n\n this._doubleClickTimer = null;\n this._lastTouchPos = null;\n\n // Configuration attributes\n Util.set_defaults(this, defaults, {\n 'target': document,\n 'focused': true,\n 'scale': 1.0,\n 'touchButton': 1\n });\n\n this._eventHandlers = {\n 'mousedown': this._handleMouseDown.bind(this),\n 'mouseup': this._handleMouseUp.bind(this),\n 'mousemove': this._handleMouseMove.bind(this),\n 'mousewheel': this._handleMouseWheel.bind(this),\n 'mousedisable': this._handleMouseDisable.bind(this)\n };\n };\n\n Mouse.prototype = {\n // private methods\n _captureMouse: function () {\n // capturing the mouse ensures we get the mouseup event\n if (this._target.setCapture) {\n this._target.setCapture();\n }\n\n // some browsers give us mouseup events regardless,\n // so if we never captured the mouse, we can disregard the event\n this._mouseCaptured = true;\n },\n\n _releaseMouse: function () {\n if (this._target.releaseCapture) {\n this._target.releaseCapture();\n }\n this._mouseCaptured = false;\n },\n\n _resetDoubleClickTimer: function () {\n this._doubleClickTimer = null;\n },\n\n _handleMouseButton: function (e, down) {\n if (!this._focused) { return true; }\n\n if (this._notify) {\n this._notify(e);\n }\n\n var evt = (e ? e : window.event);\n var pos = Util.getEventPosition(e, this._target, this._scale);\n\n var bmask;\n if (e.touches || e.changedTouches) {\n // Touch device\n\n // When two touches occur within 500 ms of each other and are\n // closer than 20 pixels together a double click is triggered.\n if (down == 1) {\n if (this._doubleClickTimer === null) {\n this._lastTouchPos = pos;\n } else {\n clearTimeout(this._doubleClickTimer);\n\n // When the distance between the two touches is small enough\n // force the position of the latter touch to the position of\n // the first.\n\n var xs = this._lastTouchPos.x - pos.x;\n var ys = this._lastTouchPos.y - pos.y;\n var d = Math.sqrt((xs * xs) + (ys * ys));\n\n // The goal is to trigger on a certain physical width, the\n // devicePixelRatio brings us a bit closer but is not optimal.\n if (d < 20 * window.devicePixelRatio) {\n pos = this._lastTouchPos;\n }\n }\n this._doubleClickTimer = setTimeout(this._resetDoubleClickTimer.bind(this), 500);\n }\n bmask = this._touchButton;\n // If bmask is set\n } else if (evt.which) {\n /* everything except IE */\n bmask = 1 << evt.button;\n } else {\n /* IE including 9 */\n bmask = (evt.button & 0x1) + // Left\n (evt.button & 0x2) * 2 + // Right\n (evt.button & 0x4) / 2; // Middle\n }\n\n if (this._onMouseButton) {\n Util.Debug(\"onMouseButton \" + (down ? \"down\" : \"up\") +\n \", x: \" + pos.x + \", y: \" + pos.y + \", bmask: \" + bmask);\n this._onMouseButton(pos.x, pos.y, down, bmask);\n }\n Util.stopEvent(e);\n return false;\n },\n\n _handleMouseDown: function (e) {\n this._captureMouse();\n this._handleMouseButton(e, 1);\n },\n\n _handleMouseUp: function (e) {\n if (!this._mouseCaptured) { return; }\n\n this._handleMouseButton(e, 0);\n this._releaseMouse();\n },\n\n _handleMouseWheel: function (e) {\n if (!this._focused) { return true; }\n\n if (this._notify) {\n this._notify(e);\n }\n\n var evt = (e ? e : window.event);\n var pos = Util.getEventPosition(e, this._target, this._scale);\n var wheelData = evt.detail ? evt.detail * -1 : evt.wheelDelta / 40;\n var bmask;\n if (wheelData > 0) {\n bmask = 1 << 3;\n } else {\n bmask = 1 << 4;\n }\n\n if (this._onMouseButton) {\n this._onMouseButton(pos.x, pos.y, 1, bmask);\n this._onMouseButton(pos.x, pos.y, 0, bmask);\n }\n Util.stopEvent(e);\n return false;\n },\n\n _handleMouseMove: function (e) {\n if (! this._focused) { return true; }\n\n if (this._notify) {\n this._notify(e);\n }\n\n var evt = (e ? e : window.event);\n var pos = Util.getEventPosition(e, this._target, this._scale);\n if (this._onMouseMove) {\n this._onMouseMove(pos.x, pos.y);\n }\n Util.stopEvent(e);\n return false;\n },\n\n _handleMouseDisable: function (e) {\n if (!this._focused) { return true; }\n\n var evt = (e ? e : window.event);\n var pos = Util.getEventPosition(e, this._target, this._scale);\n\n /* Stop propagation if inside canvas area */\n if ((pos.realx >= 0) && (pos.realy >= 0) &&\n (pos.realx < this._target.offsetWidth) &&\n (pos.realy < this._target.offsetHeight)) {\n //Util.Debug(\"mouse event disabled\");\n Util.stopEvent(e);\n return false;\n }\n\n return true;\n },\n\n\n // Public methods\n grab: function () {\n var c = this._target;\n\n if ('ontouchstart' in document.documentElement) {\n Util.addEvent(c, 'touchstart', this._eventHandlers.mousedown);\n Util.addEvent(window, 'touchend', this._eventHandlers.mouseup);\n Util.addEvent(c, 'touchend', this._eventHandlers.mouseup);\n Util.addEvent(c, 'touchmove', this._eventHandlers.mousemove);\n } else {\n Util.addEvent(c, 'mousedown', this._eventHandlers.mousedown);\n Util.addEvent(window, 'mouseup', this._eventHandlers.mouseup);\n Util.addEvent(c, 'mouseup', this._eventHandlers.mouseup);\n Util.addEvent(c, 'mousemove', this._eventHandlers.mousemove);\n Util.addEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel',\n this._eventHandlers.mousewheel);\n }\n\n /* Work around right and middle click browser behaviors */\n Util.addEvent(document, 'click', this._eventHandlers.mousedisable);\n Util.addEvent(document.body, 'contextmenu', this._eventHandlers.mousedisable);\n },\n\n ungrab: function () {\n var c = this._target;\n\n if ('ontouchstart' in document.documentElement) {\n Util.removeEvent(c, 'touchstart', this._eventHandlers.mousedown);\n Util.removeEvent(window, 'touchend', this._eventHandlers.mouseup);\n Util.removeEvent(c, 'touchend', this._eventHandlers.mouseup);\n Util.removeEvent(c, 'touchmove', this._eventHandlers.mousemove);\n } else {\n Util.removeEvent(c, 'mousedown', this._eventHandlers.mousedown);\n Util.removeEvent(window, 'mouseup', this._eventHandlers.mouseup);\n Util.removeEvent(c, 'mouseup', this._eventHandlers.mouseup);\n Util.removeEvent(c, 'mousemove', this._eventHandlers.mousemove);\n Util.removeEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel',\n this._eventHandlers.mousewheel);\n }\n\n /* Work around right and middle click browser behaviors */\n Util.removeEvent(document, 'click', this._eventHandlers.mousedisable);\n Util.removeEvent(document.body, 'contextmenu', this._eventHandlers.mousedisable);\n\n }\n };\n\n Util.make_properties(Mouse, [\n ['target', 'ro', 'dom'], // DOM element that captures mouse input\n ['notify', 'ro', 'func'], // Function to call to notify whenever a mouse event is received\n ['focused', 'rw', 'bool'], // Capture and send mouse clicks/movement\n ['scale', 'rw', 'float'], // Viewport scale factor 0.0 - 1.0\n\n ['onMouseButton', 'rw', 'func'], // Handler for mouse button click/release\n ['onMouseMove', 'rw', 'func'], // Handler for mouse movement\n ['touchButton', 'rw', 'int'] // Button mask (1, 2, 4) for touch devices (0 means ignore clicks)\n ]);\n})();\n\ndefine(\"vnc-input\", [\"vnc-util\"], function(){});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n */\n\n/*jslint browser: true, white: false */\n/*global Util, Base64, changeCursor */\n\nvar Display;\n\n(function () {\n \"use strict\";\n\n Display = function (defaults) {\n this._drawCtx = null;\n this._c_forceCanvas = false;\n\n this._renderQ = []; // queue drawing actions for in-oder rendering\n\n // the full frame buffer (logical canvas) size\n this._fb_width = 0;\n this._fb_height = 0;\n\n // the visible \"physical canvas\" viewport\n this._viewportLoc = { 'x': 0, 'y': 0, 'w': 0, 'h': 0 };\n this._cleanRect = { 'x1': 0, 'y1': 0, 'x2': -1, 'y2': -1 };\n\n this._prevDrawStyle = \"\";\n this._tile = null;\n this._tile16x16 = null;\n this._tile_x = 0;\n this._tile_y = 0;\n\n Util.set_defaults(this, defaults, {\n 'true_color': true,\n 'colourMap': [],\n 'scale': 1.0,\n 'viewport': false,\n 'render_mode': ''\n });\n\n Util.Debug(\">> Display.constructor\");\n\n if (!this._target) {\n throw new Error(\"Target must be set\");\n }\n\n if (typeof this._target === 'string') {\n throw new Error('target must be a DOM element');\n }\n\n if (!this._target.getContext) {\n throw new Error(\"no getContext method\");\n }\n\n if (!this._drawCtx) {\n this._drawCtx = this._target.getContext('2d');\n }\n\n Util.Debug(\"User Agent: \" + navigator.userAgent);\n if (Util.Engine.gecko) { Util.Debug(\"Browser: gecko \" + Util.Engine.gecko); }\n if (Util.Engine.webkit) { Util.Debug(\"Browser: webkit \" + Util.Engine.webkit); }\n if (Util.Engine.trident) { Util.Debug(\"Browser: trident \" + Util.Engine.trident); }\n if (Util.Engine.presto) { Util.Debug(\"Browser: presto \" + Util.Engine.presto); }\n\n this.clear();\n\n // Check canvas features\n if ('createImageData' in this._drawCtx) {\n this._render_mode = 'canvas rendering';\n } else {\n throw new Error(\"Canvas does not support createImageData\");\n }\n\n if (this._prefer_js === null) {\n Util.Info(\"Prefering javascript operations\");\n this._prefer_js = true;\n }\n\n // Determine browser support for setting the cursor via data URI scheme\n var curDat = [];\n for (var i = 0; i < 8 * 8 * 4; i++) {\n curDat.push(255);\n }\n try {\n var curSave = this._target.style.cursor;\n Display.changeCursor(this._target, curDat, curDat, 2, 2, 8, 8);\n if (this._target.style.cursor) {\n if (this._cursor_uri === null || this._cursor_uri === undefined) {\n this._cursor_uri = true;\n }\n Util.Info(\"Data URI scheme cursor supported\");\n } else {\n if (this._cursor_uri === null || this._cursor_uri === undefined) {\n this._cursor_uri = false;\n }\n Util.Warn(\"Data URI scheme cursor not supported\");\n }\n this._target.style.cursor = curSave;\n } catch (exc) {\n Util.Error(\"Data URI scheme cursor test exception: \" + exc);\n this._cursor_uri = false;\n }\n\n Util.Debug(\"<< Display.constructor\");\n };\n\n Display.prototype = {\n // Public methods\n viewportChange: function (deltaX, deltaY, width, height) {\n var vp = this._viewportLoc;\n var cr = this._cleanRect;\n var canvas = this._target;\n\n if (!this._viewport) {\n Util.Debug(\"Setting viewport to full display region\");\n deltaX = -vp.w; // clamped later of out of bounds\n deltaY = -vp.h;\n width = this._fb_width;\n height = this._fb_height;\n }\n\n if (typeof(deltaX) === \"undefined\") { deltaX = 0; }\n if (typeof(deltaY) === \"undefined\") { deltaY = 0; }\n if (typeof(width) === \"undefined\") { width = vp.w; }\n if (typeof(height) === \"undefined\") { height = vp.h; }\n\n // Size change\n if (width > this._fb_width) { width = this._fb_width; }\n if (height > this._fb_height) { height = this._fb_height; }\n\n if (vp.w !== width || vp.h !== height) {\n // Change width\n if (width < vp.w && cr.x2 > vp.x + width - 1) {\n cr.x2 = vp.x + width - 1;\n }\n vp.w = width;\n\n // Change height\n if (height < vp.h && cr.y2 > vp.y + height - 1) {\n cr.y2 = vp.y + height - 1;\n }\n vp.h = height;\n\n var saveImg = null;\n if (vp.w > 0 && vp.h > 0 && canvas.width > 0 && canvas.height > 0) {\n var img_width = canvas.width < vp.w ? canvas.width : vp.w;\n var img_height = canvas.height < vp.h ? canvas.height : vp.h;\n saveImg = this._drawCtx.getImageData(0, 0, img_width, img_height);\n }\n\n canvas.width = vp.w;\n canvas.height = vp.h;\n\n if (saveImg) {\n this._drawCtx.putImageData(saveImg, 0, 0);\n }\n }\n\n var vx2 = vp.x + vp.w - 1;\n var vy2 = vp.y + vp.h - 1;\n\n // Position change\n\n if (deltaX < 0 && vp.x + deltaX < 0) {\n deltaX = -vp.x;\n }\n if (vx2 + deltaX >= this._fb_width) {\n deltaX -= vx2 + deltaX - this._fb_width + 1;\n }\n\n if (vp.y + deltaY < 0) {\n deltaY = -vp.y;\n }\n if (vy2 + deltaY >= this._fb_height) {\n deltaY -= (vy2 + deltaY - this._fb_height + 1);\n }\n\n if (deltaX === 0 && deltaY === 0) {\n return;\n }\n Util.Debug(\"viewportChange deltaX: \" + deltaX + \", deltaY: \" + deltaY);\n\n vp.x += deltaX;\n vx2 += deltaX;\n vp.y += deltaY;\n vy2 += deltaY;\n\n // Update the clean rectangle\n if (vp.x > cr.x1) {\n cr.x1 = vp.x;\n }\n if (vx2 < cr.x2) {\n cr.x2 = vx2;\n }\n if (vp.y > cr.y1) {\n cr.y1 = vp.y;\n }\n if (vy2 < cr.y2) {\n cr.y2 = vy2;\n }\n\n var x1, w;\n if (deltaX < 0) {\n // Shift viewport left, redraw left section\n x1 = 0;\n w = -deltaX;\n } else {\n // Shift viewport right, redraw right section\n x1 = vp.w - deltaX;\n w = deltaX;\n }\n\n var y1, h;\n if (deltaY < 0) {\n // Shift viewport up, redraw top section\n y1 = 0;\n h = -deltaY;\n } else {\n // Shift viewport down, redraw bottom section\n y1 = vp.h - deltaY;\n h = deltaY;\n }\n\n // Copy the valid part of the viewport to the shifted location\n var saveStyle = this._drawCtx.fillStyle;\n this._drawCtx.fillStyle = \"rgb(255,255,255)\";\n if (deltaX !== 0) {\n this._drawCtx.drawImage(canvas, 0, 0, vp.w, vp.h, -deltaX, 0, vp.w, vp.h);\n this._drawCtx.fillRect(x1, 0, w, vp.h);\n }\n if (deltaY !== 0) {\n this._drawCtx.drawImage(canvas, 0, 0, vp.w, vp.h, 0, -deltaY, vp.w, vp.h);\n this._drawCtx.fillRect(0, y1, vp.w, h);\n }\n this._drawCtx.fillStyle = saveStyle;\n },\n\n // Return a map of clean and dirty areas of the viewport and reset the\n // tracking of clean and dirty areas\n //\n // Returns: { 'cleanBox': { 'x': x, 'y': y, 'w': w, 'h': h},\n // 'dirtyBoxes': [{ 'x': x, 'y': y, 'w': w, 'h': h }, ...] }\n getCleanDirtyReset: function () {\n var vp = this._viewportLoc;\n var cr = this._cleanRect;\n\n var cleanBox = { 'x': cr.x1, 'y': cr.y1,\n 'w': cr.x2 - cr.x1 + 1, 'h': cr.y2 - cr.y1 + 1 };\n\n var dirtyBoxes = [];\n if (cr.x1 >= cr.x2 || cr.y1 >= cr.y2) {\n // Whole viewport is dirty\n dirtyBoxes.push({ 'x': vp.x, 'y': vp.y, 'w': vp.w, 'h': vp.h });\n } else {\n // Redraw dirty regions\n var vx2 = vp.x + vp.w - 1;\n var vy2 = vp.y + vp.h - 1;\n\n if (vp.x < cr.x1) {\n // left side dirty region\n dirtyBoxes.push({'x': vp.x, 'y': vp.y,\n 'w': cr.x1 - vp.x + 1, 'h': vp.h});\n }\n if (vx2 > cr.x2) {\n // right side dirty region\n dirtyBoxes.push({'x': cr.x2 + 1, 'y': vp.y,\n 'w': vx2 - cr.x2, 'h': vp.h});\n }\n if(vp.y < cr.y1) {\n // top/middle dirty region\n dirtyBoxes.push({'x': cr.x1, 'y': vp.y,\n 'w': cr.x2 - cr.x1 + 1, 'h': cr.y1 - vp.y});\n }\n if (vy2 > cr.y2) {\n // bottom/middle dirty region\n dirtyBoxes.push({'x': cr.x1, 'y': cr.y2 + 1,\n 'w': cr.x2 - cr.x1 + 1, 'h': vy2 - cr.y2});\n }\n }\n\n this._cleanRect = {'x1': vp.x, 'y1': vp.y,\n 'x2': vp.x + vp.w - 1, 'y2': vp.y + vp.h - 1};\n\n return {'cleanBox': cleanBox, 'dirtyBoxes': dirtyBoxes};\n },\n\n absX: function (x) {\n return x + this._viewportLoc.x;\n },\n\n absY: function (y) {\n return y + this._viewportLoc.y;\n },\n\n resize: function (width, height) {\n this._prevDrawStyle = \"\";\n\n this._fb_width = width;\n this._fb_height = height;\n\n this._rescale(this._scale);\n\n this.viewportChange();\n },\n\n clear: function () {\n if (this._logo) {\n this.resize(this._logo.width, this._logo.height);\n this.blitStringImage(this._logo.data, 0, 0);\n } else {\n if (Util.Engine.trident === 6) {\n // NB(directxman12): there's a bug in IE10 where we can fail to actually\n // clear the canvas here because of the resize.\n // Clearing the current viewport first fixes the issue\n this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h);\n }\n this.resize(240, 20);\n this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h);\n }\n\n this._renderQ = [];\n },\n\n fillRect: function (x, y, width, height, color) {\n this._setFillColor(color);\n this._drawCtx.fillRect(x - this._viewportLoc.x, y - this._viewportLoc.y, width, height);\n },\n\n copyImage: function (old_x, old_y, new_x, new_y, w, h) {\n var x1 = old_x - this._viewportLoc.x;\n var y1 = old_y - this._viewportLoc.y;\n var x2 = new_x - this._viewportLoc.x;\n var y2 = new_y - this._viewportLoc.y;\n\n this._drawCtx.drawImage(this._target, x1, y1, w, h, x2, y2, w, h);\n },\n\n // start updating a tile\n startTile: function (x, y, width, height, color) {\n this._tile_x = x;\n this._tile_y = y;\n if (width === 16 && height === 16) {\n this._tile = this._tile16x16;\n } else {\n this._tile = this._drawCtx.createImageData(width, height);\n }\n\n if (this._prefer_js) {\n var bgr;\n if (this._true_color) {\n bgr = color;\n } else {\n bgr = this._colourMap[color[0]];\n }\n var red = bgr[2];\n var green = bgr[1];\n var blue = bgr[0];\n\n var data = this._tile.data;\n for (var i = 0; i < width * height * 4; i += 4) {\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = 255;\n }\n } else {\n this.fillRect(x, y, width, height, color);\n }\n },\n\n // update sub-rectangle of the current tile\n subTile: function (x, y, w, h, color) {\n if (this._prefer_js) {\n var bgr;\n if (this._true_color) {\n bgr = color;\n } else {\n bgr = this._colourMap[color[0]];\n }\n var red = bgr[2];\n var green = bgr[1];\n var blue = bgr[0];\n var xend = x + w;\n var yend = y + h;\n\n var data = this._tile.data;\n var width = this._tile.width;\n for (var j = y; j < yend; j++) {\n for (var i = x; i < xend; i++) {\n var p = (i + (j * width)) * 4;\n data[p] = red;\n data[p + 1] = green;\n data[p + 2] = blue;\n data[p + 3] = 255;\n }\n }\n } else {\n this.fillRect(this._tile_x + x, this._tile_y + y, w, h, color);\n }\n },\n\n // draw the current tile to the screen\n finishTile: function () {\n if (this._prefer_js) {\n this._drawCtx.putImageData(this._tile, this._tile_x - this._viewportLoc.x,\n this._tile_y - this._viewportLoc.y);\n }\n // else: No-op -- already done by setSubTile\n },\n\n blitImage: function (x, y, width, height, arr, offset) {\n if (this._true_color) {\n this._bgrxImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n } else {\n this._cmapImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n }\n },\n\n blitRgbImage: function (x, y , width, height, arr, offset) {\n if (this._true_color) {\n this._rgbImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n } else {\n // probably wrong?\n this._cmapImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset);\n }\n },\n\n blitStringImage: function (str, x, y) {\n var img = new Image();\n img.onload = function () {\n this._drawCtx.drawImage(img, x - this._viewportLoc.x, y - this._viewportLoc.y);\n }.bind(this);\n img.src = str;\n return img; // for debugging purposes\n },\n\n // wrap ctx.drawImage but relative to viewport\n drawImage: function (img, x, y) {\n this._drawCtx.drawImage(img, x - this._viewportLoc.x, y - this._viewportLoc.y);\n },\n\n renderQ_push: function (action) {\n this._renderQ.push(action);\n if (this._renderQ.length === 1) {\n // If this can be rendered immediately it will be, otherwise\n // the scanner will start polling the queue (every\n // requestAnimationFrame interval)\n this._scan_renderQ();\n }\n },\n\n changeCursor: function (pixels, mask, hotx, hoty, w, h) {\n if (this._cursor_uri === false) {\n Util.Warn(\"changeCursor called but no cursor data URI support\");\n return;\n }\n\n if (this._true_color) {\n Display.changeCursor(this._target, pixels, mask, hotx, hoty, w, h);\n } else {\n Display.changeCursor(this._target, pixels, mask, hotx, hoty, w, h, this._colourMap);\n }\n },\n\n defaultCursor: function () {\n this._target.style.cursor = \"default\";\n },\n\n // Overridden getters/setters\n get_context: function () {\n return this._drawCtx;\n },\n\n set_scale: function (scale) {\n this._rescale(scale);\n },\n\n set_width: function (w) {\n this.resize(w, this._fb_height);\n },\n get_width: function () {\n return this._fb_width;\n },\n\n set_height: function (h) {\n this.resize(this._fb_width, h);\n },\n get_height: function () {\n return this._fb_height;\n },\n\n // Private Methods\n _rescale: function (factor) {\n var canvas = this._target;\n var properties = ['transform', 'WebkitTransform', 'MozTransform'];\n var transform_prop;\n while ((transform_prop = properties.shift())) {\n if (typeof canvas.style[transform_prop] !== 'undefined') {\n break;\n }\n }\n\n if (transform_prop === null) {\n Util.Debug(\"No scaling support\");\n return;\n }\n\n if (typeof(factor) === \"undefined\") {\n factor = this._scale;\n } else if (factor > 1.0) {\n factor = 1.0;\n } else if (factor < 0.1) {\n factor = 0.1;\n }\n\n if (this._scale === factor) {\n return;\n }\n\n this._scale = factor;\n var x = canvas.width - (canvas.width * factor);\n var y = canvas.height - (canvas.height * factor);\n canvas.style[transform_prop] = 'scale(' + this._scale + ') translate(-' + x + 'px, -' + y + 'px)';\n },\n\n _setFillColor: function (color) {\n var bgr;\n if (this._true_color) {\n bgr = color;\n } else {\n bgr = this._colourMap[color[0]];\n }\n\n var newStyle = 'rgb(' + bgr[2] + ',' + bgr[1] + ',' + bgr[0] + ')';\n if (newStyle !== this._prevDrawStyle) {\n this._drawCtx.fillStyle = newStyle;\n this._prevDrawStyle = newStyle;\n }\n },\n\n _rgbImageData: function (x, y, vx, vy, width, height, arr, offset) {\n var img = this._drawCtx.createImageData(width, height);\n var data = img.data;\n for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 3) {\n data[i] = arr[j];\n data[i + 1] = arr[j + 1];\n data[i + 2] = arr[j + 2];\n data[i + 3] = 255; // Alpha\n }\n this._drawCtx.putImageData(img, x - vx, y - vy);\n },\n\n _bgrxImageData: function (x, y, vx, vy, width, height, arr, offset) {\n var img = this._drawCtx.createImageData(width, height);\n var data = img.data;\n for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 4) {\n data[i] = arr[j + 2];\n data[i + 1] = arr[j + 1];\n data[i + 2] = arr[j];\n data[i + 3] = 255; // Alpha\n }\n this._drawCtx.putImageData(img, x - vx, y - vy);\n },\n\n _cmapImageData: function (x, y, vx, vy, width, height, arr, offset) {\n var img = this._drawCtx.createImageData(width, height);\n var data = img.data;\n var cmap = this._colourMap;\n for (var i = 0, j = offset; i < width * height * 4; i += 4, j++) {\n var bgr = cmap[arr[j]];\n data[i] = bgr[2];\n data[i + 1] = bgr[1];\n data[i + 2] = bgr[0];\n data[i + 3] = 255; // Alpha\n }\n this._drawCtx.putImageData(img, x - vx, y - vy);\n },\n\n _scan_renderQ: function () {\n var ready = true;\n while (ready && this._renderQ.length > 0) {\n var a = this._renderQ[0];\n switch (a.type) {\n case 'copy':\n this.copyImage(a.old_x, a.old_y, a.x, a.y, a.width, a.height);\n break;\n case 'fill':\n this.fillRect(a.x, a.y, a.width, a.height, a.color);\n break;\n case 'blit':\n this.blitImage(a.x, a.y, a.width, a.height, a.data, 0);\n break;\n case 'blitRgb':\n this.blitRgbImage(a.x, a.y, a.width, a.height, a.data, 0);\n break;\n case 'img':\n if (a.img.complete) {\n this.drawImage(a.img, a.x, a.y);\n } else {\n // We need to wait for this image to 'load'\n // to keep things in-order\n ready = false;\n }\n break;\n }\n\n if (ready) {\n this._renderQ.shift();\n }\n }\n\n if (this._renderQ.length > 0) {\n requestAnimFrame(this._scan_renderQ.bind(this));\n }\n },\n };\n\n Util.make_properties(Display, [\n ['target', 'wo', 'dom'], // Canvas element for rendering\n ['context', 'ro', 'raw'], // Canvas 2D context for rendering (read-only)\n ['logo', 'rw', 'raw'], // Logo to display when cleared: {\"width\": w, \"height\": h, \"data\": data}\n ['true_color', 'rw', 'bool'], // Use true-color pixel data\n ['colourMap', 'rw', 'arr'], // Colour map array (when not true-color)\n ['scale', 'rw', 'float'], // Display area scale factor 0.0 - 1.0\n ['viewport', 'rw', 'bool'], // Use a viewport set with viewportChange()\n ['width', 'rw', 'int'], // Display area width\n ['height', 'rw', 'int'], // Display area height\n\n ['render_mode', 'ro', 'str'], // Canvas rendering mode (read-only)\n\n ['prefer_js', 'rw', 'str'], // Prefer Javascript over canvas methods\n ['cursor_uri', 'rw', 'raw'] // Can we render cursor using data URI\n ]);\n\n // Class Methods\n Display.changeCursor = function (target, pixels, mask, hotx, hoty, w0, h0, cmap) {\n var w = w0;\n var h = h0;\n if (h < w) {\n h = w; // increase h to make it square\n } else {\n w = h; // increase w to make it square\n }\n\n var cur = [];\n\n // Push multi-byte little-endian values\n cur.push16le = function (num) {\n this.push(num & 0xFF, (num >> 8) & 0xFF);\n };\n cur.push32le = function (num) {\n this.push(num & 0xFF,\n (num >> 8) & 0xFF,\n (num >> 16) & 0xFF,\n (num >> 24) & 0xFF);\n };\n\n var IHDRsz = 40;\n var RGBsz = w * h * 4;\n var XORsz = Math.ceil((w * h) / 8.0);\n var ANDsz = Math.ceil((w * h) / 8.0);\n\n cur.push16le(0); // 0: Reserved\n cur.push16le(2); // 2: .CUR type\n cur.push16le(1); // 4: Number of images, 1 for non-animated ico\n\n // Cursor #1 header (ICONDIRENTRY)\n cur.push(w); // 6: width\n cur.push(h); // 7: height\n cur.push(0); // 8: colors, 0 -> true-color\n cur.push(0); // 9: reserved\n cur.push16le(hotx); // 10: hotspot x coordinate\n cur.push16le(hoty); // 12: hotspot y coordinate\n cur.push32le(IHDRsz + RGBsz + XORsz + ANDsz);\n // 14: cursor data byte size\n cur.push32le(22); // 18: offset of cursor data in the file\n\n // Cursor #1 InfoHeader (ICONIMAGE/BITMAPINFO)\n cur.push32le(IHDRsz); // 22: InfoHeader size\n cur.push32le(w); // 26: Cursor width\n cur.push32le(h * 2); // 30: XOR+AND height\n cur.push16le(1); // 34: number of planes\n cur.push16le(32); // 36: bits per pixel\n cur.push32le(0); // 38: Type of compression\n\n cur.push32le(XORsz + ANDsz);\n // 42: Size of Image\n cur.push32le(0); // 46: reserved\n cur.push32le(0); // 50: reserved\n cur.push32le(0); // 54: reserved\n cur.push32le(0); // 58: reserved\n\n // 62: color data (RGBQUAD icColors[])\n var y, x;\n for (y = h - 1; y >= 0; y--) {\n for (x = 0; x < w; x++) {\n if (x >= w0 || y >= h0) {\n cur.push(0); // blue\n cur.push(0); // green\n cur.push(0); // red\n cur.push(0); // alpha\n } else {\n var idx = y * Math.ceil(w0 / 8) + Math.floor(x / 8);\n var alpha = (mask[idx] << (x % 8)) & 0x80 ? 255 : 0;\n if (cmap) {\n idx = (w0 * y) + x;\n var rgb = cmap[pixels[idx]];\n cur.push(rgb[2]); // blue\n cur.push(rgb[1]); // green\n cur.push(rgb[0]); // red\n cur.push(alpha); // alpha\n } else {\n idx = ((w0 * y) + x) * 4;\n cur.push(pixels[idx + 2]); // blue\n cur.push(pixels[idx + 1]); // green\n cur.push(pixels[idx]); // red\n cur.push(alpha); // alpha\n }\n }\n }\n }\n\n // XOR/bitmask data (BYTE icXOR[])\n // (ignored, just needs to be the right size)\n for (y = 0; y < h; y++) {\n for (x = 0; x < Math.ceil(w / 8); x++) {\n cur.push(0);\n }\n }\n\n // AND/bitmask data (BYTE icAND[])\n // (ignored, just needs to be the right size)\n for (y = 0; y < h; y++) {\n for (x = 0; x < Math.ceil(w / 8); x++) {\n cur.push(0);\n }\n }\n\n var url = 'data:image/x-icon;base64,' + Base64.encode(cur);\n target.style.cursor = 'url(' + url + ')' + hotx + ' ' + hoty + ', default';\n };\n})();\n\ndefine(\"vnc-display\", [\"vnc-util\"], function(){});\n\n","/*\n * noVNC: HTML5 VNC client\n * Copyright (C) 2012 Joel Martin\n * Copyright (C) 2013 Samuel Mannehed for Cendio AB\n * Licensed under MPL 2.0 (see LICENSE.txt)\n *\n * See README.md for usage and integration instructions.\n *\n * TIGHT decoder portion:\n * (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca)\n */\n\n/*jslint white: false, browser: true */\n/*global window, Util, Display, Keyboard, Mouse, Websock, Websock_native, Base64, DES */\n\nvar RFB;\n\n(function () {\n \"use strict\";\n RFB = function (defaults) {\n if (!defaults) {\n defaults = {};\n }\n\n this._rfb_host = '';\n this._rfb_port = 5900;\n this._rfb_password = '';\n this._rfb_path = '';\n\n this._rfb_state = 'disconnected';\n this._rfb_version = 0;\n this._rfb_max_version = 3.8;\n this._rfb_auth_scheme = '';\n\n this._rfb_tightvnc = false;\n this._rfb_xvp_ver = 0;\n\n // In preference order\n this._encodings = [\n ['COPYRECT', 0x01 ],\n ['TIGHT', 0x07 ],\n ['TIGHT_PNG', -260 ],\n ['HEXTILE', 0x05 ],\n ['RRE', 0x02 ],\n ['RAW', 0x00 ],\n ['DesktopSize', -223 ],\n ['Cursor', -239 ],\n\n // Psuedo-encoding settings\n //['JPEG_quality_lo', -32 ],\n ['JPEG_quality_med', -26 ],\n //['JPEG_quality_hi', -23 ],\n //['compress_lo', -255 ],\n ['compress_hi', -247 ],\n ['last_rect', -224 ],\n ['xvp', -309 ]\n ];\n\n this._encHandlers = {};\n this._encNames = {};\n this._encStats = {};\n\n this._sock = null; // Websock object\n this._display = null; // Display object\n this._keyboard = null; // Keyboard input handler object\n this._mouse = null; // Mouse input handler object\n this._sendTimer = null; // Send Queue check timer\n this._disconnTimer = null; // disconnection timer\n this._msgTimer = null; // queued handle_msg timer\n\n // Frame buffer update state\n this._FBU = {\n rects: 0,\n subrects: 0, // RRE\n lines: 0, // RAW\n tiles: 0, // HEXTILE\n bytes: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n encoding: 0,\n subencoding: -1,\n background: null,\n zlib: [] // TIGHT zlib streams\n };\n\n this._fb_Bpp = 4;\n this._fb_depth = 3;\n this._fb_width = 0;\n this._fb_height = 0;\n this._fb_name = \"\";\n\n this._rre_chunk_sz = 100;\n\n this._timing = {\n last_fbu: 0,\n fbu_total: 0,\n fbu_total_cnt: 0,\n full_fbu_total: 0,\n full_fbu_cnt: 0,\n\n fbu_rt_start: 0,\n fbu_rt_total: 0,\n fbu_rt_cnt: 0,\n pixels: 0\n };\n\n // Mouse state\n this._mouse_buttonMask = 0;\n this._mouse_arr = [];\n this._viewportDragging = false;\n this._viewportDragPos = {};\n\n // set the default value on user-facing properties\n Util.set_defaults(this, defaults, {\n 'target': 'null', // VNC display rendering Canvas object\n 'focusContainer': document, // DOM element that captures keyboard input\n 'encrypt': false, // Use TLS/SSL/wss encryption\n 'true_color': true, // Request true color pixel data\n 'local_cursor': false, // Request locally rendered cursor\n 'shared': true, // Request shared mode\n 'view_only': false, // Disable client mouse/keyboard\n 'xvp_password_sep': '@', // Separator for XVP password fields\n 'disconnectTimeout': 3, // Time (s) to wait for disconnection\n 'wsProtocols': ['binary', 'base64'], // Protocols to use in the WebSocket connection\n 'repeaterID': '', // [UltraVNC] RepeaterID to connect to\n 'viewportDrag': false, // Move the viewport on mouse drags\n\n // Callback functions\n 'onUpdateState': function () { }, // onUpdateState(rfb, state, oldstate, statusMsg): state update/change\n 'onPasswordRequired': function () { }, // onPasswordRequired(rfb): VNC password is required\n 'onClipboard': function () { }, // onClipboard(rfb, text): RFB clipboard contents received\n 'onBell': function () { }, // onBell(rfb): RFB Bell message received\n 'onFBUReceive': function () { }, // onFBUReceive(rfb, fbu): RFB FBU received but not yet processed\n 'onFBUComplete': function () { }, // onFBUComplete(rfb, fbu): RFB FBU received and processed\n 'onFBResize': function () { }, // onFBResize(rfb, width, height): frame buffer resized\n 'onDesktopName': function () { }, // onDesktopName(rfb, name): desktop name received\n 'onXvpInit': function () { }, // onXvpInit(version): XVP extensions active for this connection\n });\n\n // main setup\n Util.Debug(\">> RFB.constructor\");\n\n // populate encHandlers with bound versions\n Object.keys(RFB.encodingHandlers).forEach(function (encName) {\n this._encHandlers[encName] = RFB.encodingHandlers[encName].bind(this);\n }.bind(this));\n\n // Create lookup tables based on encoding number\n for (var i = 0; i < this._encodings.length; i++) {\n this._encHandlers[this._encodings[i][1]] = this._encHandlers[this._encodings[i][0]];\n this._encNames[this._encodings[i][1]] = this._encodings[i][0];\n this._encStats[this._encodings[i][1]] = [0, 0];\n }\n\n try {\n this._display = new Display({target: this._target});\n } catch (exc) {\n Util.Error(\"Display exception: \" + exc);\n this._updateState('fatal', \"No working Display\");\n }\n\n this._keyboard = new Keyboard({target: this._focusContainer,\n onKeyPress: this._handleKeyPress.bind(this)});\n\n this._mouse = new Mouse({target: this._target,\n onMouseButton: this._handleMouseButton.bind(this),\n onMouseMove: this._handleMouseMove.bind(this),\n notify: this._keyboard.sync.bind(this._keyboard)});\n\n this._sock = new Websock();\n this._sock.on('message', this._handle_message.bind(this));\n this._sock.on('open', function () {\n if (this._rfb_state === 'connect') {\n this._updateState('ProtocolVersion', \"Starting VNC handshake\");\n } else {\n this._fail(\"Got unexpected WebSocket connection\");\n }\n }.bind(this));\n this._sock.on('close', function (e) {\n Util.Warn(\"WebSocket on-close event\");\n var msg = \"\";\n if (e.code) {\n msg = \" (code: \" + e.code;\n if (e.reason) {\n msg += \", reason: \" + e.reason;\n }\n msg += \")\";\n }\n if (this._rfb_state === 'disconnect') {\n this._updateState('disconnected', 'VNC disconnected' + msg);\n } else if (this._rfb_state === 'ProtocolVersion') {\n this._fail('Failed to connect to server' + msg);\n } else if (this._rfb_state in {'failed': 1, 'disconnected': 1}) {\n Util.Error(\"Received onclose while disconnected\" + msg);\n } else {\n this._fail(\"Server disconnected\" + msg);\n }\n }.bind(this));\n this._sock.on('error', function (e) {\n Util.Warn(\"WebSocket on-error event\");\n });\n\n this._init_vars();\n\n var rmode = this._display.get_render_mode();\n if (Websock_native) {\n Util.Info(\"Using native WebSockets\");\n this._updateState('loaded', 'noVNC ready: native WebSockets, ' + rmode);\n } else {\n Util.Warn(\"Using web-socket-js bridge. Flash version: \" + Util.Flash.version);\n if (!Util.Flash || Util.Flash.version < 9) {\n this._updateState('fatal', \"WebSockets or Adobe Flash is required\");\n } else if (document.location.href.substr(0, 7) === 'file://') {\n this._updateState('fatal', \"'file://' URL is incompatible with Adobe Flash\");\n } else {\n this._updateState('loaded', 'noVNC ready: WebSockets emulation, ' + rmode);\n }\n }\n\n Util.Debug(\"<< RFB.constructor\");\n };\n\n RFB.prototype = {\n // Public methods\n connect: function (host, port, password, path) {\n this._rfb_host = host;\n this._rfb_port = port;\n this._rfb_password = (password !== undefined) ? password : \"\";\n this._rfb_path = (path !== undefined) ? path : \"\";\n\n if (!this._rfb_host || !this._rfb_port) {\n return this._fail(\"Must set host and port\");\n }\n\n this._updateState('connect');\n },\n\n disconnect: function () {\n this._updateState('disconnect', 'Disconnecting');\n },\n\n sendPassword: function (passwd) {\n this._rfb_password = passwd;\n this._rfb_state = 'Authentication';\n setTimeout(this._init_msg.bind(this), 1);\n },\n\n sendCtrlAltDel: function () {\n if (this._rfb_state !== 'normal' || this._view_only) { return false; }\n Util.Info(\"Sending Ctrl-Alt-Del\");\n\n var arr = [];\n arr = arr.concat(RFB.messages.keyEvent(XK_Control_L, 1));\n arr = arr.concat(RFB.messages.keyEvent(XK_Alt_L, 1));\n arr = arr.concat(RFB.messages.keyEvent(XK_Delete, 1));\n arr = arr.concat(RFB.messages.keyEvent(XK_Delete, 0));\n arr = arr.concat(RFB.messages.keyEvent(XK_Alt_L, 0));\n arr = arr.concat(RFB.messages.keyEvent(XK_Control_L, 0));\n this._sock.send(arr);\n },\n\n xvpOp: function (ver, op) {\n if (this._rfb_xvp_ver < ver) { return false; }\n Util.Info(\"Sending XVP operation \" + op + \" (version \" + ver + \")\");\n this._sock.send_string(\"\\xFA\\x00\" + String.fromCharCode(ver) + String.fromCharCode(op));\n return true;\n },\n\n xvpShutdown: function () {\n return this.xvpOp(1, 2);\n },\n\n xvpReboot: function () {\n return this.xvpOp(1, 3);\n },\n\n xvpReset: function () {\n return this.xvpOp(1, 4);\n },\n\n // Send a key press. If 'down' is not specified then send a down key\n // followed by an up key.\n sendKey: function (code, down) {\n if (this._rfb_state !== \"normal\" || this._view_only) { return false; }\n var arr = [];\n if (typeof down !== 'undefined') {\n Util.Info(\"Sending key code (\" + (down ? \"down\" : \"up\") + \"): \" + code);\n arr = arr.concat(RFB.messages.keyEvent(code, down ? 1 : 0));\n } else {\n Util.Info(\"Sending key code (down + up): \" + code);\n arr = arr.concat(RFB.messages.keyEvent(code, 1));\n arr = arr.concat(RFB.messages.keyEvent(code, 0));\n }\n this._sock.send(arr);\n },\n\n clipboardPasteFrom: function (text) {\n if (this._rfb_state !== 'normal') { return; }\n this._sock.send(RFB.messages.clientCutText(text));\n },\n\n // Private methods\n\n _connect: function () {\n Util.Debug(\">> RFB.connect\");\n\n var uri;\n if (typeof UsingSocketIO !== 'undefined') {\n uri = 'http';\n } else {\n uri = this._encrypt ? 'wss' : 'ws';\n }\n\n uri += '://' + this._rfb_host + ':' + this._rfb_port + '/' + this._rfb_path;\n Util.Info(\"connecting to \" + uri);\n\n this._sock.open(uri, this._wsProtocols);\n\n Util.Debug(\"<< RFB.connect\");\n },\n\n _init_vars: function () {\n // reset state\n this._sock.init();\n\n this._FBU.rects = 0;\n this._FBU.subrects = 0; // RRE and HEXTILE\n this._FBU.lines = 0; // RAW\n this._FBU.tiles = 0; // HEXTILE\n this._FBU.zlibs = []; // TIGHT zlib encoders\n this._mouse_buttonMask = 0;\n this._mouse_arr = [];\n this._rfb_tightvnc = false;\n\n // Clear the per connection encoding stats\n var i;\n for (i = 0; i < this._encodings.length; i++) {\n this._encStats[this._encodings[i][1]][0] = 0;\n }\n\n for (i = 0; i < 4; i++) {\n this._FBU.zlibs[i] = new TINF();\n this._FBU.zlibs[i].init();\n }\n },\n\n _print_stats: function () {\n Util.Info(\"Encoding stats for this connection:\");\n var i, s;\n for (i = 0; i < this._encodings.length; i++) {\n s = this._encStats[this._encodings[i][1]];\n if (s[0] + s[1] > 0) {\n Util.Info(\" \" + this._encodings[i][0] + \": \" + s[0] + \" rects\");\n }\n }\n\n Util.Info(\"Encoding stats since page load:\");\n for (i = 0; i < this._encodings.length; i++) {\n s = this._encStats[this._encodings[i][1]];\n Util.Info(\" \" + this._encodings[i][0] + \": \" + s[1] + \" rects\");\n }\n },\n\n\n /*\n * Page states:\n * loaded - page load, equivalent to disconnected\n * disconnected - idle state\n * connect - starting to connect (to ProtocolVersion)\n * normal - connected\n * disconnect - starting to disconnect\n * failed - abnormal disconnect\n * fatal - failed to load page, or fatal error\n *\n * RFB protocol initialization states:\n * ProtocolVersion\n * Security\n * Authentication\n * password - waiting for password, not part of RFB\n * SecurityResult\n * ClientInitialization - not triggered by server message\n * ServerInitialization (to normal)\n */\n _updateState: function (state, statusMsg) {\n var oldstate = this._rfb_state;\n\n if (state === oldstate) {\n // Already here, ignore\n Util.Debug(\"Already in state '\" + state + \"', ignoring\");\n }\n\n /*\n * These are disconnected states. A previous connect may\n * asynchronously cause a connection so make sure we are closed.\n */\n if (state in {'disconnected': 1, 'loaded': 1, 'connect': 1,\n 'disconnect': 1, 'failed': 1, 'fatal': 1}) {\n\n if (this._sendTimer) {\n clearInterval(this._sendTimer);\n this._sendTimer = null;\n }\n\n if (this._msgTimer) {\n clearInterval(this._msgTimer);\n this._msgTimer = null;\n }\n\n if (this._display && this._display.get_context()) {\n this._keyboard.ungrab();\n this._mouse.ungrab();\n this._display.defaultCursor();\n if (Util.get_logging() !== 'debug' || state === 'loaded') {\n // Show noVNC logo on load and when disconnected, unless in\n // debug mode\n this._display.clear();\n }\n }\n\n this._sock.close();\n }\n\n if (oldstate === 'fatal') {\n Util.Error('Fatal error, cannot continue');\n }\n\n var cmsg = typeof(statusMsg) !== 'undefined' ? (\" Msg: \" + statusMsg) : \"\";\n var fullmsg = \"New state '\" + state + \"', was '\" + oldstate + \"'.\" + cmsg;\n if (state === 'failed' || state === 'fatal') {\n Util.Error(cmsg);\n } else {\n Util.Warn(cmsg);\n }\n\n if (oldstate === 'failed' && state === 'disconnected') {\n // do disconnect action, but stay in failed state\n this._rfb_state = 'failed';\n } else {\n this._rfb_state = state;\n }\n\n if (this._disconnTimer && this._rfb_state !== 'disconnect') {\n Util.Debug(\"Clearing disconnect timer\");\n clearTimeout(this._disconnTimer);\n this._disconnTimer = null;\n }\n\n switch (state) {\n case 'normal':\n if (oldstate === 'disconnected' || oldstate === 'failed') {\n Util.Error(\"Invalid transition from 'disconnected' or 'failed' to 'normal'\");\n }\n break;\n\n case 'connect':\n this._init_vars();\n this._connect();\n // WebSocket.onopen transitions to 'ProtocolVersion'\n break;\n\n case 'disconnect':\n this._disconnTimer = setTimeout(function () {\n this._fail(\"Disconnect timeout\");\n }.bind(this), this._disconnectTimeout * 1000);\n\n this._print_stats();\n\n // WebSocket.onclose transitions to 'disconnected'\n break;\n\n case 'failed':\n if (oldstate === 'disconnected') {\n Util.Error(\"Invalid transition from 'disconnected' to 'failed'\");\n } else if (oldstate === 'normal') {\n Util.Error(\"Error while connected.\");\n } else if (oldstate === 'init') {\n Util.Error(\"Error while initializing.\");\n }\n\n // Make sure we transition to disconnected\n setTimeout(function () {\n this._updateState('disconnected');\n }.bind(this), 50);\n\n break;\n\n default:\n // No state change action to take\n }\n\n if (oldstate === 'failed' && state === 'disconnected') {\n this._onUpdateState(this, state, oldstate);\n } else {\n this._onUpdateState(this, state, oldstate, statusMsg);\n }\n },\n\n _fail: function (msg) {\n this._updateState('failed', msg);\n return false;\n },\n\n _handle_message: function () {\n if (this._sock.rQlen() === 0) {\n Util.Warn(\"handle_message called on an empty receive queue\");\n return;\n }\n\n switch (this._rfb_state) {\n case 'disconnected':\n case 'failed':\n Util.Error(\"Got data while disconnected\");\n break;\n case 'normal':\n if (this._normal_msg() && this._sock.rQlen() > 0) {\n // true means we can continue processing\n // Give other events a chance to run\n if (this._msgTimer === null) {\n Util.Debug(\"More data to process, creating timer\");\n this._msgTimer = setTimeout(function () {\n this._msgTimer = null;\n this._handle_message();\n }.bind(this), 10);\n } else {\n Util.Debug(\"More data to process, existing timer\");\n }\n }\n break;\n default:\n this._init_msg();\n break;\n }\n },\n\n _checkEvents: function () {\n if (this._rfb_state === 'normal' && !this._viewportDragging && this._mouse_arr.length > 0) {\n this._sock.send(this._mouse_arr);\n this._mouse_arr = [];\n }\n },\n\n _handleKeyPress: function (keysym, down) {\n if (this._view_only) { return; } // View only, skip keyboard, events\n this._sock.send(RFB.messages.keyEvent(keysym, down));\n },\n\n _handleMouseButton: function (x, y, down, bmask) {\n if (down) {\n this._mouse_buttonMask |= bmask;\n } else {\n this._mouse_buttonMask ^= bmask;\n }\n\n if (this._viewportDrag) {\n if (down && !this._viewportDragging) {\n this._viewportDragging = true;\n this._viewportDragPos = {'x': x, 'y': y};\n\n // Skip sending mouse events\n return;\n } else {\n this._viewportDragging = false;\n }\n }\n\n if (this._view_only) { return; } // View only, skip mouse events\n\n this._mouse_arr = this._mouse_arr.concat(\n RFB.messages.pointerEvent(this._display.absX(x), this._display.absY(y), this._mouse_buttonMask));\n this._sock.send(this._mouse_arr);\n this._mouse_arr = [];\n },\n\n _handleMouseMove: function (x, y) {\n if (this._viewportDragging) {\n var deltaX = this._viewportDragPos.x - x;\n var deltaY = this._viewportDragPos.y - y;\n this._viewportDragPos = {'x': x, 'y': y};\n\n this._display.viewportChange(deltaX, deltaY);\n\n // Skip sending mouse events\n return;\n }\n\n if (this._view_only) { return; } // View only, skip mouse events\n\n this._mouse_arr = this._mouse_arr.concat(\n RFB.messages.pointerEvent(this._display.absX(x), this._display.absY(y), this._mouse_buttonMask));\n\n this._checkEvents();\n },\n\n // Message Handlers\n\n _negotiate_protocol_version: function () {\n if (this._sock.rQlen() < 12) {\n return this._fail(\"Incomplete protocol version\");\n }\n\n var sversion = this._sock.rQshiftStr(12).substr(4, 7);\n Util.Info(\"Server ProtocolVersion: \" + sversion);\n var is_repeater = 0;\n switch (sversion) {\n case \"000.000\": // UltraVNC repeater\n is_repeater = 1;\n break;\n case \"003.003\":\n case \"003.006\": // UltraVNC\n case \"003.889\": // Apple Remote Desktop\n this._rfb_version = 3.3;\n break;\n case \"003.007\":\n this._rfb_version = 3.7;\n break;\n case \"003.008\":\n case \"004.000\": // Intel AMT KVM\n case \"004.001\": // RealVNC 4.6\n this._rfb_version = 3.8;\n break;\n default:\n return this._fail(\"Invalid server version \" + sversion);\n }\n\n if (is_repeater) {\n var repeaterID = this._repeaterID;\n while (repeaterID.length < 250) {\n repeaterID += \"\\0\";\n }\n this._sock.send_string(repeaterID);\n return true;\n }\n\n if (this._rfb_version > this._rfb_max_version) {\n this._rfb_version = this._rfb_max_version;\n }\n\n // Send updates either at a rate of 1 update per 50ms, or\n // whatever slower rate the network can handle\n this._sendTimer = setInterval(this._sock.flush.bind(this._sock), 50);\n\n var cversion = \"00\" + parseInt(this._rfb_version, 10) +\n \".00\" + ((this._rfb_version * 10) % 10);\n this._sock.send_string(\"RFB \" + cversion + \"\\n\");\n this._updateState('Security', 'Sent ProtocolVersion: ' + cversion);\n },\n\n _negotiate_security: function () {\n if (this._rfb_version >= 3.7) {\n // Server sends supported list, client decides\n var num_types = this._sock.rQshift8();\n if (this._sock.rQwait(\"security type\", num_types, 1)) { return false; }\n\n if (num_types === 0) {\n var strlen = this._sock.rQshift32();\n var reason = this._sock.rQshiftStr(strlen);\n return this._fail(\"Security failure: \" + reason);\n }\n\n this._rfb_auth_scheme = 0;\n var types = this._sock.rQshiftBytes(num_types);\n Util.Debug(\"Server security types: \" + types);\n for (var i = 0; i < types.length; i++) {\n if (types[i] > this._rfb_auth_scheme && (types[i] <= 16 || types[i] == 22)) {\n this._rfb_auth_scheme = types[i];\n }\n }\n\n if (this._rfb_auth_scheme === 0) {\n return this._fail(\"Unsupported security types: \" + types);\n }\n\n this._sock.send([this._rfb_auth_scheme]);\n } else {\n // Server decides\n if (this._sock.rQwait(\"security scheme\", 4)) { return false; }\n this._rfb_auth_scheme = this._sock.rQshift32();\n }\n\n this._updateState('Authentication', 'Authenticating using scheme: ' + this._rfb_auth_scheme);\n return this._init_msg(); // jump to authentication\n },\n\n // authentication\n _negotiate_xvp_auth: function () {\n var xvp_sep = this._xvp_password_sep;\n var xvp_auth = this._rfb_password.split(xvp_sep);\n if (xvp_auth.length < 3) {\n this._updateState('password', 'XVP credentials required (user' + xvp_sep +\n 'target' + xvp_sep + 'password) -- got only ' + this._rfb_password);\n this._onPasswordRequired(this);\n return false;\n }\n\n var xvp_auth_str = String.fromCharCode(xvp_auth[0].length) +\n String.fromCharCode(xvp_auth[1].length) +\n xvp_auth[0] +\n xvp_auth[1];\n this._sock.send_string(xvp_auth_str);\n this._rfb_password = xvp_auth.slice(2).join(xvp_sep);\n this._rfb_auth_scheme = 2;\n return this._negotiate_authentication();\n },\n\n _negotiate_std_vnc_auth: function () {\n if (this._rfb_password.length === 0) {\n // Notify via both callbacks since it's kind of\n // an RFB state change and a UI interface issue\n this._updateState('password', \"Password Required\");\n this._onPasswordRequired(this);\n }\n\n if (this._sock.rQwait(\"auth challenge\", 16)) { return false; }\n\n var challenge = this._sock.rQshiftBytes(16);\n var response = RFB.genDES(this._rfb_password, challenge);\n this._sock.send(response);\n this._updateState(\"SecurityResult\");\n return true;\n },\n\n _negotiate_tight_tunnels: function (numTunnels) {\n var clientSupportedTunnelTypes = {\n 0: { vendor: 'TGHT', signature: 'NOTUNNEL' }\n };\n var serverSupportedTunnelTypes = {};\n // receive tunnel capabilities\n for (var i = 0; i < numTunnels; i++) {\n var cap_code = this._sock.rQshift32();\n var cap_vendor = this._sock.rQshiftStr(4);\n var cap_signature = this._sock.rQshiftStr(8);\n serverSupportedTunnelTypes[cap_code] = { vendor: cap_vendor, signature: cap_signature };\n }\n\n // choose the notunnel type\n if (serverSupportedTunnelTypes[0]) {\n if (serverSupportedTunnelTypes[0].vendor != clientSupportedTunnelTypes[0].vendor ||\n serverSupportedTunnelTypes[0].signature != clientSupportedTunnelTypes[0].signature) {\n return this._fail(\"Client's tunnel type had the incorrect vendor or signature\");\n }\n this._sock.send([0, 0, 0, 0]); // use NOTUNNEL\n return false; // wait until we receive the sub auth count to continue\n } else {\n return this._fail(\"Server wanted tunnels, but doesn't support the notunnel type\");\n }\n },\n\n _negotiate_tight_auth: function () {\n if (!this._rfb_tightvnc) { // first pass, do the tunnel negotiation\n if (this._sock.rQwait(\"num tunnels\", 4)) { return false; }\n var numTunnels = this._sock.rQshift32();\n if (numTunnels > 0 && this._sock.rQwait(\"tunnel capabilities\", 16 * numTunnels, 4)) { return false; }\n\n this._rfb_tightvnc = true;\n\n if (numTunnels > 0) {\n this._negotiate_tight_tunnels(numTunnels);\n return false; // wait until we receive the sub auth to continue\n }\n }\n\n // second pass, do the sub-auth negotiation\n if (this._sock.rQwait(\"sub auth count\", 4)) { return false; }\n var subAuthCount = this._sock.rQshift32();\n if (this._sock.rQwait(\"sub auth capabilities\", 16 * subAuthCount, 4)) { return false; }\n\n var clientSupportedTypes = {\n 'STDVNOAUTH__': 1,\n 'STDVVNCAUTH_': 2\n };\n\n var serverSupportedTypes = [];\n\n for (var i = 0; i < subAuthCount; i++) {\n var capNum = this._sock.rQshift32();\n var capabilities = this._sock.rQshiftStr(12);\n serverSupportedTypes.push(capabilities);\n }\n\n for (var authType in clientSupportedTypes) {\n if (serverSupportedTypes.indexOf(authType) != -1) {\n this._sock.send([0, 0, 0, clientSupportedTypes[authType]]);\n\n switch (authType) {\n case 'STDVNOAUTH__': // no auth\n this._updateState('SecurityResult');\n return true;\n case 'STDVVNCAUTH_': // VNC auth\n this._rfb_auth_scheme = 2;\n return this._init_msg();\n default:\n return this._fail(\"Unsupported tiny auth scheme: \" + authType);\n }\n }\n }\n\n this._fail(\"No supported sub-auth types!\");\n },\n\n _negotiate_authentication: function () {\n switch (this._rfb_auth_scheme) {\n case 0: // connection failed\n if (this._sock.rQwait(\"auth reason\", 4)) { return false; }\n var strlen = this._sock.rQshift32();\n var reason = this._sock.rQshiftStr(strlen);\n return this._fail(\"Auth failure: \" + reason);\n\n case 1: // no auth\n if (this._rfb_version >= 3.8) {\n this._updateState('SecurityResult');\n return true;\n }\n this._updateState('ClientInitialisation', \"No auth required\");\n return this._init_msg();\n\n case 22: // XVP auth\n return this._negotiate_xvp_auth();\n\n case 2: // VNC authentication\n return this._negotiate_std_vnc_auth();\n\n case 16: // TightVNC Security Type\n return this._negotiate_tight_auth();\n\n default:\n return this._fail(\"Unsupported auth scheme: \" + this._rfb_auth_scheme);\n }\n },\n\n _handle_security_result: function () {\n if (this._sock.rQwait('VNC auth response ', 4)) { return false; }\n switch (this._sock.rQshift32()) {\n case 0: // OK\n this._updateState('ClientInitialisation', 'Authentication OK');\n return this._init_msg();\n case 1: // failed\n if (this._rfb_version >= 3.8) {\n var length = this._sock.rQshift32();\n if (this._sock.rQwait(\"SecurityResult reason\", length, 8)) { return false; }\n var reason = this._sock.rQshiftStr(length);\n return this._fail(reason);\n } else {\n return this._fail(\"Authentication failure\");\n }\n return false;\n case 2:\n return this._fail(\"Too many auth attempts\");\n }\n },\n\n _negotiate_server_init: function () {\n if (this._sock.rQwait(\"server initialization\", 24)) { return false; }\n\n /* Screen size */\n this._fb_width = this._sock.rQshift16();\n this._fb_height = this._sock.rQshift16();\n\n /* PIXEL_FORMAT */\n var bpp = this._sock.rQshift8();\n var depth = this._sock.rQshift8();\n var big_endian = this._sock.rQshift8();\n var true_color = this._sock.rQshift8();\n\n var red_max = this._sock.rQshift16();\n var green_max = this._sock.rQshift16();\n var blue_max = this._sock.rQshift16();\n var red_shift = this._sock.rQshift8();\n var green_shift = this._sock.rQshift8();\n var blue_shift = this._sock.rQshift8();\n this._sock.rQskipBytes(3); // padding\n\n // NB(directxman12): we don't want to call any callbacks or print messages until\n // *after* we're past the point where we could backtrack\n\n /* Connection name/title */\n var name_length = this._sock.rQshift32();\n if (this._sock.rQwait('server init name', name_length, 24)) { return false; }\n this._fb_name = Util.decodeUTF8(this._sock.rQshiftStr(name_length));\n\n if (this._rfb_tightvnc) {\n if (this._sock.rQwait('TightVNC extended server init header', 8, 24 + name_length)) { return false; }\n // In TightVNC mode, ServerInit message is extended\n var numServerMessages = this._sock.rQshift16();\n var numClientMessages = this._sock.rQshift16();\n var numEncodings = this._sock.rQshift16();\n this._sock.rQskipBytes(2); // padding\n\n var totalMessagesLength = (numServerMessages + numClientMessages + numEncodings) * 16;\n if (this._sock.rQwait('TightVNC extended server init header', totalMessagesLength, 32 + name_length)) { return false; }\n\n var i;\n for (i = 0; i < numServerMessages; i++) {\n var srvMsg = this._sock.rQshiftStr(16);\n }\n\n for (i = 0; i < numClientMessages; i++) {\n var clientMsg = this._sock.rQshiftStr(16);\n }\n\n for (i = 0; i < numEncodings; i++) {\n var encoding = this._sock.rQshiftStr(16);\n }\n }\n\n // NB(directxman12): these are down here so that we don't run them multiple times\n // if we backtrack\n Util.Info(\"Screen: \" + this._fb_width + \"x\" + this._fb_height +\n \", bpp: \" + bpp + \", depth: \" + depth +\n \", big_endian: \" + big_endian +\n \", true_color: \" + true_color +\n \", red_max: \" + red_max +\n \", green_max: \" + green_max +\n \", blue_max: \" + blue_max +\n \", red_shift: \" + red_shift +\n \", green_shift: \" + green_shift +\n \", blue_shift: \" + blue_shift);\n\n if (big_endian !== 0) {\n Util.Warn(\"Server native endian is not little endian\");\n }\n\n if (red_shift !== 16) {\n Util.Warn(\"Server native red-shift is not 16\");\n }\n\n if (blue_shift !== 0) {\n Util.Warn(\"Server native blue-shift is not 0\");\n }\n\n // we're past the point where we could backtrack, so it's safe to call this\n this._onDesktopName(this, this._fb_name);\n\n if (this._true_color && this._fb_name === \"Intel(r) AMT KVM\") {\n Util.Warn(\"Intel AMT KVM only supports 8/16 bit depths. Disabling true color\");\n this._true_color = false;\n }\n\n this._display.set_true_color(this._true_color);\n this._onFBResize(this, this._fb_width, this._fb_height);\n this._display.resize(this._fb_width, this._fb_height);\n this._keyboard.grab();\n this._mouse.grab();\n\n if (this._true_color) {\n this._fb_Bpp = 4;\n this._fb_depth = 3;\n } else {\n this._fb_Bpp = 1;\n this._fb_depth = 1;\n }\n\n var response = RFB.messages.pixelFormat(this._fb_Bpp, this._fb_depth, this._true_color);\n response = response.concat(\n RFB.messages.clientEncodings(this._encodings, this._local_cursor, this._true_color));\n response = response.concat(\n RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),\n this._fb_width, this._fb_height));\n\n this._timing.fbu_rt_start = (new Date()).getTime();\n this._timing.pixels = 0;\n this._sock.send(response);\n\n this._checkEvents();\n\n if (this._encrypt) {\n this._updateState('normal', 'Connected (encrypted) to: ' + this._fb_name);\n } else {\n this._updateState('normal', 'Connected (unencrypted) to: ' + this._fb_name);\n }\n },\n\n _init_msg: function () {\n switch (this._rfb_state) {\n case 'ProtocolVersion':\n return this._negotiate_protocol_version();\n\n case 'Security':\n return this._negotiate_security();\n\n case 'Authentication':\n return this._negotiate_authentication();\n\n case 'SecurityResult':\n return this._handle_security_result();\n\n case 'ClientInitialisation':\n this._sock.send([this._shared ? 1 : 0]); // ClientInitialisation\n this._updateState('ServerInitialisation', \"Authentication OK\");\n return true;\n\n case 'ServerInitialisation':\n return this._negotiate_server_init();\n }\n },\n\n _handle_set_colour_map_msg: function () {\n Util.Debug(\"SetColorMapEntries\");\n this._sock.rQskip8(); // Padding\n\n var first_colour = this._sock.rQshift16();\n var num_colours = this._sock.rQshift16();\n if (this._sock.rQwait('SetColorMapEntries', num_colours * 6, 6)) { return false; }\n\n for (var c = 0; c < num_colours; c++) {\n var red = parseInt(this._sock.rQshift16() / 256, 10);\n var green = parseInt(this._sock.rQshift16() / 256, 10);\n var blue = parseInt(this._sock.rQshift16() / 256, 10);\n this._display.set_colourMap([blue, green, red], first_colour + c);\n }\n Util.Debug(\"colourMap: \" + this._display.get_colourMap());\n Util.Info(\"Registered \" + num_colours + \" colourMap entries\");\n\n return true;\n },\n\n _handle_server_cut_text: function () {\n Util.Debug(\"ServerCutText\");\n if (this._sock.rQwait(\"ServerCutText header\", 7, 1)) { return false; }\n this._sock.rQskipBytes(3); // Padding\n var length = this._sock.rQshift32();\n if (this._sock.rQwait(\"ServerCutText\", length, 8)) { return false; }\n\n var text = this._sock.rQshiftStr(length);\n this._onClipboard(this, text);\n\n return true;\n },\n\n _handle_xvp_msg: function () {\n if (this._sock.rQwait(\"XVP version and message\", 3, 1)) { return false; }\n this._sock.rQskip8(); // Padding\n var xvp_ver = this._sock.rQshift8();\n var xvp_msg = this._sock.rQshift8();\n\n switch (xvp_msg) {\n case 0: // XVP_FAIL\n this._updateState(this._rfb_state, \"Operation Failed\");\n break;\n case 1: // XVP_INIT\n this._rfb_xvp_ver = xvp_ver;\n Util.Info(\"XVP extensions enabled (version \" + this._rfb_xvp_ver + \")\");\n this._onXvpInit(this._rfb_xvp_ver);\n break;\n default:\n this._fail(\"Disconnected: illegal server XVP message \" + xvp_msg);\n break;\n }\n\n return true;\n },\n\n _normal_msg: function () {\n var msg_type;\n\n if (this._FBU.rects > 0) {\n msg_type = 0;\n } else {\n msg_type = this._sock.rQshift8();\n }\n\n switch (msg_type) {\n case 0: // FramebufferUpdate\n var ret = this._framebufferUpdate();\n if (ret) {\n this._sock.send(RFB.messages.fbUpdateRequests(this._display.getCleanDirtyReset(),\n this._fb_width, this._fb_height));\n }\n return ret;\n\n case 1: // SetColorMapEntries\n return this._handle_set_colour_map_msg();\n\n case 2: // Bell\n Util.Debug(\"Bell\");\n this._onBell(this);\n return true;\n\n case 3: // ServerCutText\n return this._handle_server_cut_text();\n\n case 250: // XVP\n return this._handle_xvp_msg();\n\n default:\n this._fail(\"Disconnected: illegal server message type \" + msg_type);\n Util.Debug(\"sock.rQslice(0, 30): \" + this._sock.rQslice(0, 30));\n return true;\n }\n },\n\n _framebufferUpdate: function () {\n var ret = true;\n var now;\n\n if (this._FBU.rects === 0) {\n if (this._sock.rQwait(\"FBU header\", 3, 1)) { return false; }\n this._sock.rQskip8(); // Padding\n this._FBU.rects = this._sock.rQshift16();\n this._FBU.bytes = 0;\n this._timing.cur_fbu = 0;\n if (this._timing.fbu_rt_start > 0) {\n now = (new Date()).getTime();\n Util.Info(\"First FBU latency: \" + (now - this._timing.fbu_rt_start));\n }\n }\n\n while (this._FBU.rects > 0) {\n if (this._rfb_state !== \"normal\") { return false; }\n\n if (this._sock.rQwait(\"FBU\", this._FBU.bytes)) { return false; }\n if (this._FBU.bytes === 0) {\n if (this._sock.rQwait(\"rect header\", 12)) { return false; }\n /* New FramebufferUpdate */\n\n var hdr = this._sock.rQshiftBytes(12);\n this._FBU.x = (hdr[0] << 8) + hdr[1];\n this._FBU.y = (hdr[2] << 8) + hdr[3];\n this._FBU.width = (hdr[4] << 8) + hdr[5];\n this._FBU.height = (hdr[6] << 8) + hdr[7];\n this._FBU.encoding = parseInt((hdr[8] << 24) + (hdr[9] << 16) +\n (hdr[10] << 8) + hdr[11], 10);\n\n this._onFBUReceive(this,\n {'x': this._FBU.x, 'y': this._FBU.y,\n 'width': this._FBU.width, 'height': this._FBU.height,\n 'encoding': this._FBU.encoding,\n 'encodingName': this._encNames[this._FBU.encoding]});\n\n if (!this._encNames[this._FBU.encoding]) {\n this._fail(\"Disconnected: unsupported encoding \" +\n this._FBU.encoding);\n return false;\n }\n }\n\n this._timing.last_fbu = (new Date()).getTime();\n\n ret = this._encHandlers[this._FBU.encoding]();\n\n now = (new Date()).getTime();\n this._timing.cur_fbu += (now - this._timing.last_fbu);\n\n if (ret) {\n this._encStats[this._FBU.encoding][0]++;\n this._encStats[this._FBU.encoding][1]++;\n this._timing.pixels += this._FBU.width * this._FBU.height;\n }\n\n if (this._timing.pixels >= (this._fb_width * this._fb_height)) {\n if ((this._FBU.width === this._fb_width && this._FBU.height === this._fb_height) ||\n this._timing.fbu_rt_start > 0) {\n this._timing.full_fbu_total += this._timing.cur_fbu;\n this._timing.full_fbu_cnt++;\n Util.Info(\"Timing of full FBU, curr: \" +\n this._timing.cur_fbu + \", total: \" +\n this._timing.full_fbu_total + \", cnt: \" +\n this._timing.full_fbu_cnt + \", avg: \" +\n (this._timing.full_fbu_total / this._timing.full_fbu_cnt));\n }\n\n if (this._timing.fbu_rt_start > 0) {\n var fbu_rt_diff = now - this._timing.fbu_rt_start;\n this._timing.fbu_rt_total += fbu_rt_diff;\n this._timing.fbu_rt_cnt++;\n Util.Info(\"full FBU round-trip, cur: \" +\n fbu_rt_diff + \", total: \" +\n this._timing.fbu_rt_total + \", cnt: \" +\n this._timing.fbu_rt_cnt + \", avg: \" +\n (this._timing.fbu_rt_total / this._timing.fbu_rt_cnt));\n this._timing.fbu_rt_start = 0;\n }\n }\n\n if (!ret) { return ret; } // need more data\n }\n\n this._onFBUComplete(this,\n {'x': this._FBU.x, 'y': this._FBU.y,\n 'width': this._FBU.width, 'height': this._FBU.height,\n 'encoding': this._FBU.encoding,\n 'encodingName': this._encNames[this._FBU.encoding]});\n\n return true; // We finished this FBU\n },\n };\n\n Util.make_properties(RFB, [\n ['target', 'wo', 'dom'], // VNC display rendering Canvas object\n ['focusContainer', 'wo', 'dom'], // DOM element that captures keyboard input\n ['encrypt', 'rw', 'bool'], // Use TLS/SSL/wss encryption\n ['true_color', 'rw', 'bool'], // Request true color pixel data\n ['local_cursor', 'rw', 'bool'], // Request locally rendered cursor\n ['shared', 'rw', 'bool'], // Request shared mode\n ['view_only', 'rw', 'bool'], // Disable client mouse/keyboard\n ['xvp_password_sep', 'rw', 'str'], // Separator for XVP password fields\n ['disconnectTimeout', 'rw', 'int'], // Time (s) to wait for disconnection\n ['wsProtocols', 'rw', 'arr'], // Protocols to use in the WebSocket connection\n ['repeaterID', 'rw', 'str'], // [UltraVNC] RepeaterID to connect to\n ['viewportDrag', 'rw', 'bool'], // Move the viewport on mouse drags\n\n // Callback functions\n ['onUpdateState', 'rw', 'func'], // onUpdateState(rfb, state, oldstate, statusMsg): RFB state update/change\n ['onPasswordRequired', 'rw', 'func'], // onPasswordRequired(rfb): VNC password is required\n ['onClipboard', 'rw', 'func'], // onClipboard(rfb, text): RFB clipboard contents received\n ['onBell', 'rw', 'func'], // onBell(rfb): RFB Bell message received\n ['onFBUReceive', 'rw', 'func'], // onFBUReceive(rfb, fbu): RFB FBU received but not yet processed\n ['onFBUComplete', 'rw', 'func'], // onFBUComplete(rfb, fbu): RFB FBU received and processed\n ['onFBResize', 'rw', 'func'], // onFBResize(rfb, width, height): frame buffer resized\n ['onDesktopName', 'rw', 'func'], // onDesktopName(rfb, name): desktop name received\n ['onXvpInit', 'rw', 'func'], // onXvpInit(version): XVP extensions active for this connection\n ]);\n\n RFB.prototype.set_local_cursor = function (cursor) {\n if (!cursor || (cursor in {'0': 1, 'no': 1, 'false': 1})) {\n this._local_cursor = false;\n } else {\n if (this._display.get_cursor_uri()) {\n this._local_cursor = true;\n } else {\n Util.Warn(\"Browser does not support local cursor\");\n }\n }\n };\n\n RFB.prototype.get_display = function () { return this._display; };\n RFB.prototype.get_keyboard = function () { return this._keyboard; };\n RFB.prototype.get_mouse = function () { return this._mouse; };\n\n // Class Methods\n RFB.messages = {\n keyEvent: function (keysym, down) {\n var arr = [4];\n arr.push8(down);\n arr.push16(0);\n arr.push32(keysym);\n return arr;\n },\n\n pointerEvent: function (x, y, mask) {\n var arr = [5]; // msg-type\n arr.push8(mask);\n arr.push16(x);\n arr.push16(y);\n return arr;\n },\n\n // TODO(directxman12): make this unicode compatible?\n clientCutText: function (text) {\n var arr = [6]; // msg-type\n arr.push8(0); // padding\n arr.push8(0); // padding\n arr.push8(0); // padding\n arr.push32(text.length);\n var n = text.length;\n for (var i = 0; i < n; i++) {\n arr.push(text.charCodeAt(i));\n }\n\n return arr;\n },\n\n pixelFormat: function (bpp, depth, true_color) {\n var arr = [0]; // msg-type\n arr.push8(0); // padding\n arr.push8(0); // padding\n arr.push8(0); // padding\n\n arr.push8(bpp * 8); // bits-per-pixel\n arr.push8(depth * 8); // depth\n arr.push8(0); // little-endian\n arr.push8(true_color ? 1 : 0); // true-color\n\n arr.push16(255); // red-max\n arr.push16(255); // green-max\n arr.push16(255); // blue-max\n arr.push8(16); // red-shift\n arr.push8(8); // green-shift\n arr.push8(0); // blue-shift\n\n arr.push8(0); // padding\n arr.push8(0); // padding\n arr.push8(0); // padding\n return arr;\n },\n\n clientEncodings: function (encodings, local_cursor, true_color) {\n var i, encList = [];\n\n for (i = 0; i < encodings.length; i++) {\n if (encodings[i][0] === \"Cursor\" && !local_cursor) {\n Util.Debug(\"Skipping Cursor pseudo-encoding\");\n } else if (encodings[i][0] === \"TIGHT\" && !true_color) {\n // TODO: remove this when we have tight+non-true-color\n Util.Warn(\"Skipping tight as it is only supported with true color\");\n } else {\n encList.push(encodings[i][1]);\n }\n }\n\n var arr = [2]; // msg-type\n arr.push8(0); // padding\n\n arr.push16(encList.length); // encoding count\n for (i = 0; i < encList.length; i++) {\n arr.push32(encList[i]);\n }\n\n return arr;\n },\n\n fbUpdateRequests: function (cleanDirty, fb_width, fb_height) {\n var arr = [];\n\n var cb = cleanDirty.cleanBox;\n var w, h;\n if (cb.w > 0 && cb.h > 0) {\n w = typeof cb.w === \"undefined\" ? fb_width : cb.w;\n h = typeof cb.h === \"undefined\" ? fb_height : cb.h;\n // Request incremental for clean box\n arr = arr.concat(RFB.messages.fbUpdateRequest(1, cb.x, cb.y, w, h));\n }\n\n for (var i = 0; i < cleanDirty.dirtyBoxes.length; i++) {\n var db = cleanDirty.dirtyBoxes[i];\n // Force all (non-incremental) for dirty box\n w = typeof db.w === \"undefined\" ? fb_width : db.w;\n h = typeof db.h === \"undefined\" ? fb_height : db.h;\n arr = arr.concat(RFB.messages.fbUpdateRequest(0, db.x, db.y, w, h));\n }\n\n return arr;\n },\n\n fbUpdateRequest: function (incremental, x, y, w, h) {\n if (typeof(x) === \"undefined\") { x = 0; }\n if (typeof(y) === \"undefined\") { y = 0; }\n\n var arr = [3]; // msg-type\n arr.push8(incremental);\n arr.push16(x);\n arr.push16(y);\n arr.push16(w);\n arr.push16(h);\n\n return arr;\n }\n };\n\n RFB.genDES = function (password, challenge) {\n var passwd = [];\n for (var i = 0; i < password.length; i++) {\n passwd.push(password.charCodeAt(i));\n }\n return (new DES(passwd)).encrypt(challenge);\n };\n\n RFB.extract_data_uri = function (arr) {\n return \";base64,\" + Base64.encode(arr);\n };\n\n RFB.encodingHandlers = {\n RAW: function () {\n if (this._FBU.lines === 0) {\n this._FBU.lines = this._FBU.height;\n }\n\n this._FBU.bytes = this._FBU.width * this._fb_Bpp; // at least a line\n if (this._sock.rQwait(\"RAW\", this._FBU.bytes)) { return false; }\n var cur_y = this._FBU.y + (this._FBU.height - this._FBU.lines);\n var curr_height = Math.min(this._FBU.lines,\n Math.floor(this._sock.rQlen() / (this._FBU.width * this._fb_Bpp)));\n this._display.blitImage(this._FBU.x, cur_y, this._FBU.width,\n curr_height, this._sock.get_rQ(),\n this._sock.get_rQi());\n this._sock.rQskipBytes(this._FBU.width * curr_height * this._fb_Bpp);\n this._FBU.lines -= curr_height;\n\n if (this._FBU.lines > 0) {\n this._FBU.bytes = this._FBU.width * this._fb_Bpp; // At least another line\n } else {\n this._FBU.rects--;\n this._FBU.bytes = 0;\n }\n\n return true;\n },\n\n COPYRECT: function () {\n this._FBU.bytes = 4;\n if (this._sock.rQwait(\"COPYRECT\", 4)) { return false; }\n this._display.renderQ_push({\n 'type': 'copy',\n 'old_x': this._sock.rQshift16(),\n 'old_y': this._sock.rQshift16(),\n 'x': this._FBU.x,\n 'y': this._FBU.y,\n 'width': this._FBU.width,\n 'height': this._FBU.height\n });\n this._FBU.rects--;\n this._FBU.bytes = 0;\n return true;\n },\n\n RRE: function () {\n var color;\n if (this._FBU.subrects === 0) {\n this._FBU.bytes = 4 + this._fb_Bpp;\n if (this._sock.rQwait(\"RRE\", 4 + this._fb_Bpp)) { return false; }\n this._FBU.subrects = this._sock.rQshift32();\n color = this._sock.rQshiftBytes(this._fb_Bpp); // Background\n this._display.fillRect(this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height, color);\n }\n\n while (this._FBU.subrects > 0 && this._sock.rQlen() >= (this._fb_Bpp + 8)) {\n color = this._sock.rQshiftBytes(this._fb_Bpp);\n var x = this._sock.rQshift16();\n var y = this._sock.rQshift16();\n var width = this._sock.rQshift16();\n var height = this._sock.rQshift16();\n this._display.fillRect(this._FBU.x + x, this._FBU.y + y, width, height, color);\n this._FBU.subrects--;\n }\n\n if (this._FBU.subrects > 0) {\n var chunk = Math.min(this._rre_chunk_sz, this._FBU.subrects);\n this._FBU.bytes = (this._fb_Bpp + 8) * chunk;\n } else {\n this._FBU.rects--;\n this._FBU.bytes = 0;\n }\n\n return true;\n },\n\n HEXTILE: function () {\n var rQ = this._sock.get_rQ();\n var rQi = this._sock.get_rQi();\n\n if (this._FBU.tiles === 0) {\n this._FBU.tiles_x = Math.ceil(this._FBU.width / 16);\n this._FBU.tiles_y = Math.ceil(this._FBU.height / 16);\n this._FBU.total_tiles = this._FBU.tiles_x * this._FBU.tiles_y;\n this._FBU.tiles = this._FBU.total_tiles;\n }\n\n while (this._FBU.tiles > 0) {\n this._FBU.bytes = 1;\n if (this._sock.rQwait(\"HEXTILE subencoding\", this._FBU.bytes)) { return false; }\n var subencoding = rQ[rQi]; // Peek\n if (subencoding > 30) { // Raw\n this._fail(\"Disconnected: illegal hextile subencoding \" + subencoding);\n return false;\n }\n\n var subrects = 0;\n var curr_tile = this._FBU.total_tiles - this._FBU.tiles;\n var tile_x = curr_tile % this._FBU.tiles_x;\n var tile_y = Math.floor(curr_tile / this._FBU.tiles_x);\n var x = this._FBU.x + tile_x * 16;\n var y = this._FBU.y + tile_y * 16;\n var w = Math.min(16, (this._FBU.x + this._FBU.width) - x);\n var h = Math.min(16, (this._FBU.y + this._FBU.height) - y);\n\n // Figure out how much we are expecting\n if (subencoding & 0x01) { // Raw\n this._FBU.bytes += w * h * this._fb_Bpp;\n } else {\n if (subencoding & 0x02) { // Background\n this._FBU.bytes += this._fb_Bpp;\n }\n if (subencoding & 0x04) { // Foreground\n this._FBU.bytes += this._fb_Bpp;\n }\n if (subencoding & 0x08) { // AnySubrects\n this._FBU.bytes++; // Since we aren't shifting it off\n if (this._sock.rQwait(\"hextile subrects header\", this._FBU.bytes)) { return false; }\n subrects = rQ[rQi + this._FBU.bytes - 1]; // Peek\n if (subencoding & 0x10) { // SubrectsColoured\n this._FBU.bytes += subrects * (this._fb_Bpp + 2);\n } else {\n this._FBU.bytes += subrects * 2;\n }\n }\n }\n\n if (this._sock.rQwait(\"hextile\", this._FBU.bytes)) { return false; }\n\n // We know the encoding and have a whole tile\n this._FBU.subencoding = rQ[rQi];\n rQi++;\n if (this._FBU.subencoding === 0) {\n if (this._FBU.lastsubencoding & 0x01) {\n // Weird: ignore blanks are RAW\n Util.Debug(\" Ignoring blank after RAW\");\n } else {\n this._display.fillRect(x, y, w, h, this._FBU.background);\n }\n } else if (this._FBU.subencoding & 0x01) { // Raw\n this._display.blitImage(x, y, w, h, rQ, rQi);\n rQi += this._FBU.bytes - 1;\n } else {\n if (this._FBU.subencoding & 0x02) { // Background\n this._FBU.background = rQ.slice(rQi, rQi + this._fb_Bpp);\n rQi += this._fb_Bpp;\n }\n if (this._FBU.subencoding & 0x04) { // Foreground\n this._FBU.foreground = rQ.slice(rQi, rQi + this._fb_Bpp);\n rQi += this._fb_Bpp;\n }\n\n this._display.startTile(x, y, w, h, this._FBU.background);\n if (this._FBU.subencoding & 0x08) { // AnySubrects\n subrects = rQ[rQi];\n rQi++;\n\n for (var s = 0; s < subrects; s++) {\n var color;\n if (this._FBU.subencoding & 0x10) { // SubrectsColoured\n color = rQ.slice(rQi, rQi + this._fb_Bpp);\n rQi += this._fb_Bpp;\n } else {\n color = this._FBU.foreground;\n }\n var xy = rQ[rQi];\n rQi++;\n var sx = (xy >> 4);\n var sy = (xy & 0x0f);\n\n var wh = rQ[rQi];\n rQi++;\n var sw = (wh >> 4) + 1;\n var sh = (wh & 0x0f) + 1;\n\n this._display.subTile(sx, sy, sw, sh, color);\n }\n }\n this._display.finishTile();\n }\n this._sock.set_rQi(rQi);\n this._FBU.lastsubencoding = this._FBU.subencoding;\n this._FBU.bytes = 0;\n this._FBU.tiles--;\n }\n\n if (this._FBU.tiles === 0) {\n this._FBU.rects--;\n }\n\n return true;\n },\n\n getTightCLength: function (arr) {\n var header = 1, data = 0;\n data += arr[0] & 0x7f;\n if (arr[0] & 0x80) {\n header++;\n data += (arr[1] & 0x7f) << 7;\n if (arr[1] & 0x80) {\n header++;\n data += arr[2] << 14;\n }\n }\n return [header, data];\n },\n\n display_tight: function (isTightPNG) {\n if (this._fb_depth === 1) {\n this._fail(\"Tight protocol handler only implements true color mode\");\n }\n\n this._FBU.bytes = 1; // compression-control byte\n if (this._sock.rQwait(\"TIGHT compression-control\", this._FBU.bytes)) { return false; }\n\n var checksum = function (data) {\n var sum = 0;\n for (var i = 0; i < data.length; i++) {\n sum += data[i];\n if (sum > 65536) sum -= 65536;\n }\n return sum;\n };\n\n var resetStreams = 0;\n var streamId = -1;\n var decompress = function (data) {\n for (var i = 0; i < 4; i++) {\n if ((resetStreams >> i) & 1) {\n this._FBU.zlibs[i].reset();\n Util.Info(\"Reset zlib stream \" + i);\n }\n }\n\n var uncompressed = this._FBU.zlibs[streamId].uncompress(data, 0);\n if (uncompressed.status !== 0) {\n Util.Error(\"Invalid data in zlib stream\");\n }\n\n return uncompressed.data;\n }.bind(this);\n\n var indexedToRGB = function (data, numColors, palette, width, height) {\n // Convert indexed (palette based) image data to RGB\n // TODO: reduce number of calculations inside loop\n var dest = [];\n var x, y, dp, sp;\n if (numColors === 2) {\n var w = Math.floor((width + 7) / 8);\n var w1 = Math.floor(width / 8);\n\n for (y = 0; y < height; y++) {\n var b;\n for (x = 0; x < w1; x++) {\n for (b = 7; b >= 0; b--) {\n dp = (y * width + x * 8 + 7 - b) * 3;\n sp = (data[y * w + x] >> b & 1) * 3;\n dest[dp] = palette[sp];\n dest[dp + 1] = palette[sp + 1];\n dest[dp + 2] = palette[sp + 2];\n }\n }\n\n for (b = 7; b >= 8 - width % 8; b--) {\n dp = (y * width + x * 8 + 7 - b) * 3;\n sp = (data[y * w + x] >> b & 1) * 3;\n dest[dp] = palette[sp];\n dest[dp + 1] = palette[sp + 1];\n dest[dp + 2] = palette[sp + 2];\n }\n }\n } else {\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n dp = (y * width + x) * 3;\n sp = data[y * width + x] * 3;\n dest[dp] = palette[sp];\n dest[dp + 1] = palette[sp + 1];\n dest[dp + 2] = palette[sp + 2];\n }\n }\n }\n\n return dest;\n }.bind(this);\n\n var rQ = this._sock.get_rQ();\n var rQi = this._sock.get_rQi();\n var cmode, clength, data;\n\n var handlePalette = function () {\n var numColors = rQ[rQi + 2] + 1;\n var paletteSize = numColors * this._fb_depth;\n this._FBU.bytes += paletteSize;\n if (this._sock.rQwait(\"TIGHT palette \" + cmode, this._FBU.bytes)) { return false; }\n\n var bpp = (numColors <= 2) ? 1 : 8;\n var rowSize = Math.floor((this._FBU.width * bpp + 7) / 8);\n var raw = false;\n if (rowSize * this._FBU.height < 12) {\n raw = true;\n clength = [0, rowSize * this._FBU.height];\n } else {\n clength = RFB.encodingHandlers.getTightCLength(this._sock.rQslice(3 + paletteSize,\n 3 + paletteSize + 3));\n }\n\n this._FBU.bytes += clength[0] + clength[1];\n if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n // Shift ctl, filter id, num colors, palette entries, and clength off\n this._sock.rQskipBytes(3);\n var palette = this._sock.rQshiftBytes(paletteSize);\n this._sock.rQskipBytes(clength[0]);\n\n if (raw) {\n data = this._sock.rQshiftBytes(clength[1]);\n } else {\n data = decompress(this._sock.rQshiftBytes(clength[1]));\n }\n\n // Convert indexed (palette based) image data to RGB\n var rgb = indexedToRGB(data, numColors, palette, this._FBU.width, this._FBU.height);\n\n this._display.renderQ_push({\n 'type': 'blitRgb',\n 'data': rgb,\n 'x': this._FBU.x,\n 'y': this._FBU.y,\n 'width': this._FBU.width,\n 'height': this._FBU.height\n });\n\n return true;\n }.bind(this);\n\n var handleCopy = function () {\n var raw = false;\n var uncompressedSize = this._FBU.width * this._FBU.height * this._fb_depth;\n if (uncompressedSize < 12) {\n raw = true;\n clength = [0, uncompressedSize];\n } else {\n clength = RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1, 4));\n }\n this._FBU.bytes = 1 + clength[0] + clength[1];\n if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n // Shift ctl, clength off\n this._sock.rQshiftBytes(1 + clength[0]);\n\n if (raw) {\n data = this._sock.rQshiftBytes(clength[1]);\n } else {\n data = decompress(this._sock.rQshiftBytes(clength[1]));\n }\n\n this._display.renderQ_push({\n 'type': 'blitRgb',\n 'data': data,\n 'x': this._FBU.x,\n 'y': this._FBU.y,\n 'width': this._FBU.width,\n 'height': this._FBU.height\n });\n\n return true;\n }.bind(this);\n\n var ctl = this._sock.rQpeek8();\n\n // Keep tight reset bits\n resetStreams = ctl & 0xF;\n\n // Figure out filter\n ctl = ctl >> 4;\n streamId = ctl & 0x3;\n\n if (ctl === 0x08) cmode = \"fill\";\n else if (ctl === 0x09) cmode = \"jpeg\";\n else if (ctl === 0x0A) cmode = \"png\";\n else if (ctl & 0x04) cmode = \"filter\";\n else if (ctl < 0x04) cmode = \"copy\";\n else return this._fail(\"Illegal tight compression received, ctl: \" + ctl);\n\n if (isTightPNG && (cmode === \"filter\" || cmode === \"copy\")) {\n return this._fail(\"filter/copy received in tightPNG mode\");\n }\n\n switch (cmode) {\n // fill use fb_depth because TPIXELs drop the padding byte\n case \"fill\": // TPIXEL\n this._FBU.bytes += this._fb_depth;\n break;\n case \"jpeg\": // max clength\n this._FBU.bytes += 3;\n break;\n case \"png\": // max clength\n this._FBU.bytes += 3;\n break;\n case \"filter\": // filter id + num colors if palette\n this._FBU.bytes += 2;\n break;\n case \"copy\":\n break;\n }\n\n if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n // Determine FBU.bytes\n switch (cmode) {\n case \"fill\":\n this._sock.rQskip8(); // shift off ctl\n var color = this._sock.rQshiftBytes(this._fb_depth);\n this._display.renderQ_push({\n 'type': 'fill',\n 'x': this._FBU.x,\n 'y': this._FBU.y,\n 'width': this._FBU.width,\n 'height': this._FBU.height,\n 'color': [color[2], color[1], color[0]]\n });\n break;\n case \"png\":\n case \"jpeg\":\n clength = RFB.encodingHandlers.getTightCLength(this._sock.rQslice(1, 4));\n this._FBU.bytes = 1 + clength[0] + clength[1]; // ctl + clength size + jpeg-data\n if (this._sock.rQwait(\"TIGHT \" + cmode, this._FBU.bytes)) { return false; }\n\n // We have everything, render it\n this._sock.rQskipBytes(1 + clength[0]); // shift off clt + compact length\n var img = new Image();\n img.src = \"data: image/\" + cmode +\n RFB.extract_data_uri(this._sock.rQshiftBytes(clength[1]));\n this._display.renderQ_push({\n 'type': 'img',\n 'img': img,\n 'x': this._FBU.x,\n 'y': this._FBU.y\n });\n img = null;\n break;\n case \"filter\":\n var filterId = rQ[rQi + 1];\n if (filterId === 1) {\n if (!handlePalette()) { return false; }\n } else {\n // Filter 0, Copy could be valid here, but servers don't send it as an explicit filter\n // Filter 2, Gradient is valid but not use if jpeg is enabled\n // TODO(directxman12): why aren't we just calling '_fail' here\n throw new Error(\"Unsupported tight subencoding received, filter: \" + filterId);\n }\n break;\n case \"copy\":\n if (!handleCopy()) { return false; }\n break;\n }\n\n\n this._FBU.bytes = 0;\n this._FBU.rects--;\n\n return true;\n },\n\n TIGHT: function () { return this._encHandlers.display_tight(false); },\n TIGHT_PNG: function () { return this._encHandlers.display_tight(true); },\n\n last_rect: function () {\n this._FBU.rects = 0;\n return true;\n },\n\n DesktopSize: function () {\n Util.Debug(\">> set_desktopsize\");\n this._fb_width = this._FBU.width;\n this._fb_height = this._FBU.height;\n this._onFBResize(this, this._fb_width, this._fb_height);\n this._display.resize(this._fb_width, this._fb_height);\n this._timing.fbu_rt_start = (new Date()).getTime();\n\n this._FBU.bytes = 0;\n this._FBU.rects--;\n\n Util.Debug(\"<< set_desktopsize\");\n return true;\n },\n\n Cursor: function () {\n Util.Debug(\">> set_cursor\");\n var x = this._FBU.x; // hotspot-x\n var y = this._FBU.y; // hotspot-y\n var w = this._FBU.width;\n var h = this._FBU.height;\n\n var pixelslength = w * h * this._fb_Bpp;\n var masklength = Math.floor((w + 7) / 8) * h;\n\n this._FBU.bytes = pixelslength + masklength;\n if (this._sock.rQwait(\"cursor encoding\", this._FBU.bytes)) { return false; }\n\n this._display.changeCursor(this._sock.rQshiftBytes(pixelslength),\n this._sock.rQshiftBytes(masklength),\n x, y, w, h);\n\n this._FBU.bytes = 0;\n this._FBU.rects--;\n\n Util.Debug(\"<< set_cursor\");\n return true;\n },\n\n JPEG_quality_lo: function () {\n Util.Error(\"Server sent jpeg_quality pseudo-encoding\");\n },\n\n compress_lo: function () {\n Util.Error(\"Server sent compress level pseudo-encoding\");\n }\n };\n})();\n\ndefine(\"vnc-rfb\", [\"vnc-util\"], function(){});\n\n","var XK_VoidSymbol = 0xffffff, /* Void symbol */\n\nXK_BackSpace = 0xff08, /* Back space, back char */\nXK_Tab = 0xff09,\nXK_Linefeed = 0xff0a, /* Linefeed, LF */\nXK_Clear = 0xff0b,\nXK_Return = 0xff0d, /* Return, enter */\nXK_Pause = 0xff13, /* Pause, hold */\nXK_Scroll_Lock = 0xff14,\nXK_Sys_Req = 0xff15,\nXK_Escape = 0xff1b,\nXK_Delete = 0xffff, /* Delete, rubout */\n\n/* Cursor control & motion */\n\nXK_Home = 0xff50,\nXK_Left = 0xff51, /* Move left, left arrow */\nXK_Up = 0xff52, /* Move up, up arrow */\nXK_Right = 0xff53, /* Move right, right arrow */\nXK_Down = 0xff54, /* Move down, down arrow */\nXK_Prior = 0xff55, /* Prior, previous */\nXK_Page_Up = 0xff55,\nXK_Next = 0xff56, /* Next */\nXK_Page_Down = 0xff56,\nXK_End = 0xff57, /* EOL */\nXK_Begin = 0xff58, /* BOL */\n\n\n/* Misc functions */\n\nXK_Select = 0xff60, /* Select, mark */\nXK_Print = 0xff61,\nXK_Execute = 0xff62, /* Execute, run, do */\nXK_Insert = 0xff63, /* Insert, insert here */\nXK_Undo = 0xff65,\nXK_Redo = 0xff66, /* Redo, again */\nXK_Menu = 0xff67,\nXK_Find = 0xff68, /* Find, search */\nXK_Cancel = 0xff69, /* Cancel, stop, abort, exit */\nXK_Help = 0xff6a, /* Help */\nXK_Break = 0xff6b,\nXK_Mode_switch = 0xff7e, /* Character set switch */\nXK_script_switch = 0xff7e, /* Alias for mode_switch */\nXK_Num_Lock = 0xff7f,\n\n/* Keypad functions, keypad numbers cleverly chosen to map to ASCII */\n\nXK_KP_Space = 0xff80, /* Space */\nXK_KP_Tab = 0xff89,\nXK_KP_Enter = 0xff8d, /* Enter */\nXK_KP_F1 = 0xff91, /* PF1, KP_A, ... */\nXK_KP_F2 = 0xff92,\nXK_KP_F3 = 0xff93,\nXK_KP_F4 = 0xff94,\nXK_KP_Home = 0xff95,\nXK_KP_Left = 0xff96,\nXK_KP_Up = 0xff97,\nXK_KP_Right = 0xff98,\nXK_KP_Down = 0xff99,\nXK_KP_Prior = 0xff9a,\nXK_KP_Page_Up = 0xff9a\nXK_KP_Next = 0xff9b,\nXK_KP_Page_Down = 0xff9b,\nXK_KP_End = 0xff9c,\nXK_KP_Begin = 0xff9d,\nXK_KP_Insert = 0xff9e,\nXK_KP_Delete = 0xff9f,\nXK_KP_Equal = 0xffbd, /* Equals */\nXK_KP_Multiply = 0xffaa,\nXK_KP_Add = 0xffab,\nXK_KP_Separator = 0xffac, /* Separator, often comma */\nXK_KP_Subtract = 0xffad,\nXK_KP_Decimal = 0xffae,\nXK_KP_Divide = 0xffaf,\n\nXK_KP_0 = 0xffb0,\nXK_KP_1 = 0xffb1,\nXK_KP_2 = 0xffb2,\nXK_KP_3 = 0xffb3,\nXK_KP_4 = 0xffb4,\nXK_KP_5 = 0xffb5,\nXK_KP_6 = 0xffb6,\nXK_KP_7 = 0xffb7,\nXK_KP_8 = 0xffb8,\nXK_KP_9 = 0xffb9,\n\n/*\n * Auxiliary functions; note the duplicate definitions for left and right\n * function keys; Sun keyboards and a few other manufacturers have such\n * function key groups on the left and/or right sides of the keyboard.\n * We've not found a keyboard with more than 35 function keys total.\n */\n\nXK_F1 = 0xffbe,\nXK_F2 = 0xffbf,\nXK_F3 = 0xffc0,\nXK_F4 = 0xffc1,\nXK_F5 = 0xffc2,\nXK_F6 = 0xffc3,\nXK_F7 = 0xffc4,\nXK_F8 = 0xffc5,\nXK_F9 = 0xffc6,\nXK_F10 = 0xffc7,\nXK_F11 = 0xffc8,\nXK_L1 = 0xffc8,\nXK_F12 = 0xffc9,\nXK_L2 = 0xffc9,\nXK_F13 = 0xffca,\nXK_L3 = 0xffca,\nXK_F14 = 0xffcb,\nXK_L4 = 0xffcb,\nXK_F15 = 0xffcc,\nXK_L5 = 0xffcc,\nXK_F16 = 0xffcd,\nXK_L6 = 0xffcd,\nXK_F17 = 0xffce,\nXK_L7 = 0xffce,\nXK_F18 = 0xffcf,\nXK_L8 = 0xffcf,\nXK_F19 = 0xffd0,\nXK_L9 = 0xffd0,\nXK_F20 = 0xffd1,\nXK_L10 = 0xffd1,\nXK_F21 = 0xffd2,\nXK_R1 = 0xffd2,\nXK_F22 = 0xffd3,\nXK_R2 = 0xffd3,\nXK_F23 = 0xffd4,\nXK_R3 = 0xffd4,\nXK_F24 = 0xffd5,\nXK_R4 = 0xffd5,\nXK_F25 = 0xffd6,\nXK_R5 = 0xffd6,\nXK_F26 = 0xffd7,\nXK_R6 = 0xffd7,\nXK_F27 = 0xffd8,\nXK_R7 = 0xffd8,\nXK_F28 = 0xffd9,\nXK_R8 = 0xffd9,\nXK_F29 = 0xffda,\nXK_R9 = 0xffda,\nXK_F30 = 0xffdb,\nXK_R10 = 0xffdb,\nXK_F31 = 0xffdc,\nXK_R11 = 0xffdc,\nXK_F32 = 0xffdd,\nXK_R12 = 0xffdd,\nXK_F33 = 0xffde,\nXK_R13 = 0xffde,\nXK_F34 = 0xffdf,\nXK_R14 = 0xffdf,\nXK_F35 = 0xffe0,\nXK_R15 = 0xffe0,\n\n/* Modifiers */\n\nXK_Shift_L = 0xffe1, /* Left shift */\nXK_Shift_R = 0xffe2, /* Right shift */\nXK_Control_L = 0xffe3, /* Left control */\nXK_Control_R = 0xffe4, /* Right control */\nXK_Caps_Lock = 0xffe5, /* Caps lock */\nXK_Shift_Lock = 0xffe6, /* Shift lock */\n\nXK_Meta_L = 0xffe7, /* Left meta */\nXK_Meta_R = 0xffe8, /* Right meta */\nXK_Alt_L = 0xffe9, /* Left alt */\nXK_Alt_R = 0xffea, /* Right alt */\nXK_Super_L = 0xffeb, /* Left super */\nXK_Super_R = 0xffec, /* Right super */\nXK_Hyper_L = 0xffed, /* Left hyper */\nXK_Hyper_R = 0xffee, /* Right hyper */\n\nXK_ISO_Level3_Shift = 0xfe03, /* AltGr */\n\n/*\n * Latin 1\n * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF)\n * Byte 3 = 0\n */\n\nXK_space = 0x0020, /* U+0020 SPACE */\nXK_exclam = 0x0021, /* U+0021 EXCLAMATION MARK */\nXK_quotedbl = 0x0022, /* U+0022 QUOTATION MARK */\nXK_numbersign = 0x0023, /* U+0023 NUMBER SIGN */\nXK_dollar = 0x0024, /* U+0024 DOLLAR SIGN */\nXK_percent = 0x0025, /* U+0025 PERCENT SIGN */\nXK_ampersand = 0x0026, /* U+0026 AMPERSAND */\nXK_apostrophe = 0x0027, /* U+0027 APOSTROPHE */\nXK_quoteright = 0x0027, /* deprecated */\nXK_parenleft = 0x0028, /* U+0028 LEFT PARENTHESIS */\nXK_parenright = 0x0029, /* U+0029 RIGHT PARENTHESIS */\nXK_asterisk = 0x002a, /* U+002A ASTERISK */\nXK_plus = 0x002b, /* U+002B PLUS SIGN */\nXK_comma = 0x002c, /* U+002C COMMA */\nXK_minus = 0x002d, /* U+002D HYPHEN-MINUS */\nXK_period = 0x002e, /* U+002E FULL STOP */\nXK_slash = 0x002f, /* U+002F SOLIDUS */\nXK_0 = 0x0030, /* U+0030 DIGIT ZERO */\nXK_1 = 0x0031, /* U+0031 DIGIT ONE */\nXK_2 = 0x0032, /* U+0032 DIGIT TWO */\nXK_3 = 0x0033, /* U+0033 DIGIT THREE */\nXK_4 = 0x0034, /* U+0034 DIGIT FOUR */\nXK_5 = 0x0035, /* U+0035 DIGIT FIVE */\nXK_6 = 0x0036, /* U+0036 DIGIT SIX */\nXK_7 = 0x0037, /* U+0037 DIGIT SEVEN */\nXK_8 = 0x0038, /* U+0038 DIGIT EIGHT */\nXK_9 = 0x0039, /* U+0039 DIGIT NINE */\nXK_colon = 0x003a, /* U+003A COLON */\nXK_semicolon = 0x003b, /* U+003B SEMICOLON */\nXK_less = 0x003c, /* U+003C LESS-THAN SIGN */\nXK_equal = 0x003d, /* U+003D EQUALS SIGN */\nXK_greater = 0x003e, /* U+003E GREATER-THAN SIGN */\nXK_question = 0x003f, /* U+003F QUESTION MARK */\nXK_at = 0x0040, /* U+0040 COMMERCIAL AT */\nXK_A = 0x0041, /* U+0041 LATIN CAPITAL LETTER A */\nXK_B = 0x0042, /* U+0042 LATIN CAPITAL LETTER B */\nXK_C = 0x0043, /* U+0043 LATIN CAPITAL LETTER C */\nXK_D = 0x0044, /* U+0044 LATIN CAPITAL LETTER D */\nXK_E = 0x0045, /* U+0045 LATIN CAPITAL LETTER E */\nXK_F = 0x0046, /* U+0046 LATIN CAPITAL LETTER F */\nXK_G = 0x0047, /* U+0047 LATIN CAPITAL LETTER G */\nXK_H = 0x0048, /* U+0048 LATIN CAPITAL LETTER H */\nXK_I = 0x0049, /* U+0049 LATIN CAPITAL LETTER I */\nXK_J = 0x004a, /* U+004A LATIN CAPITAL LETTER J */\nXK_K = 0x004b, /* U+004B LATIN CAPITAL LETTER K */\nXK_L = 0x004c, /* U+004C LATIN CAPITAL LETTER L */\nXK_M = 0x004d, /* U+004D LATIN CAPITAL LETTER M */\nXK_N = 0x004e, /* U+004E LATIN CAPITAL LETTER N */\nXK_O = 0x004f, /* U+004F LATIN CAPITAL LETTER O */\nXK_P = 0x0050, /* U+0050 LATIN CAPITAL LETTER P */\nXK_Q = 0x0051, /* U+0051 LATIN CAPITAL LETTER Q */\nXK_R = 0x0052, /* U+0052 LATIN CAPITAL LETTER R */\nXK_S = 0x0053, /* U+0053 LATIN CAPITAL LETTER S */\nXK_T = 0x0054, /* U+0054 LATIN CAPITAL LETTER T */\nXK_U = 0x0055, /* U+0055 LATIN CAPITAL LETTER U */\nXK_V = 0x0056, /* U+0056 LATIN CAPITAL LETTER V */\nXK_W = 0x0057, /* U+0057 LATIN CAPITAL LETTER W */\nXK_X = 0x0058, /* U+0058 LATIN CAPITAL LETTER X */\nXK_Y = 0x0059, /* U+0059 LATIN CAPITAL LETTER Y */\nXK_Z = 0x005a, /* U+005A LATIN CAPITAL LETTER Z */\nXK_bracketleft = 0x005b, /* U+005B LEFT SQUARE BRACKET */\nXK_backslash = 0x005c, /* U+005C REVERSE SOLIDUS */\nXK_bracketright = 0x005d, /* U+005D RIGHT SQUARE BRACKET */\nXK_asciicircum = 0x005e, /* U+005E CIRCUMFLEX ACCENT */\nXK_underscore = 0x005f, /* U+005F LOW LINE */\nXK_grave = 0x0060, /* U+0060 GRAVE ACCENT */\nXK_quoteleft = 0x0060, /* deprecated */\nXK_a = 0x0061, /* U+0061 LATIN SMALL LETTER A */\nXK_b = 0x0062, /* U+0062 LATIN SMALL LETTER B */\nXK_c = 0x0063, /* U+0063 LATIN SMALL LETTER C */\nXK_d = 0x0064, /* U+0064 LATIN SMALL LETTER D */\nXK_e = 0x0065, /* U+0065 LATIN SMALL LETTER E */\nXK_f = 0x0066, /* U+0066 LATIN SMALL LETTER F */\nXK_g = 0x0067, /* U+0067 LATIN SMALL LETTER G */\nXK_h = 0x0068, /* U+0068 LATIN SMALL LETTER H */\nXK_i = 0x0069, /* U+0069 LATIN SMALL LETTER I */\nXK_j = 0x006a, /* U+006A LATIN SMALL LETTER J */\nXK_k = 0x006b, /* U+006B LATIN SMALL LETTER K */\nXK_l = 0x006c, /* U+006C LATIN SMALL LETTER L */\nXK_m = 0x006d, /* U+006D LATIN SMALL LETTER M */\nXK_n = 0x006e, /* U+006E LATIN SMALL LETTER N */\nXK_o = 0x006f, /* U+006F LATIN SMALL LETTER O */\nXK_p = 0x0070, /* U+0070 LATIN SMALL LETTER P */\nXK_q = 0x0071, /* U+0071 LATIN SMALL LETTER Q */\nXK_r = 0x0072, /* U+0072 LATIN SMALL LETTER R */\nXK_s = 0x0073, /* U+0073 LATIN SMALL LETTER S */\nXK_t = 0x0074, /* U+0074 LATIN SMALL LETTER T */\nXK_u = 0x0075, /* U+0075 LATIN SMALL LETTER U */\nXK_v = 0x0076, /* U+0076 LATIN SMALL LETTER V */\nXK_w = 0x0077, /* U+0077 LATIN SMALL LETTER W */\nXK_x = 0x0078, /* U+0078 LATIN SMALL LETTER X */\nXK_y = 0x0079, /* U+0079 LATIN SMALL LETTER Y */\nXK_z = 0x007a, /* U+007A LATIN SMALL LETTER Z */\nXK_braceleft = 0x007b, /* U+007B LEFT CURLY BRACKET */\nXK_bar = 0x007c, /* U+007C VERTICAL LINE */\nXK_braceright = 0x007d, /* U+007D RIGHT CURLY BRACKET */\nXK_asciitilde = 0x007e, /* U+007E TILDE */\n\nXK_nobreakspace = 0x00a0, /* U+00A0 NO-BREAK SPACE */\nXK_exclamdown = 0x00a1, /* U+00A1 INVERTED EXCLAMATION MARK */\nXK_cent = 0x00a2, /* U+00A2 CENT SIGN */\nXK_sterling = 0x00a3, /* U+00A3 POUND SIGN */\nXK_currency = 0x00a4, /* U+00A4 CURRENCY SIGN */\nXK_yen = 0x00a5, /* U+00A5 YEN SIGN */\nXK_brokenbar = 0x00a6, /* U+00A6 BROKEN BAR */\nXK_section = 0x00a7, /* U+00A7 SECTION SIGN */\nXK_diaeresis = 0x00a8, /* U+00A8 DIAERESIS */\nXK_copyright = 0x00a9, /* U+00A9 COPYRIGHT SIGN */\nXK_ordfeminine = 0x00aa, /* U+00AA FEMININE ORDINAL INDICATOR */\nXK_guillemotleft = 0x00ab, /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */\nXK_notsign = 0x00ac, /* U+00AC NOT SIGN */\nXK_hyphen = 0x00ad, /* U+00AD SOFT HYPHEN */\nXK_registered = 0x00ae, /* U+00AE REGISTERED SIGN */\nXK_macron = 0x00af, /* U+00AF MACRON */\nXK_degree = 0x00b0, /* U+00B0 DEGREE SIGN */\nXK_plusminus = 0x00b1, /* U+00B1 PLUS-MINUS SIGN */\nXK_twosuperior = 0x00b2, /* U+00B2 SUPERSCRIPT TWO */\nXK_threesuperior = 0x00b3, /* U+00B3 SUPERSCRIPT THREE */\nXK_acute = 0x00b4, /* U+00B4 ACUTE ACCENT */\nXK_mu = 0x00b5, /* U+00B5 MICRO SIGN */\nXK_paragraph = 0x00b6, /* U+00B6 PILCROW SIGN */\nXK_periodcentered = 0x00b7, /* U+00B7 MIDDLE DOT */\nXK_cedilla = 0x00b8, /* U+00B8 CEDILLA */\nXK_onesuperior = 0x00b9, /* U+00B9 SUPERSCRIPT ONE */\nXK_masculine = 0x00ba, /* U+00BA MASCULINE ORDINAL INDICATOR */\nXK_guillemotright = 0x00bb, /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */\nXK_onequarter = 0x00bc, /* U+00BC VULGAR FRACTION ONE QUARTER */\nXK_onehalf = 0x00bd, /* U+00BD VULGAR FRACTION ONE HALF */\nXK_threequarters = 0x00be, /* U+00BE VULGAR FRACTION THREE QUARTERS */\nXK_questiondown = 0x00bf, /* U+00BF INVERTED QUESTION MARK */\nXK_Agrave = 0x00c0, /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */\nXK_Aacute = 0x00c1, /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */\nXK_Acircumflex = 0x00c2, /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */\nXK_Atilde = 0x00c3, /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */\nXK_Adiaeresis = 0x00c4, /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */\nXK_Aring = 0x00c5, /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */\nXK_AE = 0x00c6, /* U+00C6 LATIN CAPITAL LETTER AE */\nXK_Ccedilla = 0x00c7, /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */\nXK_Egrave = 0x00c8, /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */\nXK_Eacute = 0x00c9, /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */\nXK_Ecircumflex = 0x00ca, /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */\nXK_Ediaeresis = 0x00cb, /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */\nXK_Igrave = 0x00cc, /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */\nXK_Iacute = 0x00cd, /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */\nXK_Icircumflex = 0x00ce, /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */\nXK_Idiaeresis = 0x00cf, /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */\nXK_ETH = 0x00d0, /* U+00D0 LATIN CAPITAL LETTER ETH */\nXK_Eth = 0x00d0, /* deprecated */\nXK_Ntilde = 0x00d1, /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */\nXK_Ograve = 0x00d2, /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */\nXK_Oacute = 0x00d3, /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */\nXK_Ocircumflex = 0x00d4, /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */\nXK_Otilde = 0x00d5, /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */\nXK_Odiaeresis = 0x00d6, /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */\nXK_multiply = 0x00d7, /* U+00D7 MULTIPLICATION SIGN */\nXK_Oslash = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\nXK_Ooblique = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */\nXK_Ugrave = 0x00d9, /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */\nXK_Uacute = 0x00da, /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */\nXK_Ucircumflex = 0x00db, /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */\nXK_Udiaeresis = 0x00dc, /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */\nXK_Yacute = 0x00dd, /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */\nXK_THORN = 0x00de, /* U+00DE LATIN CAPITAL LETTER THORN */\nXK_Thorn = 0x00de, /* deprecated */\nXK_ssharp = 0x00df, /* U+00DF LATIN SMALL LETTER SHARP S */\nXK_agrave = 0x00e0, /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */\nXK_aacute = 0x00e1, /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */\nXK_acircumflex = 0x00e2, /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */\nXK_atilde = 0x00e3, /* U+00E3 LATIN SMALL LETTER A WITH TILDE */\nXK_adiaeresis = 0x00e4, /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */\nXK_aring = 0x00e5, /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */\nXK_ae = 0x00e6, /* U+00E6 LATIN SMALL LETTER AE */\nXK_ccedilla = 0x00e7, /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */\nXK_egrave = 0x00e8, /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */\nXK_eacute = 0x00e9, /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */\nXK_ecircumflex = 0x00ea, /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */\nXK_ediaeresis = 0x00eb, /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */\nXK_igrave = 0x00ec, /* U+00EC LATIN SMALL LETTER I WITH GRAVE */\nXK_iacute = 0x00ed, /* U+00ED LATIN SMALL LETTER I WITH ACUTE */\nXK_icircumflex = 0x00ee, /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */\nXK_idiaeresis = 0x00ef, /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */\nXK_eth = 0x00f0, /* U+00F0 LATIN SMALL LETTER ETH */\nXK_ntilde = 0x00f1, /* U+00F1 LATIN SMALL LETTER N WITH TILDE */\nXK_ograve = 0x00f2, /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */\nXK_oacute = 0x00f3, /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */\nXK_ocircumflex = 0x00f4, /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */\nXK_otilde = 0x00f5, /* U+00F5 LATIN SMALL LETTER O WITH TILDE */\nXK_odiaeresis = 0x00f6, /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */\nXK_division = 0x00f7, /* U+00F7 DIVISION SIGN */\nXK_oslash = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\nXK_ooblique = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */\nXK_ugrave = 0x00f9, /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */\nXK_uacute = 0x00fa, /* U+00FA LATIN SMALL LETTER U WITH ACUTE */\nXK_ucircumflex = 0x00fb, /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */\nXK_udiaeresis = 0x00fc, /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */\nXK_yacute = 0x00fd, /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */\nXK_thorn = 0x00fe, /* U+00FE LATIN SMALL LETTER THORN */\nXK_ydiaeresis = 0x00ff; /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */\n;\ndefine(\"vnc-keysym\", [\"vnc-util\"], function(){});\n\n","define('console/vnc',['require','vnc-util','vnc-webutil','vnc-base64','vnc-websock','vnc-des','vnc-keysymdef','vnc-keyboard','vnc-input','vnc-display','vnc-jsunzip','vnc-rfb','vnc-keysym'],function(require) {\n require('vnc-util');\n require('vnc-webutil');\n require('vnc-base64');\n require('vnc-websock');\n require('vnc-des');\n require('vnc-keysymdef');\n require('vnc-keyboard');\n require('vnc-input');\n require('vnc-display');\n require('vnc-jsunzip');\n require('vnc-rfb');\n require('vnc-keysym');\n\n var rfb;\n\n function passwordRequired(rfb) {\n var msg;\n msg = '= 1) {\n xvpbuttons.style.display = 'inline';\n } else {\n xvpbuttons.style.display = 'none';\n }\n }\n\n var host, port, password, path, token;\n\n $D('sendCtrlAltDelButton').style.display = \"inline\";\n $D('sendCtrlAltDelButton').onclick = sendCtrlAltDel;\n $D('xvpShutdownButton').onclick = xvpShutdown;\n $D('xvpRebootButton').onclick = xvpReboot;\n $D('xvpResetButton').onclick = xvpReset;\n\n WebUtil.init_logging(WebUtil.getQueryVar('logging', 'warn'));\n document.title = unescape(WebUtil.getQueryVar('title', 'noVNC'));\n // By default, use the host and port of server that served this file\n host = WebUtil.getQueryVar('host', window.location.hostname);\n port = WebUtil.getQueryVar('port', window.location.port);\n\n // if port == 80 (or 443) then it won't be present and should be\n // set manually\n if (!port) {\n if (window.location.protocol.substring(0, 4) == 'http') {\n port = 80;\n } else if (window.location.protocol.substring(0, 5) == 'https') {\n port = 443;\n }\n }\n\n // If a token variable is passed in, set the parameter in a cookie.\n // This is used by nova-novncproxy.\n token = WebUtil.getQueryVar('token', null);\n if (token) {\n WebUtil.createCookie('token', token, 1)\n }\n\n password = WebUtil.getQueryVar('password', '');\n path = WebUtil.getQueryVar('path', 'websockify');\n\n if ((!host) || (!port)) {\n updateState('failed',\n \"Must specify host and port in URL\");\n return;\n }\n\n rfb = new RFB({'target': $D('noVNC_canvas'),\n 'encrypt': WebUtil.getQueryVar('encrypt',\n (window.location.protocol === \"https:\")),\n 'repeaterID': WebUtil.getQueryVar('repeaterID', ''),\n 'true_color': WebUtil.getQueryVar('true_color', true),\n 'local_cursor': WebUtil.getQueryVar('cursor', true),\n 'shared': WebUtil.getQueryVar('shared', true),\n 'view_only': WebUtil.getQueryVar('view_only', false),\n 'onUpdateState': updateState,\n 'onXvpInit': xvpInit,\n 'onPasswordRequired': passwordRequired});\n\n rfb.connect(host, port, password, path + \"?token=\" + token);\n})\n;\n"]} \ No newline at end of file diff --git a/src/sunstone/public/dist/login.js b/src/sunstone/public/dist/login.js deleted file mode 100644 index 99fe34767a..0000000000 --- a/src/sunstone/public/dist/login.js +++ /dev/null @@ -1,5 +0,0 @@ -var requirejs,require,define;!function(e){function t(e,t){return v.call(e,t)}function n(e,t){var n,r,i,o,s,a,u,l,c,f,p,d=t&&t.split("/"),h=g.map,m=h&&h["*"]||{};if(e&&"."===e.charAt(0))if(t){for(e=e.split("/"),s=e.length-1,g.nodeIdCompat&&x.test(e[s])&&(e[s]=e[s].replace(x,"")),e=d.slice(0,d.length-1).concat(e),c=0;c0&&(e.splice(c-1,2),c-=2)}e=e.join("/")}else 0===e.indexOf("./")&&(e=e.substring(2));if((d||m)&&h){for(n=e.split("/"),c=n.length;c>0;c-=1){if(r=n.slice(0,c).join("/"),d)for(f=d.length;f>0;f-=1)if(i=h[d.slice(0,f).join("/")],i&&(i=i[r])){o=i,a=c;break}if(o)break;!u&&m&&m[r]&&(u=m[r],l=c)}!o&&u&&(o=u,a=l),o&&(n.splice(0,a,o),e=n.join("/"))}return e}function r(t,n){return function(){var r=y.call(arguments,0);return"string"!=typeof r[0]&&1===r.length&&r.push(null),c.apply(e,r.concat([t,n]))}}function i(e){return function(t){return n(t,e)}}function o(e){return function(t){d[e]=t}}function s(n){if(t(h,n)){var r=h[n];delete h[n],m[n]=!0,l.apply(e,r)}if(!t(d,n)&&!t(m,n))throw new Error("No "+n);return d[n]}function a(e){var t,n=e?e.indexOf("!"):-1;return n>-1&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function u(e){return function(){return g&&g.config&&g.config[e]||{}}}var l,c,f,p,d={},h={},g={},m={},v=Object.prototype.hasOwnProperty,y=[].slice,x=/\.js$/;f=function(e,t){var r,o=a(e),u=o[0];return e=o[1],u&&(u=n(u,t),r=s(u)),u?e=r&&r.normalize?r.normalize(e,i(t)):n(e,t):(e=n(e,t),o=a(e),u=o[0],e=o[1],u&&(r=s(u))),{f:u?u+"!"+e:e,n:e,pr:u,p:r}},p={require:function(e){return r(e)},exports:function(e){var t=d[e];return"undefined"!=typeof t?t:d[e]={}},module:function(e){return{id:e,uri:"",exports:d[e],config:u(e)}}},l=function(n,i,a,u){var l,c,g,v,y,x,b=[],w=typeof a;if(u=u||n,"undefined"===w||"function"===w){for(i=!i.length&&a.length?["require","exports","module"]:i,y=0;y0&&t-1 in e}function r(e,t,n){if(Z.isFunction(t))return Z.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return Z.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(at.test(t))return Z.filter(t,e,n);t=Z.filter(t,e)}return Z.grep(e,function(e){return U.call(t,e)>=0!==n})}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function o(e){var t=ht[e]={};return Z.each(e.match(dt)||[],function(e,n){t[n]=!0}),t}function s(){Q.removeEventListener("DOMContentLoaded",s,!1),e.removeEventListener("load",s,!1),Z.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Z.expando+a.uid++}function u(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(bt,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:xt.test(n)?Z.parseJSON(n):n}catch(i){}yt.set(e,t,n)}else n=void 0;return n}function l(){return!0}function c(){return!1}function f(){try{return Q.activeElement}catch(e){}}function p(e,t){return Z.nodeName(e,"table")&&Z.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function d(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function h(e){var t=Pt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function g(e,t){for(var n=0,r=e.length;r>n;n++)vt.set(e[n],"globalEval",!t||vt.get(t[n],"globalEval"))}function m(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(vt.hasData(e)&&(o=vt.access(e),s=vt.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)Z.event.add(t,i,l[i][n])}yt.hasData(e)&&(a=yt.access(e),u=Z.extend({},a),yt.set(t,u))}}function v(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&Z.nodeName(e,t)?Z.merge([e],n):n}function y(e,t){var n=t.nodeName.toLowerCase();"input"===n&&kt.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}function x(t,n){var r,i=Z(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(r=e.getDefaultComputedStyle(i[0]))?r.display:Z.css(i[0],"display");return i.detach(),o}function b(e){var t=Q,n=It[e];return n||(n=x(e,t),"none"!==n&&n||(Mt=(Mt||Z("