4 <meta charset=
"utf-8" />
5 <title>BIP39 - Mnemonic Code
</title>
6 <!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">-->
9 * Bootstrap v3.2
.0 (http://getbootstrap.com)
10 * Copyright
2011-
2014 Twitter, Inc.
11 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
12 *//*! normalize.css v3.0
.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:
100%;-ms-text-size-adjust:
100%}body{margin:
0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:
0}[hidden],template{display:none}a{background:
0 0}a:active,a:hover{outline:
0}abbr[title]{border-bottom:
1px dotted}b,strong{font-weight:
700}dfn{font-style:italic}h1{margin:
.67em
0;font-size:
2em}mark{color:#
000;background:#ff0}small{font-size:
80%}sub,sup{position:relative;font-size:
75%;line-height:
0;vertical-align:baseline}sup{top:-
.5em}sub{bottom:-
.25em}img{border:
0}svg:not(:root){overflow:hidden}figure{margin:
1em
40px}hr{height:
0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:
1em}button,input,optgroup,select,textarea{margin:
0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:
0;border:
0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:
0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:
.35em
.625em
.75em;margin:
0 2px;border:
1px solid silver}legend{padding:
0;border:
0}textarea{overflow:auto}optgroup{font-weight:
700}table{border-spacing:
0;border-collapse:collapse}td,th{padding:
0}@media print{*{color:#
000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:
1px solid #
999;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}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn
>.caret,.dropup
>.btn
>.caret{border-top-color:#
000!important}.label{border:
1px solid #
000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:
1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:
1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:
400;line-height:
1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\
2a"}.glyphicon-plus:before{content:"\
2b"}.glyphicon-euro:before{content:"\
20ac"}.glyphicon-minus:before{content:"\
2212"}.glyphicon-cloud:before{content:"\
2601"}.glyphicon-envelope:before{content:"\
2709"}.glyphicon-pencil:before{content:"\
270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-
5-
1:before{content:"\e191"}.glyphicon-sound-
6-
1:before{content:"\e192"}.glyphicon-sound-
7-
1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:
10px;-webkit-tap-highlight-color:rgba(
0,
0,
0,
0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:
14px;line-height:
1.42857143;color:#
333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#
428bca;text-decoration:none}a:hover,a:focus{color:#
2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}figure{margin:
0}img{vertical-align:middle}.img-responsive,.thumbnail
>img,.thumbnail a
>img,.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{display:block;width:
100% \
9;max-width:
100%;height:auto}.img-rounded{border-radius:
6px}.img-thumbnail{display:inline-block;width:
100% \
9;max-width:
100%;height:auto;padding:
4px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.img-circle{border-radius:
50%}hr{margin-top:
20px;margin-bottom:
20px;border:
0;border-top:
1px solid #eee}.sr-only{position:absolute;width:
1px;height:
1px;padding:
0;margin:-
1px;overflow:hidden;clip:rect(
0,
0,
0,
0);border:
0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:
0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:
500;line-height:
1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:
400;line-height:
1;color:#
777}h1,.h1,h2,.h2,h3,.h3{margin-top:
20px;margin-bottom:
10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:
65%}h4,.h4,h5,.h5,h6,.h6{margin-top:
10px;margin-bottom:
10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:
75%}h1,.h1{font-size:
36px}h2,.h2{font-size:
30px}h3,.h3{font-size:
24px}h4,.h4{font-size:
18px}h5,.h5{font-size:
14px}h6,.h6{font-size:
12px}p{margin:
0 0 10px}.lead{margin-bottom:
20px;font-size:
16px;font-weight:
300;line-height:
1.4}@media (min-width:
768px){.lead{font-size:
21px}}small,.small{font-size:
85%}cite{font-style:normal}mark,.mark{padding:
.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#
777}.text-primary{color:#
428bca}a.text-primary:hover{color:#
3071a9}.text-success{color:#
3c763d}a.text-success:hover{color:#
2b542c}.text-info{color:#
31708f}a.text-info:hover{color:#
245269}.text-warning{color:#
8a6d3b}a.text-warning:hover{color:#
66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#
843534}.bg-primary{color:#fff;background-color:#
428bca}a.bg-primary:hover{background-color:#
3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:
9px;margin:
40px
0 20px;border-bottom:
1px solid #eee}ul,ol{margin-top:
0;margin-bottom:
10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:
0}.list-unstyled{padding-left:
0;list-style:none}.list-inline{padding-left:
0;margin-left:-
5px;list-style:none}.list-inline
>li{display:inline-block;padding-right:
5px;padding-left:
5px}dl{margin-top:
0;margin-bottom:
20px}dt,dd{line-height:
1.42857143}dt{font-weight:
700}dd{margin-left:
0}@media (min-width:
768px){.dl-horizontal dt{float:left;width:
160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:
180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:
1px dotted #
777}.initialism{font-size:
90%;text-transform:uppercase}blockquote{padding:
10px
20px;margin:
0 0 20px;font-size:
17.5px;border-left:
5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:
0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:
80%;line-height:
1.42857143;color:#
777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\
2014 \
00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:
15px;padding-left:
0;text-align:right;border-right:
5px solid #eee;border-left:
0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\
00A0 \
2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:
20px;font-style:normal;line-height:
1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:
2px
4px;font-size:
90%;color:#c7254e;background-color:#f9f2f4;border-radius:
4px}kbd{padding:
2px
4px;font-size:
90%;color:#fff;background-color:#
333;border-radius:
3px;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.25)}kbd kbd{padding:
0;font-size:
100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:
9.5px;margin:
0 0 10px;font-size:
13px;line-height:
1.42857143;color:#
333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:
1px solid #ccc;border-radius:
4px}pre code{padding:
0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:
0}.pre-scrollable{max-height:
340px;overflow-y:scroll}.container{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}@media (min-width:
768px){.container{width:
750px}}@media (min-width:
992px){.container{width:
970px}}@media (min-width:
1200px){.container{width:
1170px}}.container-fluid{padding-right:
15px;padding-left:
15px;margin-right:auto;margin-left:auto}.row{margin-right:-
15px;margin-left:-
15px}.col-xs-
1,.col-sm-
1,.col-md-
1,.col-lg-
1,.col-xs-
2,.col-sm-
2,.col-md-
2,.col-lg-
2,.col-xs-
3,.col-sm-
3,.col-md-
3,.col-lg-
3,.col-xs-
4,.col-sm-
4,.col-md-
4,.col-lg-
4,.col-xs-
5,.col-sm-
5,.col-md-
5,.col-lg-
5,.col-xs-
6,.col-sm-
6,.col-md-
6,.col-lg-
6,.col-xs-
7,.col-sm-
7,.col-md-
7,.col-lg-
7,.col-xs-
8,.col-sm-
8,.col-md-
8,.col-lg-
8,.col-xs-
9,.col-sm-
9,.col-md-
9,.col-lg-
9,.col-xs-
10,.col-sm-
10,.col-md-
10,.col-lg-
10,.col-xs-
11,.col-sm-
11,.col-md-
11,.col-lg-
11,.col-xs-
12,.col-sm-
12,.col-md-
12,.col-lg-
12{position:relative;min-height:
1px;padding-right:
15px;padding-left:
15px}.col-xs-
1,.col-xs-
2,.col-xs-
3,.col-xs-
4,.col-xs-
5,.col-xs-
6,.col-xs-
7,.col-xs-
8,.col-xs-
9,.col-xs-
10,.col-xs-
11,.col-xs-
12{float:left}.col-xs-
12{width:
100%}.col-xs-
11{width:
91.66666667%}.col-xs-
10{width:
83.33333333%}.col-xs-
9{width:
75%}.col-xs-
8{width:
66.66666667%}.col-xs-
7{width:
58.33333333%}.col-xs-
6{width:
50%}.col-xs-
5{width:
41.66666667%}.col-xs-
4{width:
33.33333333%}.col-xs-
3{width:
25%}.col-xs-
2{width:
16.66666667%}.col-xs-
1{width:
8.33333333%}.col-xs-pull-
12{right:
100%}.col-xs-pull-
11{right:
91.66666667%}.col-xs-pull-
10{right:
83.33333333%}.col-xs-pull-
9{right:
75%}.col-xs-pull-
8{right:
66.66666667%}.col-xs-pull-
7{right:
58.33333333%}.col-xs-pull-
6{right:
50%}.col-xs-pull-
5{right:
41.66666667%}.col-xs-pull-
4{right:
33.33333333%}.col-xs-pull-
3{right:
25%}.col-xs-pull-
2{right:
16.66666667%}.col-xs-pull-
1{right:
8.33333333%}.col-xs-pull-
0{right:auto}.col-xs-push-
12{left:
100%}.col-xs-push-
11{left:
91.66666667%}.col-xs-push-
10{left:
83.33333333%}.col-xs-push-
9{left:
75%}.col-xs-push-
8{left:
66.66666667%}.col-xs-push-
7{left:
58.33333333%}.col-xs-push-
6{left:
50%}.col-xs-push-
5{left:
41.66666667%}.col-xs-push-
4{left:
33.33333333%}.col-xs-push-
3{left:
25%}.col-xs-push-
2{left:
16.66666667%}.col-xs-push-
1{left:
8.33333333%}.col-xs-push-
0{left:auto}.col-xs-offset-
12{margin-left:
100%}.col-xs-offset-
11{margin-left:
91.66666667%}.col-xs-offset-
10{margin-left:
83.33333333%}.col-xs-offset-
9{margin-left:
75%}.col-xs-offset-
8{margin-left:
66.66666667%}.col-xs-offset-
7{margin-left:
58.33333333%}.col-xs-offset-
6{margin-left:
50%}.col-xs-offset-
5{margin-left:
41.66666667%}.col-xs-offset-
4{margin-left:
33.33333333%}.col-xs-offset-
3{margin-left:
25%}.col-xs-offset-
2{margin-left:
16.66666667%}.col-xs-offset-
1{margin-left:
8.33333333%}.col-xs-offset-
0{margin-left:
0}@media (min-width:
768px){.col-sm-
1,.col-sm-
2,.col-sm-
3,.col-sm-
4,.col-sm-
5,.col-sm-
6,.col-sm-
7,.col-sm-
8,.col-sm-
9,.col-sm-
10,.col-sm-
11,.col-sm-
12{float:left}.col-sm-
12{width:
100%}.col-sm-
11{width:
91.66666667%}.col-sm-
10{width:
83.33333333%}.col-sm-
9{width:
75%}.col-sm-
8{width:
66.66666667%}.col-sm-
7{width:
58.33333333%}.col-sm-
6{width:
50%}.col-sm-
5{width:
41.66666667%}.col-sm-
4{width:
33.33333333%}.col-sm-
3{width:
25%}.col-sm-
2{width:
16.66666667%}.col-sm-
1{width:
8.33333333%}.col-sm-pull-
12{right:
100%}.col-sm-pull-
11{right:
91.66666667%}.col-sm-pull-
10{right:
83.33333333%}.col-sm-pull-
9{right:
75%}.col-sm-pull-
8{right:
66.66666667%}.col-sm-pull-
7{right:
58.33333333%}.col-sm-pull-
6{right:
50%}.col-sm-pull-
5{right:
41.66666667%}.col-sm-pull-
4{right:
33.33333333%}.col-sm-pull-
3{right:
25%}.col-sm-pull-
2{right:
16.66666667%}.col-sm-pull-
1{right:
8.33333333%}.col-sm-pull-
0{right:auto}.col-sm-push-
12{left:
100%}.col-sm-push-
11{left:
91.66666667%}.col-sm-push-
10{left:
83.33333333%}.col-sm-push-
9{left:
75%}.col-sm-push-
8{left:
66.66666667%}.col-sm-push-
7{left:
58.33333333%}.col-sm-push-
6{left:
50%}.col-sm-push-
5{left:
41.66666667%}.col-sm-push-
4{left:
33.33333333%}.col-sm-push-
3{left:
25%}.col-sm-push-
2{left:
16.66666667%}.col-sm-push-
1{left:
8.33333333%}.col-sm-push-
0{left:auto}.col-sm-offset-
12{margin-left:
100%}.col-sm-offset-
11{margin-left:
91.66666667%}.col-sm-offset-
10{margin-left:
83.33333333%}.col-sm-offset-
9{margin-left:
75%}.col-sm-offset-
8{margin-left:
66.66666667%}.col-sm-offset-
7{margin-left:
58.33333333%}.col-sm-offset-
6{margin-left:
50%}.col-sm-offset-
5{margin-left:
41.66666667%}.col-sm-offset-
4{margin-left:
33.33333333%}.col-sm-offset-
3{margin-left:
25%}.col-sm-offset-
2{margin-left:
16.66666667%}.col-sm-offset-
1{margin-left:
8.33333333%}.col-sm-offset-
0{margin-left:
0}}@media (min-width:
992px){.col-md-
1,.col-md-
2,.col-md-
3,.col-md-
4,.col-md-
5,.col-md-
6,.col-md-
7,.col-md-
8,.col-md-
9,.col-md-
10,.col-md-
11,.col-md-
12{float:left}.col-md-
12{width:
100%}.col-md-
11{width:
91.66666667%}.col-md-
10{width:
83.33333333%}.col-md-
9{width:
75%}.col-md-
8{width:
66.66666667%}.col-md-
7{width:
58.33333333%}.col-md-
6{width:
50%}.col-md-
5{width:
41.66666667%}.col-md-
4{width:
33.33333333%}.col-md-
3{width:
25%}.col-md-
2{width:
16.66666667%}.col-md-
1{width:
8.33333333%}.col-md-pull-
12{right:
100%}.col-md-pull-
11{right:
91.66666667%}.col-md-pull-
10{right:
83.33333333%}.col-md-pull-
9{right:
75%}.col-md-pull-
8{right:
66.66666667%}.col-md-pull-
7{right:
58.33333333%}.col-md-pull-
6{right:
50%}.col-md-pull-
5{right:
41.66666667%}.col-md-pull-
4{right:
33.33333333%}.col-md-pull-
3{right:
25%}.col-md-pull-
2{right:
16.66666667%}.col-md-pull-
1{right:
8.33333333%}.col-md-pull-
0{right:auto}.col-md-push-
12{left:
100%}.col-md-push-
11{left:
91.66666667%}.col-md-push-
10{left:
83.33333333%}.col-md-push-
9{left:
75%}.col-md-push-
8{left:
66.66666667%}.col-md-push-
7{left:
58.33333333%}.col-md-push-
6{left:
50%}.col-md-push-
5{left:
41.66666667%}.col-md-push-
4{left:
33.33333333%}.col-md-push-
3{left:
25%}.col-md-push-
2{left:
16.66666667%}.col-md-push-
1{left:
8.33333333%}.col-md-push-
0{left:auto}.col-md-offset-
12{margin-left:
100%}.col-md-offset-
11{margin-left:
91.66666667%}.col-md-offset-
10{margin-left:
83.33333333%}.col-md-offset-
9{margin-left:
75%}.col-md-offset-
8{margin-left:
66.66666667%}.col-md-offset-
7{margin-left:
58.33333333%}.col-md-offset-
6{margin-left:
50%}.col-md-offset-
5{margin-left:
41.66666667%}.col-md-offset-
4{margin-left:
33.33333333%}.col-md-offset-
3{margin-left:
25%}.col-md-offset-
2{margin-left:
16.66666667%}.col-md-offset-
1{margin-left:
8.33333333%}.col-md-offset-
0{margin-left:
0}}@media (min-width:
1200px){.col-lg-
1,.col-lg-
2,.col-lg-
3,.col-lg-
4,.col-lg-
5,.col-lg-
6,.col-lg-
7,.col-lg-
8,.col-lg-
9,.col-lg-
10,.col-lg-
11,.col-lg-
12{float:left}.col-lg-
12{width:
100%}.col-lg-
11{width:
91.66666667%}.col-lg-
10{width:
83.33333333%}.col-lg-
9{width:
75%}.col-lg-
8{width:
66.66666667%}.col-lg-
7{width:
58.33333333%}.col-lg-
6{width:
50%}.col-lg-
5{width:
41.66666667%}.col-lg-
4{width:
33.33333333%}.col-lg-
3{width:
25%}.col-lg-
2{width:
16.66666667%}.col-lg-
1{width:
8.33333333%}.col-lg-pull-
12{right:
100%}.col-lg-pull-
11{right:
91.66666667%}.col-lg-pull-
10{right:
83.33333333%}.col-lg-pull-
9{right:
75%}.col-lg-pull-
8{right:
66.66666667%}.col-lg-pull-
7{right:
58.33333333%}.col-lg-pull-
6{right:
50%}.col-lg-pull-
5{right:
41.66666667%}.col-lg-pull-
4{right:
33.33333333%}.col-lg-pull-
3{right:
25%}.col-lg-pull-
2{right:
16.66666667%}.col-lg-pull-
1{right:
8.33333333%}.col-lg-pull-
0{right:auto}.col-lg-push-
12{left:
100%}.col-lg-push-
11{left:
91.66666667%}.col-lg-push-
10{left:
83.33333333%}.col-lg-push-
9{left:
75%}.col-lg-push-
8{left:
66.66666667%}.col-lg-push-
7{left:
58.33333333%}.col-lg-push-
6{left:
50%}.col-lg-push-
5{left:
41.66666667%}.col-lg-push-
4{left:
33.33333333%}.col-lg-push-
3{left:
25%}.col-lg-push-
2{left:
16.66666667%}.col-lg-push-
1{left:
8.33333333%}.col-lg-push-
0{left:auto}.col-lg-offset-
12{margin-left:
100%}.col-lg-offset-
11{margin-left:
91.66666667%}.col-lg-offset-
10{margin-left:
83.33333333%}.col-lg-offset-
9{margin-left:
75%}.col-lg-offset-
8{margin-left:
66.66666667%}.col-lg-offset-
7{margin-left:
58.33333333%}.col-lg-offset-
6{margin-left:
50%}.col-lg-offset-
5{margin-left:
41.66666667%}.col-lg-offset-
4{margin-left:
33.33333333%}.col-lg-offset-
3{margin-left:
25%}.col-lg-offset-
2{margin-left:
16.66666667%}.col-lg-offset-
1{margin-left:
8.33333333%}.col-lg-offset-
0{margin-left:
0}}table{background-color:transparent}th{text-align:left}.table{width:
100%;max-width:
100%;margin-bottom:
20px}.table
>thead
>tr
>th,.table
>tbody
>tr
>th,.table
>tfoot
>tr
>th,.table
>thead
>tr
>td,.table
>tbody
>tr
>td,.table
>tfoot
>tr
>td{padding:
8px;line-height:
1.42857143;vertical-align:top;border-top:
1px solid #ddd}.table
>thead
>tr
>th{vertical-align:bottom;border-bottom:
2px solid #ddd}.table
>caption+thead
>tr:first-child
>th,.table
>colgroup+thead
>tr:first-child
>th,.table
>thead:first-child
>tr:first-child
>th,.table
>caption+thead
>tr:first-child
>td,.table
>colgroup+thead
>tr:first-child
>td,.table
>thead:first-child
>tr:first-child
>td{border-top:
0}.table
>tbody+tbody{border-top:
2px solid #ddd}.table .table{background-color:#fff}.table-condensed
>thead
>tr
>th,.table-condensed
>tbody
>tr
>th,.table-condensed
>tfoot
>tr
>th,.table-condensed
>thead
>tr
>td,.table-condensed
>tbody
>tr
>td,.table-condensed
>tfoot
>tr
>td{padding:
5px}.table-bordered{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>tbody
>tr
>th,.table-bordered
>tfoot
>tr
>th,.table-bordered
>thead
>tr
>td,.table-bordered
>tbody
>tr
>td,.table-bordered
>tfoot
>tr
>td{border:
1px solid #ddd}.table-bordered
>thead
>tr
>th,.table-bordered
>thead
>tr
>td{border-bottom-width:
2px}.table-striped
>tbody
>tr:nth-child(odd)
>td,.table-striped
>tbody
>tr:nth-child(odd)
>th{background-color:#f9f9f9}.table-hover
>tbody
>tr:hover
>td,.table-hover
>tbody
>tr:hover
>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table
>thead
>tr
>td.active,.table
>tbody
>tr
>td.active,.table
>tfoot
>tr
>td.active,.table
>thead
>tr
>th.active,.table
>tbody
>tr
>th.active,.table
>tfoot
>tr
>th.active,.table
>thead
>tr.active
>td,.table
>tbody
>tr.active
>td,.table
>tfoot
>tr.active
>td,.table
>thead
>tr.active
>th,.table
>tbody
>tr.active
>th,.table
>tfoot
>tr.active
>th{background-color:#f5f5f5}.table-hover
>tbody
>tr
>td.active:hover,.table-hover
>tbody
>tr
>th.active:hover,.table-hover
>tbody
>tr.active:hover
>td,.table-hover
>tbody
>tr:hover
>.active,.table-hover
>tbody
>tr.active:hover
>th{background-color:#e8e8e8}.table
>thead
>tr
>td.success,.table
>tbody
>tr
>td.success,.table
>tfoot
>tr
>td.success,.table
>thead
>tr
>th.success,.table
>tbody
>tr
>th.success,.table
>tfoot
>tr
>th.success,.table
>thead
>tr.success
>td,.table
>tbody
>tr.success
>td,.table
>tfoot
>tr.success
>td,.table
>thead
>tr.success
>th,.table
>tbody
>tr.success
>th,.table
>tfoot
>tr.success
>th{background-color:#dff0d8}.table-hover
>tbody
>tr
>td.success:hover,.table-hover
>tbody
>tr
>th.success:hover,.table-hover
>tbody
>tr.success:hover
>td,.table-hover
>tbody
>tr:hover
>.success,.table-hover
>tbody
>tr.success:hover
>th{background-color:#d0e9c6}.table
>thead
>tr
>td.info,.table
>tbody
>tr
>td.info,.table
>tfoot
>tr
>td.info,.table
>thead
>tr
>th.info,.table
>tbody
>tr
>th.info,.table
>tfoot
>tr
>th.info,.table
>thead
>tr.info
>td,.table
>tbody
>tr.info
>td,.table
>tfoot
>tr.info
>td,.table
>thead
>tr.info
>th,.table
>tbody
>tr.info
>th,.table
>tfoot
>tr.info
>th{background-color:#d9edf7}.table-hover
>tbody
>tr
>td.info:hover,.table-hover
>tbody
>tr
>th.info:hover,.table-hover
>tbody
>tr.info:hover
>td,.table-hover
>tbody
>tr:hover
>.info,.table-hover
>tbody
>tr.info:hover
>th{background-color:#c4e3f3}.table
>thead
>tr
>td.warning,.table
>tbody
>tr
>td.warning,.table
>tfoot
>tr
>td.warning,.table
>thead
>tr
>th.warning,.table
>tbody
>tr
>th.warning,.table
>tfoot
>tr
>th.warning,.table
>thead
>tr.warning
>td,.table
>tbody
>tr.warning
>td,.table
>tfoot
>tr.warning
>td,.table
>thead
>tr.warning
>th,.table
>tbody
>tr.warning
>th,.table
>tfoot
>tr.warning
>th{background-color:#fcf8e3}.table-hover
>tbody
>tr
>td.warning:hover,.table-hover
>tbody
>tr
>th.warning:hover,.table-hover
>tbody
>tr.warning:hover
>td,.table-hover
>tbody
>tr:hover
>.warning,.table-hover
>tbody
>tr.warning:hover
>th{background-color:#faf2cc}.table
>thead
>tr
>td.danger,.table
>tbody
>tr
>td.danger,.table
>tfoot
>tr
>td.danger,.table
>thead
>tr
>th.danger,.table
>tbody
>tr
>th.danger,.table
>tfoot
>tr
>th.danger,.table
>thead
>tr.danger
>td,.table
>tbody
>tr.danger
>td,.table
>tfoot
>tr.danger
>td,.table
>thead
>tr.danger
>th,.table
>tbody
>tr.danger
>th,.table
>tfoot
>tr.danger
>th{background-color:#f2dede}.table-hover
>tbody
>tr
>td.danger:hover,.table-hover
>tbody
>tr
>th.danger:hover,.table-hover
>tbody
>tr.danger:hover
>td,.table-hover
>tbody
>tr:hover
>.danger,.table-hover
>tbody
>tr.danger:hover
>th{background-color:#ebcccc}@media screen and (max-width:
767px){.table-responsive{width:
100%;margin-bottom:
15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:
1px solid #ddd}.table-responsive
>.table{margin-bottom:
0}.table-responsive
>.table
>thead
>tr
>th,.table-responsive
>.table
>tbody
>tr
>th,.table-responsive
>.table
>tfoot
>tr
>th,.table-responsive
>.table
>thead
>tr
>td,.table-responsive
>.table
>tbody
>tr
>td,.table-responsive
>.table
>tfoot
>tr
>td{white-space:nowrap}.table-responsive
>.table-bordered{border:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th,.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td{border-bottom:
0}}fieldset{min-width:
0;padding:
0;margin:
0;border:
0}legend{display:block;width:
100%;padding:
0;margin-bottom:
20px;font-size:
21px;line-height:inherit;color:#
333;border:
0;border-bottom:
1px solid #e5e5e5}label{display:inline-block;max-width:
100%;margin-bottom:
5px;font-weight:
700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:
4px
0 0;margin-top:
1px \
9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:
100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}output{display:block;padding-top:
7px;font-size:
14px;line-height:
1.42857143;color:#
555}.form-control{display:block;width:
100%;height:
34px;padding:
6px
12px;font-size:
14px;line-height:
1.42857143;color:#
555;background-color:#fff;background-image:none;border:
1px solid #ccc;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);-webkit-transition:border-color ease-in-out
.15s,-webkit-box-shadow ease-in-out
.15s;-o-transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s;transition:border-color ease-in-out
.15s,box-shadow ease-in-out
.15s}.form-control:focus{border-color:#
66afe9;outline:
0;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 8px rgba(
102,
175,
233,
.6)}.form-control::-moz-placeholder{color:#
777;opacity:
1}.form-control:-ms-input-placeholder{color:#
777}.form-control::-webkit-input-placeholder{color:#
777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:
1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:
34px;line-height:
1.42857143 \
0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:
30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:
46px}.form-group{margin-bottom:
15px}.radio,.checkbox{position:relative;display:block;min-height:
20px;margin-top:
10px;margin-bottom:
10px}.radio label,.checkbox label{padding-left:
20px;margin-bottom:
0;font-weight:
400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:
4px \
9;margin-left:-
20px}.radio+.radio,.checkbox+.checkbox{margin-top:-
5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:
20px;margin-bottom:
0;font-weight:
400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:
0;margin-left:
10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:
7px;padding-bottom:
7px;margin-bottom:
0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:
0;padding-left:
0}.input-sm,.form-horizontal .form-group-sm .form-control{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-sm{height:
30px;line-height:
30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-lg{height:
46px;line-height:
46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:
42.5px}.form-control-feedback{position:absolute;top:
25px;right:
0;z-index:
2;display:block;width:
34px;height:
34px;line-height:
34px;text-align:center}.input-lg+.form-control-feedback{width:
46px;height:
46px;line-height:
46px}.input-sm+.form-control-feedback{width:
30px;height:
30px;line-height:
30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#
3c763d}.has-success .form-control{border-color:#
3c763d;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-success .form-control:focus{border-color:#
2b542c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #
67b168}.has-success .input-group-addon{color:#
3c763d;background-color:#dff0d8;border-color:#
3c763d}.has-success .form-control-feedback{color:#
3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#
8a6d3b}.has-warning .form-control{border-color:#
8a6d3b;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-warning .form-control:focus{border-color:#
66512c;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #c0a16b}.has-warning .input-group-addon{color:#
8a6d3b;background-color:#fcf8e3;border-color:#
8a6d3b}.has-warning .form-control-feedback{color:#
8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075)}.has-error .form-control:focus{border-color:#
843534;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483;box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.075),
0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:
0}.help-block{display:block;margin-top:
5px;margin-bottom:
10px;color:#
737373}@media (min-width:
768px){.form-inline .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group
>.form-control{width:
100%}.form-inline .control-label{margin-bottom:
0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:
0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:
0}.form-inline .has-feedback .form-control-feedback{top:
0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:
7px;margin-top:
0;margin-bottom:
0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:
27px}.form-horizontal .form-group{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.form-horizontal .control-label{padding-top:
7px;margin-bottom:
0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:
0;right:
15px}@media (min-width:
768px){.form-horizontal .form-group-lg .control-label{padding-top:
14.3px}}@media (min-width:
768px){.form-horizontal .form-group-sm .control-label{padding-top:
6px}}.btn{display:inline-block;padding:
6px
12px;margin-bottom:
0;font-size:
14px;font-weight:
400;line-height:
1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:
1px solid transparent;border-radius:
4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:
5px auto -webkit-focus-ring-color;outline-offset:-
2px}.btn:hover,.btn:focus{color:#
333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:
0;-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=
65);-webkit-box-shadow:none;box-shadow:none;opacity:
.65}.btn-default{color:#
333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{color:#
333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open
>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#
333}.btn-primary{color:#fff;background-color:#
428bca;border-color:#
357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{color:#fff;background-color:#
3071a9;border-color:#
285e8e}.btn-primary:active,.btn-primary.active,.open
>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#
428bca;border-color:#
357ebd}.btn-primary .badge{color:#
428bca;background-color:#fff}.btn-success{color:#fff;background-color:#
5cb85c;border-color:#
4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{color:#fff;background-color:#
449d44;border-color:#
398439}.btn-success:active,.btn-success.active,.open
>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#
5cb85c;border-color:#
4cae4c}.btn-success .badge{color:#
5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#
5bc0de;border-color:#
46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{color:#fff;background-color:#
31b0d5;border-color:#
269abc}.btn-info:active,.btn-info.active,.open
>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#
5bc0de;border-color:#
46b8da}.btn-info .badge{color:#
5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open
>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open
>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:
400;color:#
428bca;cursor:pointer;border-radius:
0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#
2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#
777;text-decoration:none}.btn-lg,.btn-group-lg
>.btn{padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}.btn-sm,.btn-group-sm
>.btn{padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-xs,.btn-group-xs
>.btn{padding:
1px
5px;font-size:
12px;line-height:
1.5;border-radius:
3px}.btn-block{display:block;width:
100%}.btn-block+.btn-block{margin-top:
5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:
100%}.fade{opacity:
0;-webkit-transition:opacity
.15s linear;-o-transition:opacity
.15s linear;transition:opacity
.15s linear}.fade.in{opacity:
1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:
0;overflow:hidden;-webkit-transition:height
.35s ease;-o-transition:height
.35s ease;transition:height
.35s ease}.caret{display:inline-block;width:
0;height:
0;margin-left:
2px;vertical-align:middle;border-top:
4px solid;border-right:
4px solid transparent;border-left:
4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:
0}.dropdown-menu{position:absolute;top:
100%;left:
0;z-index:
1000;display:none;float:left;min-width:
160px;padding:
5px
0;margin:
2px
0 0;font-size:
14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.15);border-radius:
4px;-webkit-box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175);box-shadow:
0 6px
12px rgba(
0,
0,
0,
.175)}.dropdown-menu.pull-right{right:
0;left:auto}.dropdown-menu .divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu
>li
>a{display:block;padding:
3px
20px;clear:both;font-weight:
400;line-height:
1.42857143;color:#
333;white-space:nowrap}.dropdown-menu
>li
>a:hover,.dropdown-menu
>li
>a:focus{color:#
262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu
>.active
>a,.dropdown-menu
>.active
>a:hover,.dropdown-menu
>.active
>a:focus{color:#fff;text-decoration:none;background-color:#
428bca;outline:
0}.dropdown-menu
>.disabled
>a,.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{color:#
777}.dropdown-menu
>.disabled
>a:hover,.dropdown-menu
>.disabled
>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open
>.dropdown-menu{display:block}.open
>a{outline:
0}.dropdown-menu-right{right:
0;left:auto}.dropdown-menu-left{right:auto;left:
0}.dropdown-header{display:block;padding:
3px
20px;font-size:
12px;line-height:
1.42857143;color:#
777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
990}.pull-right
>.dropdown-menu{right:
0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:
0;border-bottom:
4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:
100%;margin-bottom:
1px}@media (min-width:
768px){.navbar-right .dropdown-menu{right:
0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:
0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group
>.btn,.btn-group-vertical
>.btn{position:relative;float:left}.btn-group
>.btn:hover,.btn-group-vertical
>.btn:hover,.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus,.btn-group
>.btn:active,.btn-group-vertical
>.btn:active,.btn-group
>.btn.active,.btn-group-vertical
>.btn.active{z-index:
2}.btn-group
>.btn:focus,.btn-group-vertical
>.btn:focus{outline:
0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-
1px}.btn-toolbar{margin-left:-
5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar
>.btn,.btn-toolbar
>.btn-group,.btn-toolbar
>.input-group{margin-left:
5px}.btn-group
>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:
0}.btn-group
>.btn:first-child{margin-left:
0}.btn-group
>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn:last-child:not(:first-child),.btn-group
>.dropdown-toggle:not(:first-child){border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group
>.btn-group{float:left}.btn-group
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group
>.btn-group:first-child
>.btn:last-child,.btn-group
>.btn-group:first-child
>.dropdown-toggle{border-top-right-radius:
0;border-bottom-right-radius:
0}.btn-group
>.btn-group:last-child
>.btn:first-child{border-top-left-radius:
0;border-bottom-left-radius:
0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:
0}.btn-group
>.btn+.dropdown-toggle{padding-right:
8px;padding-left:
8px}.btn-group
>.btn-lg+.dropdown-toggle{padding-right:
12px;padding-left:
12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125);box-shadow:inset
0 3px
5px rgba(
0,
0,
0,
.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:
0}.btn-lg .caret{border-width:
5px
5px
0;border-bottom-width:
0}.dropup .btn-lg .caret{border-width:
0 5px
5px}.btn-group-vertical
>.btn,.btn-group-vertical
>.btn-group,.btn-group-vertical
>.btn-group
>.btn{display:block;float:none;width:
100%;max-width:
100%}.btn-group-vertical
>.btn-group
>.btn{float:none}.btn-group-vertical
>.btn+.btn,.btn-group-vertical
>.btn+.btn-group,.btn-group-vertical
>.btn-group+.btn,.btn-group-vertical
>.btn-group+.btn-group{margin-top:-
1px;margin-left:
0}.btn-group-vertical
>.btn:not(:first-child):not(:last-child){border-radius:
0}.btn-group-vertical
>.btn:first-child:not(:last-child){border-top-right-radius:
4px;border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn:last-child:not(:first-child){border-top-left-radius:
0;border-top-right-radius:
0;border-bottom-left-radius:
4px}.btn-group-vertical
>.btn-group:not(:first-child):not(:last-child)
>.btn{border-radius:
0}.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.btn:last-child,.btn-group-vertical
>.btn-group:first-child:not(:last-child)
>.dropdown-toggle{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.btn-group-vertical
>.btn-group:last-child:not(:first-child)
>.btn:first-child{border-top-left-radius:
0;border-top-right-radius:
0}.btn-group-justified{display:table;width:
100%;table-layout:fixed;border-collapse:separate}.btn-group-justified
>.btn,.btn-group-justified
>.btn-group{display:table-cell;float:none;width:
1%}.btn-group-justified
>.btn-group .btn{width:
100%}.btn-group-justified
>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]
>.btn
>input[type=radio],[data-toggle=buttons]
>.btn
>input[type=checkbox]{position:absolute;z-index:-
1;filter:alpha(opacity=
0);opacity:
0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:
0;padding-left:
0}.input-group .form-control{position:relative;z-index:
2;float:left;width:
100%;margin-bottom:
0}.input-group-lg
>.form-control,.input-group-lg
>.input-group-addon,.input-group-lg
>.input-group-btn
>.btn{height:
46px;padding:
10px
16px;font-size:
18px;line-height:
1.33;border-radius:
6px}select.input-group-lg
>.form-control,select.input-group-lg
>.input-group-addon,select.input-group-lg
>.input-group-btn
>.btn{height:
46px;line-height:
46px}textarea.input-group-lg
>.form-control,textarea.input-group-lg
>.input-group-addon,textarea.input-group-lg
>.input-group-btn
>.btn,select[multiple].input-group-lg
>.form-control,select[multiple].input-group-lg
>.input-group-addon,select[multiple].input-group-lg
>.input-group-btn
>.btn{height:auto}.input-group-sm
>.form-control,.input-group-sm
>.input-group-addon,.input-group-sm
>.input-group-btn
>.btn{height:
30px;padding:
5px
10px;font-size:
12px;line-height:
1.5;border-radius:
3px}select.input-group-sm
>.form-control,select.input-group-sm
>.input-group-addon,select.input-group-sm
>.input-group-btn
>.btn{height:
30px;line-height:
30px}textarea.input-group-sm
>.form-control,textarea.input-group-sm
>.input-group-addon,textarea.input-group-sm
>.input-group-btn
>.btn,select[multiple].input-group-sm
>.form-control,select[multiple].input-group-sm
>.input-group-addon,select[multiple].input-group-sm
>.input-group-btn
>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:
0}.input-group-addon,.input-group-btn{width:
1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:
6px
12px;font-size:
14px;font-weight:
400;line-height:
1;color:#
555;text-align:center;background-color:#eee;border:
1px solid #ccc;border-radius:
4px}.input-group-addon.input-sm{padding:
5px
10px;font-size:
12px;border-radius:
3px}.input-group-addon.input-lg{padding:
10px
16px;font-size:
18px;border-radius:
6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:
0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group
>.btn,.input-group-btn:first-child
>.dropdown-toggle,.input-group-btn:last-child
>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child
>.btn-group:not(:last-child)
>.btn{border-top-right-radius:
0;border-bottom-right-radius:
0}.input-group-addon:first-child{border-right:
0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group
>.btn,.input-group-btn:last-child
>.dropdown-toggle,.input-group-btn:first-child
>.btn:not(:first-child),.input-group-btn:first-child
>.btn-group:not(:first-child)
>.btn{border-top-left-radius:
0;border-bottom-left-radius:
0}.input-group-addon:last-child{border-left:
0}.input-group-btn{position:relative;font-size:
0;white-space:nowrap}.input-group-btn
>.btn{position:relative}.input-group-btn
>.btn+.btn{margin-left:-
1px}.input-group-btn
>.btn:hover,.input-group-btn
>.btn:focus,.input-group-btn
>.btn:active{z-index:
2}.input-group-btn:first-child
>.btn,.input-group-btn:first-child
>.btn-group{margin-right:-
1px}.input-group-btn:last-child
>.btn,.input-group-btn:last-child
>.btn-group{margin-left:-
1px}.nav{padding-left:
0;margin-bottom:
0;list-style:none}.nav
>li{position:relative;display:block}.nav
>li
>a{position:relative;display:block;padding:
10px
15px}.nav
>li
>a:hover,.nav
>li
>a:focus{text-decoration:none;background-color:#eee}.nav
>li.disabled
>a{color:#
777}.nav
>li.disabled
>a:hover,.nav
>li.disabled
>a:focus{color:#
777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open
>a,.nav .open
>a:hover,.nav .open
>a:focus{background-color:#eee;border-color:#
428bca}.nav .nav-divider{height:
1px;margin:
9px
0;overflow:hidden;background-color:#e5e5e5}.nav
>li
>a
>img{max-width:none}.nav-tabs{border-bottom:
1px solid #ddd}.nav-tabs
>li{float:left;margin-bottom:-
1px}.nav-tabs
>li
>a{margin-right:
2px;line-height:
1.42857143;border:
1px solid transparent;border-radius:
4px
4px
0 0}.nav-tabs
>li
>a:hover{border-color:#eee #eee #ddd}.nav-tabs
>li.active
>a,.nav-tabs
>li.active
>a:hover,.nav-tabs
>li.active
>a:focus{color:#
555;cursor:default;background-color:#fff;border:
1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:
100%;border-bottom:
0}.nav-tabs.nav-justified
>li{float:none}.nav-tabs.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-tabs.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-tabs.nav-justified
>li{display:table-cell;width:
1%}.nav-tabs.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs.nav-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs.nav-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs.nav-justified
>.active
>a,.nav-tabs.nav-justified
>.active
>a:hover,.nav-tabs.nav-justified
>.active
>a:focus{border-bottom-color:#fff}}.nav-pills
>li{float:left}.nav-pills
>li
>a{border-radius:
4px}.nav-pills
>li+li{margin-left:
2px}.nav-pills
>li.active
>a,.nav-pills
>li.active
>a:hover,.nav-pills
>li.active
>a:focus{color:#fff;background-color:#
428bca}.nav-stacked
>li{float:none}.nav-stacked
>li+li{margin-top:
2px;margin-left:
0}.nav-justified{width:
100%}.nav-justified
>li{float:none}.nav-justified
>li
>a{margin-bottom:
5px;text-align:center}.nav-justified
>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:
768px){.nav-justified
>li{display:table-cell;width:
1%}.nav-justified
>li
>a{margin-bottom:
0}}.nav-tabs-justified{border-bottom:
0}.nav-tabs-justified
>li
>a{margin-right:
0;border-radius:
4px}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border:
1px solid #ddd}@media (min-width:
768px){.nav-tabs-justified
>li
>a{border-bottom:
1px solid #ddd;border-radius:
4px
4px
0 0}.nav-tabs-justified
>.active
>a,.nav-tabs-justified
>.active
>a:hover,.nav-tabs-justified
>.active
>a:focus{border-bottom-color:#fff}}.tab-content
>.tab-pane{display:none}.tab-content
>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-
1px;border-top-left-radius:
0;border-top-right-radius:
0}.navbar{position:relative;min-height:
50px;margin-bottom:
20px;border:
1px solid transparent}@media (min-width:
768px){.navbar{border-radius:
4px}}@media (min-width:
768px){.navbar-header{float:left}}.navbar-collapse{padding-right:
15px;padding-left:
15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:
768px){.navbar-collapse{width:auto;border-top:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:
0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:
0;padding-left:
0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
340px}@media (max-width:
480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:
200px}}.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:-
15px;margin-left:-
15px}@media (min-width:
768px){.container
>.navbar-header,.container-fluid
>.navbar-header,.container
>.navbar-collapse,.container-fluid
>.navbar-collapse{margin-right:
0;margin-left:
0}}.navbar-static-top{z-index:
1000;border-width:
0 0 1px}@media (min-width:
768px){.navbar-static-top{border-radius:
0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:
0;left:
0;z-index:
1030;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@media (min-width:
768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:
0}}.navbar-fixed-top{top:
0;border-width:
0 0 1px}.navbar-fixed-bottom{bottom:
0;margin-bottom:
0;border-width:
1px
0 0}.navbar-brand{float:left;height:
50px;padding:
15px
15px;font-size:
18px;line-height:
20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:
768px){.navbar
>.container .navbar-brand,.navbar
>.container-fluid .navbar-brand{margin-left:-
15px}}.navbar-toggle{position:relative;float:right;padding:
9px
10px;margin-top:
8px;margin-right:
15px;margin-bottom:
8px;background-color:transparent;background-image:none;border:
1px solid transparent;border-radius:
4px}.navbar-toggle:focus{outline:
0}.navbar-toggle .icon-bar{display:block;width:
22px;height:
2px;border-radius:
1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:
4px}@media (min-width:
768px){.navbar-toggle{display:none}}.navbar-nav{margin:
7.5px -
15px}.navbar-nav
>li
>a{padding-top:
10px;padding-bottom:
10px;line-height:
20px}@media (max-width:
767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:
0;background-color:transparent;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu
>li
>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:
5px
15px
5px
25px}.navbar-nav .open .dropdown-menu
>li
>a{line-height:
20px}.navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-nav .open .dropdown-menu
>li
>a:focus{background-image:none}}@media (min-width:
768px){.navbar-nav{float:left;margin:
0}.navbar-nav
>li{float:left}.navbar-nav
>li
>a{padding-top:
15px;padding-bottom:
15px}.navbar-nav.navbar-right:last-child{margin-right:-
15px}}@media (min-width:
768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:
10px
15px;margin-top:
8px;margin-right:-
15px;margin-bottom:
8px;margin-left:-
15px;border-top:
1px solid transparent;border-bottom:
1px solid transparent;-webkit-box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1);box-shadow:inset
0 1px
0 rgba(
255,
255,
255,
.1),
0 1px
0 rgba(
255,
255,
255,
.1)}@media (min-width:
768px){.navbar-form .form-group{display:inline-block;margin-bottom:
0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group
>.form-control{width:
100%}.navbar-form .control-label{margin-bottom:
0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:
0;margin-bottom:
0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:
0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:
0}.navbar-form .has-feedback .form-control-feedback{top:
0}}@media (max-width:
767px){.navbar-form .form-group{margin-bottom:
5px}}@media (min-width:
768px){.navbar-form{width:auto;padding-top:
0;padding-bottom:
0;margin-right:
0;margin-left:
0;border:
0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-
15px}}.navbar-nav
>li
>.dropdown-menu{margin-top:
0;border-top-left-radius:
0;border-top-right-radius:
0}.navbar-fixed-bottom .navbar-nav
>li
>.dropdown-menu{border-bottom-right-radius:
0;border-bottom-left-radius:
0}.navbar-btn{margin-top:
8px;margin-bottom:
8px}.navbar-btn.btn-sm{margin-top:
10px;margin-bottom:
10px}.navbar-btn.btn-xs{margin-top:
14px;margin-bottom:
14px}.navbar-text{margin-top:
15px;margin-bottom:
15px}@media (min-width:
768px){.navbar-text{float:left;margin-right:
15px;margin-left:
15px}.navbar-text.navbar-right:last-child{margin-right:
0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#
777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#
5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#
777}.navbar-default .navbar-nav
>li
>a{color:#
777}.navbar-default .navbar-nav
>li
>a:hover,.navbar-default .navbar-nav
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav
>.active
>a,.navbar-default .navbar-nav
>.active
>a:hover,.navbar-default .navbar-nav
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav
>.disabled
>a,.navbar-default .navbar-nav
>.disabled
>a:hover,.navbar-default .navbar-nav
>.disabled
>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#
888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav
>.open
>a,.navbar-default .navbar-nav
>.open
>a:hover,.navbar-default .navbar-nav
>.open
>a:focus{color:#
555;background-color:#e7e7e7}@media (max-width:
767px){.navbar-default .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#
333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#
555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-default .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#
777}.navbar-default .navbar-link:hover{color:#
333}.navbar-default .btn-link{color:#
777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#
333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#
222;border-color:#
080808}.navbar-inverse .navbar-brand{color:#
777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#
777}.navbar-inverse .navbar-nav
>li
>a{color:#
777}.navbar-inverse .navbar-nav
>li
>a:hover,.navbar-inverse .navbar-nav
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav
>.active
>a,.navbar-inverse .navbar-nav
>.active
>a:hover,.navbar-inverse .navbar-nav
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav
>.disabled
>a,.navbar-inverse .navbar-nav
>.disabled
>a:hover,.navbar-inverse .navbar-nav
>.disabled
>a:focus{color:#
444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#
333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#
333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#
101010}.navbar-inverse .navbar-nav
>.open
>a,.navbar-inverse .navbar-nav
>.open
>a:hover,.navbar-inverse .navbar-nav
>.open
>a:focus{color:#fff;background-color:#
080808}@media (max-width:
767px){.navbar-inverse .navbar-nav .open .dropdown-menu
>.dropdown-header{border-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a{color:#
777}.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>li
>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.active
>a:focus{color:#fff;background-color:#
080808}.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu
>.disabled
>a:focus{color:#
444;background-color:transparent}}.navbar-inverse .navbar-link{color:#
777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#
777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#
444}.breadcrumb{padding:
8px
15px;margin-bottom:
20px;list-style:none;background-color:#f5f5f5;border-radius:
4px}.breadcrumb
>li{display:inline-block}.breadcrumb
>li+li:before{padding:
0 5px;color:#ccc;content:"/\
00a0"}.breadcrumb
>.active{color:#
777}.pagination{display:inline-block;padding-left:
0;margin:
20px
0;border-radius:
4px}.pagination
>li{display:inline}.pagination
>li
>a,.pagination
>li
>span{position:relative;float:left;padding:
6px
12px;margin-left:-
1px;line-height:
1.42857143;color:#
428bca;text-decoration:none;background-color:#fff;border:
1px solid #ddd}.pagination
>li:first-child
>a,.pagination
>li:first-child
>span{margin-left:
0;border-top-left-radius:
4px;border-bottom-left-radius:
4px}.pagination
>li:last-child
>a,.pagination
>li:last-child
>span{border-top-right-radius:
4px;border-bottom-right-radius:
4px}.pagination
>li
>a:hover,.pagination
>li
>span:hover,.pagination
>li
>a:focus,.pagination
>li
>span:focus{color:#
2a6496;background-color:#eee;border-color:#ddd}.pagination
>.active
>a,.pagination
>.active
>span,.pagination
>.active
>a:hover,.pagination
>.active
>span:hover,.pagination
>.active
>a:focus,.pagination
>.active
>span:focus{z-index:
2;color:#fff;cursor:default;background-color:#
428bca;border-color:#
428bca}.pagination
>.disabled
>span,.pagination
>.disabled
>span:hover,.pagination
>.disabled
>span:focus,.pagination
>.disabled
>a,.pagination
>.disabled
>a:hover,.pagination
>.disabled
>a:focus{color:#
777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg
>li
>a,.pagination-lg
>li
>span{padding:
10px
16px;font-size:
18px}.pagination-lg
>li:first-child
>a,.pagination-lg
>li:first-child
>span{border-top-left-radius:
6px;border-bottom-left-radius:
6px}.pagination-lg
>li:last-child
>a,.pagination-lg
>li:last-child
>span{border-top-right-radius:
6px;border-bottom-right-radius:
6px}.pagination-sm
>li
>a,.pagination-sm
>li
>span{padding:
5px
10px;font-size:
12px}.pagination-sm
>li:first-child
>a,.pagination-sm
>li:first-child
>span{border-top-left-radius:
3px;border-bottom-left-radius:
3px}.pagination-sm
>li:last-child
>a,.pagination-sm
>li:last-child
>span{border-top-right-radius:
3px;border-bottom-right-radius:
3px}.pager{padding-left:
0;margin:
20px
0;text-align:center;list-style:none}.pager li{display:inline}.pager li
>a,.pager li
>span{display:inline-block;padding:
5px
14px;background-color:#fff;border:
1px solid #ddd;border-radius:
15px}.pager li
>a:hover,.pager li
>a:focus{text-decoration:none;background-color:#eee}.pager .next
>a,.pager .next
>span{float:right}.pager .previous
>a,.pager .previous
>span{float:left}.pager .disabled
>a,.pager .disabled
>a:hover,.pager .disabled
>a:focus,.pager .disabled
>span{color:#
777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:
.2em
.6em
.3em;font-size:
75%;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:
.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-
1px}.label-default{background-color:#
777}.label-default[href]:hover,.label-default[href]:focus{background-color:#
5e5e5e}.label-primary{background-color:#
428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#
3071a9}.label-success{background-color:#
5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#
449d44}.label-info{background-color:#
5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#
31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:
10px;padding:
3px
7px;font-size:
12px;font-weight:
700;line-height:
1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#
777;border-radius:
10px}.badge:empty{display:none}.btn .badge{position:relative;top:-
1px}.btn-xs .badge{top:
0;padding:
1px
5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active
>.badge,.nav-pills
>.active
>a
>.badge{color:#
428bca;background-color:#fff}.nav-pills
>li
>a
>.badge{margin-left:
3px}.jumbotron{padding:
30px;margin-bottom:
30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:
15px;font-size:
21px;font-weight:
200}.jumbotron
>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:
6px}.jumbotron .container{max-width:
100%}@media screen and (min-width:
768px){.jumbotron{padding-top:
48px;padding-bottom:
48px}.container .jumbotron{padding-right:
60px;padding-left:
60px}.jumbotron h1,.jumbotron .h1{font-size:
63px}}.thumbnail{display:block;padding:
4px;margin-bottom:
20px;line-height:
1.42857143;background-color:#fff;border:
1px solid #ddd;border-radius:
4px;-webkit-transition:all
.2s ease-in-out;-o-transition:all
.2s ease-in-out;transition:all
.2s ease-in-out}.thumbnail
>img,.thumbnail a
>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#
428bca}.thumbnail .caption{padding:
9px;color:#
333}.alert{padding:
15px;margin-bottom:
20px;border:
1px solid transparent;border-radius:
4px}.alert h4{margin-top:
0;color:inherit}.alert .alert-link{font-weight:
700}.alert
>p,.alert
>ul{margin-bottom:
0}.alert
>p+p{margin-top:
5px}.alert-dismissable,.alert-dismissible{padding-right:
35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-
2px;right:-
21px;color:inherit}.alert-success{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#
2b542c}.alert-info{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#
245269}.alert-warning{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#
66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#
843534}@-webkit-keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}@-o-keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}@keyframes progress-bar-stripes{from{background-position:
40px
0}to{background-position:
0 0}}.progress{height:
20px;margin-bottom:
20px;overflow:hidden;background-color:#f5f5f5;border-radius:
4px;-webkit-box-shadow:inset
0 1px
2px rgba(
0,
0,
0,
.1);box-shadow:inset
0 1px
2px rgba(
0,
0,
0,
.1)}.progress-bar{float:left;width:
0;height:
100%;font-size:
12px;line-height:
20px;color:#fff;text-align:center;background-color:#
428bca;-webkit-box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);box-shadow:inset
0 -
1px
0 rgba(
0,
0,
0,
.15);-webkit-transition:width
.6s ease;-o-transition:width
.6s ease;transition:width
.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);-webkit-background-size:
40px
40px;background-size:
40px
40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes
2s linear infinite;-o-animation:progress-bar-stripes
2s linear infinite;animation:progress-bar-stripes
2s linear infinite}.progress-bar[
aria-valuenow="
1"],.progress-bar[
aria-valuenow="
2"]{min-width:
30px}.progress-bar[
aria-valuenow="
0"]{min-width:
30px;color:#
777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#
5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-info{background-color:#
5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:-o-linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent);background-image:linear-gradient(
45deg,rgba(
255,
255,
255,
.15)
25%,transparent
25%,transparent
50%,rgba(
255,
255,
255,
.15)
50%,rgba(
255,
255,
255,
.15)
75%,transparent
75%,transparent)}.media,.media-body{overflow:hidden;zoom:
1}.media,.media .media{margin-top:
15px}.media:first-child{margin-top:
0}.media-object{display:block}.media-heading{margin:
0 0 5px}.media
>.pull-left{margin-right:
10px}.media
>.pull-right{margin-left:
10px}.media-list{padding-left:
0;list-style:none}.list-group{padding-left:
0;margin-bottom:
20px}.list-group-item{position:relative;display:block;padding:
10px
15px;margin-bottom:-
1px;background-color:#fff;border:
1px solid #ddd}.list-group-item:first-child{border-top-left-radius:
4px;border-top-right-radius:
4px}.list-group-item:last-child{margin-bottom:
0;border-bottom-right-radius:
4px;border-bottom-left-radius:
4px}.list-group-item
>.badge{float:right}.list-group-item
>.badge+.badge{margin-right:
5px}a.list-group-item{color:#
555}a.list-group-item .list-group-item-heading{color:#
333}a.list-group-item:hover,a.list-group-item:focus{color:#
555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#
777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#
777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:
2;color:#fff;background-color:#
428bca;border-color:#
428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading
>small,.list-group-item.active:hover .list-group-item-heading
>small,.list-group-item.active:focus .list-group-item-heading
>small,.list-group-item.active .list-group-item-heading
>.small,.list-group-item.active:hover .list-group-item-heading
>.small,.list-group-item.active:focus .list-group-item-heading
>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#
3c763d;background-color:#dff0d8}a.list-group-item-success{color:#
3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#
3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#
3c763d;border-color:#
3c763d}.list-group-item-info{color:#
31708f;background-color:#d9edf7}a.list-group-item-info{color:#
31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#
31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#
31708f;border-color:#
31708f}.list-group-item-warning{color:#
8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#
8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#
8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#
8a6d3b;border-color:#
8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:
0;margin-bottom:
5px}.list-group-item-text{margin-bottom:
0;line-height:
1.3}.panel{margin-bottom:
20px;background-color:#fff;border:
1px solid transparent;border-radius:
4px;-webkit-box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:
0 1px
1px rgba(
0,
0,
0,
.05)}.panel-body{padding:
15px}.panel-heading{padding:
10px
15px;border-bottom:
1px solid transparent;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel-heading
>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:
0;margin-bottom:
0;font-size:
16px;color:inherit}.panel-title
>a{color:inherit}.panel-footer{padding:
10px
15px;background-color:#f5f5f5;border-top:
1px solid #ddd;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.list-group{margin-bottom:
0}.panel
>.list-group .list-group-item{border-width:
1px
0;border-radius:
0}.panel
>.list-group:first-child .list-group-item:first-child{border-top:
0;border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.list-group:last-child .list-group-item:last-child{border-bottom:
0;border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:
0}.list-group+.panel-footer{border-top-width:
0}.panel
>.table,.panel
>.table-responsive
>.table,.panel
>.panel-collapse
>.table{margin-bottom:
0}.panel
>.table:first-child,.panel
>.table-responsive:first-child
>.table:first-child{border-top-left-radius:
3px;border-top-right-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:first-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:first-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:first-child{border-top-left-radius:
3px}.panel
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child td:last-child,.panel
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>thead:first-child
>tr:first-child th:last-child,.panel
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child,.panel
>.table-responsive:first-child
>.table:first-child
>tbody:first-child
>tr:first-child th:last-child{border-top-right-radius:
3px}.panel
>.table:last-child,.panel
>.table-responsive:last-child
>.table:last-child{border-bottom-right-radius:
3px;border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:first-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:first-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:first-child{border-bottom-left-radius:
3px}.panel
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child td:last-child,.panel
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tbody:last-child
>tr:last-child th:last-child,.panel
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child,.panel
>.table-responsive:last-child
>.table:last-child
>tfoot:last-child
>tr:last-child th:last-child{border-bottom-right-radius:
3px}.panel
>.panel-body+.table,.panel
>.panel-body+.table-responsive{border-top:
1px solid #ddd}.panel
>.table
>tbody:first-child
>tr:first-child th,.panel
>.table
>tbody:first-child
>tr:first-child td{border-top:
0}.panel
>.table-bordered,.panel
>.table-responsive
>.table-bordered{border:
0}.panel
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:first-child,.panel
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:first-child,.panel
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:first-child,.panel
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:first-child,.panel
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:first-child,.panel
>.table-bordered
>tfoot
>tr
>td:first-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:first-child{border-left:
0}.panel
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>th:last-child,.panel
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>th:last-child,.panel
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>th:last-child,.panel
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>thead
>tr
>td:last-child,.panel
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tbody
>tr
>td:last-child,.panel
>.table-bordered
>tfoot
>tr
>td:last-child,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr
>td:last-child{border-right:
0}.panel
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>td,.panel
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>td,.panel
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>thead
>tr:first-child
>th,.panel
>.table-bordered
>tbody
>tr:first-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:first-child
>th{border-bottom:
0}.panel
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>td,.panel
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>td,.panel
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tbody
>tr:last-child
>th,.panel
>.table-bordered
>tfoot
>tr:last-child
>th,.panel
>.table-responsive
>.table-bordered
>tfoot
>tr:last-child
>th{border-bottom:
0}.panel
>.table-responsive{margin-bottom:
0;border:
0}.panel-group{margin-bottom:
20px}.panel-group .panel{margin-bottom:
0;border-radius:
4px}.panel-group .panel+.panel{margin-top:
5px}.panel-group .panel-heading{border-bottom:
0}.panel-group .panel-heading+.panel-collapse
>.panel-body{border-top:
1px solid #ddd}.panel-group .panel-footer{border-top:
0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:
1px solid #ddd}.panel-default{border-color:#ddd}.panel-default
>.panel-heading{color:#
333;background-color:#f5f5f5;border-color:#ddd}.panel-default
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ddd}.panel-default
>.panel-heading .badge{color:#f5f5f5;background-color:#
333}.panel-default
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#
428bca}.panel-primary
>.panel-heading{color:#fff;background-color:#
428bca;border-color:#
428bca}.panel-primary
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#
428bca}.panel-primary
>.panel-heading .badge{color:#
428bca;background-color:#fff}.panel-primary
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#
428bca}.panel-success{border-color:#d6e9c6}.panel-success
>.panel-heading{color:#
3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#d6e9c6}.panel-success
>.panel-heading .badge{color:#dff0d8;background-color:#
3c763d}.panel-success
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info
>.panel-heading{color:#
31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#bce8f1}.panel-info
>.panel-heading .badge{color:#d9edf7;background-color:#
31708f}.panel-info
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning
>.panel-heading{color:#
8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#faebcc}.panel-warning
>.panel-heading .badge{color:#fcf8e3;background-color:#
8a6d3b}.panel-warning
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger
>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger
>.panel-heading+.panel-collapse
>.panel-body{border-top-color:#ebccd1}.panel-danger
>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger
>.panel-footer+.panel-collapse
>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:
0;padding:
0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:
0;bottom:
0;left:
0;width:
100%;height:
100%;border:
0}.embed-responsive.embed-responsive-
16by9{padding-bottom:
56.25%}.embed-responsive.embed-responsive-
4by3{padding-bottom:
75%}.well{min-height:
20px;padding:
19px;margin-bottom:
20px;background-color:#f5f5f5;border:
1px solid #e3e3e3;border-radius:
4px;-webkit-box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05);box-shadow:inset
0 1px
1px rgba(
0,
0,
0,
.05)}.well blockquote{border-color:#ddd;border-color:rgba(
0,
0,
0,
.15)}.well-lg{padding:
24px;border-radius:
6px}.well-sm{padding:
9px;border-radius:
3px}.close{float:right;font-size:
21px;font-weight:
700;line-height:
1;color:#
000;text-shadow:
0 1px
0 #fff;filter:alpha(opacity=
20);opacity:
.2}.close:hover,.close:focus{color:#
000;text-decoration:none;cursor:pointer;filter:alpha(opacity=
50);opacity:
.5}button.close{-webkit-appearance:none;padding:
0;cursor:pointer;background:
0 0;border:
0}.modal-open{overflow:hidden}.modal{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:
0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform
.3s ease-out;-o-transition:-o-transform
.3s ease-out;transition:transform
.3s ease-out;-webkit-transform:translate3d(
0,-
25%,
0);-o-transform:translate3d(
0,-
25%,
0);transform:translate3d(
0,-
25%,
0)}.modal.in .modal-dialog{-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:
10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #
999;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;outline:
0;-webkit-box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5);box-shadow:
0 3px
9px rgba(
0,
0,
0,
.5)}.modal-backdrop{position:fixed;top:
0;right:
0;bottom:
0;left:
0;z-index:
1040;background-color:#
000}.modal-backdrop.fade{filter:alpha(opacity=
0);opacity:
0}.modal-backdrop.in{filter:alpha(opacity=
50);opacity:
.5}.modal-header{min-height:
16.43px;padding:
15px;border-bottom:
1px solid #e5e5e5}.modal-header .close{margin-top:-
2px}.modal-title{margin:
0;line-height:
1.42857143}.modal-body{position:relative;padding:
15px}.modal-footer{padding:
15px;text-align:right;border-top:
1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:
0;margin-left:
5px}.modal-footer .btn-group .btn+.btn{margin-left:-
1px}.modal-footer .btn-block+.btn-block{margin-left:
0}.modal-scrollbar-measure{position:absolute;top:-
9999px;width:
50px;height:
50px;overflow:scroll}@media (min-width:
768px){.modal-dialog{width:
600px;margin:
30px auto}.modal-content{-webkit-box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5);box-shadow:
0 5px
15px rgba(
0,
0,
0,
.5)}.modal-sm{width:
300px}}@media (min-width:
992px){.modal-lg{width:
900px}}.tooltip{position:absolute;z-index:
1070;display:block;font-size:
12px;line-height:
1.4;visibility:visible;filter:alpha(opacity=
0);opacity:
0}.tooltip.in{filter:alpha(opacity=
90);opacity:
.9}.tooltip.top{padding:
5px
0;margin-top:-
3px}.tooltip.right{padding:
0 5px;margin-left:
3px}.tooltip.bottom{padding:
5px
0;margin-top:
3px}.tooltip.left{padding:
0 5px;margin-left:-
3px}.tooltip-inner{max-width:
200px;padding:
3px
8px;color:#fff;text-align:center;text-decoration:none;background-color:#
000;border-radius:
4px}.tooltip-arrow{position:absolute;width:
0;height:
0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:
0;left:
50%;margin-left:-
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-left .tooltip-arrow{bottom:
0;left:
5px;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.top-right .tooltip-arrow{right:
5px;bottom:
0;border-width:
5px
5px
0;border-top-color:#
000}.tooltip.right .tooltip-arrow{top:
50%;left:
0;margin-top:-
5px;border-width:
5px
5px
5px
0;border-right-color:#
000}.tooltip.left .tooltip-arrow{top:
50%;right:
0;margin-top:-
5px;border-width:
5px
0 5px
5px;border-left-color:#
000}.tooltip.bottom .tooltip-arrow{top:
0;left:
50%;margin-left:-
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-left .tooltip-arrow{top:
0;left:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.tooltip.bottom-right .tooltip-arrow{top:
0;right:
5px;border-width:
0 5px
5px;border-bottom-color:#
000}.popover{position:absolute;top:
0;left:
0;z-index:
1060;display:none;max-width:
276px;padding:
1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:
1px solid #ccc;border:
1px solid rgba(
0,
0,
0,
.2);border-radius:
6px;-webkit-box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2);box-shadow:
0 5px
10px rgba(
0,
0,
0,
.2)}.popover.top{margin-top:-
10px}.popover.right{margin-left:
10px}.popover.bottom{margin-top:
10px}.popover.left{margin-left:-
10px}.popover-title{padding:
8px
14px;margin:
0;font-size:
14px;font-weight:
400;line-height:
18px;background-color:#f7f7f7;border-bottom:
1px solid #ebebeb;border-radius:
5px
5px
0 0}.popover-content{padding:
9px
14px}.popover
>.arrow,.popover
>.arrow:after{position:absolute;display:block;width:
0;height:
0;border-color:transparent;border-style:solid}.popover
>.arrow{border-width:
11px}.popover
>.arrow:after{content:"";border-width:
10px}.popover.top
>.arrow{bottom:-
11px;left:
50%;margin-left:-
11px;border-top-color:#
999;border-top-color:rgba(
0,
0,
0,
.25);border-bottom-width:
0}.popover.top
>.arrow:after{bottom:
1px;margin-left:-
10px;content:" ";border-top-color:#fff;border-bottom-width:
0}.popover.right
>.arrow{top:
50%;left:-
11px;margin-top:-
11px;border-right-color:#
999;border-right-color:rgba(
0,
0,
0,
.25);border-left-width:
0}.popover.right
>.arrow:after{bottom:-
10px;left:
1px;content:" ";border-right-color:#fff;border-left-width:
0}.popover.bottom
>.arrow{top:-
11px;left:
50%;margin-left:-
11px;border-top-width:
0;border-bottom-color:#
999;border-bottom-color:rgba(
0,
0,
0,
.25)}.popover.bottom
>.arrow:after{top:
1px;margin-left:-
10px;content:" ";border-top-width:
0;border-bottom-color:#fff}.popover.left
>.arrow{top:
50%;right:-
11px;margin-top:-
11px;border-right-width:
0;border-left-color:#
999;border-left-color:rgba(
0,
0,
0,
.25)}.popover.left
>.arrow:after{right:
1px;bottom:-
10px;content:" ";border-right-width:
0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:
100%;overflow:hidden}.carousel-inner
>.item{position:relative;display:none;-webkit-transition:
.6s ease-in-out left;-o-transition:
.6s ease-in-out left;transition:
.6s ease-in-out left}.carousel-inner
>.item
>img,.carousel-inner
>.item
>a
>img{line-height:
1}.carousel-inner
>.active,.carousel-inner
>.next,.carousel-inner
>.prev{display:block}.carousel-inner
>.active{left:
0}.carousel-inner
>.next,.carousel-inner
>.prev{position:absolute;top:
0;width:
100%}.carousel-inner
>.next{left:
100%}.carousel-inner
>.prev{left:-
100%}.carousel-inner
>.next.left,.carousel-inner
>.prev.right{left:
0}.carousel-inner
>.active.left{left:-
100%}.carousel-inner
>.active.right{left:
100%}.carousel-control{position:absolute;top:
0;bottom:
0;left:
0;width:
15%;font-size:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6);filter:alpha(opacity=
50);opacity:
.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.5)),to(rgba(
0,
0,
0,
.0001)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.5)
0,rgba(
0,
0,
0,
.0001)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
80000000', endColorstr='#
00000000', GradientType=
1);background-repeat:repeat-x}.carousel-control.right{right:
0;left:auto;background-image:-webkit-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-o-linear-gradient(left,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(
0,
0,
0,
.0001)),to(rgba(
0,
0,
0,
.5)));background-image:linear-gradient(to right,rgba(
0,
0,
0,
.0001)
0,rgba(
0,
0,
0,
.5)
100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#
00000000', endColorstr='#
80000000', GradientType=
1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=
90);outline:
0;opacity:
.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:
50%;z-index:
5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:
50%;margin-left:-
10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:
50%;margin-right:-
10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:
20px;height:
20px;margin-top:-
10px;font-family:serif}.carousel-control .icon-prev:before{content:'\
2039'}.carousel-control .icon-next:before{content:'\
203a'}.carousel-indicators{position:absolute;bottom:
10px;left:
50%;z-index:
15;width:
60%;padding-left:
0;margin-left:-
30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:
10px;height:
10px;margin:
1px;text-indent:-
999px;cursor:pointer;background-color:#
000 \
9;background-color:rgba(
0,
0,
0,
0);border:
1px solid #fff;border-radius:
10px}.carousel-indicators .active{width:
12px;height:
12px;margin:
0;background-color:#fff}.carousel-caption{position:absolute;right:
15%;bottom:
20px;left:
15%;z-index:
10;padding-top:
20px;padding-bottom:
20px;color:#fff;text-align:center;text-shadow:
0 1px
2px rgba(
0,
0,
0,
.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:
768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:
30px;height:
30px;margin-top:-
15px;font-size:
30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-
15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-
15px}.carousel-caption{right:
20%;left:
20%;padding-bottom:
30px}.carousel-indicators{bottom:
20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical
>.btn-group:before,.btn-group-vertical
>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical
>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:
0/
0 a;color:transparent;text-shadow:none;background-color:transparent;border:
0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(
0,
0,
0);-o-transform:translate3d(
0,
0,
0);transform:translate3d(
0,
0,
0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:
767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:
767px){.visible-xs-block{display:block!important}}@media (max-width:
767px){.visible-xs-inline{display:inline!important}}@media (max-width:
767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-block{display:block!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline{display:inline!important}}@media (min-width:
768px) and (max-width:
991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-block{display:block!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline{display:inline!important}}@media (min-width:
992px) and (max-width:
1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:
1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:
1200px){.visible-lg-block{display:block!important}}@media (min-width:
1200px){.visible-lg-inline{display:inline!important}}@media (min-width:
1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:
767px){.hidden-xs{display:none!important}}@media (min-width:
768px) and (max-width:
991px){.hidden-sm{display:none!important}}@media (min-width:
992px) and (max-width:
1199px){.hidden-md{display:none!important}}@media (min-width:
1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
15 <meta content=
"Mnemonic code for generating deterministic keys" name=
"description"/>
16 <meta content=
"width=device-width, initial-scale=1.0" name=
"viewport" />
17 <meta content=
"bitcoin mnemonic converter" name=
"description" />
18 <meta content=
"DC POS" name=
"author" />
34 background-color: orange;
38 border:
2px solid #
555;
40 border-bottom-left-radius:
20px
20px;
41 border-bottom-right-radius:
20px
20px;
46 <div class=
"container">
48 <h1 class=
"text-center">Mnemonic Code Converter
</h1>
51 <div class=
"col-md-12">
53 <form class=
"form-horizontal" role=
"form">
54 <div class=
"col-sm-2"></div>
55 <div class=
"col-sm-10">
56 <p>You can enter an existing BIP39 phrase, or generate a new random one. Typing your own twelve words will probably not work how you expect, since the words require a particular structure (the last word is a checksum)
</p>
57 <p>For more info see the
<a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki" target=
"_blank">BIP39 spec
</a></p>
59 <div class=
"form-group">
60 <label for=
"phrase" class=
"col-sm-2 control-label">BIP39 Phrase
</label>
61 <div class=
"col-sm-10">
62 <textarea id=
"phrase" class=
"phrase form-control"></textarea>
65 <div class=
"form-group">
66 <label for=
"strength" class=
"col-sm-2 control-label">Number of words
</label>
67 <div class=
"col-sm-10">
68 <div class=
"input-group">
69 <input type=
"number" class=
"strength form-control" id=
"strength" value=
"12">
70 <span class=
"input-group-btn">
71 <button class=
"btn generate">Generate Random Phrase
</button>
76 <div class=
"form-group">
77 <label for=
"passphrase" class=
"col-sm-2 control-label">BIP39 Passphrase (optional)
</label>
78 <div class=
"col-sm-10">
79 <textarea id=
"passphrase" class=
"passphrase form-control"></textarea>
82 <div class=
"form-group">
83 <label for=
"root-key" class=
"col-sm-2 control-label">BIP32 Root Key
</label>
84 <div class=
"col-sm-10">
85 <textarea id=
"root-key" class=
"root-key form-control" disabled=
"disabled"></textarea>
95 <div class=
"col-md-12">
96 <h2>Derivation Path
</h2>
97 <ul class=
"derivation-type nav nav-tabs" role=
"tablist">
99 <a href=
"#bip44" role=
"tab" data-toggle=
"tab">BIP44
</a></li>
100 <li><a href=
"#bip32" role=
"tab" data-toggle=
"tab">BIP32
</a></li>
102 <div class=
"derivation-type tab-content">
103 <div id=
"bip44" class=
"tab-pane active">
104 <form class=
"form-horizontal" role=
"form">
106 <div class=
"col-sm-2"></div>
107 <div class=
"col-sm-10">
108 <p>For more info see the
<a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">BIP44 spec
</a></p>
110 <div class=
"form-group">
111 <label for=
"purpose" class=
"col-sm-2 control-label">
112 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#purpose" target=
"_blank">Purpose
</a>
114 <div class=
"col-sm-10">
115 <input id=
"purpose" type=
"text" class=
"purpose form-control" value=
"44">
118 <div class=
"form-group">
119 <label for=
"coin" class=
"col-sm-2 control-label">
120 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#registered-coin-types" target=
"_blank">Coin
</a>
122 <div class=
"col-sm-10">
123 <input id=
"coin" type=
"text" class=
"coin form-control" value=
"0">
126 <div class=
"form-group">
127 <label for=
"account" class=
"col-sm-2 control-label">
128 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account" target=
"_blank">Account
</a>
130 <div class=
"col-sm-10">
131 <input id=
"account" type=
"text" class=
"account form-control" value=
"0">
134 <div class=
"form-group">
135 <label for=
"change" class=
"col-sm-2 control-label">
136 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target=
"_blank">External / Internal
</a>
138 <div class=
"col-sm-10">
139 <input id=
"change" type=
"text" class=
"change form-control" value=
"0">
142 <div class=
"form-group">
143 <label for=
"bip44-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
144 <div class=
"col-sm-10">
145 <input id=
"bip44-path" type=
"text" class=
"path form-control" value=
"m/44'/0'/0'/0" disabled=
"disabled">
150 <div id=
"bip32" class=
"tab-pane">
151 <form class=
"form-horizontal" role=
"form">
153 <div class=
"col-sm-2"></div>
154 <div class=
"col-sm-10">
155 <p>For more info see the
<a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">BIP32 spec
</a></p>
157 <div class=
"form-group">
158 <label for=
"bip32-path" class=
"col-sm-2 control-label">BIP32 Derivation Path
</label>
159 <div class=
"col-sm-10">
160 <input id=
"bip32-path" type=
"text" class=
"path form-control" value=
"m/0">
166 <form class=
"form-horizontal" role=
"form">
167 <div class=
"form-group">
168 <label for=
"extended-priv-key" class=
"col-sm-2 control-label">BIP32 Extended Key
</label>
169 <div class=
"col-sm-10">
170 <textarea id=
"extended-priv-key" class=
"extended-priv-key form-control" disabled=
"disabled"></textarea>
173 <div class=
"form-group">
174 <label for=
"extended-pub-key" class=
"col-sm-2 control-label">BIP32 Extended Key (addresses only)
</label>
175 <div class=
"col-sm-10">
176 <textarea id=
"extended-pub-key" class=
"extended-pub-key form-control" disabled=
"disabled"></textarea>
186 <div class=
"col-md-12">
187 <h2>Derived Addresses
</h2>
188 <p>Note these addreses are derived from the
<strong>BIP32 Extended Key
</strong></p>
189 <table class=
"table table-striped">
192 <div class=
"input-group">
194 <button class=
"index-toggle">Toggle
</button>
198 <div class=
"input-group">
200 <button class=
"address-toggle">Toggle
</button>
204 <div class=
"input-group">
205 Private Key
206 <button class=
"private-key-toggle">Toggle
</button>
210 <tbody class=
"addresses">
211 <tr><td> </td><td> </td><td> </td></tr>
212 <tr><td> </td><td> </td><td> </td></tr>
213 <tr><td> </td><td> </td><td> </td></tr>
214 <tr><td> </td><td> </td><td> </td></tr>
215 <tr><td> </td><td> </td><td> </td></tr>
220 <span>Show next
</button>
221 <input type=
"number" class=
"rows-to-add" value=
"20">
222 <button class=
"more">Show
</button>
227 <div class=
"col-md-12">
229 <h3>BIP39
<span class=
"small">Mnemonic code for generating deterministic keys
</span></h3>
232 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec
</a>
234 <h3>BIP32
<span class=
"small">Hierarchical Deterministic Wallets
</span></h3>
237 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">official BIP32 spec
</a>
239 <a href=
"http://bip32.org/" target=
"_blank">bip32.org
</a>
241 <h3>BIP44
<span class=
"small">Multi-Account Hierarchy for Deterministic Wallets
</span></h3>
244 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">official BIP44 spec
</a>
246 <h3>Private Keys
</h3>
249 <a href=
"https://brainwallet.github.io/" target=
"_blank">brainwallet.org
</a>,
250 but be careful - it can be easy to make mistakes if you
251 don't know what you're doing
259 <div class=
"col-md-12">
260 <h2>Derived Addresses
</h2>
261 <p>Note these addreses are derived from the
<strong>BIP32 Extended Key
</strong></p>
262 <table class=
"table table-striped">
265 <div class=
"input-group">
267 <button class=
"index-toggle">Toggle
</button>
271 <div class=
"input-group">
273 <button class=
"address-toggle">Toggle
</button>
277 <div class=
"input-group">
278 Private Key
279 <button class=
"private-key-toggle">Toggle
</button>
283 <tbody class=
"addresses">
284 <tr><td> </td><td> </td><td> </td></tr>
285 <tr><td> </td><td> </td><td> </td></tr>
286 <tr><td> </td><td> </td><td> </td></tr>
287 <tr><td> </td><td> </td><td> </td></tr>
288 <tr><td> </td><td> </td><td> </td></tr>
293 <span>Show next
</button>
294 <input type=
"number" class=
"rows-to-add" value=
"20">
295 <button class=
"more">Show
</button>
300 <div class=
"col-md-12">
302 <h3>BIP39
<span class=
"small">Mnemonic code for generating deterministic keys
</span></h3>
305 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">official BIP39 spec
</a>
307 <h3>BIP32
<span class=
"small">Hierarchical Deterministic Wallets
</span></h3>
310 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki" target=
"_blank">official BIP32 spec
</a>
312 <a href=
"http://bip32.org/" target=
"_blank">bip32.org
</a>
314 <h3>BIP44
<span class=
"small">Multi-Account Hierarchy for Deterministic Wallets
</span></h3>
317 <a href=
"https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki" target=
"_blank">official BIP44 spec
</a>
319 <h3>Private Keys
</h3>
322 <a href=
"https://brainwallet.github.io/" target=
"_blank">brainwallet.org
</a>,
323 but be careful - it can be easy to make mistakes if you
324 don't know what you're doing
332 <div class=
"col-md-12">
334 <h2>Offline Usage
</h2>
337 You can use this tool without having to be online.
340 In your browser, select file save-as, and save this page
344 Double-click that file to open it in a browser
345 on any offline computer.
348 Alternatively, download it from
349 <a href=
"https://github.com/dcpos/bip39">
350 https://github.com/dcpos/bip39
359 <div class=
"col-md-12">
361 <h2>This project is
100% open-source code
</h2>
364 <span>Get the source code at -
</span>
365 <a href=
"https://github.com/dcpos/bip39" target=
"_blank">
366 https://github.com/dcpos/bip39
373 <span>BitcoinJS -
</span>
374 <a href=
"https://github.com/bitcoinjs/bitcoinjs-lib" target=
"_blank">
375 https://github.com/bitcoinjs/bitcoinjs-lib
380 <span>jsBIP39 -
</span>
381 <a href=
"https://github.com/iancoleman/jsbip39" target=
"_blank">
382 https://github.com/iancoleman/jsbip39
387 <span>asmCrypto -
</span>
388 <a href=
"https://github.com/vibornoff/asmcrypto.js" target=
"_blank">
389 https://github.com/vibornoff/asmcrypto.js
394 <span>jQuery -
</span>
395 <a href=
"https://jquery.com/" target=
"_blank">
401 <span>Twitter Bootstrap -
</span>
402 <a href=
"http://getbootstrap.com/" target=
"_blank">
403 http://getbootstrap.com/
412 <div class=
"feedback-container">
413 <div class=
"feedback"></div>
416 <script type=
"text/template" id=
"address-row-template">
418 <td class=
"index"><span></span></td>
419 <td class=
"address"><span></span></td>
420 <td class=
"privkey"><span></span></td>
424 <!--<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>-->
426 /*! jQuery v2.1
.1 | (c)
2005,
2014 jQuery Foundation, Inc. | jquery.org/license */
427 !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!
0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,
m="
2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:
0,toArray:function(){return d.call(this)},get:function(a){return null!=a?
0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(
0)},last:function(){return this.eq(-
1)},eq:function(a){var b=this.length,c=+a+(
0>a?b:
0);return this.pushStack(c
>=
0&&b
>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[
0]||{},h=
1,i=arguments.length,j=!
1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i
>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!
1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void
0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!
0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)
>=
0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!
1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!
1:!
0},isEmptyObject:function(a){var b;for(b in a)return!
1;return!
0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(
1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=
0,f=a.length,g=s(a);if(c){if(g){for(;f
>e;e++)if(d=b.apply(a[e],c),d===!
1)break}else for(e in a)if(d=b.apply(a[e],c),d===!
1)break}else if(g){for(;f
>e;e++)if(d=b.call(a[e],e,a[e]),d===!
1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!
1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-
1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=
0,e=a.length;c
>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=
0,g=a.length,h=!c;g
>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=
0,g=a.length,h=s(a),i=[];if(h)for(;g
>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:
1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,
2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void
0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!
1:
1===a.nodeType&&b?!
0:"array"===c||
0===b||"number"==typeof b&&b
>0&&b-
1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,
u=
"sizzle"+-new Date,v=a.document,w=
0,x=
0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!
0),
0},
C=
"undefined",D=
1<
<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=
0,c=this.length;c
>b;b++)if(this[b]===a)return b;return-
1},
L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
M="[\\x20\\t\\r\\n\\f]",
N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),
P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",
Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([
>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[
>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{
1,
6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var
d="
0x"+b-
65536;return d!==d||c?b:
0>d?String.fromCharCode(d+
65536):String.fromCharCode(d
>>10|
55296,
1023&d|
56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=
0;while(a[c++]=b[d++]);a.length=c-
1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||
"string"!=typeof a)return d;if(
1!==(k=b.nodeType)&&
9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[
1]){if(
9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[
2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[
3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=
9===k&&a,
1===k&&
"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute(
"id"))?s=r.replace(bb,
"\\$&"):b.setAttribute(
"id",s),
s=
"[id='"+s+
"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(
",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute(
"id")}}}return i(a.replace(R,
"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+
" ")
>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!
0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!
1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&
1===a.nodeType&&
1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-
1;return a?
1:-
1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!
1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&
9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!
1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.
className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.
innerHTML="
<div class='a'
></div><div class='a i'
></div>",a.firstChild.className="i
",2===a.getElementsByClassName("i
").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id
")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id
");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*
"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''
><option selected=''
></option></select>",a.querySelectorAll("[msallowclip^='']
").length&&q.push("[*^$]=
"+M+"*(?:''|\
"\")
"),a.querySelectorAll("[selected]
").length||q.push("\\[
"+M+"*(?:value|
"+L+")
"),a.querySelectorAll(":checked
").length||q.push(":checked
")}),ib(function(a){var b=e.createElement("input
");b.setAttribute("type
","hidden
"),a.appendChild(b).setAttribute("name
","D
"),a.querySelectorAll("[name=d]
").length&&q.push("name
"+M+"*[*^$|!~]?=
"),a.querySelectorAll(":enabled
").length||q.push(":enabled
",":disabled
"),a.querySelectorAll("*,:x
"),q.push(",.*:
")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div
"),s.call(a,"[s!='']:x
"),r.push("!=
",Q)}),q=q.length&&new RegExp(q.join("|
")),r=r.length&&new RegExp(r.join("|
")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$
1']
"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression:
"+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string
"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode
",first:!0}," ":{dir:"parentNode
"},"+
":{dir:"previousSibling
",first:!0},"~
":{dir:"previousSibling
"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~=
"===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth
"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even
"===a[3]||"odd
"===a[3])),a[5]=+(a[7]+a[8]||"odd
"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")
",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*
"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|
"+M+")
"+a+"(
"+M+"|$)
"))&&y(a,function(a){return b.test("string
"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class
")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!=
"===b:b?(e+="","=
"===b?e===c:"!=
"===b?e!==c:"^=
"===b?c&&0===e.indexOf(c):"*=
"===b?c&&e.indexOf(c)>-1:"$=
"===b?c&&e.slice(-c.length)===c:"~=
"===b?(" "+e+" ").indexOf(c)>-1:"|=
"===b?e===c||e.slice(0,c.length+1)===c+"-
":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth
"!==a.slice(0,3),g="last
"!==a.slice(-4),h="of-type
"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling
":"previousSibling
",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only
"===a&&!o&&"nextSibling
"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo:
"+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$
1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang:
"+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang
")||b.getAttribute("lang
"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-
");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input
"===b&&!!a.checked||"option
"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input
"===b&&"button
"===a.type||"button
"===b},text:function(a){var b;return"input
"===a.nodeName.toLowerCase()&&"text
"===a.type&&(null==(b=a.getAttribute("type
"))||"text
"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(
1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((
1===b.nodeType||e)&&a(b,c,g))return!
0}else while(b=b[d])if(
1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[
0]===w&&h[
1]===f)return j[
2]=h[
2];if(i[d]=j,j[
2]=a(b,c,g))return!
0}}}function sb(a){return a.length
>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!
1;return!
0}:a[
0]}function tb(a,b,c){for(var d=
0,e=b.length;e
>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=
0,i=a.length,j=null!=b;i
>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])
>-
1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[
0].type],h=g||d.relative[" "],i=g?
1:
0,k=rb(function(a){return a===b},h,!
0),l=rb(function(a){return K.call(b,a)
>-
1},h,!
0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f
>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f
>e;e++)if(d.relative[a[e].type])break;return vb(i
>1&&sb(m),i
>1&&qb(a.slice(
0,i-
1).concat({value:
" "===a[i-
2].type?
"*":
""})).replace(R,
"$1"),c,e
>i&&wb(a.slice(i,e)),f
>e&&wb(a=a.slice(e)),f
>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length
>0,e=a.length
>0,f=function(f,g,h,i,k){var l,m,o,p=
0,
q=
"0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG(
"*",k),v=w+=null==t?
1:Math.random()||
.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=
0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=
0;while(o=b[m++])o(r,s,g,h);if(f){if(p
>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length
>0&&p+b.length
>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+
" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,
n=
"function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],
1===o.length){if(j=o[
0]=o[
0].slice(
0),j.length
>2&&
"ID"===(k=j[
0]).type&&c.getById&&
9===b.nodeType&&p&&d.relative[j[
1].type]){if(b=(d.find.ID(k.matches[
0].replace(cb,db),b)||[])[
0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?
0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[
0].replace(cb,db),ab.test(j[
0].type)&&ob(b.parentNode)||b))){if(j.splice(i,
1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split(
"").sort(B).join(
"")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return
1&a.compareDocumentPosition(n.createElement(
"div"))}),ib(function(a){return a.
innerHTML=
"<a href='#'></a>",
"#"===a.firstChild.getAttribute(
"href")})||jb(
"type|href|height|width",function(a,b,c){return c?void
0:a.getAttribute(b,
"type"===b.toLowerCase()?
1:
2)}),c.attributes&&ib(function(a){return a.
innerHTML=
"<input/>",a.firstChild.setAttribute(
"value",
""),
""===a.firstChild.getAttribute(
"value")})||jb(
"value",function(a,b,c){return c||
"input"!==a.nodeName.toLowerCase()?void
0:a.defaultValue}),ib(function(a){return null==a.getAttribute(
"disabled")})||jb(L,function(a,b,c){var d;return c?void
0:a[b]===!
0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[
":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/
?>(?:<\/\
1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)
>=
0!==c})}n.filter=function(a,b,c){var d=b[
0];return c&&(
a=":not("+a+")"),
1===b.length&&
1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return
1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=
0;c
>b;b++)if(n.contains(e[b],this))return!
0}));for(b=
0;c
>b;b++)n.find(a,e[b],d);return d=this.pushStack(c
>1?n.unique(d):d),d.selector=this.selector?this.selector+
" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!
1))},not:function(a){return this.pushStack(x(this,a||[],!
0))},is:function(a){return!!x(this,
"string"==typeof a&&u.test(a)?n(a):a||[],!
1).length}});var y,z=/^(?:\s*(<[\w\W]+
>)[^
>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(
c="<"===a[
0]&&"
>"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined
"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):
0;e
>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType
<11&&(g?g.index(c)
>-
1:
1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length
>1?n.unique(f):f)},index:function(a){return a?
"string"==typeof a?g.call(n(a),this[
0]):g.call(this,a.jquery?a[
0]:a):this[
0]&&this[
0].parentNode?this.first().prevAll().length:-
1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&
1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&
11!==b.nodeType?b:null},parents:function(a){return n.dir(a,
"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,
"parentNode",c)},next:function(a){return D(a,
"nextSibling")},prev:function(a){return D(a,
"previousSibling")},nextAll:function(a){return n.dir(a,
"nextSibling")},prevAll:function(a){return n.dir(a,
"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,
"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,
"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return
"Until"!==a.slice(-
5)&&(d=c),d&&
"string"==typeof d&&(e=n.filter(d,e)),this.length
>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!
0}),b}n.Callbacks=function(a){
a=
"string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!
0,g=e||
0,e=
0,f=h.length,d=!
0;h&&f
>g;g++)if(h[g].apply(l[
0],l[
1])===!
1&&a.stopOnFalse){b=!
1;break}d=!
1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))
>-
1)h.splice(c,
1),d&&(f
>=c&&f--,g
>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)
>-
1:!(!h||!h.length)},empty:function(){return h=[],f=
0,this},disable:function(){return h=i=b=void
0,this},disabled:function(){return!h},lock:function(){return i=void
0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],
c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[
1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[
0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[
2],h=f[
3];d[f[
1]]=g.add,h&&g.add(function(){c=h},b[
1^a][
2].disable,b[
2][
2].lock),e[f[
0]]=function(){return e[f[
0]+"With"](this===e?d:this,arguments),this},e[f[
0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=
0,c=d.call(arguments),e=c.length,f=
1!==e||a&&n.isFunction(a.promise)?e:
0,g=
1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length
>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e
>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e
>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!
1,readyWait:
1,holdReady:function(a){a?n.readyWait++:n.ready(!
0)},ready:function(a){(a===!
0?--n.readyWait:n.isReady)||(n.isReady=!
0,a!==!
0&&--n.readyWait
>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler(
"ready"),n(l).off(
"ready"))))}});function I(){l.removeEventListener(
"DOMContentLoaded",I,!
1),a.removeEventListener(
"load",I,!
1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),
"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener(
"DOMContentLoaded",I,!
1),a.addEventListener(
"load",I,!
1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=
0,i=a.length,j=null==c;if(
"object"===n.type(c)){e=!
0;for(h in c)n.access(a,b,h,c[h],!
0,f,g)}else if(void
0!==d&&(e=!
0,n.isFunction(d)||(g=!
0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i
>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[
0],c):f};n.acceptData=function(a){return
1===a.nodeType||
9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},
0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=
1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return
0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void
0===b?c:c[b]},access:function(a,b,c){var d;return void
0===b||b&&"string"==typeof b&&void
0===c?(d=this.get(a,b),void
0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void
0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void
0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void
0===c&&
1===a.nodeType)if(
d="data-"+b.replace(O,"-$
1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{
c="true"===c?!
0:"false"===c?!
1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void
0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)
428 },_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[
0],g=f&&f.attributes;if(void
0===a){if(this.length&&(e=M.get(f),
1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,
0===d.indexOf("data-")&&(d=n.camelCase(d.slice(
5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!
0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void
0===b){if(c=M.get(f,a),void
0!==c)return c;if(c=M.get(f,d),void
0!==c)return c;if(c=P(f,d,void
0),void
0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-
1!==a.indexOf("-")&&void
0!==c&&M.set(this,a,b)})},null,b,arguments.length
>1,null,!
0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||
"fx")+
"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void
0},dequeue:function(a,b){b=b||
"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};
"inprogress"===e&&(e=c.shift(),d--),e&&(
"fx"===b&&c.unshift(
"inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+
"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks(
"once memory").add(function(){L.remove(a,[b+
"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=
2;return
"string"!=typeof a&&(b=a,
a=
"fx",c--),arguments.length
<c?n.queue(this[
0],a):void
0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),
"fx"===a&&
"inprogress"!==c[
0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||
"fx",[])},promise:function(a,b){var c,d=
1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};
"string"!=typeof a&&(b=a,a=void
0),a=a||
"fx";while(g--)c=L.get(f[g],a+
"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=[
"Top",
"Right",
"Bottom",
"Left"],S=function(a,b){return a=b||a,
"none"===n.css(a,
"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement(
"div")),c=l.createElement(
"input");c.setAttribute(
"type",
"radio"),c.setAttribute(
"checked",
"checked"),c.setAttribute(
"name",
"t"),b.appendChild(c),k.checkClone=b.cloneNode(!
0).cloneNode(!
0).lastChild.checked,b.
innerHTML=
"<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!
0).lastChild.defaultValue}();var
U=
"undefined";k.
focusinBubbles=
"onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!
0}function $(){return!
1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void
0}),b=(b||
"").match(E)||[
""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(
".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=
0,l.setup&&l.setup.call(a,d,p,g)!==!
1||a.addEventListener&&a.addEventListener(o,g,!
1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,
0,k):m.push(k),n.event.global[o]=!
0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||
"").match(E)||[
""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[
1],p=(h[
2]||
"").split(
".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[
2]&&new RegExp(
"(^|\\.)"+p.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&(
"**"!==d||!k.selector)||(m.splice(f,
1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!
1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!
0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,
"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,
"type")?b.type:b,r=j.call(b,
"namespace")?b.namespace.split(
"."):[];if(g=h=d=d||l,
3!==d.nodeType&&
8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(
".")
>=
0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")
<0&&
"on"+q,b=b[n.expando]?b:new n.Event(q,
"object"==typeof b&&b),b.isTrigger=e?
2:
3,b.namespace=r.join(
"."),b.namespace_re=b.namespace?new RegExp(
"(^|\\.)"+r.join(
"\\.(?:.*\\.|)")+
"(\\.|$)"):null,b.result=void
0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!
1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=
0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f
>1?i:o.bindType||q,m=(L.get(g,
"events")||{})[b.type]&&L.get(g,
"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!
1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!
1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void
0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,
"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[
0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!
1){h=n.event.handlers.call(this,a,j),b=
0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=
0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void
0!==e&&(a.result=e)===!
1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||
"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!
0||
"click"!==a.type){for(d=[],c=
0;h
>c;c++)f=b[c],e=f.selector+" ",void
0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)
>=
0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h
<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:
"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(
" "),fixHooks:{},keyHooks:{props:
"char charCode key keyCode".split(
" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:
"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(
" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||
0)-(d&&d.clientLeft||e&&e.clientLeft||
0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||
0)-(d&&d.clientTop||e&&e.clientTop||
0)),a.which||void
0===f||(a.which=
1&f?
1:
2&f?
3:
4&f?
2:
0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),
3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!
0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!
1):void
0},delegateType:
"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!
1):void
0},delegateType:
"focusout"},click:{trigger:function(){return
"checkbox"===this.type&&this.click&&n.nodeName(this,
"input")?(this.click(),!
1):void
0},_default:function(a){return n.nodeName(a.target,
"a")}},beforeunload:{postDispatch:function(a){void
0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!
0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!
1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void
0===a.defaultPrevented&&a.returnValue===!
1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!
0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:
"mouseover",mouseleave:
"mouseout",pointerenter:
"pointerover",pointerleave:
"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:
"focusin",blur:
"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!
0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!
0),L.access(d,b,(e||
0)+
1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-
1;e?L.access(d,b,e):(d.removeEventListener(a,c,!
0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(
"object"==typeof a){
"string"!=typeof b&&(c=c||b,b=void
0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void
0):null==d&&(
"string"==typeof b?(d=c,c=void
0):(d=c,c=b,b=void
0)),d===!
1)d=$;else if(!d)return this;return
1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,
1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+
"."+d.namespace:d.origType,d.selector,d.handler),this;if(
"object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!
1||
"function"==typeof b)&&(c=b,b=void
0),c===!
1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[
0];return c?n.event.trigger(a,b,c,!
0):void
0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^
>]*)\
/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)
>\s*$/g,ib={option:[
1,"
<select multiple='multiple'
>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table
")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr
")?a.getElementsByTagName("tbody
")[0]||a.appendChild(a.ownerDocument.createElement("tbody
")):a}function kb(a){return a.type=(null!==a.getAttribute("type
"))+"/
"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type
"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(
1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=
0,d=j[e].length;d
>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void
0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!
0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||
1!==a.nodeType&&
11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=
0,e=f.length;e
>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=
0,e=f.length;e
>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length
>0&&mb(g,!i&&ob(a,
"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=
0,o=a.length;o
>m;m++)if(e=a[m],e||
0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[
1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[
1]+e.replace(ab,"<$
1></$
2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script
"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script
")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string
"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$
1></$
2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string
"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script
"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-
1].ownerDocument,n.map(f,lb),j=
0;g
>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-
1,h=
0;g
>=h;h++)c=h===g?this:this.clone(!
0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[
0]))?d.display:n.css(e[
0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("
<iframe frameborder='
0' width='
0' height='
0'
/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^(
"+Q+")(?!px)[a-z%]+$
","i
"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div
"),f=l.createElement("div
");if(f.style){f.style.backgroundClip="content-box
",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box
"===f.style.backgroundClip,e.style.cssText="border:
0;width:
0;height:
0;top:
0;left:-
9999px;margin-top:
1px;position:absolute
",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:
1%;top:
1%;border:
1px;padding:
1px;width:
4px;position:absolute
",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%
"!==g.top,c="4px
"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div
"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:
0;border:
0;padding:
0",c.style.marginRight=c.style.width="0",f.style.width="1px
",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^(
"+Q+")(.*)$
","i
"),Bb=new RegExp("^([+-])=(
"+Q+")
","i
"),Cb={position:"absolute
",visibility:"hidden
",display:"block
"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit
","O
","Moz
","ms
"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px
"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border
":"content
")?4:"width
"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!
0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!
0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!
0,e))):(g+=n.css(a,"padding"+R[f],!
0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!
0,e)));return g}function Ib(a,b,c){var d=!
0,
e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),
g="border-box"===n.css(a,"boxSizing",!
1,f);if(
0>=e||null==e){if(e=xb(a,b,f),(
0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||
0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=
0,h=a.length;h
>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.
display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=
0;h
>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"
1":c}}}},cssNumber:{columnCount:!
0,fillOpacity:!
0,flexGrow:!
0,flexShrink:!
0,fontWeight:!
0,lineHeight:!
0,opacity:!
0,order:!
0,orphans:!
0,widows:!
0,zIndex:!
0,zoom:!
0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&
3!==a.nodeType&&
8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void
0===c?g&&"get"in g&&void
0!==(e=g.get(a,!
1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[
1]+
1)*e[
2]+parseFloat(n.css(a,b)),
f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||
0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void
0===(c=g.set(a,c,d))||(i[b]=c)),void
0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!
0,c)),void
0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!
0||n.isNumeric(f)?f||
0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&
0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void
0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!
1,e),e):
0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void
0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=
0,e={},
f="string"==typeof c?c.split(" "):[c];
4>d;d++)e[a+R[d]+b]=f[d]||f[d-
2]||f[
0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=
0;if(n.isArray(b)){for(d=wb(a),e=b.length;e
>g;g++)f[b[g]]=n.css(a,b[g],!
1,d);return f}return void
0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length
>1)},show:function(){return Jb(this,!
0)},hide:function(){return Jb(this)},toggle:function(a){return
"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||
"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?
"":
"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,
0,
1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,
""),b&&
"auto"!==b?b:
0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return
.5-Math.cos(a*Math.PI)/
2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp(
"^(?:([+-])=|)("+Q+
")([a-z%]*)$",
"i"),Pb=/queueHooks$/,Qb=[Vb],Rb={
"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[
3]||(n.cssNumber[a]?
"":
"px"),g=(n.cssNumber[a]||
"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=
1,i=
20;if(g&&g[
3]!==f){f=f||g[
3],e=e||[],g=+d||
1;do h=h||
".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&
1!==h&&--i)}return e&&(g=c.start=+g||+d||
0,c.unit=f,c.end=e[
1]?g+(e[
1]+
1)*e[
2]:+e[
2]),c}]};function Sb(){return setTimeout(function(){Lb=void
0}),Lb=n.now()}function Tb(a,b){var c,d=
0,e={height:a};for(b=b?
1:
0;
4>d;d+=
2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=
0,g=e.length;g
>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=
0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),
1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),
k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.
display="inline-block")),c.overflow&&(o.
overflow="hidden",l.always(function(){o.overflow=c.overflow[
0],o.overflowX=c.overflow[
1],o.overflowY=c.overflow[
2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void
0===q[d])continue;p=!
0}m[d]=q&&q[d]||n.style(a,d)}else j=void
0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:
0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.
start="width"===d||"height"===d?
1:
0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[
1],f=a[c]=f[
0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=
0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!
1;for(var b=Lb||Sb(),c=Math.max(
0,j.startTime+j.duration-b),d=c/j.duration||
0,f=
1-d,g=
0,i=j.tweens.length;i
>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),
1>f&&i?c:(h.resolveWith(a,[j]),!
1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!
0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=
0,d=b?j.tweens.length:
0;if(e)return this;for(e=!
0;d
>c;c++)j.tweens[c].run(
1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g
>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=
0,e=a.length;e
>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?
0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!
0)&&(d.
queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",
0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!
0)};return g.finish=g,e||f.queue===!
1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void
0),b&&a!==!
1&&this.queue(a||"fx",[]),this.each(function(){var b=!
0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!
1,f.splice(e,
1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!
1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:
0;for(c.finish=!
0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!
0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!
0),f.splice(b,
1));for(b=
0;g
>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!
0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=
0,c=n.timers;for(Lb=n.now();b
<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,
1);c.length||n.fx.stop(),Lb=void
0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=
13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:
600,fast:
200,_default:
400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||
"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement(
"input"),b=l.createElement(
"select"),c=b.appendChild(l.createElement(
"option"));a.
type=
"checkbox",k.
checkOn=
""!==a.value,k.optSelected=c.selected,b.disabled=!
0,k.optDisabled=!c.disabled,a=l.createElement(
"input"),a.
value=
"t",a.
type=
"radio",k.
radioValue=
"t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length
>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&
3!==f&&
8!==f&&
2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(
1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void
0===c?d&&
"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void
0:e):null!==c?d&&
"set"in d&&void
0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+
""),c):void n.removeAttr(a,b))
429 },removeAttr:function(a,b){var c,d,e=
0,f=b&&b.match(E);if(f&&
1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!
1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&
"radio"===b&&n.nodeName(a,
"input")){var c=a.value;return a.setAttribute(
"type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!
1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length
>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{
"for":
"htmlFor",
"class":
"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&
3!==g&&
8!==g&&
2!==g)return f=
1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void
0!==c?e&&
"set"in e&&void
0!==(d=e.set(a,c,b))?d:a[b]=c:e&&
"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute(
"tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-
1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each([
"tabIndex",
"readOnly",
"maxLength",
"cellSpacing",
"cellPadding",
"rowSpan",
"colSpan",
"useMap",
"frameBorder",
"contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,
h=
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=
0;while(e=b[f++])d.indexOf(" "+e+" ")
<0&&(d+=e+
" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=
0===arguments.length||
"string"==typeof a&&a,i=
0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||
"").match(E)||[];j
>i;i++)if(c=this[i],d=
1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=
0;while(e=b[f++])while(d.indexOf(" "+e+" ")
>=
0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=
0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!
1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var
b=" "+a+" ",c=
0,d=this.length;d
>c;c++)if(
1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)
>=
0)return!
0;return!
1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[
0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;
1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?
e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void
0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void
0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,
f="select-one"===a.type||
0>e,g=f?null:[],h=f?e+
1:d.length,i=
0>e?h:f?e:
0;h
>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)
>=
0)&&(c=!
0);return c||(a.selectedIndex=-
1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)
>=
0:void
0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length
>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return
1===arguments.length?this.off(a,
"**"):this.off(b,a||
"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+
"")},n.parseXML=function(a){var b,c;if(!a||
"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,
"text/xml")}catch(d){b=void
0}return(!b||b.getElementsByTagName(
"parsererror").length)&&n.error(
"Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},
pc=
"*/".concat(
"*");try{fc=location.href}catch(qc){fc=l.createElement(
"a"),fc.
href=
"",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){
"string"!=typeof b&&(c=b,
b=
"*");var d,e=
0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])
"+"===d[
0]?(d=d.slice(
1)||
"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!
0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return
"string"!=typeof j||f||e[j]?f?!(i=j):void
0:(b.dataTypes.unshift(j),g(j),!
1)}),i}return g(b.dataTypes[
0])||!e[
"*"]&&g(
"*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void
0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!
0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(
"*"===i[
0])i.shift(),void
0===d&&(d=a.mimeType||b.getResponseHeader(
"Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[
0]in c)f=i[
0];else{for(e in c){if(!i[
0]||a.converters[e+
" "+i[
0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[
0]&&i.unshift(f),c[f]):void
0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[
1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(
"*"===f)f=i;else if(
"*"!==i&&i!==f){if(g=j[i+
" "+f]||j[
"* "+f],!g)for(e in j)if(h=e.split(
" "),h[
1]===f&&(g=j[i+
" "+h[
0]]||j[
"* "+h[
0]])){g===!
0?g=j[e]:j[e]!==!
0&&(f=h[
0],k.unshift(h[
1]));break}if(g!==!
0)if(g&&a[
"throws"])b=g(b);else try{b=g(b)}catch(l){return{state:
"parsererror",error:g?l:
"No conversion from "+i+
" to "+f}}}return{state:
"success",data:b}}n.extend({active:
0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:
"GET",isLocal:jc.test(ec[
1]),global:!
0,processData:!
0,async:!
0,contentType:
"application/x-www-form-urlencoded; charset=UTF-8",accepts:{
"*":pc,text:
"text/plain",html:
"text/html",xml:
"application/xml, text/xml",json:
"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:
"responseXML",text:
"responseText",json:
"responseJSON"},converters:{
"* text":String,
"text html":!
0,
"text json":n.parseJSON,
"text xml":n.parseXML},flatOptions:{url:!
0,context:!
0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){
"object"==typeof a&&(b=a,a=void
0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(
"once memory"),q=k.statusCode||{},r={},s={},t=
0,
u=
"canceled",v={readyState:
0,getResponseHeader:function(a){var b;if(
2===t){if(!f){f={};while(b=ic.exec(e))f[b[
1].toLowerCase()]=b[
2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return
2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(
2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(
0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[
1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[
1]===ec[
1]&&h[
2]===ec[
2]&&(h[
3]||("http:"===h[
1]?"
80":"
443"))===(ec[
3]||("http:"===ec[
1]?"
80":"
443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),
2===t)return v;i=k.global,i&&
0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!
1&&(k.url=hc.test(d)?d.replace(hc,"$
1_="+cc++):d+(dc.test(d)?"&":"?")+"
_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!
1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[
0]&&k.accepts[k.dataTypes[
0]]?k.accepts[k.dataTypes[
0]]+("*"!==k.dataTypes[
0]?", "+pc+"; q=
0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!
1||
2===t))return v.abort();
u="abort";for(j in{success:
1,error:
1,complete:
1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=
1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout
>0&&(g=setTimeout(function(){v.abort(
"timeout")},k.timeout));try{t=
1,c.send(r,x)}catch(w){if(!(
2>t))throw w;x(-
1,w)}}else x(-
1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;
2!==t&&(t=
2,g&&clearTimeout(g),c=void
0,e=h||"",v.readyState=a
>0?
4:
0,j=a
>=
200&&
300>a||
304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),
204===a||"HEAD"===k.type?
x="nocontent":
304===a?
x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(
x="error",
0>a&&(a=
0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void
0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void
0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void
0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!
1,global:!
1,"throws":!
0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[
0]&&(b=n(a,this[
0].ownerDocument).eq(
0).clone(!
0),this[
0].parentNode&&b.insertBefore(this[
0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=
0&&a.offsetHeight<=
0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%
20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void
0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=
0,Dc={},Ec={
0:
200,
1223:
204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void
0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void
0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void
0===a.cache&&(a.cache=!
1),a.crossDomain&&(a.
type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("
<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error
",c=function(a){b.remove(),c=null,a&&e("error
"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback
",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_
"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp
",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url
":"string
"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded
")&&Hc.test(b.data)&&"data
");return h||"jsonp
"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$
1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&
":"?
")+b.jsonp+"=
"+e),b.converters["script json
"]=function(){return g||n.error(e+" was not called
"),g[0]},b.dataTypes[0]="json
",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script
"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string
"!=typeof a)return null;"boolean
"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string
"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object
"==typeof b&&(e="POST
"),g.length>0&&n.ajax({url:a,type:e,dataType:"html
",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position
"),l=n(a),m={};"static
"===k&&(a.style.position="relative
"),h=l.offset(),f=n.css(a,"top
"),i=n.css(a,"left
"),j=("absolute
"===k||"fixed
"===k)&&(f+i).indexOf("auto
")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using
"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed
"===n.css(c,"position
")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html
")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth
",!0),d.left+=n.css(a[0],"borderLeftWidth
",!0)),{top:b.top-d.top-n.css(c,"marginTop
",!0),left:b.left-d.left-n.css(c,"marginLeft
",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html
")&&"static
"===n.css(a,"position
"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset
",scrollTop:"pageYOffset
"},function(b,c){var d="pageYOffset
"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top
","left
"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px
":c):void 0})}),n.each({Height:"height
",Width:"width
"},function(a,b){n.each({padding:"inner
"+a,content:b,"":"outer
"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean
"!=typeof d),g=c||(d===!0||e===!0?"margin
":"border
");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client
"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll
"+a],e["scroll
"+a],b.body["offset
"+a],e["offset
"+a],e["client
"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function
"==typeof define&&define.amd&&define("jquery
",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n});
432 <!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/
3.2.0/js/bootstrap.min.js
"></script>-->
435 * Bootstrap v3.2.0 (http://getbootstrap.com)
436 * Copyright 2011-2014 Twitter, Inc.
437 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
439 if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void
0!==a.style[c])return{end:b[c]};return!
1}a.fn.emulateTransitionEnd=function(b){var c=!
1,d=this;a(this).one("bsTransitionEnd",function(){c=!
0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void
0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[
data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.
VERSION="
3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(
150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),
f="object"==typeof b&
&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!
1};c.
VERSION="
3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var
c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!
0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!
1,d.removeClass(c).removeAttr(c))},this),
0)},c.prototype.toggle=function(){var a=!
0,b=this.$element.closest('[
data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!
1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),
g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.
VERSION="
3.2.0",c.DEFAULTS={interval:
5e3,pause:"hover",wrap:!
0},c.prototype.keydown=function(a){switch(a.which){case
37:this.prev();break;case
39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!
1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b
>this.$items.length-
1||
0>b?void
0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b
>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!
0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!
0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void
0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void
0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,
g="next"==b?"left":"right",
h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!
1;var j=e[
0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!
0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[
0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!
1,setTimeout(function(){i.$element.trigger(m)},
0)}).emulateTransitionEnd(
1e3*d.css("transition-duration").slice(
0,-
1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!
1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!
1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[
data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.
VERSION="
3.2.0",c.DEFAULTS={toggle:!
0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("
> .panel
> .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](
0),this.transitioning=
1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=
0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(
350)[f](this.$element[
0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[
0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=
1;var d=function(){this.transitioning=
0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](
0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(
350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[
data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[
data-toggle="collapse"][
data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&
3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var
e=".dropdown-backdrop",f='[
data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.
VERSION="
3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
<div class=
"dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!
1}},g.prototype.keydown=function(b){if(/(
38|
40|
27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&
27==b.keyCode)return
27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var
h=" li:not(.divider):visible a",i=e.find('[
role="menu"]'+h+', [
role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));
38==b.keyCode&&j
>0&&j--,
40==b.keyCode&&j
<i.length-
1&&j++,~j||(j=
0),i.eq(j).trigger(
"focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on(
"click.bs.dropdown.data-api",b).on(
"click.bs.dropdown.data-api",
".dropdown form",function(a){a.stopPropagation()}).on(
"click.bs.dropdown.data-api",f,g.prototype.toggle).on(
"keydown.bs.dropdown.data-api",f+', [
role=
"menu"], [
role=
"listbox"]',g.prototype.keydown)}(jQuery),+function(a){
"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data(
"bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),
"object"==typeof b&&b);f||e.data(
"bs.modal",f=new c(this,g)),
"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=
0,this.options.remote&&this.$element.find(
".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger(
"loaded.bs.modal")},this))};c.
VERSION=
"3.2.0",c.DEFAULTS={backdrop:!
0,keyboard:!
0,show:!
0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event(
"show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!
0,this.checkScrollbar(),this.$body.addClass(
"modal-open"),this.setScrollbar(),this.escape(),this.$element.on(
"click.dismiss.bs.modal",'[
data-dismiss=
"modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass(
"fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(
0),d&&c.$element[
0].offsetWidth,c.$element.addClass(
"in").attr(
"aria-hidden",!
1),c.enforceFocus();var e=a.Event(
"shown.bs.modal",{relatedTarget:b});d?c.$element.find(
".modal-dialog").one(
"bsTransitionEnd",function(){c.$element.trigger(
"focus").trigger(e)}).emulateTransitionEnd(
300):c.$element.trigger(
"focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event(
"hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!
1,this.$body.removeClass(
"modal-open"),this.resetScrollbar(),this.escape(),a(document).off(
"focusin.bs.modal"),this.$element.removeClass(
"in").attr(
"aria-hidden",!
0).off(
"click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass(
"fade")?this.$element.one(
"bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(
300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off(
"focusin.bs.modal").on(
"focusin.bs.modal",a.proxy(function(a){this.$element[
0]===a.target||this.$element.has(a.target).length||this.$element.trigger(
"focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on(
"keyup.dismiss.bs.modal",a.proxy(function(a){
27==a.which&&this.hide()},this)):this.isShown||this.$element.off(
"keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger(
"hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass(
"fade")?
"fade":
"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&
&d;if(this.$backdrop=a('
<div class=
"modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[
0].focus.call(this.$element[
0]):this.hide.call(this))},this)),e&&this.$backdrop[
0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(
150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(
150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth
>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||
0,
10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.
className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[
0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[
data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.
VERSION="
3.2.0",c.DEFAULTS={animation:!
0,placement:"top",selector:!
1,template:'
<div class=
"tooltip" role=
"tooltip"><div class=
"tooltip-arrow"></div><div class=
"tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:
0,html:!
1,container:!
1,viewport:{selector:"body",padding:
0}},c.prototype.init=function(b,c,d){this.enabled=!
0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var
h="hover"==g?"mouseenter":"focusin",
i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.
hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[
0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var
g="function"==typeof this.options.placement?this.options.placement.call(this,e[
0],this.$element[
0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:
0,left:
0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[
0].offsetWidth,l=e[
0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);
g="bottom"==g&&j.top+j.height+l-o.scroll
>o.height?"top":"top"==g&&j.top-o.scroll-l
<0?
"bottom":
"right"==g&&j.right+k
>o.width?"left":"left"==g&&j.left-k
<o.left?
"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger(
"shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass(
"fade")?e.one(
"bsTransitionEnd",q).emulateTransitionEnd(
150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[
0].offsetWidth,f=d[
0].offsetHeight,g=parseInt(d.css(
"margin-top"),
10),h=parseInt(d.css(
"margin-left"),
10);isNaN(g)&&(g=
0),isNaN(h)&&(h=
0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[
0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),
0),d.addClass(
"in");var i=d[
0].offsetWidth,j=d[
0].offsetHeight;
"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?
2*k.left-e+i:
2*k.top-f+j,m=k.left?
"left":
"top",n=k.left?
"offsetWidth":
"offsetHeight";d.offset(b),this.replaceArrow(l,d[
0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?
50*(
1-a/b)+
"%":
"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(
".tooltip-inner")[this.options.html?
"html":
"text"](b),a.removeClass(
"fade in top bottom left right")},c.prototype.hide=function(){function b(){
"in"!=c.hoverState&&d.detach(),c.$element.trigger(
"hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event(
"hide.bs."+this.type);return this.$element.removeAttr(
"aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void
0:(d.removeClass(
"in"),a.support.transition&&this.$tip.hasClass(
"fade")?d.one(
"bsTransitionEnd",b).emulateTransitionEnd(
150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr(
"title")||
"string"!=typeof a.attr(
"data-original-title"))&&a.attr(
"data-original-title",a.attr(
"title")||
"").attr(
"title",
"")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[
0],
d=
"BODY"==c.tagName;return a.extend({},
"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:
0,left:
0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return
"bottom"==a?{top:b.top+b.height,left:b.left+b.width/
2-c/
2}:
"top"==a?{top:b.top-d,left:b.left+b.width/
2-c/
2}:
"left"==a?{top:b.top+b.height/
2-d/
2,left:b.left-c}:{top:b.top+b.height/
2-d/
2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:
0,left:
0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||
0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h
<g.top?e.top=g.top-h:i
>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j
<g.left?e.left=g.left-j:k
>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[
0]):c.title)},c.prototype.getUID=function(a){do a+=~~(
1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[
0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!
0},c.prototype.disable=function(){this.enabled=!
1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),
f="object"==typeof b&
&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.
VERSION="
3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'
<div class=
"popover" role=
"tooltip"><div class=
"arrow"></div><h3 class=
"popover-title"></h3><div class=
"popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[
0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li
> a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=
0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),
f="object"==typeof c&
&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.
VERSION="
3.2.0",b.DEFAULTS={offset:
10},b.prototype.getScrollHeight=function(){return this.$scrollElement[
0].scrollHeight||Math.max(this.$body[
0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var
b="offset",c=
0;a.isWindow(this.$scrollElement[
0])||(
b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[
0]-b[
0]}).each(function(){d.offsets.push(this[
0]),d.targets.push(this[
1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b
>=d)return g!=(a=f[f.length-
1])&&this.activate(a);if(g&&b<=e[
0])return g!=(a=f[
0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b
>=e[a]&&(!e[a+
1]||b<=e[a+
1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[
data-target="'+b+'"],'+this.selector+'[
href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[
data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.
VERSION="
3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[
0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("
> .dropdown-menu
> .active").removeClass("active"),b.addClass("active"),g?(b[
0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("
> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(
150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[
data-toggle="tab"], [
data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),
f="object"==typeof b&
&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.
VERSION="
3.2.0",c.
RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:
0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),
1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!
1:null!=h&&e.top+this.$element.height()
>=b-h?"bottom":null!=g&&g
>=d?"top":!
1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var
j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.
unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[
data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
442 <!--<script src="/js/bitcoinjs-1-0-0.js"></script>-->
444 (function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Bitcoin=e()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&
&require;if(!u&&a)return a(o,!
0);if(i)return i(o,!
0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][
0].call(f.exports,function(e){var n=t[o][
1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&
&require;for(var o=
0;o
<r.length;o++)s(r[o]);return s})({
1:[function(_dereq_,module,exports){
445 var assert = _dereq_('assert')
447 module.exports = BigInteger
449 // JavaScript engine analysis
450 var canary =
0xdeadbeefcafe;
451 var j_lm = ((canary&
0xffffff)==
0xefcafe);
453 // (public) Constructor
454 function BigInteger(a,b,c) {
455 if (!(this instanceof BigInteger)) {
456 return new BigInteger(a, b, c);
460 if(
"number" == typeof a) this.fromNumber(a,b,c);
461 else if(b == null &&
"string" != typeof a) this.fromString(a,
256);
462 else this.fromString(a,b);
466 var proto = BigInteger.prototype;
468 // return new, unset BigInteger
469 function nbi() { return new BigInteger(null); }
474 // am: Compute w_j += (x*this_i), propagate carries,
475 // c is initial carry, returns final carry.
476 // c <
3*dvalue, x <
2*dvalue, this_i < dvalue
477 // We need to select the fastest one that works in this environment.
479 // am1: use a single mult and divide to get the high bits,
480 // max digit bits should be
26 because
481 // max internal value =
2*dvalue^
2-
2*dvalue (<
2^
53)
482 function am1(i,x,w,j,c,n) {
484 var v = x*this[i++]+w[j]+c;
485 c = Math.floor(v/
0x4000000);
486 w[j++] = v
&0x3ffffff;
490 // am2 avoids a big mult-and-extract completely.
491 // Max digit bits should be <=
30 because we do bitwise ops
492 // on values up to
2*hdvalue^
2-hdvalue-
1 (<
2^
31)
493 function am2(i,x,w,j,c,n) {
494 var xl = x&
0x7fff, xh = x
>>15;
496 var l = this[i]
&0x7fff;
497 var h = this[i++]
>>15;
499 l = xl*l+((m&
0x7fff)<
<15)+w[j]+(c&
0x3fffffff);
500 c = (l
>>>30)+(m
>>>15)+xh*h+(c
>>>30);
501 w[j++] = l
&0x3fffffff;
505 // Alternately, set max digit bits to
28 since some
506 // browsers slow down when dealing with
32-bit numbers.
507 function am3(i,x,w,j,c,n) {
508 var xl = x&
0x3fff, xh = x
>>14;
510 var l = this[i]
&0x3fff;
511 var h = this[i++]
>>14;
513 l = xl*l+((m&
0x3fff)<
<14)+w[j]+c;
514 c = (l
>>28)+(m
>>14)+xh*h;
515 w[j++] = l
&0xfffffff;
521 BigInteger.prototype.am = am1;
525 if(j_lm && (navigator.appName ==
"Microsoft Internet Explorer")) {
526 BigInteger.prototype.am = am2;
529 else if(j_lm && (navigator.appName !=
"Netscape")) {
530 BigInteger.prototype.am = am1;
533 else { // Mozilla/Netscape seems to prefer am3
534 BigInteger.prototype.am = am3;
539 BigInteger.prototype.DB = dbits;
540 BigInteger.prototype.DM = ((
1<
<dbits)-
1);
541 var DV = BigInteger.prototype.DV = (
1<
<dbits);
544 BigInteger.prototype.FV = Math.pow(
2,BI_FP);
545 BigInteger.prototype.F1 = BI_FP-dbits;
546 BigInteger.prototype.F2 =
2*dbits-BI_FP;
549 var BI_RM =
"0123456789abcdefghijklmnopqrstuvwxyz";
550 var BI_RC = new Array();
552 rr =
"0".charCodeAt(
0);
553 for(vv =
0; vv <=
9; ++vv) BI_RC[rr++] = vv;
554 rr =
"a".charCodeAt(
0);
555 for(vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv;
556 rr =
"A".charCodeAt(
0);
557 for(vv =
10; vv <
36; ++vv) BI_RC[rr++] = vv;
559 function int2char(n) { return BI_RM.charAt(n); }
560 function intAt(s,i) {
561 var c = BI_RC[s.charCodeAt(i)];
562 return (c==null)?-
1:c;
565 // (protected) copy this to r
566 function bnpCopyTo(r) {
567 for(var i = this.t-
1; i
>=
0; --i) r[i] = this[i];
572 // (protected) set from integer value x, -DV <= x < DV
573 function bnpFromInt(x) {
576 if(x
> 0) this[
0] = x;
577 else if(x < -
1) this[
0] = x+DV;
581 // return bigint initialized to value
582 function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
584 // (protected) set from string and radix
585 function bnpFromString(s,b) {
590 else if(b ==
8) k =
3;
591 else if(b ==
256) k =
8; // byte array
592 else if(b ==
2) k =
1;
593 else if(b ==
32) k =
5;
594 else if(b ==
4) k =
2;
595 else { self.fromRadix(s,b); return; }
598 var i = s.length, mi = false, sh =
0;
600 var x = (k==
8)?s[i]&
0xff:intAt(s,i);
602 if(s.charAt(i) == "-") mi = true;
608 else if(sh+k
> self.DB) {
609 self[self.t-
1] |= (x&((
1<<(self.DB-sh))-
1))<
<sh;
610 self[self.t++] = (x
>>(self.DB-sh));
613 self[self.t-
1] |= x<
<sh;
615 if(sh
>= self.DB) sh -= self.DB;
617 if(k ==
8 && (s[
0]&
0x80) !=
0) {
619 if(sh
> 0) self[self.t-
1] |= ((
1<<(self.DB-sh))-
1)<
<sh;
622 if(mi) BigInteger.ZERO.subTo(self,self);
625 // (protected) clamp off excess high words
626 function bnpClamp() {
627 var c = this.s&this.DM;
628 while(this.t
> 0 && this[this.t-
1] == c) --this.t;
631 // (public) return string representation in given radix
632 function bnToString(b) {
634 if(self.s <
0) return
"-"+self.negate().toString(b);
637 else if(b ==
8) k =
3;
638 else if(b ==
2) k =
1;
639 else if(b ==
32) k =
5;
640 else if(b ==
4) k =
2;
641 else return self.toRadix(b);
642 var km = (
1<
<k)-
1, d, m = false, r =
"", i = self.t;
643 var p = self.DB-(i*self.DB)%k;
645 if(p < self.DB && (d = self[i]
>>p)
> 0) { m = true; r = int2char(d); }
648 d = (self[i]&((
1<
<p)-
1))<<(k-p);
649 d |= self[--i]
>>(p+=self.DB-k);
652 d = (self[i]
>>(p-=k))
&km;
653 if(p <=
0) { p += self.DB; --i; }
656 if(m) r += int2char(d);
663 function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
666 function bnAbs() { return (this.s
<0)?this.negate():this; }
668 // (public) return + if this
> a, - if this < a,
0 if equal
669 function bnCompareTo(a) {
674 if(r !=
0) return (this.s
<0)?-r:r;
675 while(--i
>=
0) if((r=this[i]-a[i]) !=
0) return r;
679 // returns bit length of the integer x
682 if((t=x
>>>16) !=
0) { x = t; r +=
16; }
683 if((t=x
>>8) !=
0) { x = t; r +=
8; }
684 if((t=x
>>4) !=
0) { x = t; r +=
4; }
685 if((t=x
>>2) !=
0) { x = t; r +=
2; }
686 if((t=x
>>1) !=
0) { x = t; r +=
1; }
690 // (public) return the number of bits in
"this"
691 function bnBitLength() {
692 if(this.t <=
0) return
0;
693 return this.DB*(this.t-
1)+nbits(this[this.t-
1]^(this.s&this.DM));
696 // (protected) r = this << n*DB
697 function bnpDLShiftTo(n,r) {
699 for(i = this.t-
1; i
>=
0; --i) r[i+n] = this[i];
700 for(i = n-
1; i
>=
0; --i) r[i] =
0;
705 // (protected) r = this
>> n*DB
706 function bnpDRShiftTo(n,r) {
707 for(var i = n; i < this.t; ++i) r[i-n] = this[i];
708 r.t = Math.max(this.t-n,
0);
712 // (protected) r = this << n
713 function bnpLShiftTo(n,r) {
716 var cbs = self.DB-bs;
718 var ds = Math.floor(n/self.DB), c = (self.s<
<bs)&self.DM, i;
719 for(i = self.t-
1; i
>=
0; --i) {
720 r[i+ds+
1] = (self[i]
>>cbs)|c;
721 c = (self[i]&bm)<
<bs;
723 for(i = ds-
1; i
>=
0; --i) r[i] =
0;
730 // (protected) r = this
>> n
731 function bnpRShiftTo(n,r) {
734 var ds = Math.floor(n/self.DB);
735 if(ds
>= self.t) { r.t =
0; return; }
737 var cbs = self.DB-bs;
740 for(var i = ds+
1; i < self.t; ++i) {
741 r[i-ds-
1] |= (self[i]&bm)<
<cbs;
742 r[i-ds] = self[i]
>>bs;
744 if(bs
> 0) r[self.t-ds-
1] |= (self.s&bm)<
<cbs;
749 // (protected) r = this - a
750 function bnpSubTo(a,r) {
752 var i =
0, c =
0, m = Math.min(a.t,self.t);
777 if(c < -
1) r[i++] = self.DV+c;
778 else if(c
> 0) r[i++] = c;
783 // (protected) r = this * a, r != this,a (HAC
14.12)
784 //
"this" should be the larger one if appropriate.
785 function bnpMultiplyTo(a,r) {
786 var x = this.abs(), y = a.abs();
789 while(--i
>=
0) r[i] =
0;
790 for(i =
0; i < y.t; ++i) r[i+x.t] = x.am(
0,y[i],r,i,
0,x.t);
793 if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
796 // (protected) r = this^
2, r != this (HAC
14.16)
797 function bnpSquareTo(r) {
800 while(--i
>=
0) r[i] =
0;
801 for(i =
0; i < x.t-
1; ++i) {
802 var c = x.am(i,x[i],r,
2*i,
0,
1);
803 if((r[i+x.t]+=x.am(i+
1,
2*x[i],r,
2*i+
1,c,x.t-i-
1))
>= x.DV) {
808 if(r.t
> 0) r[r.t-
1] += x.am(i,x[i],r,
2*i,
0,
1);
813 // (protected) divide this by m, quotient and remainder to q, r (HAC
14.20)
814 // r != q, this != m. q or r may be null.
815 function bnpDivRemTo(m,q,r) {
818 if(pm.t <=
0) return;
821 if(q != null) q.fromInt(
0);
822 if(r != null) self.copyTo(r);
825 if(r == null) r = nbi();
826 var y = nbi(), ts = self.s, ms = m.s;
827 var nsh = self.DB-nbits(pm[pm.t-
1]); // normalize modulus
828 if(nsh
> 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
829 else { pm.copyTo(y); pt.copyTo(r); }
833 var yt = y0*(
1<
<self.F1)+((ys
>1)?y[ys-
2]
>>self.F2:
0);
834 var d1 = self.FV/yt, d2 = (
1<
<self.F1)/yt, e =
1<
<self.F2;
835 var i = r.t, j = i-ys, t = (q==null)?nbi():q;
837 if(r.compareTo(t)
>=
0) {
841 BigInteger.ONE.dlShiftTo(ys,t);
842 t.subTo(y,y); // "negative" y so we can replace sub with am later
843 while(y.t < ys) y[y.t++] =
0;
845 // Estimate quotient digit
846 var qd = (r[--i]==y0)?self.DM:Math.floor(r[i]*d1+(r[i-
1]+e)*d2);
847 if((r[i]+=y.am(
0,qd,r,j,
0,ys)) < qd) { // Try it out
850 while(r[i] < --qd) r.subTo(t,r);
855 if(ts != ms) BigInteger.ZERO.subTo(q,q);
859 if(nsh
> 0) r.rShiftTo(nsh,r); // Denormalize remainder
860 if(ts <
0) BigInteger.ZERO.subTo(r,r);
863 // (public) this mod a
866 this.abs().divRemTo(a,null,r);
867 if(this.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) a.subTo(r,r);
871 // Modular reduction using
"classic" algorithm
872 function Classic(m) { this.m = m; }
873 function cConvert(x) {
874 if(x.s <
0 || x.compareTo(this.m)
>=
0) return x.mod(this.m);
877 function cRevert(x) { return x; }
878 function cReduce(x) { x.divRemTo(this.m,null,x); }
879 function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
880 function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
882 Classic.prototype.convert = cConvert;
883 Classic.prototype.revert = cRevert;
884 Classic.prototype.reduce = cReduce;
885 Classic.prototype.mulTo = cMulTo;
886 Classic.prototype.sqrTo = cSqrTo;
888 // (protected) return "-
1/this %
2^DB"; useful for Mont. reduction
892 // xy(
2-xy) = (
1+km)(
1-km)
893 // x[y(
2-xy)] =
1-k^
2m^
2
894 // x[y(
2-xy)] ==
1 (mod m^
2)
895 // if y is
1/x mod m, then y(
2-xy) is
1/x mod m^
2
896 // should reduce x and y(
2-xy) by m^
2 at each step to keep size bounded.
897 // JS multiply "overflows" differently from C/C++, so care is needed here.
898 function bnpInvDigit() {
899 if(this.t <
1) return
0;
901 if((x&
1) ==
0) return
0;
902 var y = x
&3; // y ==
1/x mod
2^
2
903 y = (y*(
2-(x&
0xf)*y))
&0xf; // y ==
1/x mod
2^
4
904 y = (y*(
2-(x&
0xff)*y))
&0xff; // y ==
1/x mod
2^
8
905 y = (y*(
2-(((x&
0xffff)*y)&
0xffff)))
&0xffff; // y ==
1/x mod
2^
16
906 // last step - calculate inverse mod DV directly;
907 // assumes
16 < DB <=
32 and assumes ability to handle
48-bit ints
908 y = (y*(
2-x*y%this.DV))%this.DV; // y ==
1/x mod
2^dbits
909 // we really want the negative inverse, and -DV < y < DV
910 return (y
>0)?this.DV-y:-y;
913 // Montgomery reduction
914 function Montgomery(m) {
916 this.mp = m.invDigit();
917 this.mpl = this.mp
&0x7fff;
918 this.mph = this.mp
>>15;
919 this.um = (
1<<(m.DB-
15))-
1;
924 function montConvert(x) {
926 x.abs().dlShiftTo(this.m.t,r);
927 r.divRemTo(this.m,null,r);
928 if(x.s <
0 && r.compareTo(BigInteger.ZERO)
> 0) this.m.subTo(r,r);
933 function montRevert(x) {
940 // x = x/R mod m (HAC
14.32)
941 function montReduce(x) {
942 while(x.t <= this.mt2) // pad x so am has enough room later
944 for(var i =
0; i < this.m.t; ++i) {
945 // faster way of calculating u0 = x[i]*mp mod DV
947 var u0 = (j*this.mpl+(((j*this.mph+(x[i]
>>15)*this.mpl)&this.um)<
<15))&x.DM;
948 // use am to combine the multiply-shift-add into one call
950 x[j] += this.m.am(
0,u0,x,i,
0,this.m.t);
952 while(x[j]
>= x.DV) { x[j] -= x.DV; x[++j]++; }
955 x.drShiftTo(this.m.t,x);
956 if(x.compareTo(this.m)
>=
0) x.subTo(this.m,x);
959 // r = "x^
2/R mod m"; x != r
960 function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
962 // r = "xy/R mod m"; x,y != r
963 function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
965 Montgomery.prototype.convert = montConvert;
966 Montgomery.prototype.revert = montRevert;
967 Montgomery.prototype.reduce = montReduce;
968 Montgomery.prototype.mulTo = montMulTo;
969 Montgomery.prototype.sqrTo = montSqrTo;
971 // (protected) true iff this is even
972 function bnpIsEven() { return ((this.t
>0)?(this[
0]&
1):this.s) ==
0; }
974 // (protected) this^e, e <
2^
32, doing sqr and mul with
"r" (HAC
14.79)
975 function bnpExp(e,z) {
976 if(e
> 0xffffffff || e <
1) return BigInteger.ONE;
977 var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-
1;
981 if((e&(
1<
<i))
> 0) z.mulTo(r2,g,r);
982 else { var t = r; r = r2; r2 = t; }
987 // (public) this^e % m,
0 <= e <
2^
32
988 function bnModPowInt(e,m) {
990 if(e <
256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
991 return this.exp(e,z);
995 proto.copyTo = bnpCopyTo;
996 proto.fromInt = bnpFromInt;
997 proto.fromString = bnpFromString;
998 proto.clamp = bnpClamp;
999 proto.dlShiftTo = bnpDLShiftTo;
1000 proto.drShiftTo = bnpDRShiftTo;
1001 proto.lShiftTo = bnpLShiftTo;
1002 proto.rShiftTo = bnpRShiftTo;
1003 proto.subTo = bnpSubTo;
1004 proto.multiplyTo = bnpMultiplyTo;
1005 proto.squareTo = bnpSquareTo;
1006 proto.divRemTo = bnpDivRemTo;
1007 proto.invDigit = bnpInvDigit;
1008 proto.isEven = bnpIsEven;
1012 proto.toString = bnToString;
1013 proto.negate = bnNegate;
1015 proto.compareTo = bnCompareTo;
1016 proto.bitLength = bnBitLength;
1018 proto.modPowInt = bnModPowInt;
1022 function nbi() { return new BigInteger(null); }
1025 function bnClone() { var r = nbi(); this.copyTo(r); return r; }
1027 // (public) return value as integer
1028 function bnIntValue() {
1030 if(this.t ==
1) return this[
0]-this.DV;
1031 else if(this.t ==
0) return -
1;
1033 else if(this.t ==
1) return this[
0];
1034 else if(this.t ==
0) return
0;
1035 // assumes
16 < DB <
32
1036 return ((this[
1]&((
1<<(
32-this.DB))-
1))<
<this.DB)|this[
0];
1039 // (public) return value as byte
1040 function bnByteValue() { return (this.t==
0)?this.s:(this[
0]<
<24)
>>24; }
1042 // (public) return value as short (assumes DB
>=
16)
1043 function bnShortValue() { return (this.t==
0)?this.s:(this[
0]<
<16)
>>16; }
1045 // (protected) return x s.t. r^x < DV
1046 function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
1048 // (public)
0 if this ==
0,
1 if this
> 0
1049 function bnSigNum() {
1050 if(this.s <
0) return -
1;
1051 else if(this.t <=
0 || (this.t ==
1 && this[
0] <=
0)) return
0;
1055 // (protected) convert to radix string
1056 function bnpToRadix(b) {
1057 if(b == null) b =
10;
1058 if(this.signum() ==
0 || b <
2 || b
> 36) return
"0";
1059 var cs = this.chunkSize(b);
1060 var a = Math.pow(b,cs);
1061 var d = nbv(a), y = nbi(), z = nbi(), r =
"";
1062 this.divRemTo(d,y,z);
1063 while(y.signum()
> 0) {
1064 r = (a+z.intValue()).toString(b).substr(
1) + r;
1067 return z.intValue().toString(b) + r;
1070 // (protected) convert from radix string
1071 function bnpFromRadix(s,b) {
1074 if(b == null) b =
10;
1075 var cs = self.chunkSize(b);
1076 var d = Math.pow(b,cs), mi = false, j =
0, w =
0;
1077 for(var i =
0; i < s.length; ++i) {
1080 if(s.charAt(i) ==
"-" && self.signum() ==
0) mi = true;
1086 self.dAddOffset(w,
0);
1092 self.dMultiply(Math.pow(b,j));
1093 self.dAddOffset(w,
0);
1095 if(mi) BigInteger.ZERO.subTo(self,self);
1098 // (protected) alternate constructor
1099 function bnpFromNumber(a,b,c) {
1101 if(
"number" == typeof b) {
1102 // new BigInteger(int,int,RNG)
1103 if(a <
2) self.fromInt(
1);
1105 self.fromNumber(a,c);
1106 if(!self.testBit(a-
1)) // force MSB set
1107 self.bitwiseTo(BigInteger.ONE.shiftLeft(a-
1),op_or,self);
1108 if(self.isEven()) self.dAddOffset(
1,
0); // force odd
1109 while(!self.isProbablePrime(b)) {
1110 self.dAddOffset(
2,
0);
1111 if(self.bitLength()
> a) self.subTo(BigInteger.ONE.shiftLeft(a-
1),self);
1116 // new BigInteger(int,RNG)
1117 var x = new Array(), t = a
&7;
1118 x.length = (a
>>3)+
1;
1120 if(t
> 0) x[
0] &= ((
1<
<t)-
1); else x[
0] =
0;
1121 self.fromString(x,
256);
1125 // (public) convert to bigendian byte array
1126 function bnToByteArray() {
1128 var i = self.t, r = new Array();
1130 var p = self.DB-(i*self.DB)%
8, d, k =
0;
1132 if(p < self.DB && (d = self[i]
>>p) != (self.s&self.DM)
>>p)
1133 r[k++] = d|(self.s<<(self.DB-p));
1136 d = (self[i]&((
1<
<p)-
1))<<(
8-p);
1137 d |= self[--i]
>>(p+=self.DB-
8);
1140 d = (self[i]
>>(p-=
8))
&0xff;
1141 if(p <=
0) { p += self.DB; --i; }
1143 if((d&
0x80) !=
0) d |= -
256;
1144 if(k ===
0 && (self.s&
0x80) != (d&
0x80)) ++k;
1145 if(k
> 0 || d != self.s) r[k++] = d;
1151 function bnEquals(a) { return(this.compareTo(a)==
0); }
1152 function bnMin(a) { return(this.compareTo(a)
<0)?this:a; }
1153 function bnMax(a) { return(this.compareTo(a)
>0)?this:a; }
1155 // (protected) r = this op a (bitwise)
1156 function bnpBitwiseTo(a,op,r) {
1158 var i, f, m = Math.min(a.t,self.t);
1159 for(i =
0; i < m; ++i) r[i] = op(self[i],a[i]);
1162 for(i = m; i < self.t; ++i) r[i] = op(self[i],f);
1167 for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);
1170 r.s = op(self.s,a.s);
1174 // (public) this & a
1175 function op_and(x,y) { return x
&y; }
1176 function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
1178 // (public) this | a
1179 function op_or(x,y) { return x|y; }
1180 function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
1182 // (public) this ^ a
1183 function op_xor(x,y) { return x^y; }
1184 function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
1186 // (public) this & ~a
1187 function op_andnot(x,y) { return x&~y; }
1188 function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
1193 for(var i =
0; i < this.t; ++i) r[i] = this.DM&~this[i];
1199 // (public) this << n
1200 function bnShiftLeft(n) {
1202 if(n <
0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
1206 // (public) this
>> n
1207 function bnShiftRight(n) {
1209 if(n <
0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
1213 // return index of lowest
1-bit in x, x <
2^
31
1215 if(x ==
0) return -
1;
1217 if((x&
0xffff) ==
0) { x
>>=
16; r +=
16; }
1218 if((x&
0xff) ==
0) { x
>>=
8; r +=
8; }
1219 if((x&
0xf) ==
0) { x
>>=
4; r +=
4; }
1220 if((x&
3) ==
0) { x
>>=
2; r +=
2; }
1225 // (public) returns index of lowest
1-bit (or -
1 if none)
1226 function bnGetLowestSetBit() {
1227 for(var i =
0; i < this.t; ++i)
1228 if(this[i] !=
0) return i*this.DB+lbit(this[i]);
1229 if(this.s <
0) return this.t*this.DB;
1233 // return number of
1 bits in x
1236 while(x !=
0) { x &= x-
1; ++r; }
1240 // (public) return number of set bits
1241 function bnBitCount() {
1242 var r =
0, x = this.s&this.DM;
1243 for(var i =
0; i < this.t; ++i) r += cbit(this[i]^x);
1247 // (public) true iff nth bit is set
1248 function bnTestBit(n) {
1249 var j = Math.floor(n/this.DB);
1250 if(j
>= this.t) return(this.s!=
0);
1251 return((this[j]&(
1<<(n%this.DB)))!=
0);
1254 // (protected) this op (
1<
<n)
1255 function bnpChangeBit(n,op) {
1256 var r = BigInteger.ONE.shiftLeft(n);
1257 this.bitwiseTo(r,op,r);
1261 // (public) this | (
1<
<n)
1262 function bnSetBit(n) { return this.changeBit(n,op_or); }
1264 // (public) this & ~(
1<
<n)
1265 function bnClearBit(n) { return this.changeBit(n,op_andnot); }
1267 // (public) this ^ (
1<
<n)
1268 function bnFlipBit(n) { return this.changeBit(n,op_xor); }
1270 // (protected) r = this + a
1271 function bnpAddTo(a,r) {
1274 var i =
0, c =
0, m = Math.min(a.t,self.t);
1299 if(c
> 0) r[i++] = c;
1300 else if(c < -
1) r[i++] = self.DV+c;
1305 // (public) this + a
1306 function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
1308 // (public) this - a
1309 function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
1311 // (public) this * a
1312 function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
1315 function bnSquare() { var r = nbi(); this.squareTo(r); return r; }
1317 // (public) this / a
1318 function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
1320 // (public) this % a
1321 function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
1323 // (public) [this/a,this%a]
1324 function bnDivideAndRemainder(a) {
1325 var q = nbi(), r = nbi();
1326 this.divRemTo(a,q,r);
1327 return new Array(q,r);
1330 // (protected) this *= n, this
>=
0,
1 < n < DV
1331 function bnpDMultiply(n) {
1332 this[this.t] = this.am(
0,n-
1,this,
0,
0,this.t);
1337 // (protected) this += n << w words, this
>=
0
1338 function bnpDAddOffset(n,w) {
1340 while(this.t <= w) this[this.t++] =
0;
1342 while(this[w]
>= this.DV) {
1344 if(++w
>= this.t) this[this.t++] =
0;
1350 function NullExp() {}
1351 function nNop(x) { return x; }
1352 function nMulTo(x,y,r) { x.multiplyTo(y,r); }
1353 function nSqrTo(x,r) { x.squareTo(r); }
1355 NullExp.prototype.convert = nNop;
1356 NullExp.prototype.revert = nNop;
1357 NullExp.prototype.mulTo = nMulTo;
1358 NullExp.prototype.sqrTo = nSqrTo;
1361 function bnPow(e) { return this.exp(e,new NullExp()); }
1363 // (protected) r = lower n words of "this * a", a.t <= n
1364 // "this" should be the larger one if appropriate.
1365 function bnpMultiplyLowerTo(a,n,r) {
1366 var i = Math.min(this.t+a.t,n);
1367 r.s =
0; // assumes a,this
>=
0
1369 while(i
> 0) r[--i] =
0;
1371 for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(
0,a[i],r,i,
0,this.t);
1372 for(j = Math.min(a.t,n); i < j; ++i) this.am(
0,a[i],r,i,
0,n-i);
1376 // (protected) r =
"this * a" without lower n words, n
> 0
1377 //
"this" should be the larger one if appropriate.
1378 function bnpMultiplyUpperTo(a,n,r) {
1380 var i = r.t = this.t+a.t-n;
1381 r.s =
0; // assumes a,this
>=
0
1382 while(--i
>=
0) r[i] =
0;
1383 for(i = Math.max(n-this.t,
0); i < a.t; ++i)
1384 r[this.t+i-n] = this.am(n-i,a[i],r,
0,
0,this.t+i-n);
1389 // Barrett modular reduction
1390 function Barrett(m) {
1394 BigInteger.ONE.dlShiftTo(
2*m.t,this.r2);
1395 this.mu = this.r2.divide(m);
1399 function barrettConvert(x) {
1400 if(x.s <
0 || x.t
> 2*this.m.t) return x.mod(this.m);
1401 else if(x.compareTo(this.m) <
0) return x;
1402 else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
1405 function barrettRevert(x) { return x; }
1407 // x = x mod m (HAC
14.42)
1408 function barrettReduce(x) {
1410 x.drShiftTo(self.m.t-
1,self.r2);
1411 if(x.t
> self.m.t+
1) { x.t = self.m.t+
1; x.clamp(); }
1412 self.mu.multiplyUpperTo(self.r2,self.m.t+
1,self.q3);
1413 self.m.multiplyLowerTo(self.q3,self.m.t+
1,self.r2);
1414 while(x.compareTo(self.r2) <
0) x.dAddOffset(
1,self.m.t+
1);
1416 while(x.compareTo(self.m)
>=
0) x.subTo(self.m,x);
1419 // r = x^
2 mod m; x != r
1420 function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
1422 // r = x*y mod m; x,y != r
1423 function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
1425 Barrett.prototype.convert = barrettConvert;
1426 Barrett.prototype.revert = barrettRevert;
1427 Barrett.prototype.reduce = barrettReduce;
1428 Barrett.prototype.mulTo = barrettMulTo;
1429 Barrett.prototype.sqrTo = barrettSqrTo;
1431 // (public) this^e % m (HAC
14.85)
1432 function bnModPow(e,m) {
1433 var i = e.bitLength(), k, r = nbv(
1), z;
1434 if(i <=
0) return r;
1435 else if(i <
18) k =
1;
1436 else if(i <
48) k =
3;
1437 else if(i <
144) k =
4;
1438 else if(i <
768) k =
5;
1445 z = new Montgomery(m);
1448 var g = new Array(), n =
3, k1 = k-
1, km = (
1<
<k)-
1;
1449 g[
1] = z.convert(this);
1455 z.mulTo(g2,g[n-
2],g[n]);
1460 var j = e.t-
1, w, is1 = true, r2 = nbi(), t;
1463 if(i
>= k1) w = (e[j]
>>(i-k1))
&km;
1465 w = (e[j]&((
1<<(i+
1))-
1))<<(k1-i);
1466 if(j
> 0) w |= e[j-
1]
>>(this.DB+i-k1);
1470 while((w&
1) ==
0) { w
>>=
1; --n; }
1471 if((i -= n) <
0) { i += this.DB; --j; }
1472 if(is1) { // ret ==
1, don't bother squaring or multiplying it
1477 while(n
> 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -=
2; }
1478 if(n
> 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
1482 while(j
>=
0 && (e[j]&(
1<
<i)) ==
0) {
1483 z.sqrTo(r,r2); t = r; r = r2; r2 = t;
1484 if(--i <
0) { i = this.DB-
1; --j; }
1490 // (public) gcd(this,a) (HAC
14.54)
1492 var x = (this.s
<0)?this.negate():this.clone();
1493 var y = (a.s
<0)?a.negate():a.clone();
1494 if(x.compareTo(y) <
0) { var t = x; x = y; y = t; }
1495 var i = x.getLowestSetBit(), g = y.getLowestSetBit();
1502 while(x.signum()
> 0) {
1503 if((i = x.getLowestSetBit())
> 0) x.rShiftTo(i,x);
1504 if((i = y.getLowestSetBit())
> 0) y.rShiftTo(i,y);
1505 if(x.compareTo(y)
>=
0) {
1514 if(g
> 0) y.lShiftTo(g,y);
1518 // (protected) this % n, n <
2^
26
1519 function bnpModInt(n) {
1520 if(n <=
0) return
0;
1521 var d = this.DV%n, r = (this.s
<0)?n-
1:
0;
1523 if(d ==
0) r = this[
0]%n;
1524 else for(var i = this.t-
1; i
>=
0; --i) r = (d*r+this[i])%n;
1528 // (public)
1/this % m (HAC
14.61)
1529 function bnModInverse(m) {
1530 var ac = m.isEven();
1531 if((this.isEven() && ac) || m.signum() ==
0) return BigInteger.ZERO;
1532 var u = m.clone(), v = this.clone();
1533 var a = nbv(
1), b = nbv(
0), c = nbv(
0), d = nbv(
1);
1534 while(u.signum() !=
0) {
1538 if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
1541 else if(!b.isEven()) b.subTo(m,b);
1547 if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
1550 else if(!d.isEven()) d.subTo(m,d);
1553 if(u.compareTo(v)
>=
0) {
1555 if(ac) a.subTo(c,a);
1560 if(ac) c.subTo(a,c);
1564 if(v.compareTo(BigInteger.ONE) !=
0) return BigInteger.ZERO;
1565 if(d.compareTo(m)
>=
0) return d.subtract(m);
1566 if(d.signum() <
0) d.addTo(m,d); else return d;
1567 if(d.signum() <
0) return d.add(m); else return d;
1571 proto.chunkSize = bnpChunkSize;
1572 proto.toRadix = bnpToRadix;
1573 proto.fromRadix = bnpFromRadix;
1574 proto.fromNumber = bnpFromNumber;
1575 proto.bitwiseTo = bnpBitwiseTo;
1576 proto.changeBit = bnpChangeBit;
1577 proto.addTo = bnpAddTo;
1578 proto.dMultiply = bnpDMultiply;
1579 proto.dAddOffset = bnpDAddOffset;
1580 proto.multiplyLowerTo = bnpMultiplyLowerTo;
1581 proto.multiplyUpperTo = bnpMultiplyUpperTo;
1582 proto.modInt = bnpModInt;
1585 proto.clone = bnClone;
1586 proto.intValue = bnIntValue;
1587 proto.byteValue = bnByteValue;
1588 proto.shortValue = bnShortValue;
1589 proto.signum = bnSigNum;
1590 proto.toByteArray = bnToByteArray;
1591 proto.equals = bnEquals;
1597 proto.andNot = bnAndNot;
1599 proto.shiftLeft = bnShiftLeft;
1600 proto.shiftRight = bnShiftRight;
1601 proto.getLowestSetBit = bnGetLowestSetBit;
1602 proto.bitCount = bnBitCount;
1603 proto.testBit = bnTestBit;
1604 proto.setBit = bnSetBit;
1605 proto.clearBit = bnClearBit;
1606 proto.flipBit = bnFlipBit;
1608 proto.subtract = bnSubtract;
1609 proto.multiply = bnMultiply;
1610 proto.divide = bnDivide;
1611 proto.remainder = bnRemainder;
1612 proto.divideAndRemainder = bnDivideAndRemainder;
1613 proto.modPow = bnModPow;
1614 proto.modInverse = bnModInverse;
1618 // JSBN-specific extension
1619 proto.square = bnSquare;
1621 // BigInteger interfaces not implemented in jsbn:
1623 // BigInteger(int signum, byte[] magnitude)
1624 // double doubleValue()
1625 // float floatValue()
1628 // static BigInteger valueOf(long val)
1631 BigInteger.ZERO = nbv(
0);
1632 BigInteger.ONE = nbv(
1);
1633 BigInteger.valueOf = nbv;
1635 },{"assert":
4}],
2:[function(_dereq_,module,exports){
1637 // FIXME: Kind of a weird way to throw exceptions, consider removing
1638 var assert = _dereq_('assert')
1639 var BigInteger = _dereq_('./bigi')
1642 * Turns a byte array into a big integer.
1644 * This function will interpret a byte array as a big integer in big
1647 BigInteger.fromByteArrayUnsigned = function(byteArray) {
1648 // BigInteger expects a DER integer conformant byte array
1649 if (byteArray[
0] &
0x80) {
1650 return new BigInteger([
0].concat(byteArray))
1653 return new BigInteger(byteArray)
1657 * Returns a byte array representation of the big integer.
1659 * This returns the absolute of the contained value in big endian
1660 * form. A value of zero results in an empty array.
1662 BigInteger.prototype.toByteArrayUnsigned = function() {
1663 var byteArray = this.toByteArray()
1664 return byteArray[
0] ===
0 ? byteArray.slice(
1) : byteArray
1667 BigInteger.fromDERInteger = function(byteArray) {
1668 return new BigInteger(byteArray)
1672 * Converts BigInteger to a DER integer representation.
1674 * The format for this value uses the most significant bit as a sign
1675 * bit. If the most significant bit is already set and the integer is
1676 * positive, a
0x00 is prepended.
1694 BigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray
1696 BigInteger.fromBuffer = function(buffer) {
1697 // BigInteger expects a DER integer conformant byte array
1698 if (buffer[
0] &
0x80) {
1699 var byteArray = Array.prototype.slice.call(buffer)
1701 return new BigInteger([
0].concat(byteArray))
1704 return new BigInteger(buffer)
1707 BigInteger.fromHex = function(hex) {
1708 if (hex === '') return BigInteger.ZERO
1710 assert.equal(hex, hex.match(/^[A-Fa-f0-
9]+/), 'Invalid hex string')
1711 assert.equal(hex.length %
2,
0, 'Incomplete hex')
1712 return new BigInteger(hex,
16)
1715 BigInteger.prototype.toBuffer = function(size) {
1716 var byteArray = this.toByteArrayUnsigned()
1719 var padding = size - byteArray.length
1720 while (zeros.length < padding) zeros.push(
0)
1722 return new Buffer(zeros.concat(byteArray))
1725 BigInteger.prototype.toHex = function(size) {
1726 return this.toBuffer(size).toString('hex')
1729 }).call(this,_dereq_(
"buffer").Buffer)
1730 },{
"./bigi":
1,
"assert":
4,
"buffer":
8}],
3:[function(_dereq_,module,exports){
1731 var BigInteger = _dereq_('./bigi')
1734 _dereq_('./convert')
1736 module.exports = BigInteger
1737 },{
"./bigi":
1,
"./convert":
2}],
4:[function(_dereq_,module,exports){
1738 // http://wiki.commonjs.org/wiki/Unit_Testing/
1.0
1740 // THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
1742 // Originally from narwhal.js (http://narwhaljs.org)
1743 // Copyright (c)
2009 Thomas Robinson
<280north.com
>
1745 // Permission is hereby granted, free of charge, to any person obtaining a copy
1746 // of this software and associated documentation files (the 'Software'), to
1747 // deal in the Software without restriction, including without limitation the
1748 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1749 // sell copies of the Software, and to permit persons to whom the Software is
1750 // furnished to do so, subject to the following conditions:
1752 // The above copyright notice and this permission notice shall be included in
1753 // all copies or substantial portions of the Software.
1755 // THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1756 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1757 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1758 // AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
1759 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
1760 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1762 // when used in node, this will actually load the util module we depend on
1763 // versus loading the builtin util module as happens otherwise
1764 // this is a bug in node module loading as far as I am concerned
1765 var util = _dereq_('util/');
1767 var pSlice = Array.prototype.slice;
1768 var hasOwn = Object.prototype.hasOwnProperty;
1770 //
1. The assert module provides functions that throw
1771 // AssertionError's when particular conditions are not met. The
1772 // assert module must conform to the following interface.
1774 var assert = module.exports = ok;
1776 //
2. The AssertionError is defined in assert.
1777 // new assert.AssertionError({ message: message,
1779 // expected: expected })
1781 assert.AssertionError = function AssertionError(options) {
1782 this.name = 'AssertionError';
1783 this.actual = options.actual;
1784 this.expected = options.expected;
1785 this.operator = options.operator;
1786 if (options.message) {
1787 this.message = options.message;
1788 this.generatedMessage = false;
1790 this.message = getMessage(this);
1791 this.generatedMessage = true;
1793 var stackStartFunction = options.stackStartFunction || fail;
1795 if (Error.captureStackTrace) {
1796 Error.captureStackTrace(this, stackStartFunction);
1799 // non v8 browsers so we can have a stacktrace
1800 var err = new Error();
1802 var out = err.stack;
1804 // try to strip useless frames
1805 var fn_name = stackStartFunction.name;
1806 var idx = out.indexOf('\n' + fn_name);
1808 // once we have located the function frame
1809 // we need to strip out everything before it (and its line)
1810 var next_line = out.indexOf('\n', idx +
1);
1811 out = out.substring(next_line +
1);
1819 // assert.AssertionError instanceof Error
1820 util.inherits(assert.AssertionError, Error);
1822 function replacer(key, value) {
1823 if (util.isUndefined(value)) {
1826 if (util.isNumber(value) && (isNaN(value) || !isFinite(value))) {
1827 return value.toString();
1829 if (util.isFunction(value) || util.isRegExp(value)) {
1830 return value.toString();
1835 function truncate(s, n) {
1836 if (util.isString(s)) {
1837 return s.length < n ? s : s.slice(
0, n);
1843 function getMessage(self) {
1844 return truncate(JSON.stringify(self.actual, replacer),
128) + ' ' +
1845 self.operator + ' ' +
1846 truncate(JSON.stringify(self.expected, replacer),
128);
1849 // At present only the three keys mentioned above are used and
1850 // understood by the spec. Implementations or sub modules can pass
1851 // other keys to the AssertionError's constructor - they will be
1854 //
3. All of the following functions must throw an AssertionError
1855 // when a corresponding condition is not met, with a message that
1856 // may be undefined if not provided. All assertion methods provide
1857 // both the actual and expected values to the assertion error for
1858 // display purposes.
1860 function fail(actual, expected, message, operator, stackStartFunction) {
1861 throw new assert.AssertionError({
1866 stackStartFunction: stackStartFunction
1870 // EXTENSION! allows for well behaved errors defined elsewhere.
1873 //
4. Pure assertion tests whether a value is truthy, as determined
1875 // assert.ok(guard, message_opt);
1876 // This statement is equivalent to assert.equal(true, !!guard,
1877 // message_opt);. To test strictly for the value true, use
1878 // assert.strictEqual(true, guard, message_opt);.
1880 function ok(value, message) {
1881 if (!value) fail(value, true, message, '==', assert.ok);
1885 //
5. The equality assertion tests shallow, coercive equality with
1887 // assert.equal(actual, expected, message_opt);
1889 assert.equal = function equal(actual, expected, message) {
1890 if (actual != expected) fail(actual, expected, message, '==', assert.equal);
1893 //
6. The non-equality assertion tests for whether two objects are not equal
1894 // with != assert.notEqual(actual, expected, message_opt);
1896 assert.notEqual = function notEqual(actual, expected, message) {
1897 if (actual == expected) {
1898 fail(actual, expected, message, '!=', assert.notEqual);
1902 //
7. The equivalence assertion tests a deep equality relation.
1903 // assert.deepEqual(actual, expected, message_opt);
1905 assert.deepEqual = function deepEqual(actual, expected, message) {
1906 if (!_deepEqual(actual, expected)) {
1907 fail(actual, expected, message, 'deepEqual', assert.deepEqual);
1911 function _deepEqual(actual, expected) {
1912 //
7.1. All identical values are equivalent, as determined by ===.
1913 if (actual === expected) {
1916 } else if (util.isBuffer(actual) && util.isBuffer(expected)) {
1917 if (actual.length != expected.length) return false;
1919 for (var i =
0; i < actual.length; i++) {
1920 if (actual[i] !== expected[i]) return false;
1925 //
7.2. If the expected value is a Date object, the actual value is
1926 // equivalent if it is also a Date object that refers to the same time.
1927 } else if (util.isDate(actual) && util.isDate(expected)) {
1928 return actual.getTime() === expected.getTime();
1930 //
7.3 If the expected value is a RegExp object, the actual value is
1931 // equivalent if it is also a RegExp object with the same source and
1932 // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
1933 } else if (util.isRegExp(actual) && util.isRegExp(expected)) {
1934 return actual.source === expected.source &&
1935 actual.global === expected.global &&
1936 actual.multiline === expected.multiline &&
1937 actual.lastIndex === expected.lastIndex &&
1938 actual.ignoreCase === expected.ignoreCase;
1940 //
7.4. Other pairs that do not both pass typeof value == 'object',
1941 // equivalence is determined by ==.
1942 } else if (!util.isObject(actual) && !util.isObject(expected)) {
1943 return actual == expected;
1945 //
7.5 For all other Object pairs, including Array objects, equivalence is
1946 // determined by having the same number of owned properties (as verified
1947 // with Object.prototype.hasOwnProperty.call), the same set of keys
1948 // (although not necessarily the same order), equivalent values for every
1949 // corresponding key, and an identical 'prototype' property. Note: this
1950 // accounts for both named and indexed properties on Arrays.
1952 return objEquiv(actual, expected);
1956 function isArguments(object) {
1957 return Object.prototype.toString.call(object) == '[object Arguments]';
1960 function objEquiv(a, b) {
1961 if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b))
1963 // an identical 'prototype' property.
1964 if (a.prototype !== b.prototype) return false;
1965 //~~~I've managed to break Object.keys through screwy arguments passing.
1966 // Converting to array solves the problem.
1967 if (isArguments(a)) {
1968 if (!isArguments(b)) {
1973 return _deepEqual(a, b);
1976 var ka = objectKeys(a),
1979 } catch (e) {//happens when one is a string literal and the other isn't
1982 // having the same number of owned properties (keys incorporates
1984 if (ka.length != kb.length)
1986 //the same set of keys (although not necessarily the same order),
1990 for (i = ka.length -
1; i
>=
0; i--) {
1994 //equivalent values for every corresponding key, and
1995 //~~~possibly expensive deep test
1996 for (i = ka.length -
1; i
>=
0; i--) {
1998 if (!_deepEqual(a[key], b[key])) return false;
2003 //
8. The non-equivalence assertion tests for any deep inequality.
2004 // assert.notDeepEqual(actual, expected, message_opt);
2006 assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
2007 if (_deepEqual(actual, expected)) {
2008 fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
2012 //
9. The strict equality assertion tests strict equality, as determined by ===.
2013 // assert.strictEqual(actual, expected, message_opt);
2015 assert.strictEqual = function strictEqual(actual, expected, message) {
2016 if (actual !== expected) {
2017 fail(actual, expected, message, '===', assert.strictEqual);
2021 //
10. The strict non-equality assertion tests for strict inequality, as
2022 // determined by !==. assert.notStrictEqual(actual, expected, message_opt);
2024 assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
2025 if (actual === expected) {
2026 fail(actual, expected, message, '!==', assert.notStrictEqual);
2030 function expectedException(actual, expected) {
2031 if (!actual || !expected) {
2035 if (Object.prototype.toString.call(expected) == '[object RegExp]') {
2036 return expected.test(actual);
2037 } else if (actual instanceof expected) {
2039 } else if (expected.call({}, actual) === true) {
2046 function _throws(shouldThrow, block, expected, message) {
2049 if (util.isString(expected)) {
2060 message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
2061 (message ? ' ' + message : '.');
2063 if (shouldThrow && !actual) {
2064 fail(actual, expected, 'Missing expected exception' + message);
2067 if (!shouldThrow && expectedException(actual, expected)) {
2068 fail(actual, expected, 'Got unwanted exception' + message);
2071 if ((shouldThrow && actual && expected &&
2072 !expectedException(actual, expected)) || (!shouldThrow && actual)) {
2077 //
11. Expected to throw an error:
2078 // assert.throws(block, Error_opt, message_opt);
2080 assert.throws = function(block, /*optional*/error, /*optional*/message) {
2081 _throws.apply(this, [true].concat(pSlice.call(arguments)));
2084 // EXTENSION! This is annoying to write outside this module.
2085 assert.doesNotThrow = function(block, /*optional*/message) {
2086 _throws.apply(this, [false].concat(pSlice.call(arguments)));
2089 assert.ifError = function(err) { if (err) {throw err;}};
2091 var objectKeys = Object.keys || function (obj) {
2093 for (var key in obj) {
2094 if (hasOwn.call(obj, key)) keys.push(key);
2099 },{"util/":
6}],
5:[function(_dereq_,module,exports){
2100 module.exports = function isBuffer(arg) {
2101 return arg && typeof arg === 'object'
2102 && typeof arg.copy === 'function'
2103 && typeof arg.fill === 'function'
2104 && typeof arg.readUInt8 === 'function';
2106 },{}],
6:[function(_dereq_,module,exports){
2107 (function (process,global){
2108 // Copyright Joyent, Inc. and other Node contributors.
2110 // Permission is hereby granted, free of charge, to any person obtaining a
2111 // copy of this software and associated documentation files (the
2112 // "Software"), to deal in the Software without restriction, including
2113 // without limitation the rights to use, copy, modify, merge, publish,
2114 // distribute, sublicense, and/or sell copies of the Software, and to permit
2115 // persons to whom the Software is furnished to do so, subject to the
2116 // following conditions:
2118 // The above copyright notice and this permission notice shall be included
2119 // in all copies or substantial portions of the Software.
2121 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
2122 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2123 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
2124 // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
2125 // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
2126 // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
2127 // USE OR OTHER DEALINGS IN THE SOFTWARE.
2129 var formatRegExp = /%[sdj%]/g;
2130 exports.format = function(f) {
2133 for (var i =
0; i < arguments.length; i++) {
2134 objects.push(inspect(arguments[i]));
2136 return objects.join(' ');
2140 var args = arguments;
2141 var len = args.length;
2142 var str = String(f).replace(formatRegExp, function(x) {
2143 if (x === '%%') return '%';
2144 if (i
>= len) return x;
2146 case '%s': return String(args[i++]);
2147 case '%d': return Number(args[i++]);
2150 return JSON.stringify(args[i++]);
2152 return '[Circular]';
2158 for (var x = args[i]; i < len; x = args[++i]) {
2159 if (isNull(x) || !isObject(x)) {
2162 str += ' ' + inspect(x);
2169 // Mark that a method should not be used.
2170 // Returns a modified function which warns once by default.
2171 // If --no-deprecation is set, then it is a no-op.
2172 exports.deprecate = function(fn, msg) {
2173 // Allow for deprecating things in the process of starting up.
2174 if (isUndefined(global.process)) {
2176 return exports.deprecate(fn, msg).apply(this, arguments);
2180 if (process.noDeprecation === true) {
2185 function deprecated() {
2187 if (process.throwDeprecation) {
2188 throw new Error(msg);
2189 } else if (process.traceDeprecation) {
2196 return fn.apply(this, arguments);
2205 exports.debuglog = function(set) {
2206 if (isUndefined(debugEnviron))
2207 debugEnviron = process.env.NODE_DEBUG || '';
2208 set = set.toUpperCase();
2210 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
2211 var pid = process.pid;
2212 debugs[set] = function() {
2213 var msg = exports.format.apply(exports, arguments);
2214 console.error('%s %d: %s', set, pid, msg);
2217 debugs[set] = function() {};
2225 * Echos the value of a value. Trys to print the value out
2226 * in the best way possible given the different types.
2228 * @param {Object} obj The object to print out.
2229 * @param {Object} opts Optional options object that alters the output.
2231 /* legacy: obj, showHidden, depth, colors*/
2232 function inspect(obj, opts) {
2236 stylize: stylizeNoColor
2239 if (arguments.length
>=
3) ctx.depth = arguments[
2];
2240 if (arguments.length
>=
4) ctx.colors = arguments[
3];
2241 if (isBoolean(opts)) {
2243 ctx.showHidden = opts;
2245 // got an "options" object
2246 exports._extend(ctx, opts);
2248 // set default options
2249 if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
2250 if (isUndefined(ctx.depth)) ctx.depth =
2;
2251 if (isUndefined(ctx.colors)) ctx.colors = false;
2252 if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
2253 if (ctx.colors) ctx.stylize = stylizeWithColor;
2254 return formatValue(ctx, obj, ctx.depth);
2256 exports.inspect = inspect;
2259 // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
2263 'underline' : [
4,
24],
2264 'inverse' : [
7,
27],
2271 'magenta' : [
35,
39],
2276 // Don't use 'blue' not visible on cmd.exe
2280 'boolean': 'yellow',
2281 'undefined': 'grey',
2285 // "name": intentionally not styling
2290 function stylizeWithColor(str, styleType) {
2291 var style = inspect.styles[styleType];
2294 return '\u001b[' + inspect.colors[style][
0] + 'm' + str +
2295 '\u001b[' + inspect.colors[style][
1] + 'm';
2302 function stylizeNoColor(str, styleType) {
2307 function arrayToHash(array) {
2310 array.forEach(function(val, idx) {
2318 function formatValue(ctx, value, recurseTimes) {
2319 // Provide a hook for user-specified inspect functions.
2320 // Check that value is an object with an inspect function on it
2321 if (ctx.customInspect &&
2323 isFunction(value.inspect) &&
2324 // Filter out the util module, it's inspect function is special
2325 value.inspect !== exports.inspect &&
2326 // Also filter out any prototype objects using the circular check.
2327 !(value.constructor && value.constructor.prototype === value)) {
2328 var ret = value.inspect(recurseTimes, ctx);
2329 if (!isString(ret)) {
2330 ret = formatValue(ctx, ret, recurseTimes);
2335 // Primitive types cannot have properties
2336 var primitive = formatPrimitive(ctx, value);
2341 // Look up the keys of the object.
2342 var keys = Object.keys(value);
2343 var visibleKeys = arrayToHash(keys);
2345 if (ctx.showHidden) {
2346 keys = Object.getOwnPropertyNames(value);
2349 // IE doesn't make error fields non-enumerable
2350 // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs
.94).aspx
2352 && (keys.indexOf('message')
>=
0 || keys.indexOf('description')
>=
0)) {
2353 return formatError(value);
2356 // Some type of object without properties can be shortcutted.
2357 if (keys.length ===
0) {
2358 if (isFunction(value)) {
2359 var name = value.name ? ': ' + value.name : '';
2360 return ctx.stylize('[Function' + name + ']', 'special');
2362 if (isRegExp(value)) {
2363 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
2365 if (isDate(value)) {
2366 return ctx.stylize(Date.prototype.toString.call(value), 'date');
2368 if (isError(value)) {
2369 return formatError(value);
2373 var base = '', array = false, braces = ['{', '}'];
2375 // Make Array say that they are Array
2376 if (isArray(value)) {
2378 braces = ['[', ']'];
2381 // Make functions say that they are functions
2382 if (isFunction(value)) {
2383 var n = value.name ? ': ' + value.name : '';
2384 base = ' [Function' + n + ']';
2387 // Make RegExps say that they are RegExps
2388 if (isRegExp(value)) {
2389 base = ' ' + RegExp.prototype.toString.call(value);
2392 // Make dates with properties first say the date
2393 if (isDate(value)) {
2394 base = ' ' + Date.prototype.toUTCString.call(value);
2397 // Make error with message first say the error
2398 if (isError(value)) {
2399 base = ' ' + formatError(value);
2402 if (keys.length ===
0 && (!array || value.length ==
0)) {
2403 return braces[
0] + base + braces[
1];
2406 if (recurseTimes <
0) {
2407 if (isRegExp(value)) {
2408 return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
2410 return ctx.stylize('[Object]', 'special');
2414 ctx.seen.push(value);
2418 output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
2420 output = keys.map(function(key) {
2421 return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
2427 return reduceToSingleString(output, base, braces);
2431 function formatPrimitive(ctx, value) {
2432 if (isUndefined(value))
2433 return ctx.stylize('undefined', 'undefined');
2434 if (isString(value)) {
2435 var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
2436 .replace(/'/g, "\\'")
2437 .replace(/\\"/g, '"') + '\'';
2438 return ctx.stylize(simple, 'string');
2440 if (isNumber(value))
2441 return ctx.stylize('' + value, 'number');
2442 if (isBoolean(value))
2443 return ctx.stylize('' + value, 'boolean');
2444 // For some reason typeof null is "object", so special case here.
2446 return ctx.stylize('null', 'null');
2450 function formatError(value) {
2451 return '[' + Error.prototype.toString.call(value) + ']';
2455 function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
2457 for (var i =
0, l = value.length; i < l; ++i) {
2458 if (hasOwnProperty(value, String(i))) {
2459 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
2465 keys.forEach(function(key) {
2466 if (!key.match(/^\d+$/)) {
2467 output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
2475 function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
2476 var name, str, desc;
2477 desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
2480 str = ctx.stylize('[Getter/Setter]', 'special');
2482 str = ctx.stylize('[Getter]', 'special');
2486 str = ctx.stylize('[Setter]', 'special');
2489 if (!hasOwnProperty(visibleKeys, key)) {
2490 name = '[' + key + ']';
2493 if (ctx.seen.indexOf(desc.value) <
0) {
2494 if (isNull(recurseTimes)) {
2495 str = formatValue(ctx, desc.value, null);
2497 str = formatValue(ctx, desc.value, recurseTimes -
1);
2499 if (str.indexOf('\n')
> -
1) {
2501 str = str.split('\n').map(function(line) {
2503 }).join('\n').substr(
2);
2505 str = '\n' + str.split('\n').map(function(line) {
2511 str = ctx.stylize('[Circular]', 'special');
2514 if (isUndefined(name)) {
2515 if (array && key.match(/^\d+$/)) {
2518 name = JSON.stringify('' + key);
2519 if (name.match(/^"([a-zA-Z_][a-zA-Z_0-
9]*)"$/)) {
2520 name = name.substr(
1, name.length -
2);
2521 name = ctx.stylize(name, 'name');
2523 name = name.replace(/'/g, "\\'")
2524 .replace(/\\"/g, '"')
2525 .replace(/(^"|"$)/g, "'");
2526 name = ctx.stylize(name, 'string');
2530 return name + ': ' + str;
2534 function reduceToSingleString(output, base, braces) {
2535 var numLinesEst =
0;
2536 var length = output.reduce(function(prev, cur) {
2538 if (cur.indexOf('\n')
>=
0) numLinesEst++;
2539 return prev + cur.replace(/\u001b\[\d\d?m/g, '').length +
1;
2544 (base === '' ? '' : base + '\n ') +
2546 output.join(',\n ') +
2551 return braces[
0] + base + ' ' + output.join(', ') + ' ' + braces[
1];
2555 // NOTE: These type checking functions intentionally don't use `instanceof`
2556 // because it is fragile and can be easily faked with `Object.create()`.
2557 function isArray(ar) {
2558 return Array.isArray(ar);
2560 exports.isArray = isArray;
2562 function isBoolean(arg) {
2563 return typeof arg === 'boolean';
2565 exports.isBoolean = isBoolean;
2567 function isNull(arg) {
2568 return arg === null;
2570 exports.isNull = isNull;
2572 function isNullOrUndefined(arg) {
2575 exports.isNullOrUndefined = isNullOrUndefined;
2577 function isNumber(arg) {
2578 return typeof arg === 'number';
2580 exports.isNumber = isNumber;
2582 function isString(arg) {
2583 return typeof arg === 'string';
2585 exports.isString = isString;
2587 function isSymbol(arg) {
2588 return typeof arg === 'symbol';
2590 exports.isSymbol = isSymbol;
2592 function isUndefined(arg) {
2593 return arg === void
0;
2595 exports.isUndefined = isUndefined;
2597 function isRegExp(re) {
2598 return isObject(re) && objectToString(re) === '[object RegExp]';
2600 exports.isRegExp = isRegExp;
2602 function isObject(arg) {
2603 return typeof arg === 'object' && arg !== null;
2605 exports.isObject = isObject;
2607 function isDate(d) {
2608 return isObject(d) && objectToString(d) === '[object Date]';
2610 exports.isDate = isDate;
2612 function isError(e) {
2613 return isObject(e) &&
2614 (objectToString(e) === '[object Error]' || e instanceof Error);
2616 exports.isError = isError;
2618 function isFunction(arg) {
2619 return typeof arg === 'function';
2621 exports.isFunction = isFunction;
2623 function isPrimitive(arg) {
2624 return arg === null ||
2625 typeof arg === 'boolean' ||
2626 typeof arg === 'number' ||
2627 typeof arg === 'string' ||
2628 typeof arg === 'symbol' || // ES6 symbol
2629 typeof arg === 'undefined';
2631 exports.isPrimitive = isPrimitive;
2633 exports.isBuffer = _dereq_('./support/isBuffer');
2635 function objectToString(o) {
2636 return Object.prototype.toString.call(o);
2641 return n <
10 ? '
0' + n.toString(
10) : n.toString(
10);
2645 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
2646 'Oct', 'Nov', 'Dec'];
2649 function timestamp() {
2651 var time = [pad(d.getHours()),
2652 pad(d.getMinutes()),
2653 pad(d.getSeconds())].join(':');
2654 return [d.getDate(), months[d.getMonth()], time].join(' ');
2658 // log is just a thin wrapper to console.log that prepends a timestamp
2659 exports.log = function() {
2660 console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
2665 * Inherit the prototype methods from one constructor into another.
2667 * The Function.prototype.inherits from lang.js rewritten as a standalone
2668 * function (not on Function.prototype). NOTE: If this file is to be loaded
2669 * during bootstrapping this function needs to be rewritten using some native
2670 * functions as prototype setup using normal JavaScript does not work as
2671 * expected during bootstrapping (see mirror.js in r114903).
2673 * @param {function} ctor Constructor function which needs to inherit the
2675 * @param {function} superCtor Constructor function to inherit prototype from.
2677 exports.inherits = _dereq_('inherits');
2679 exports._extend = function(origin, add) {
2680 // Don't do anything if add isn't an object
2681 if (!add || !isObject(add)) return origin;
2683 var keys = Object.keys(add);
2684 var i = keys.length;
2686 origin[keys[i]] = add[keys[i]];
2691 function hasOwnProperty(obj, prop) {
2692 return Object.prototype.hasOwnProperty.call(obj, prop);
2695 }).call(this,_dereq_(
"FWaASH"),typeof self !==
"undefined" ? self : typeof window !==
"undefined" ? window : {})
2696 },{
"./support/isBuffer":
5,
"FWaASH":
12,
"inherits":
11}],
7:[function(_dereq_,module,exports){
2698 },{}],
8:[function(_dereq_,module,exports){
2700 * The buffer module from node.js, for the browser.
2702 * at author Feross Aboukhadijeh
<feross@feross.org
> <http://feross.org
>
2706 var base64 = _dereq_('base64-js')
2707 var ieee754 = _dereq_('ieee754')
2709 exports.Buffer = Buffer
2710 exports.SlowBuffer = Buffer
2711 exports.INSPECT_MAX_BYTES =
50
2712 Buffer.poolSize =
8192
2715 * If `Buffer._useTypedArrays`:
2716 * === true Use Uint8Array implementation (fastest)
2717 * === false Use Object implementation (compatible down to IE6)
2719 Buffer._useTypedArrays = (function () {
2720 // Detect if browser supports Typed Arrays. Supported browsers are IE
10+, Firefox
4+,
2721 // Chrome
7+, Safari
5.1+, Opera
11.6+, iOS
4.2+. If the browser does not support adding
2722 // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support
2723 // because we need to be able to add all the node Buffer API methods. This is an issue
2724 // in Firefox
4-
29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=
695438
2726 var buf = new ArrayBuffer(
0)
2727 var arr = new Uint8Array(buf)
2728 arr.foo = function () { return
42 }
2729 return
42 === arr.foo() &&
2730 typeof arr.subarray === 'function' // Chrome
9-
10 lack `subarray`
2740 * The Buffer constructor returns instances of `Uint8Array` that are augmented
2741 * with function properties for all the node `Buffer` API functions. We use
2742 * `Uint8Array` so that square bracket notation works as expected -- it returns
2745 * By augmenting the instances, we can avoid modifying the `Uint8Array`
2748 function Buffer (subject, encoding, noZero) {
2749 if (!(this instanceof Buffer))
2750 return new Buffer(subject, encoding, noZero)
2752 var type = typeof subject
2754 if (encoding === 'base64' && type === 'string') {
2755 subject = base64clean(subject)
2760 if (type === 'number')
2761 length = coerce(subject)
2762 else if (type === 'string')
2763 length = Buffer.byteLength(subject, encoding)
2764 else if (type === 'object')
2765 length = coerce(subject.length) // assume that object is array-like
2767 throw new Error('First argument needs to be a number, array or string.')
2770 if (Buffer._useTypedArrays) {
2771 // Preferred: Return an augmented `Uint8Array` instance for best performance
2772 buf = Buffer._augment(new Uint8Array(length))
2774 // Fallback: Return THIS instance of Buffer (created by `new`)
2777 buf._isBuffer = true
2781 if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') {
2782 // Speed optimization -- use set if we're copying from a typed array
2784 } else if (isArrayish(subject)) {
2785 // Treat array-ish objects as a byte array
2786 if (Buffer.isBuffer(subject)) {
2787 for (i =
0; i < length; i++)
2788 buf[i] = subject.readUInt8(i)
2790 for (i =
0; i < length; i++)
2791 buf[i] = ((subject[i] %
256) +
256) %
256
2793 } else if (type === 'string') {
2794 buf.write(subject,
0, encoding)
2795 } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) {
2796 for (i =
0; i < length; i++) {
2807 Buffer.isEncoding = function (encoding) {
2808 switch (String(encoding).toLowerCase()) {
2826 Buffer.isBuffer = function (b) {
2827 return !!(b !== null && b !== undefined && b._isBuffer)
2830 Buffer.byteLength = function (str, encoding) {
2832 str = str.toString()
2833 switch (encoding || 'utf8') {
2835 ret = str.length /
2
2839 ret = utf8ToBytes(str).length
2847 ret = base64ToBytes(str).length
2853 ret = str.length *
2
2856 throw new Error('Unknown encoding')
2861 Buffer.concat = function (list, totalLength) {
2862 assert(isArray(list), 'Usage: Buffer.concat(list[, length])')
2864 if (list.length ===
0) {
2865 return new Buffer(
0)
2866 } else if (list.length ===
1) {
2871 if (totalLength === undefined) {
2873 for (i =
0; i < list.length; i++) {
2874 totalLength += list[i].length
2878 var buf = new Buffer(totalLength)
2880 for (i =
0; i < list.length; i++) {
2888 Buffer.compare = function (a, b) {
2889 assert(Buffer.isBuffer(a) && Buffer.isBuffer(b), 'Arguments must be Buffers')
2892 for (var i =
0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {}
2906 // BUFFER INSTANCE METHODS
2907 // =======================
2909 function hexWrite (buf, string, offset, length) {
2910 offset = Number(offset) ||
0
2911 var remaining = buf.length - offset
2915 length = Number(length)
2916 if (length
> remaining) {
2921 // must be an even number of digits
2922 var strLen = string.length
2923 assert(strLen %
2 ===
0, 'Invalid hex string')
2925 if (length
> strLen /
2) {
2928 for (var i =
0; i < length; i++) {
2929 var byte = parseInt(string.substr(i *
2,
2),
16)
2930 assert(!isNaN(byte), 'Invalid hex string')
2931 buf[offset + i] = byte
2936 function utf8Write (buf, string, offset, length) {
2937 var charsWritten = blitBuffer(utf8ToBytes(string), buf, offset, length)
2941 function asciiWrite (buf, string, offset, length) {
2942 var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length)
2946 function binaryWrite (buf, string, offset, length) {
2947 return asciiWrite(buf, string, offset, length)
2950 function base64Write (buf, string, offset, length) {
2951 var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length)
2955 function utf16leWrite (buf, string, offset, length) {
2956 var charsWritten = blitBuffer(utf16leToBytes(string), buf, offset, length)
2960 Buffer.prototype.write = function (string, offset, length, encoding) {
2961 // Support both (string, offset, length, encoding)
2962 // and the legacy (string, encoding, offset, length)
2963 if (isFinite(offset)) {
2964 if (!isFinite(length)) {
2975 offset = Number(offset) ||
0
2976 var remaining = this.length - offset
2980 length = Number(length)
2981 if (length
> remaining) {
2985 encoding = String(encoding || 'utf8').toLowerCase()
2990 ret = hexWrite(this, string, offset, length)
2994 ret = utf8Write(this, string, offset, length)
2997 ret = asciiWrite(this, string, offset, length)
3000 ret = binaryWrite(this, string, offset, length)
3003 ret = base64Write(this, string, offset, length)
3009 ret = utf16leWrite(this, string, offset, length)
3012 throw new Error('Unknown encoding')
3017 Buffer.prototype.toString = function (encoding, start, end) {
3020 encoding = String(encoding || 'utf8').toLowerCase()
3021 start = Number(start) ||
0
3022 end = (end === undefined) ? self.length : Number(end)
3024 // Fastpath empty strings
3031 ret = hexSlice(self, start, end)
3035 ret = utf8Slice(self, start, end)
3038 ret = asciiSlice(self, start, end)
3041 ret = binarySlice(self, start, end)
3044 ret = base64Slice(self, start, end)
3050 ret = utf16leSlice(self, start, end)
3053 throw new Error('Unknown encoding')
3058 Buffer.prototype.toJSON = function () {
3061 data: Array.prototype.slice.call(this._arr || this,
0)
3065 Buffer.prototype.equals = function (b) {
3066 assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
3067 return Buffer.compare(this, b) ===
0
3070 Buffer.prototype.compare = function (b) {
3071 assert(Buffer.isBuffer(b), 'Argument must be a Buffer')
3072 return Buffer.compare(this, b)
3075 // copy(targetBuffer, targetStart=
0, sourceStart=
0, sourceEnd=buffer.length)
3076 Buffer.prototype.copy = function (target, target_start, start, end) {
3079 if (!start) start =
0
3080 if (!end && end !==
0) end = this.length
3081 if (!target_start) target_start =
0
3083 // Copy
0 bytes; we're done
3084 if (end === start) return
3085 if (target.length ===
0 || source.length ===
0) return
3087 // Fatal error conditions
3088 assert(end
>= start, 'sourceEnd < sourceStart')
3089 assert(target_start
>=
0 && target_start < target.length,
3090 'targetStart out of bounds')
3091 assert(start
>=
0 && start < source.length, 'sourceStart out of bounds')
3092 assert(end
>=
0 && end <= source.length, 'sourceEnd out of bounds')
3095 if (end
> this.length)
3097 if (target.length - target_start < end - start)
3098 end = target.length - target_start + start
3100 var len = end - start
3102 if (len <
100 || !Buffer._useTypedArrays) {
3103 for (var i =
0; i < len; i++) {
3104 target[i + target_start] = this[i + start]
3107 target._set(this.subarray(start, start + len), target_start)
3111 function base64Slice (buf, start, end) {
3112 if (start ===
0 && end === buf.length) {
3113 return base64.fromByteArray(buf)
3115 return base64.fromByteArray(buf.slice(start, end))
3119 function utf8Slice (buf, start, end) {
3122 end = Math.min(buf.length, end)
3124 for (var i = start; i < end; i++) {
3125 if (buf[i] <=
0x7F) {
3126 res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i])
3129 tmp += '%' + buf[i].toString(
16)
3133 return res + decodeUtf8Char(tmp)
3136 function asciiSlice (buf, start, end) {
3138 end = Math.min(buf.length, end)
3140 for (var i = start; i < end; i++) {
3141 ret += String.fromCharCode(buf[i])
3146 function binarySlice (buf, start, end) {
3147 return asciiSlice(buf, start, end)
3150 function hexSlice (buf, start, end) {
3151 var len = buf.length
3153 if (!start || start <
0) start =
0
3154 if (!end || end <
0 || end
> len) end = len
3157 for (var i = start; i < end; i++) {
3158 out += toHex(buf[i])
3163 function utf16leSlice (buf, start, end) {
3164 var bytes = buf.slice(start, end)
3166 for (var i =
0; i < bytes.length; i +=
2) {
3167 res += String.fromCharCode(bytes[i] + bytes[i +
1] *
256)
3172 Buffer.prototype.slice = function (start, end) {
3173 var len = this.length
3174 start = clamp(start, len,
0)
3175 end = clamp(end, len, len)
3177 if (Buffer._useTypedArrays) {
3178 return Buffer._augment(this.subarray(start, end))
3180 var sliceLen = end - start
3181 var newBuf = new Buffer(sliceLen, undefined, true)
3182 for (var i =
0; i < sliceLen; i++) {
3183 newBuf[i] = this[i + start]
3189 // `get` will be removed in Node
0.13+
3190 Buffer.prototype.get = function (offset) {
3191 console.log('.get() is deprecated. Access using array indexes instead.')
3192 return this.readUInt8(offset)
3195 // `set` will be removed in Node
0.13+
3196 Buffer.prototype.set = function (v, offset) {
3197 console.log('.set() is deprecated. Access using array indexes instead.')
3198 return this.writeUInt8(v, offset)
3201 Buffer.prototype.readUInt8 = function (offset, noAssert) {
3203 assert(offset !== undefined && offset !== null, 'missing offset')
3204 assert(offset < this.length, 'Trying to read beyond buffer length')
3207 if (offset
>= this.length)
3213 function readUInt16 (buf, offset, littleEndian, noAssert) {
3215 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3216 assert(offset !== undefined && offset !== null, 'missing offset')
3217 assert(offset +
1 < buf.length, 'Trying to read beyond buffer length')
3220 var len = buf.length
3227 if (offset +
1 < len)
3228 val |= buf[offset +
1] <<
8
3230 val = buf[offset] <<
8
3231 if (offset +
1 < len)
3232 val |= buf[offset +
1]
3237 Buffer.prototype.readUInt16LE = function (offset, noAssert) {
3238 return readUInt16(this, offset, true, noAssert)
3241 Buffer.prototype.readUInt16BE = function (offset, noAssert) {
3242 return readUInt16(this, offset, false, noAssert)
3245 function readUInt32 (buf, offset, littleEndian, noAssert) {
3247 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3248 assert(offset !== undefined && offset !== null, 'missing offset')
3249 assert(offset +
3 < buf.length, 'Trying to read beyond buffer length')
3252 var len = buf.length
3258 if (offset +
2 < len)
3259 val = buf[offset +
2] <<
16
3260 if (offset +
1 < len)
3261 val |= buf[offset +
1] <<
8
3263 if (offset +
3 < len)
3264 val = val + (buf[offset +
3] <<
24 >>> 0)
3266 if (offset +
1 < len)
3267 val = buf[offset +
1] <<
16
3268 if (offset +
2 < len)
3269 val |= buf[offset +
2] <<
8
3270 if (offset +
3 < len)
3271 val |= buf[offset +
3]
3272 val = val + (buf[offset] <<
24 >>> 0)
3277 Buffer.prototype.readUInt32LE = function (offset, noAssert) {
3278 return readUInt32(this, offset, true, noAssert)
3281 Buffer.prototype.readUInt32BE = function (offset, noAssert) {
3282 return readUInt32(this, offset, false, noAssert)
3285 Buffer.prototype.readInt8 = function (offset, noAssert) {
3287 assert(offset !== undefined && offset !== null,
3289 assert(offset < this.length, 'Trying to read beyond buffer length')
3292 if (offset
>= this.length)
3295 var neg = this[offset] &
0x80
3297 return (
0xff - this[offset] +
1) * -
1
3302 function readInt16 (buf, offset, littleEndian, noAssert) {
3304 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3305 assert(offset !== undefined && offset !== null, 'missing offset')
3306 assert(offset +
1 < buf.length, 'Trying to read beyond buffer length')
3309 var len = buf.length
3313 var val = readUInt16(buf, offset, littleEndian, true)
3314 var neg = val &
0x8000
3316 return (
0xffff - val +
1) * -
1
3321 Buffer.prototype.readInt16LE = function (offset, noAssert) {
3322 return readInt16(this, offset, true, noAssert)
3325 Buffer.prototype.readInt16BE = function (offset, noAssert) {
3326 return readInt16(this, offset, false, noAssert)
3329 function readInt32 (buf, offset, littleEndian, noAssert) {
3331 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3332 assert(offset !== undefined && offset !== null, 'missing offset')
3333 assert(offset +
3 < buf.length, 'Trying to read beyond buffer length')
3336 var len = buf.length
3340 var val = readUInt32(buf, offset, littleEndian, true)
3341 var neg = val &
0x80000000
3343 return (
0xffffffff - val +
1) * -
1
3348 Buffer.prototype.readInt32LE = function (offset, noAssert) {
3349 return readInt32(this, offset, true, noAssert)
3352 Buffer.prototype.readInt32BE = function (offset, noAssert) {
3353 return readInt32(this, offset, false, noAssert)
3356 function readFloat (buf, offset, littleEndian, noAssert) {
3358 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3359 assert(offset +
3 < buf.length, 'Trying to read beyond buffer length')
3362 return ieee754.read(buf, offset, littleEndian,
23,
4)
3365 Buffer.prototype.readFloatLE = function (offset, noAssert) {
3366 return readFloat(this, offset, true, noAssert)
3369 Buffer.prototype.readFloatBE = function (offset, noAssert) {
3370 return readFloat(this, offset, false, noAssert)
3373 function readDouble (buf, offset, littleEndian, noAssert) {
3375 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3376 assert(offset +
7 < buf.length, 'Trying to read beyond buffer length')
3379 return ieee754.read(buf, offset, littleEndian,
52,
8)
3382 Buffer.prototype.readDoubleLE = function (offset, noAssert) {
3383 return readDouble(this, offset, true, noAssert)
3386 Buffer.prototype.readDoubleBE = function (offset, noAssert) {
3387 return readDouble(this, offset, false, noAssert)
3390 Buffer.prototype.writeUInt8 = function (value, offset, noAssert) {
3392 assert(value !== undefined && value !== null, 'missing value')
3393 assert(offset !== undefined && offset !== null, 'missing offset')
3394 assert(offset < this.length, 'trying to write beyond buffer length')
3395 verifuint(value,
0xff)
3398 if (offset
>= this.length) return
3400 this[offset] = value
3404 function writeUInt16 (buf, value, offset, littleEndian, noAssert) {
3406 assert(value !== undefined && value !== null, 'missing value')
3407 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3408 assert(offset !== undefined && offset !== null, 'missing offset')
3409 assert(offset +
1 < buf.length, 'trying to write beyond buffer length')
3410 verifuint(value,
0xffff)
3413 var len = buf.length
3417 for (var i =
0, j = Math.min(len - offset,
2); i < j; i++) {
3419 (value & (
0xff << (
8 * (littleEndian ? i :
1 - i))))
>>>
3420 (littleEndian ? i :
1 - i) *
8
3425 Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) {
3426 return writeUInt16(this, value, offset, true, noAssert)
3429 Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) {
3430 return writeUInt16(this, value, offset, false, noAssert)
3433 function writeUInt32 (buf, value, offset, littleEndian, noAssert) {
3435 assert(value !== undefined && value !== null, 'missing value')
3436 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3437 assert(offset !== undefined && offset !== null, 'missing offset')
3438 assert(offset +
3 < buf.length, 'trying to write beyond buffer length')
3439 verifuint(value,
0xffffffff)
3442 var len = buf.length
3446 for (var i =
0, j = Math.min(len - offset,
4); i < j; i++) {
3448 (value
>>> (littleEndian ? i :
3 - i) *
8) &
0xff
3453 Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) {
3454 return writeUInt32(this, value, offset, true, noAssert)
3457 Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) {
3458 return writeUInt32(this, value, offset, false, noAssert)
3461 Buffer.prototype.writeInt8 = function (value, offset, noAssert) {
3463 assert(value !== undefined && value !== null, 'missing value')
3464 assert(offset !== undefined && offset !== null, 'missing offset')
3465 assert(offset < this.length, 'Trying to write beyond buffer length')
3466 verifsint(value,
0x7f, -
0x80)
3469 if (offset
>= this.length)
3473 this.writeUInt8(value, offset, noAssert)
3475 this.writeUInt8(
0xff + value +
1, offset, noAssert)
3479 function writeInt16 (buf, value, offset, littleEndian, noAssert) {
3481 assert(value !== undefined && value !== null, 'missing value')
3482 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3483 assert(offset !== undefined && offset !== null, 'missing offset')
3484 assert(offset +
1 < buf.length, 'Trying to write beyond buffer length')
3485 verifsint(value,
0x7fff, -
0x8000)
3488 var len = buf.length
3493 writeUInt16(buf, value, offset, littleEndian, noAssert)
3495 writeUInt16(buf,
0xffff + value +
1, offset, littleEndian, noAssert)
3499 Buffer.prototype.writeInt16LE = function (value, offset, noAssert) {
3500 return writeInt16(this, value, offset, true, noAssert)
3503 Buffer.prototype.writeInt16BE = function (value, offset, noAssert) {
3504 return writeInt16(this, value, offset, false, noAssert)
3507 function writeInt32 (buf, value, offset, littleEndian, noAssert) {
3509 assert(value !== undefined && value !== null, 'missing value')
3510 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3511 assert(offset !== undefined && offset !== null, 'missing offset')
3512 assert(offset +
3 < buf.length, 'Trying to write beyond buffer length')
3513 verifsint(value,
0x7fffffff, -
0x80000000)
3516 var len = buf.length
3521 writeUInt32(buf, value, offset, littleEndian, noAssert)
3523 writeUInt32(buf,
0xffffffff + value +
1, offset, littleEndian, noAssert)
3527 Buffer.prototype.writeInt32LE = function (value, offset, noAssert) {
3528 return writeInt32(this, value, offset, true, noAssert)
3531 Buffer.prototype.writeInt32BE = function (value, offset, noAssert) {
3532 return writeInt32(this, value, offset, false, noAssert)
3535 function writeFloat (buf, value, offset, littleEndian, noAssert) {
3537 assert(value !== undefined && value !== null, 'missing value')
3538 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3539 assert(offset !== undefined && offset !== null, 'missing offset')
3540 assert(offset +
3 < buf.length, 'Trying to write beyond buffer length')
3541 verifIEEE754(value,
3.4028234663852886e+38, -
3.4028234663852886e+38)
3544 var len = buf.length
3548 ieee754.write(buf, value, offset, littleEndian,
23,
4)
3552 Buffer.prototype.writeFloatLE = function (value, offset, noAssert) {
3553 return writeFloat(this, value, offset, true, noAssert)
3556 Buffer.prototype.writeFloatBE = function (value, offset, noAssert) {
3557 return writeFloat(this, value, offset, false, noAssert)
3560 function writeDouble (buf, value, offset, littleEndian, noAssert) {
3562 assert(value !== undefined && value !== null, 'missing value')
3563 assert(typeof littleEndian === 'boolean', 'missing or invalid endian')
3564 assert(offset !== undefined && offset !== null, 'missing offset')
3565 assert(offset +
7 < buf.length,
3566 'Trying to write beyond buffer length')
3567 verifIEEE754(value,
1.7976931348623157E+308, -
1.7976931348623157E+308)
3570 var len = buf.length
3574 ieee754.write(buf, value, offset, littleEndian,
52,
8)
3578 Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) {
3579 return writeDouble(this, value, offset, true, noAssert)
3582 Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) {
3583 return writeDouble(this, value, offset, false, noAssert)
3586 // fill(value, start=
0, end=buffer.length)
3587 Buffer.prototype.fill = function (value, start, end) {
3588 if (!value) value =
0
3589 if (!start) start =
0
3590 if (!end) end = this.length
3592 assert(end
>= start, 'end < start')
3594 // Fill
0 bytes; we're done
3595 if (end === start) return
3596 if (this.length ===
0) return
3598 assert(start
>=
0 && start < this.length, 'start out of bounds')
3599 assert(end
>=
0 && end <= this.length, 'end out of bounds')
3602 if (typeof value === 'number') {
3603 for (i = start; i < end; i++) {
3607 var bytes = utf8ToBytes(value.toString())
3608 var len = bytes.length
3609 for (i = start; i < end; i++) {
3610 this[i] = bytes[i % len]
3617 Buffer.prototype.inspect = function () {
3619 var len = this.length
3620 for (var i =
0; i < len; i++) {
3621 out[i] = toHex(this[i])
3622 if (i === exports.INSPECT_MAX_BYTES) {
3627 return '
<Buffer ' + out.join(' ') + '
>'
3631 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
3632 * Added in Node
0.12. Only available in browsers that support ArrayBuffer.
3634 Buffer.prototype.toArrayBuffer = function () {
3635 if (typeof Uint8Array !== 'undefined') {
3636 if (Buffer._useTypedArrays) {
3637 return (new Buffer(this)).buffer
3639 var buf = new Uint8Array(this.length)
3640 for (var i =
0, len = buf.length; i < len; i +=
1) {
3646 throw new Error('Buffer.toArrayBuffer not supported in this browser')
3653 var BP = Buffer.prototype
3656 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
3658 Buffer._augment = function (arr) {
3659 arr._isBuffer = true
3661 // save reference to original Uint8Array get/set methods before overwriting
3665 // deprecated, will be removed in node
0.13+
3669 arr.write = BP.write
3670 arr.toString = BP.toString
3671 arr.toLocaleString = BP.toString
3672 arr.toJSON = BP.toJSON
3673 arr.equals = BP.equals
3674 arr.compare = BP.compare
3676 arr.slice = BP.slice
3677 arr.readUInt8 = BP.readUInt8
3678 arr.readUInt16LE = BP.readUInt16LE
3679 arr.readUInt16BE = BP.readUInt16BE
3680 arr.readUInt32LE = BP.readUInt32LE
3681 arr.readUInt32BE = BP.readUInt32BE
3682 arr.readInt8 = BP.readInt8
3683 arr.readInt16LE = BP.readInt16LE
3684 arr.readInt16BE = BP.readInt16BE
3685 arr.readInt32LE = BP.readInt32LE
3686 arr.readInt32BE = BP.readInt32BE
3687 arr.readFloatLE = BP.readFloatLE
3688 arr.readFloatBE = BP.readFloatBE
3689 arr.readDoubleLE = BP.readDoubleLE
3690 arr.readDoubleBE = BP.readDoubleBE
3691 arr.writeUInt8 = BP.writeUInt8
3692 arr.writeUInt16LE = BP.writeUInt16LE
3693 arr.writeUInt16BE = BP.writeUInt16BE
3694 arr.writeUInt32LE = BP.writeUInt32LE
3695 arr.writeUInt32BE = BP.writeUInt32BE
3696 arr.writeInt8 = BP.writeInt8
3697 arr.writeInt16LE = BP.writeInt16LE
3698 arr.writeInt16BE = BP.writeInt16BE
3699 arr.writeInt32LE = BP.writeInt32LE
3700 arr.writeInt32BE = BP.writeInt32BE
3701 arr.writeFloatLE = BP.writeFloatLE
3702 arr.writeFloatBE = BP.writeFloatBE
3703 arr.writeDoubleLE = BP.writeDoubleLE
3704 arr.writeDoubleBE = BP.writeDoubleBE
3706 arr.inspect = BP.inspect
3707 arr.toArrayBuffer = BP.toArrayBuffer
3712 var INVALID_BASE64_RE = /[^+\/
0-
9A-z]/g
3714 function base64clean (str) {
3715 // Node strips out invalid characters like \n and \t from the string, base64-js does not
3716 str = stringtrim(str).replace(INVALID_BASE64_RE, '')
3717 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
3718 while (str.length %
4 !==
0) {
3724 function stringtrim (str) {
3725 if (str.trim) return str.trim()
3726 return str.replace(/^\s+|\s+$/g, '')
3729 // slice(start, end)
3730 function clamp (index, len, defaultValue) {
3731 if (typeof index !== 'number') return defaultValue
3732 index = ~~index; // Coerce to integer.
3733 if (index
>= len) return len
3734 if (index
>=
0) return index
3736 if (index
>=
0) return index
3740 function coerce (length) {
3741 // Coerce length to a number (possibly NaN), round up
3742 // in case it's fractional (e.g.
123.456) then do a
3743 // double negate to coerce a NaN to
0. Easy, right?
3744 length = ~~Math.ceil(+length)
3745 return length <
0 ?
0 : length
3748 function isArray (subject) {
3749 return (Array.isArray || function (subject) {
3750 return Object.prototype.toString.call(subject) === '[object Array]'
3754 function isArrayish (subject) {
3755 return isArray(subject) || Buffer.isBuffer(subject) ||
3756 subject && typeof subject === 'object' &&
3757 typeof subject.length === 'number'
3760 function toHex (n) {
3761 if (n <
16) return '
0' + n.toString(
16)
3762 return n.toString(
16)
3765 function utf8ToBytes (str) {
3767 for (var i =
0; i < str.length; i++) {
3768 var b = str.charCodeAt(i)
3773 if (b
>=
0xD800 && b <=
0xDFFF) i++
3774 var h = encodeURIComponent(str.slice(start, i+
1)).substr(
1).split('%')
3775 for (var j =
0; j < h.length; j++) {
3776 byteArray.push(parseInt(h[j],
16))
3783 function asciiToBytes (str) {
3785 for (var i =
0; i < str.length; i++) {
3786 // Node's code seems to be doing this and not &
0x7F..
3787 byteArray.push(str.charCodeAt(i) &
0xFF)
3792 function utf16leToBytes (str) {
3795 for (var i =
0; i < str.length; i++) {
3796 c = str.charCodeAt(i)
3806 function base64ToBytes (str) {
3807 return base64.toByteArray(str)
3810 function blitBuffer (src, dst, offset, length) {
3811 for (var i =
0; i < length; i++) {
3812 if ((i + offset
>= dst.length) || (i
>= src.length))
3814 dst[i + offset] = src[i]
3819 function decodeUtf8Char (str) {
3821 return decodeURIComponent(str)
3823 return String.fromCharCode(
0xFFFD) // UTF
8 invalid char
3828 * We have to make sure that the value is a valid integer. This means that it
3829 * is non-negative. It has no fractional component and that it does not
3830 * exceed the maximum allowed value.
3832 function verifuint (value, max) {
3833 assert(typeof value === 'number', 'cannot write a non-number as a number')
3834 assert(value
>=
0, 'specified a negative value for writing an unsigned value')
3835 assert(value <= max, 'value is larger than maximum value for type')
3836 assert(Math.floor(value) === value, 'value has a fractional component')
3839 function verifsint (value, max, min) {
3840 assert(typeof value === 'number', 'cannot write a non-number as a number')
3841 assert(value <= max, 'value larger than maximum allowed value')
3842 assert(value
>= min, 'value smaller than minimum allowed value')
3843 assert(Math.floor(value) === value, 'value has a fractional component')
3846 function verifIEEE754 (value, max, min) {
3847 assert(typeof value === 'number', 'cannot write a non-number as a number')
3848 assert(value <= max, 'value larger than maximum allowed value')
3849 assert(value
>= min, 'value smaller than minimum allowed value')
3852 function assert (test, message) {
3853 if (!test) throw new Error(message || 'Failed assertion')
3856 },{"base64-js":
9,"ieee754":
10}],
9:[function(_dereq_,module,exports){
3857 var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
3859 ;(function (exports) {
3862 var Arr = (typeof Uint8Array !== 'undefined')
3866 var PLUS = '+'.charCodeAt(
0)
3867 var SLASH = '/'.charCodeAt(
0)
3868 var NUMBER = '
0'.charCodeAt(
0)
3869 var LOWER = 'a'.charCodeAt(
0)
3870 var UPPER = 'A'.charCodeAt(
0)
3872 function decode (elt) {
3873 var code = elt.charCodeAt(
0)
3879 return -
1 //no match
3880 if (code < NUMBER +
10)
3881 return code - NUMBER +
26 +
26
3882 if (code < UPPER +
26)
3884 if (code < LOWER +
26)
3885 return code - LOWER +
26
3888 function b64ToByteArray (b64) {
3889 var i, j, l, tmp, placeHolders, arr
3891 if (b64.length %
4 > 0) {
3892 throw new Error('Invalid string. Length must be a multiple of
4')
3895 // the number of equal signs (place holders)
3896 // if there are two placeholders, than the two characters before it
3897 // represent one byte
3898 // if there is only one, then the three characters before it represent
2 bytes
3899 // this is just a cheap hack to not do indexOf twice
3900 var len = b64.length
3901 placeHolders = '=' === b64.charAt(len -
2) ?
2 : '=' === b64.charAt(len -
1) ?
1 :
0
3903 // base64 is
4/
3 + up to two characters of the original data
3904 arr = new Arr(b64.length *
3 /
4 - placeHolders)
3906 // if there are placeholders, only get up to the last complete
4 chars
3907 l = placeHolders
> 0 ? b64.length -
4 : b64.length
3915 for (i =
0, j =
0; i < l; i +=
4, j +=
3) {
3916 tmp = (decode(b64.charAt(i)) <<
18) | (decode(b64.charAt(i +
1)) <<
12) | (decode(b64.charAt(i +
2)) <<
6) | decode(b64.charAt(i +
3))
3917 push((tmp &
0xFF0000)
>> 16)
3918 push((tmp &
0xFF00)
>> 8)
3922 if (placeHolders ===
2) {
3923 tmp = (decode(b64.charAt(i)) <<
2) | (decode(b64.charAt(i +
1))
>> 4)
3925 } else if (placeHolders ===
1) {
3926 tmp = (decode(b64.charAt(i)) <<
10) | (decode(b64.charAt(i +
1)) <<
4) | (decode(b64.charAt(i +
2))
>> 2)
3927 push((tmp
>> 8) &
0xFF)
3934 function uint8ToBase64 (uint8) {
3936 extraBytes = uint8.length %
3, // if we have
1 byte left, pad
2 bytes
3940 function encode (num) {
3941 return lookup.charAt(num)
3944 function tripletToBase64 (num) {
3945 return encode(num
>> 18 &
0x3F) + encode(num
>> 12 &
0x3F) + encode(num
>> 6 &
0x3F) + encode(num &
0x3F)
3948 // go through the array every three bytes, we'll deal with trailing stuff later
3949 for (i =
0, length = uint8.length - extraBytes; i < length; i +=
3) {
3950 temp = (uint8[i] <<
16) + (uint8[i +
1] <<
8) + (uint8[i +
2])
3951 output += tripletToBase64(temp)
3954 // pad the end with zeros, but make sure to not forget the extra bytes
3955 switch (extraBytes) {
3957 temp = uint8[uint8.length -
1]
3958 output += encode(temp
>> 2)
3959 output += encode((temp <<
4) &
0x3F)
3963 temp = (uint8[uint8.length -
2] <<
8) + (uint8[uint8.length -
1])
3964 output += encode(temp
>> 10)
3965 output += encode((temp
>> 4) &
0x3F)
3966 output += encode((temp <<
2) &
0x3F)
3974 exports.toByteArray = b64ToByteArray
3975 exports.fromByteArray = uint8ToBase64
3976 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports))
3978 },{}],
10:[function(_dereq_,module,exports){
3979 exports.read = function(buffer, offset, isLE, mLen, nBytes) {
3981 eLen = nBytes *
8 - mLen -
1,
3982 eMax = (
1 << eLen) -
1,
3985 i = isLE ? (nBytes -
1) :
0,
3987 s = buffer[offset + i];
3991 e = s & ((
1 << (-nBits)) -
1);
3994 for (; nBits
> 0; e = e *
256 + buffer[offset + i], i += d, nBits -=
8){};
3996 m = e & ((
1 << (-nBits)) -
1);
3999 for (; nBits
> 0; m = m *
256 + buffer[offset + i], i += d, nBits -=
8){};
4003 } else if (e === eMax) {
4004 return m ? NaN : ((s ? -
1 :
1) * Infinity);
4006 m = m + Math.pow(
2, mLen);
4009 return (s ? -
1 :
1) * m * Math.pow(
2, e - mLen);
4012 exports.write = function(buffer, value, offset, isLE, mLen, nBytes) {
4014 eLen = nBytes *
8 - mLen -
1,
4015 eMax = (
1 << eLen) -
1,
4017 rt = (mLen ===
23 ? Math.pow(
2, -
24) - Math.pow(
2, -
77) :
0),
4018 i = isLE ?
0 : (nBytes -
1),
4020 s = value <
0 || (value ===
0 &&
1 / value <
0) ?
1 :
0;
4022 value = Math.abs(value);
4024 if (isNaN(value) || value === Infinity) {
4025 m = isNaN(value) ?
1 :
0;
4028 e = Math.floor(Math.log(value) / Math.LN2);
4029 if (value * (c = Math.pow(
2, -e)) <
1) {
4033 if (e + eBias
>=
1) {
4036 value += rt * Math.pow(
2,
1 - eBias);
4038 if (value * c
>=
2) {
4043 if (e + eBias
>= eMax) {
4046 } else if (e + eBias
>=
1) {
4047 m = (value * c -
1) * Math.pow(
2, mLen);
4050 m = value * Math.pow(
2, eBias -
1) * Math.pow(
2, mLen);
4055 for (; mLen
>=
8; buffer[offset + i] = m &
0xff, i += d, m /=
256, mLen -=
8){};
4057 e = (e << mLen) | m;
4059 for (; eLen
> 0; buffer[offset + i] = e &
0xff, i += d, e /=
256, eLen -=
8){};
4061 buffer[offset + i - d] |= s *
128;
4064 },{}],
11:[function(_dereq_,module,exports){
4065 if (typeof Object.create === 'function') {
4066 // implementation from standard node.js 'util' module
4067 module.exports = function inherits(ctor, superCtor) {
4068 ctor.super_ = superCtor
4069 ctor.prototype = Object.create(superCtor.prototype, {
4079 // old school shim for old browsers
4080 module.exports = function inherits(ctor, superCtor) {
4081 ctor.super_ = superCtor
4082 var TempCtor = function () {}
4083 TempCtor.prototype = superCtor.prototype
4084 ctor.prototype = new TempCtor()
4085 ctor.prototype.constructor = ctor
4089 },{}],
12:[function(_dereq_,module,exports){
4090 // shim for using process in browser
4092 var process = module.exports = {};
4094 process.nextTick = (function () {
4095 var canSetImmediate = typeof window !== 'undefined'
4096 && window.setImmediate;
4097 var canPost = typeof window !== 'undefined'
4098 && window.postMessage && window.addEventListener
4101 if (canSetImmediate) {
4102 return function (f) { return window.setImmediate(f) };
4107 window.addEventListener('message', function (ev) {
4108 var source = ev.source;
4109 if ((source === window || source === null) && ev.data === 'process-tick') {
4110 ev.stopPropagation();
4111 if (queue.length
> 0) {
4112 var fn = queue.shift();
4118 return function nextTick(fn) {
4120 window.postMessage('process-tick', '*');
4124 return function nextTick(fn) {
4129 process.title = 'browser';
4130 process.browser = true;
4137 process.addListener = noop;
4138 process.once = noop;
4140 process.removeListener = noop;
4141 process.removeAllListeners = noop;
4142 process.emit = noop;
4144 process.binding = function (name) {
4145 throw new Error('process.binding is not supported');
4149 process.cwd = function () { return '/' };
4150 process.chdir = function (dir) {
4151 throw new Error('process.chdir is not supported');
4154 },{}],
13:[function(_dereq_,module,exports){
4155 module.exports=_dereq_(
5)
4156 },{}],
14:[function(_dereq_,module,exports){
4157 module.exports=_dereq_(
6)
4158 },{
"./support/isBuffer":
13,
"FWaASH":
12,
"inherits":
11}],
15:[function(_dereq_,module,exports){
4160 // Base58 encoding/decoding
4161 // Originally written by Mike Hearn for BitcoinJ
4162 // Copyright (c)
2011 Google Inc
4163 // Ported to JavaScript by Stefan Thomas
4164 // Merged Buffer refactorings from base58-native by Stephen Pair
4165 // Copyright (c)
2013 BitPay Inc
4167 var assert = _dereq_('assert')
4168 var BigInteger = _dereq_('bigi')
4170 var ALPHABET = '
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
4171 var ALPHABET_BUF = new Buffer(ALPHABET, 'ascii')
4172 var ALPHABET_MAP = {}
4173 for(var i =
0; i < ALPHABET.length; i++) {
4174 ALPHABET_MAP[ALPHABET.charAt(i)] = BigInteger.valueOf(i)
4176 var BASE = new BigInteger('
58')
4178 function encode(buffer) {
4179 var bi = BigInteger.fromBuffer(buffer)
4180 var result = new Buffer(buffer.length <<
1)
4182 var i = result.length -
1
4183 while (bi.signum()
> 0) {
4184 var remainder = bi.mod(BASE)
4185 bi = bi.divide(BASE)
4187 result[i] = ALPHABET_BUF[remainder.intValue()]
4191 // deal with leading zeros
4193 while (buffer[j] ===
0) {
4194 result[i] = ALPHABET_BUF[
0]
4199 return result.slice(i +
1, result.length).toString('ascii')
4202 function decode(string) {
4203 if (string.length ===
0) return new Buffer(
0)
4205 var num = BigInteger.ZERO
4207 for (var i =
0; i < string.length; i++) {
4208 num = num.multiply(BASE)
4210 var figure = ALPHABET_MAP[string.charAt(i)]
4211 assert.notEqual(figure, undefined, 'Non-base58 character')
4213 num = num.add(figure)
4216 // deal with leading zeros
4218 while ((j < string.length) && (string[j] === ALPHABET[
0])) {
4222 var buffer = num.toBuffer()
4223 var leadingZeros = new Buffer(j)
4224 leadingZeros.fill(
0)
4226 return Buffer.concat([leadingZeros, buffer])
4234 }).call(this,_dereq_(
"buffer").Buffer)
4235 },{
"assert":
4,
"bigi":
3,
"buffer":
8}],
16:[function(_dereq_,module,exports){
4237 var createHash = _dereq_('sha.js')
4239 var md5 = toConstructor(_dereq_('./md5'))
4240 var rmd160 = toConstructor(_dereq_('ripemd160'))
4242 function toConstructor (fn) {
4243 return function () {
4246 update: function (data, enc) {
4247 if(!Buffer.isBuffer(data)) data = new Buffer(data, enc)
4251 digest: function (enc) {
4252 var buf = Buffer.concat(buffers)
4255 return enc ? r.toString(enc) : r
4262 module.exports = function (alg) {
4263 if('md5' === alg) return new md5()
4264 if('rmd160' === alg) return new rmd160()
4265 return createHash(alg)
4268 }).call(this,_dereq_(
"buffer").Buffer)
4269 },{
"./md5":
20,
"buffer":
8,
"ripemd160":
21,
"sha.js":
23}],
17:[function(_dereq_,module,exports){
4271 var createHash = _dereq_('./create-hash')
4274 var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(
0)
4276 module.exports = Hmac
4278 function Hmac (alg, key) {
4279 if(!(this instanceof Hmac)) return new Hmac(alg, key)
4283 key = this._key = !Buffer.isBuffer(key) ? new Buffer(key) : key
4285 if(key.length
> blocksize) {
4286 key = createHash(alg).update(key).digest()
4287 } else if(key.length < blocksize) {
4288 key = Buffer.concat([key, zeroBuffer], blocksize)
4291 var ipad = this._ipad = new Buffer(blocksize)
4292 var opad = this._opad = new Buffer(blocksize)
4294 for(var i =
0; i < blocksize; i++) {
4295 ipad[i] = key[i] ^
0x36
4296 opad[i] = key[i] ^
0x5C
4299 this._hash = createHash(alg).update(ipad)
4302 Hmac.prototype.update = function (data, enc) {
4303 this._hash.update(data, enc)
4307 Hmac.prototype.digest = function (enc) {
4308 var h = this._hash.digest()
4309 return createHash(this._alg).update(this._opad).update(h).digest(enc)
4313 }).call(this,_dereq_("buffer").Buffer)
4314 },{"./create-hash":
16,"buffer":
8}],
18:[function(_dereq_,module,exports){
4317 var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(
0);
4320 function toArray(buf, bigEndian) {
4321 if ((buf.length % intSize) !==
0) {
4322 var len = buf.length + (intSize - (buf.length % intSize));
4323 buf = Buffer.concat([buf, zeroBuffer], len);
4327 var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
4328 for (var i =
0; i < buf.length; i += intSize) {
4329 arr.push(fn.call(buf, i));
4334 function toBuffer(arr, size, bigEndian) {
4335 var buf = new Buffer(size);
4336 var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
4337 for (var i =
0; i < arr.length; i++) {
4338 fn.call(buf, arr[i], i *
4, true);
4343 function hash(buf, fn, hashSize, bigEndian) {
4344 if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
4345 var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
4346 return toBuffer(arr, hashSize, bigEndian);
4349 module.exports = { hash: hash };
4351 }).call(this,_dereq_("buffer").Buffer)
4352 },{"buffer":
8}],
19:[function(_dereq_,module,exports){
4354 var rng = _dereq_('./rng')
4357 var m = [].slice.call(arguments).join(' ')
4360 'we accept pull requests',
4361 'http://github.com/dominictarr/crypto-browserify'
4365 exports.createHash = _dereq_('./create-hash')
4367 exports.createHmac = _dereq_('./create-hmac')
4369 exports.randomBytes = function(size, callback) {
4370 if (callback && callback.call) {
4372 callback.call(this, undefined, new Buffer(rng(size)))
4373 } catch (err) { callback(err) }
4375 return new Buffer(rng(size))
4379 function each(a, f) {
4384 exports.getHashes = function () {
4385 return ['sha1', 'sha256', 'md5', 'rmd160']
4389 var p = _dereq_('./pbkdf2')(exports.createHmac)
4390 exports.pbkdf2 = p.pbkdf2
4391 exports.pbkdf2Sync = p.pbkdf2Sync
4394 // the least I can do is make error messages for the rest of the node.js/crypto api.
4395 each(['createCredentials'
4399 , 'createDecipheriv'
4402 , 'createDiffieHellman'
4403 ], function (name) {
4404 exports[name] = function () {
4405 error('sorry,', name, 'is not implemented yet')
4409 }).call(this,_dereq_("buffer").Buffer)
4410 },{"./create-hash":
16,"./create-hmac":
17,"./pbkdf2":
27,"./rng":
28,"buffer":
8}],
20:[function(_dereq_,module,exports){
4412 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
4413 * Digest Algorithm, as defined in RFC
1321.
4414 * Version
2.1 Copyright (C) Paul Johnston
1999 -
2002.
4415 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
4416 * Distributed under the BSD License
4417 * See http://pajhome.org.uk/crypt/md5 for more info.
4420 var helpers = _dereq_('./helpers');
4423 * Calculate the MD5 of an array of little-endian words, and a bit length
4425 function core_md5(x, len)
4427 /* append padding */
4428 x[len
>> 5] |=
0x80 << ((len) %
32);
4429 x[(((len +
64)
>>> 9) <<
4) +
14] = len;
4433 var c = -
1732584194;
4436 for(var i =
0; i < x.length; i +=
16)
4443 a = md5_ff(a, b, c, d, x[i+
0],
7 , -
680876936);
4444 d = md5_ff(d, a, b, c, x[i+
1],
12, -
389564586);
4445 c = md5_ff(c, d, a, b, x[i+
2],
17,
606105819);
4446 b = md5_ff(b, c, d, a, x[i+
3],
22, -
1044525330);
4447 a = md5_ff(a, b, c, d, x[i+
4],
7 , -
176418897);
4448 d = md5_ff(d, a, b, c, x[i+
5],
12,
1200080426);
4449 c = md5_ff(c, d, a, b, x[i+
6],
17, -
1473231341);
4450 b = md5_ff(b, c, d, a, x[i+
7],
22, -
45705983);
4451 a = md5_ff(a, b, c, d, x[i+
8],
7 ,
1770035416);
4452 d = md5_ff(d, a, b, c, x[i+
9],
12, -
1958414417);
4453 c = md5_ff(c, d, a, b, x[i+
10],
17, -
42063);
4454 b = md5_ff(b, c, d, a, x[i+
11],
22, -
1990404162);
4455 a = md5_ff(a, b, c, d, x[i+
12],
7 ,
1804603682);
4456 d = md5_ff(d, a, b, c, x[i+
13],
12, -
40341101);
4457 c = md5_ff(c, d, a, b, x[i+
14],
17, -
1502002290);
4458 b = md5_ff(b, c, d, a, x[i+
15],
22,
1236535329);
4460 a = md5_gg(a, b, c, d, x[i+
1],
5 , -
165796510);
4461 d = md5_gg(d, a, b, c, x[i+
6],
9 , -
1069501632);
4462 c = md5_gg(c, d, a, b, x[i+
11],
14,
643717713);
4463 b = md5_gg(b, c, d, a, x[i+
0],
20, -
373897302);
4464 a = md5_gg(a, b, c, d, x[i+
5],
5 , -
701558691);
4465 d = md5_gg(d, a, b, c, x[i+
10],
9 ,
38016083);
4466 c = md5_gg(c, d, a, b, x[i+
15],
14, -
660478335);
4467 b = md5_gg(b, c, d, a, x[i+
4],
20, -
405537848);
4468 a = md5_gg(a, b, c, d, x[i+
9],
5 ,
568446438);
4469 d = md5_gg(d, a, b, c, x[i+
14],
9 , -
1019803690);
4470 c = md5_gg(c, d, a, b, x[i+
3],
14, -
187363961);
4471 b = md5_gg(b, c, d, a, x[i+
8],
20,
1163531501);
4472 a = md5_gg(a, b, c, d, x[i+
13],
5 , -
1444681467);
4473 d = md5_gg(d, a, b, c, x[i+
2],
9 , -
51403784);
4474 c = md5_gg(c, d, a, b, x[i+
7],
14,
1735328473);
4475 b = md5_gg(b, c, d, a, x[i+
12],
20, -
1926607734);
4477 a = md5_hh(a, b, c, d, x[i+
5],
4 , -
378558);
4478 d = md5_hh(d, a, b, c, x[i+
8],
11, -
2022574463);
4479 c = md5_hh(c, d, a, b, x[i+
11],
16,
1839030562);
4480 b = md5_hh(b, c, d, a, x[i+
14],
23, -
35309556);
4481 a = md5_hh(a, b, c, d, x[i+
1],
4 , -
1530992060);
4482 d = md5_hh(d, a, b, c, x[i+
4],
11,
1272893353);
4483 c = md5_hh(c, d, a, b, x[i+
7],
16, -
155497632);
4484 b = md5_hh(b, c, d, a, x[i+
10],
23, -
1094730640);
4485 a = md5_hh(a, b, c, d, x[i+
13],
4 ,
681279174);
4486 d = md5_hh(d, a, b, c, x[i+
0],
11, -
358537222);
4487 c = md5_hh(c, d, a, b, x[i+
3],
16, -
722521979);
4488 b = md5_hh(b, c, d, a, x[i+
6],
23,
76029189);
4489 a = md5_hh(a, b, c, d, x[i+
9],
4 , -
640364487);
4490 d = md5_hh(d, a, b, c, x[i+
12],
11, -
421815835);
4491 c = md5_hh(c, d, a, b, x[i+
15],
16,
530742520);
4492 b = md5_hh(b, c, d, a, x[i+
2],
23, -
995338651);
4494 a = md5_ii(a, b, c, d, x[i+
0],
6 , -
198630844);
4495 d = md5_ii(d, a, b, c, x[i+
7],
10,
1126891415);
4496 c = md5_ii(c, d, a, b, x[i+
14],
15, -
1416354905);
4497 b = md5_ii(b, c, d, a, x[i+
5],
21, -
57434055);
4498 a = md5_ii(a, b, c, d, x[i+
12],
6 ,
1700485571);
4499 d = md5_ii(d, a, b, c, x[i+
3],
10, -
1894986606);
4500 c = md5_ii(c, d, a, b, x[i+
10],
15, -
1051523);
4501 b = md5_ii(b, c, d, a, x[i+
1],
21, -
2054922799);
4502 a = md5_ii(a, b, c, d, x[i+
8],
6 ,
1873313359);
4503 d = md5_ii(d, a, b, c, x[i+
15],
10, -
30611744);
4504 c = md5_ii(c, d, a, b, x[i+
6],
15, -
1560198380);
4505 b = md5_ii(b, c, d, a, x[i+
13],
21,
1309151649);
4506 a = md5_ii(a, b, c, d, x[i+
4],
6 , -
145523070);
4507 d = md5_ii(d, a, b, c, x[i+
11],
10, -
1120210379);
4508 c = md5_ii(c, d, a, b, x[i+
2],
15,
718787259);
4509 b = md5_ii(b, c, d, a, x[i+
9],
21, -
343485551);
4511 a = safe_add(a, olda);
4512 b = safe_add(b, oldb);
4513 c = safe_add(c, oldc);
4514 d = safe_add(d, oldd);
4516 return Array(a, b, c, d);
4521 * These functions implement the four basic operations the algorithm uses.
4523 function md5_cmn(q, a, b, x, s, t)
4525 return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
4527 function md5_ff(a, b, c, d, x, s, t)
4529 return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
4531 function md5_gg(a, b, c, d, x, s, t)
4533 return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
4535 function md5_hh(a, b, c, d, x, s, t)
4537 return md5_cmn(b ^ c ^ d, a, b, x, s, t);
4539 function md5_ii(a, b, c, d, x, s, t)
4541 return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
4545 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
4546 * to work around bugs in some JS interpreters.
4548 function safe_add(x, y)
4550 var lsw = (x &
0xFFFF) + (y &
0xFFFF);
4551 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
4552 return (msw <<
16) | (lsw &
0xFFFF);
4556 * Bitwise rotate a
32-bit number to the left.
4558 function bit_rol(num, cnt)
4560 return (num << cnt) | (num
>>> (
32 - cnt));
4563 module.exports = function md5(buf) {
4564 return helpers.hash(buf, core_md5,
16);
4567 },{"./helpers":
18}],
21:[function(_dereq_,module,exports){
4570 module.exports = ripemd160
4576 code.google.com/p/crypto-js
4577 (c)
2009-
2013 by Jeff Mott. All rights reserved.
4578 code.google.com/p/crypto-js/wiki/License
4581 (c)
2012 by Cédric Mesnil. All rights reserved.
4583 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4585 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
4586 - 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.
4588 THIS 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 HOLDER 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.
4593 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
4594 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
4595 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
4596 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
4597 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13];
4599 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
4600 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
4601 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
4602 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
4603 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11];
4605 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
4606 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
4607 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
4608 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
4609 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6 ];
4611 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
4612 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
4613 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
4614 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
4615 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11 ];
4617 var hl = [
0x00000000,
0x5A827999,
0x6ED9EBA1,
0x8F1BBCDC,
0xA953FD4E];
4618 var hr = [
0x50A28BE6,
0x5C4DD124,
0x6D703EF3,
0x7A6D76E9,
0x00000000];
4620 var bytesToWords = function (bytes) {
4622 for (var i =
0, b =
0; i < bytes.length; i++, b +=
8) {
4623 words[b
>>> 5] |= bytes[i] << (
24 - b %
32);
4628 var wordsToBytes = function (words) {
4630 for (var b =
0; b < words.length *
32; b +=
8) {
4631 bytes.push((words[b
>>> 5]
>>> (
24 - b %
32)) &
0xFF);
4636 var processBlock = function (H, M, offset) {
4639 for (var i =
0; i <
16; i++) {
4640 var offset_i = offset + i;
4641 var M_offset_i = M[offset_i];
4645 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
4646 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
4650 // Working variables
4651 var al, bl, cl, dl, el;
4652 var ar, br, cr, dr, er;
4661 for (var i =
0; i <
80; i +=
1) {
4662 t = (al + M[offset+zl[i]])|
0;
4664 t += f1(bl,cl,dl) + hl[
0];
4666 t += f2(bl,cl,dl) + hl[
1];
4668 t += f3(bl,cl,dl) + hl[
2];
4670 t += f4(bl,cl,dl) + hl[
3];
4671 } else {// if (i
<80) {
4672 t += f5(bl,cl,dl) + hl[
4];
4683 t = (ar + M[offset+zr[i]])|
0;
4685 t += f5(br,cr,dr) + hr[
0];
4687 t += f4(br,cr,dr) + hr[
1];
4689 t += f3(br,cr,dr) + hr[
2];
4691 t += f2(br,cr,dr) + hr[
3];
4692 } else {// if (i
<80) {
4693 t += f1(br,cr,dr) + hr[
4];
4704 // Intermediate hash value
4705 t = (H[
1] + cl + dr)|
0;
4706 H[
1] = (H[
2] + dl + er)|
0;
4707 H[
2] = (H[
3] + el + ar)|
0;
4708 H[
3] = (H[
4] + al + br)|
0;
4709 H[
4] = (H[
0] + bl + cr)|
0;
4713 function f1(x, y, z) {
4714 return ((x) ^ (y) ^ (z));
4717 function f2(x, y, z) {
4718 return (((x)&(y)) | ((~x)&(z)));
4721 function f3(x, y, z) {
4722 return (((x) | (~(y))) ^ (z));
4725 function f4(x, y, z) {
4726 return (((x) & (z)) | ((y)&(~(z))));
4729 function f5(x, y, z) {
4730 return ((x) ^ ((y) |(~(z))));
4733 function rotl(x,n) {
4734 return (x<
<n) | (x
>>>(
32-n));
4737 function ripemd160(message) {
4738 var H = [
0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0];
4740 if (typeof message == 'string')
4741 message = new Buffer(message, 'utf8');
4743 var m = bytesToWords(message);
4745 var nBitsLeft = message.length *
8;
4746 var nBitsTotal = message.length *
8;
4749 m[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
4750 m[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
4751 (((nBitsTotal <<
8) | (nBitsTotal
>>> 24)) &
0x00ff00ff) |
4752 (((nBitsTotal <<
24) | (nBitsTotal
>>> 8)) &
0xff00ff00)
4755 for (var i=
0 ; i
<m.length; i +=
16) {
4756 processBlock(H, m, i);
4760 for (var i =
0; i <
5; i++) {
4765 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
4766 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00);
4769 var digestbytes = wordsToBytes(H);
4770 return new Buffer(digestbytes);
4775 }).call(this,_dereq_(
"buffer").Buffer)
4776 },{
"buffer":
8}],
22:[function(_dereq_,module,exports){
4777 var u = _dereq_('./util')
4779 var fill = u.zeroFill
4781 module.exports = function (Buffer) {
4783 //prototype class for hash functions
4784 function Hash (blockSize, finalSize) {
4785 this._block = new Buffer(blockSize) //new Uint32Array(blockSize/
4)
4786 this._finalSize = finalSize
4787 this._blockSize = blockSize
4792 Hash.prototype.init = function () {
4797 function lengthOf(data, enc) {
4798 if(enc == null) return data.byteLength || data.length
4799 if(enc == 'ascii' || enc == 'binary') return data.length
4800 if(enc == 'hex') return data.length/
2
4801 if(enc == 'base64') return data.length/
3
4804 Hash.prototype.update = function (data, enc) {
4805 var bl = this._blockSize
4807 //I'd rather do this with a streaming encoder, like the opposite of
4808 //http://nodejs.org/api/string_decoder.html
4810 if(!enc && 'string' === typeof data)
4817 if(enc === 'base64' || enc === 'utf8')
4818 data = new Buffer(data, enc), enc = null
4820 length = lengthOf(data, enc)
4822 length = data.byteLength || data.length
4824 var l = this._len += length
4825 var s = this._s = (this._s ||
0)
4827 var buffer = this._block
4829 var t = Math.min(length, f + bl)
4830 write(buffer, data, enc, s%bl, f, t)
4835 this._update(buffer)
4843 Hash.prototype.digest = function (enc) {
4844 var bl = this._blockSize
4845 var fl = this._finalSize
4846 var len = this._len*
8
4850 var bits = len % (bl*
8)
4852 //add end marker, so that appending
0's creats a different hash.
4853 x[this._len % bl] =
0x80
4854 fill(this._block, this._len % bl +
1)
4857 this._update(this._block)
4858 u.zeroFill(this._block,
0)
4861 //TODO: handle case where the bit length is
> Math.pow(
2,
29)
4862 x.writeInt32BE(len, fl +
4) //big endian
4864 var hash = this._update(this._block) || this._hash()
4865 if(enc == null) return hash
4866 return hash.toString(enc)
4869 Hash.prototype._update = function () {
4870 throw new Error('_update must be implemented by subclass')
4876 },{"./util":
26}],
23:[function(_dereq_,module,exports){
4877 var exports = module.exports = function (alg) {
4878 var Alg = exports[alg]
4879 if(!Alg) throw new Error(alg + ' is not supported (we accept pull requests)')
4883 var Buffer = _dereq_('buffer').Buffer
4884 var Hash = _dereq_('./hash')(Buffer)
4887 exports.sha1 = _dereq_('./sha1')(Buffer, Hash)
4888 exports.sha256 = _dereq_('./sha256')(Buffer, Hash)
4890 },{"./hash":
22,"./sha1":
24,"./sha256":
25,"buffer":
8}],
24:[function(_dereq_,module,exports){
4892 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
1, as defined
4894 * Version
2.1a Copyright Paul Johnston
2000 -
2002.
4895 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
4896 * Distributed under the BSD License
4897 * See http://pajhome.org.uk/crypt/md5 for details.
4899 module.exports = function (Buffer, Hash) {
4901 var inherits = _dereq_('util').inherits
4903 inherits(Sha1, Hash)
4914 var W = new Int32Array(
80)
4920 return POOL.pop().init()
4922 if(!(this instanceof Sha1)) return new Sha1()
4924 Hash.call(this,
16*
4,
14*
4)
4930 Sha1.prototype.init = function () {
4931 this._a =
0x67452301
4932 this._b =
0xefcdab89
4933 this._c =
0x98badcfe
4934 this._d =
0x10325476
4935 this._e =
0xc3d2e1f0
4937 Hash.prototype.init.call(this)
4941 Sha1.prototype._POOL = POOL
4943 // assume that array is a Uint32Array with length=
16,
4944 // and that if it is the last block, it already has the length and the
1 bit appended.
4947 var isDV = new Buffer(
1) instanceof DataView
4948 function readInt32BE (X, i) {
4950 ? X.getInt32(i, false)
4954 Sha1.prototype._update = function (array) {
4958 var a, b, c, d, e, _a, _b, _c, _d, _e
4968 for(var j =
0; j <
80; j++) {
4971 //? X.getInt32(j*
4, false)
4972 //? readInt32BE(X, j*
4) //*/ X.readInt32BE(j*
4) //*/
4973 ? X.readInt32BE(j*
4)
4974 : rol(w[j -
3] ^ w[j -
8] ^ w[j -
14] ^ w[j -
16],
1)
4978 add(rol(a,
5), sha1_ft(j, b, c, d)),
4979 add(add(e, W), sha1_kt(j))
4989 this._a = add(a, _a)
4990 this._b = add(b, _b)
4991 this._c = add(c, _c)
4992 this._d = add(d, _d)
4993 this._e = add(e, _e)
4996 Sha1.prototype._hash = function () {
4997 if(POOL.length <
100) POOL.push(this)
4998 var H = new Buffer(
20)
4999 //console.log(this._a|
0, this._b|
0, this._c|
0, this._d|
0, this._e|
0)
5000 H.writeInt32BE(this._a|
0, A)
5001 H.writeInt32BE(this._b|
0, B)
5002 H.writeInt32BE(this._c|
0, C)
5003 H.writeInt32BE(this._d|
0, D)
5004 H.writeInt32BE(this._e|
0, E)
5009 * Perform the appropriate triplet combination function for the current
5012 function sha1_ft(t, b, c, d) {
5013 if(t <
20) return (b & c) | ((~b) & d);
5014 if(t <
40) return b ^ c ^ d;
5015 if(t <
60) return (b & c) | (b & d) | (c & d);
5020 * Determine the appropriate additive constant for the current iteration
5022 function sha1_kt(t) {
5023 return (t <
20) ?
1518500249 : (t <
40) ?
1859775393 :
5024 (t <
60) ? -
1894007588 : -
899497514;
5028 * Add integers, wrapping at
2^
32. This uses
16-bit operations internally
5029 * to work around bugs in some JS interpreters.
5030 * //dominictarr: this is
10 years old, so maybe this can be dropped?)
5033 function add(x, y) {
5035 //lets see how this goes on testling.
5036 // var lsw = (x &
0xFFFF) + (y &
0xFFFF);
5037 // var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
5038 // return (msw <<
16) | (lsw &
0xFFFF);
5042 * Bitwise rotate a
32-bit number to the left.
5044 function rol(num, cnt) {
5045 return (num << cnt) | (num
>>> (
32 - cnt));
5051 },{"util":
14}],
25:[function(_dereq_,module,exports){
5054 * A JavaScript implementation of the Secure Hash Algorithm, SHA-
256, as defined
5056 * Version
2.2-beta Copyright Angel Marin, Paul Johnston
2000 -
2009.
5057 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
5061 var inherits = _dereq_('util').inherits
5064 var u = _dereq_('./util')
5066 module.exports = function (Buffer, Hash) {
5069 0x428A2F98,
0x71374491,
0xB5C0FBCF,
0xE9B5DBA5,
5070 0x3956C25B,
0x59F111F1,
0x923F82A4,
0xAB1C5ED5,
5071 0xD807AA98,
0x12835B01,
0x243185BE,
0x550C7DC3,
5072 0x72BE5D74,
0x80DEB1FE,
0x9BDC06A7,
0xC19BF174,
5073 0xE49B69C1,
0xEFBE4786,
0x0FC19DC6,
0x240CA1CC,
5074 0x2DE92C6F,
0x4A7484AA,
0x5CB0A9DC,
0x76F988DA,
5075 0x983E5152,
0xA831C66D,
0xB00327C8,
0xBF597FC7,
5076 0xC6E00BF3,
0xD5A79147,
0x06CA6351,
0x14292967,
5077 0x27B70A85,
0x2E1B2138,
0x4D2C6DFC,
0x53380D13,
5078 0x650A7354,
0x766A0ABB,
0x81C2C92E,
0x92722C85,
5079 0xA2BFE8A1,
0xA81A664B,
0xC24B8B70,
0xC76C51A3,
5080 0xD192E819,
0xD6990624,
0xF40E3585,
0x106AA070,
5081 0x19A4C116,
0x1E376C08,
0x2748774C,
0x34B0BCB5,
5082 0x391C0CB3,
0x4ED8AA4A,
0x5B9CCA4F,
0x682E6FF3,
5083 0x748F82EE,
0x78A5636F,
0x84C87814,
0x8CC70208,
5084 0x90BEFFFA,
0xA4506CEB,
0xBEF9A3F7,
0xC67178F2
5087 inherits(Sha256, Hash)
5088 var W = new Array(
64)
5091 // Closure compiler warning - this code lacks side effects - thus commented out
5092 // if(POOL.length) {
5093 // return POOL.shift().init()
5095 //this._data = new Buffer(
32)
5099 this._w = W //new Array(
64)
5101 Hash.call(this,
16*
4,
14*
4)
5104 Sha256.prototype.init = function () {
5106 this._a =
0x6a09e667|
0
5107 this._b =
0xbb67ae85|
0
5108 this._c =
0x3c6ef372|
0
5109 this._d =
0xa54ff53a|
0
5110 this._e =
0x510e527f|
0
5111 this._f =
0x9b05688c|
0
5112 this._g =
0x1f83d9ab|
0
5113 this._h =
0x5be0cd19|
0
5115 this._len = this._s =
0
5120 var safe_add = function(x, y) {
5121 var lsw = (x &
0xFFFF) + (y &
0xFFFF);
5122 var msw = (x
>> 16) + (y
>> 16) + (lsw
>> 16);
5123 return (msw <<
16) | (lsw &
0xFFFF);
5127 return (X
>>> n) | (X << (
32 - n));
5134 function Ch (x, y, z) {
5135 return ((x & y) ^ ((~x) & z));
5138 function Maj (x, y, z) {
5139 return ((x & y) ^ (x & z) ^ (y & z));
5142 function Sigma0256 (x) {
5143 return (S(x,
2) ^ S(x,
13) ^ S(x,
22));
5146 function Sigma1256 (x) {
5147 return (S(x,
6) ^ S(x,
11) ^ S(x,
25));
5150 function Gamma0256 (x) {
5151 return (S(x,
7) ^ S(x,
18) ^ R(x,
3));
5154 function Gamma1256 (x) {
5155 return (S(x,
17) ^ S(x,
19) ^ R(x,
10));
5158 Sha256.prototype._update = function(m) {
5161 var a, b, c, d, e, f, g, h
5173 for (var j =
0; j <
64; j++) {
5174 var w = W[j] = j <
16
5175 ? M.readInt32BE(j *
4)
5176 : Gamma1256(W[j -
2]) + W[j -
7] + Gamma0256(W[j -
15]) + W[j -
16]
5178 T1 = h + Sigma1256(e) + Ch(e, f, g) + K[j] + w
5180 T2 = Sigma0256(a) + Maj(a, b, c);
5181 h = g; g = f; f = e; e = d + T1; d = c; c = b; b = a; a = T1 + T2;
5184 this._a = (a + this._a) |
0
5185 this._b = (b + this._b) |
0
5186 this._c = (c + this._c) |
0
5187 this._d = (d + this._d) |
0
5188 this._e = (e + this._e) |
0
5189 this._f = (f + this._f) |
0
5190 this._g = (g + this._g) |
0
5191 this._h = (h + this._h) |
0
5195 Sha256.prototype._hash = function () {
5196 if(POOL.length <
10)
5199 var H = new Buffer(
32)
5201 H.writeInt32BE(this._a,
0)
5202 H.writeInt32BE(this._b,
4)
5203 H.writeInt32BE(this._c,
8)
5204 H.writeInt32BE(this._d,
12)
5205 H.writeInt32BE(this._e,
16)
5206 H.writeInt32BE(this._f,
20)
5207 H.writeInt32BE(this._g,
24)
5208 H.writeInt32BE(this._h,
28)
5217 },{"./util":
26,"util":
14}],
26:[function(_dereq_,module,exports){
5218 exports.write = write
5219 exports.zeroFill = zeroFill
5221 exports.toString = toString
5223 function write (buffer, string, enc, start, from, to, LE) {
5225 if(enc === 'ascii' || enc === 'binary') {
5226 for( var i =
0; i < l; i++) {
5227 buffer[start + i] = string.charCodeAt(i + from)
5230 else if(enc == null) {
5231 for( var i =
0; i < l; i++) {
5232 buffer[start + i] = string[i + from]
5235 else if(enc === 'hex') {
5236 for(var i =
0; i < l; i++) {
5238 buffer[start + i] = parseInt(string[j*
2] + string[(j*
2)+
1],
16)
5241 else if(enc === 'base64') {
5242 throw new Error('base64 encoding not yet supported')
5245 throw new Error(enc +' encoding not yet supported')
5248 //always fill to the end!
5249 function zeroFill(buf, from) {
5250 for(var i = from; i < buf.length; i++)
5255 },{}],
27:[function(_dereq_,module,exports){
5257 // JavaScript PBKDF2 Implementation
5258 // Based on http://git.io/qsv2zw
5259 // Licensed under LGPL v3
5260 // Copyright (c)
2013 jduncanator
5263 var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(
0)
5265 module.exports = function (createHmac, exports) {
5266 exports = exports || {}
5268 exports.pbkdf2 = function(password, salt, iterations, keylen, cb) {
5269 if('function' !== typeof cb)
5270 throw new Error('No callback provided to pbkdf2');
5271 setTimeout(function () {
5272 cb(null, exports.pbkdf2Sync(password, salt, iterations, keylen))
5276 exports.pbkdf2Sync = function(key, salt, iterations, keylen) {
5277 if('number' !== typeof iterations)
5278 throw new TypeError('Iterations not a number')
5280 throw new TypeError('Bad iterations')
5281 if('number' !== typeof keylen)
5282 throw new TypeError('Key length not a number')
5284 throw new TypeError('Bad key length')
5286 //stretch key to the correct length that hmac wants it,
5287 //otherwise this will happen every time hmac is called
5288 //twice per iteration.
5289 var key = !Buffer.isBuffer(key) ? new Buffer(key) : key
5291 if(key.length
> blocksize) {
5292 key = createHash(alg).update(key).digest()
5293 } else if(key.length < blocksize) {
5294 key = Buffer.concat([key, zeroBuffer], blocksize)
5298 var cplen, p =
0, i =
1, itmp = new Buffer(
4), digtmp;
5299 var out = new Buffer(keylen);
5307 /* We are unlikely to ever use more than
256 blocks (
5120 bits!)
5308 * but just in case...
5310 itmp[
0] = (i
>> 24) &
0xff;
5311 itmp[
1] = (i
>> 16) &
0xff;
5312 itmp[
2] = (i
>> 8) &
0xff;
5315 HMAC = createHmac('sha1', key);
5318 digtmp = HMAC.digest();
5319 digtmp.copy(out, p,
0, cplen);
5321 for(var j =
1; j < iterations; j++) {
5322 HMAC = createHmac('sha1', key);
5323 HMAC.update(digtmp);
5324 digtmp = HMAC.digest();
5325 for(var k =
0; k < cplen; k++) {
5326 out[k] ^= digtmp[k];
5340 }).call(this,_dereq_(
"buffer").Buffer)
5341 },{
"buffer":
8}],
28:[function(_dereq_,module,exports){
5343 // Original code adapted from Robert Kieffer.
5344 // details at https://github.com/broofa/node-uuid
5350 var mathRNG, whatwgRNG;
5352 // NOTE: Math.random() does not guarantee
"cryptographic quality"
5353 mathRNG = function(size) {
5354 var bytes = new Buffer(size);
5357 for (var i =
0, r; i < size; i++) {
5358 if ((i &
0x03) ==
0) r = Math.random() *
0x100000000;
5359 bytes[i] = r
>>> ((i &
0x03) <<
3) &
0xff;
5365 if (_global.crypto && crypto.getRandomValues) {
5366 whatwgRNG = function(size) {
5367 var bytes = new Buffer(size); //in browserify, this is an extended Uint8Array
5368 crypto.getRandomValues(bytes);
5373 module.exports = whatwgRNG || mathRNG;
5377 }).call(this,_dereq_("buffer").Buffer)
5378 },{"buffer":
8}],
29:[function(_dereq_,module,exports){
5379 ;(function (root, factory, undef) {
5380 if (typeof exports === "object") {
5382 module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
5384 else if (typeof define === "function" && define.amd) {
5386 define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
5390 factory(root.CryptoJS);
5392 }(this, function (CryptoJS) {
5398 var BlockCipher = C_lib.BlockCipher;
5399 var C_algo = C.algo;
5408 var INV_SUB_MIX_0 = [];
5409 var INV_SUB_MIX_1 = [];
5410 var INV_SUB_MIX_2 = [];
5411 var INV_SUB_MIX_3 = [];
5413 // Compute lookup tables
5415 // Compute double table
5417 for (var i =
0; i <
256; i++) {
5421 d[i] = (i <<
1) ^
0x11b;
5428 for (var i =
0; i <
256; i++) {
5430 var sx = xi ^ (xi <<
1) ^ (xi <<
2) ^ (xi <<
3) ^ (xi <<
4);
5431 sx = (sx
>>> 8) ^ (sx &
0xff) ^
0x63;
5435 // Compute multiplication
5440 // Compute sub bytes, mix columns tables
5441 var t = (d[sx] *
0x101) ^ (sx *
0x1010100);
5442 SUB_MIX_0[x] = (t <<
24) | (t
>>> 8);
5443 SUB_MIX_1[x] = (t <<
16) | (t
>>> 16);
5444 SUB_MIX_2[x] = (t <<
8) | (t
>>> 24);
5447 // Compute inv sub bytes, inv mix columns tables
5448 var t = (x8 *
0x1010101) ^ (x4 *
0x10001) ^ (x2 *
0x101) ^ (x *
0x1010100);
5449 INV_SUB_MIX_0[sx] = (t <<
24) | (t
>>> 8);
5450 INV_SUB_MIX_1[sx] = (t <<
16) | (t
>>> 16);
5451 INV_SUB_MIX_2[sx] = (t <<
8) | (t
>>> 24);
5452 INV_SUB_MIX_3[sx] = t;
5454 // Compute next counter
5458 x = x2 ^ d[d[d[x8 ^ x2]]];
5464 // Precomputed Rcon lookup
5465 var RCON = [
0x00,
0x01,
0x02,
0x04,
0x08,
0x10,
0x20,
0x40,
0x80,
0x1b,
0x36];
5468 * AES block cipher algorithm.
5470 var AES = C_algo.AES = BlockCipher.extend({
5471 _doReset: function () {
5473 var key = this._key;
5474 var keyWords = key.words;
5475 var keySize = key.sigBytes /
4;
5477 // Compute number of rounds
5478 var nRounds = this._nRounds = keySize +
6
5480 // Compute number of key schedule rows
5481 var ksRows = (nRounds +
1) *
4;
5483 // Compute key schedule
5484 var keySchedule = this._keySchedule = [];
5485 for (var ksRow =
0; ksRow < ksRows; ksRow++) {
5486 if (ksRow < keySize) {
5487 keySchedule[ksRow] = keyWords[ksRow];
5489 var t = keySchedule[ksRow -
1];
5491 if (!(ksRow % keySize)) {
5493 t = (t <<
8) | (t
>>> 24);
5496 t = (SBOX[t
>>> 24] <<
24) | (SBOX[(t
>>> 16) &
0xff] <<
16) | (SBOX[(t
>>> 8) &
0xff] <<
8) | SBOX[t &
0xff];
5499 t ^= RCON[(ksRow / keySize) |
0] <<
24;
5500 } else if (keySize
> 6 && ksRow % keySize ==
4) {
5502 t = (SBOX[t
>>> 24] <<
24) | (SBOX[(t
>>> 16) &
0xff] <<
16) | (SBOX[(t
>>> 8) &
0xff] <<
8) | SBOX[t &
0xff];
5505 keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
5509 // Compute inv key schedule
5510 var invKeySchedule = this._invKeySchedule = [];
5511 for (var invKsRow =
0; invKsRow < ksRows; invKsRow++) {
5512 var ksRow = ksRows - invKsRow;
5515 var t = keySchedule[ksRow];
5517 var t = keySchedule[ksRow -
4];
5520 if (invKsRow <
4 || ksRow <=
4) {
5521 invKeySchedule[invKsRow] = t;
5523 invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t
>>> 24]] ^ INV_SUB_MIX_1[SBOX[(t
>>> 16) &
0xff]] ^
5524 INV_SUB_MIX_2[SBOX[(t
>>> 8) &
0xff]] ^ INV_SUB_MIX_3[SBOX[t &
0xff]];
5529 encryptBlock: function (M, offset) {
5530 this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
5533 decryptBlock: function (M, offset) {
5534 // Swap
2nd and
4th rows
5535 var t = M[offset +
1];
5536 M[offset +
1] = M[offset +
3];
5539 this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
5541 // Inv swap
2nd and
4th rows
5542 var t = M[offset +
1];
5543 M[offset +
1] = M[offset +
3];
5547 _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {
5549 var nRounds = this._nRounds;
5551 // Get input, add round key
5552 var s0 = M[offset] ^ keySchedule[
0];
5553 var s1 = M[offset +
1] ^ keySchedule[
1];
5554 var s2 = M[offset +
2] ^ keySchedule[
2];
5555 var s3 = M[offset +
3] ^ keySchedule[
3];
5557 // Key schedule row counter
5561 for (var round =
1; round < nRounds; round++) {
5562 // Shift rows, sub bytes, mix columns, add round key
5563 var t0 = SUB_MIX_0[s0
>>> 24] ^ SUB_MIX_1[(s1
>>> 16) &
0xff] ^ SUB_MIX_2[(s2
>>> 8) &
0xff] ^ SUB_MIX_3[s3 &
0xff] ^ keySchedule[ksRow++];
5564 var t1 = SUB_MIX_0[s1
>>> 24] ^ SUB_MIX_1[(s2
>>> 16) &
0xff] ^ SUB_MIX_2[(s3
>>> 8) &
0xff] ^ SUB_MIX_3[s0 &
0xff] ^ keySchedule[ksRow++];
5565 var t2 = SUB_MIX_0[s2
>>> 24] ^ SUB_MIX_1[(s3
>>> 16) &
0xff] ^ SUB_MIX_2[(s0
>>> 8) &
0xff] ^ SUB_MIX_3[s1 &
0xff] ^ keySchedule[ksRow++];
5566 var t3 = SUB_MIX_0[s3
>>> 24] ^ SUB_MIX_1[(s0
>>> 16) &
0xff] ^ SUB_MIX_2[(s1
>>> 8) &
0xff] ^ SUB_MIX_3[s2 &
0xff] ^ keySchedule[ksRow++];
5575 // Shift rows, sub bytes, add round key
5576 var t0 = ((SBOX[s0
>>> 24] <<
24) | (SBOX[(s1
>>> 16) &
0xff] <<
16) | (SBOX[(s2
>>> 8) &
0xff] <<
8) | SBOX[s3 &
0xff]) ^ keySchedule[ksRow++];
5577 var t1 = ((SBOX[s1
>>> 24] <<
24) | (SBOX[(s2
>>> 16) &
0xff] <<
16) | (SBOX[(s3
>>> 8) &
0xff] <<
8) | SBOX[s0 &
0xff]) ^ keySchedule[ksRow++];
5578 var t2 = ((SBOX[s2
>>> 24] <<
24) | (SBOX[(s3
>>> 16) &
0xff] <<
16) | (SBOX[(s0
>>> 8) &
0xff] <<
8) | SBOX[s1 &
0xff]) ^ keySchedule[ksRow++];
5579 var t3 = ((SBOX[s3
>>> 24] <<
24) | (SBOX[(s0
>>> 16) &
0xff] <<
16) | (SBOX[(s1
>>> 8) &
0xff] <<
8) | SBOX[s2 &
0xff]) ^ keySchedule[ksRow++];
5592 * Shortcut functions to the cipher's object interface.
5596 * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);
5597 * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);
5599 C.AES = BlockCipher._createHelper(AES);
5603 return CryptoJS.AES;
5606 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
30:[function(_dereq_,module,exports){
5607 ;(function (root, factory) {
5608 if (typeof exports ===
"object") {
5610 module.exports = exports = factory(_dereq_(
"./core"));
5612 else if (typeof define ===
"function" && define.amd) {
5614 define([
"./core"], factory);
5618 factory(root.CryptoJS);
5620 }(this, function (CryptoJS) {
5623 * Cipher core components.
5625 CryptoJS.lib.Cipher || (function (undefined) {
5629 var Base = C_lib.Base;
5630 var WordArray = C_lib.WordArray;
5631 var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
5633 var Utf8 = C_enc.Utf8;
5634 var Base64 = C_enc.Base64;
5635 var C_algo = C.algo;
5636 var EvpKDF = C_algo.EvpKDF;
5639 * Abstract base cipher template.
5641 * @property {number} keySize This cipher's key size. Default:
4 (
128 bits)
5642 * @property {number} ivSize This cipher's IV size. Default:
4 (
128 bits)
5643 * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.
5644 * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.
5646 var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
5648 * Configuration options.
5650 * @property {WordArray} iv The IV to use for this operation.
5655 * Creates this cipher in encryption mode.
5657 * @param {WordArray} key The key.
5658 * @param {Object} cfg (Optional) The configuration options to use for this operation.
5660 * @return {Cipher} A cipher instance.
5666 * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
5668 createEncryptor: function (key, cfg) {
5669 return this.create(this._ENC_XFORM_MODE, key, cfg);
5673 * Creates this cipher in decryption mode.
5675 * @param {WordArray} key The key.
5676 * @param {Object} cfg (Optional) The configuration options to use for this operation.
5678 * @return {Cipher} A cipher instance.
5684 * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
5686 createDecryptor: function (key, cfg) {
5687 return this.create(this._DEC_XFORM_MODE, key, cfg);
5691 * Initializes a newly created cipher.
5693 * @param {number} xformMode Either the encryption or decryption transormation mode constant.
5694 * @param {WordArray} key The key.
5695 * @param {Object} cfg (Optional) The configuration options to use for this operation.
5699 * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
5701 init: function (xformMode, key, cfg) {
5702 // Apply config defaults
5703 this.cfg = this.cfg.extend(cfg);
5705 // Store transform mode and key
5706 this._xformMode = xformMode;
5709 // Set initial values
5714 * Resets this cipher to its initial state.
5720 reset: function () {
5721 // Reset data buffer
5722 BufferedBlockAlgorithm.reset.call(this);
5724 // Perform concrete-cipher logic
5729 * Adds data to be encrypted or decrypted.
5731 * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
5733 * @return {WordArray} The data after processing.
5737 * var encrypted = cipher.process('data');
5738 * var encrypted = cipher.process(wordArray);
5740 process: function (dataUpdate) {
5742 this._append(dataUpdate);
5744 // Process available blocks
5745 return this._process();
5749 * Finalizes the encryption or decryption process.
5750 * Note that the finalize operation is effectively a destructive, read-once operation.
5752 * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
5754 * @return {WordArray} The data after final processing.
5758 * var encrypted = cipher.finalize();
5759 * var encrypted = cipher.finalize('data');
5760 * var encrypted = cipher.finalize(wordArray);
5762 finalize: function (dataUpdate) {
5763 // Final data update
5765 this._append(dataUpdate);
5768 // Perform concrete-cipher logic
5769 var finalProcessedData = this._doFinalize();
5771 return finalProcessedData;
5783 * Creates shortcut functions to a cipher's object interface.
5785 * @param {Cipher} cipher The cipher to create a helper for.
5787 * @return {Object} An object with encrypt and decrypt shortcut functions.
5793 * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
5795 _createHelper: (function () {
5796 function selectCipherStrategy(key) {
5797 if (typeof key == 'string') {
5798 return PasswordBasedCipher;
5800 return SerializableCipher;
5804 return function (cipher) {
5806 encrypt: function (message, key, cfg) {
5807 return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
5810 decrypt: function (ciphertext, key, cfg) {
5811 return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
5819 * Abstract base stream cipher template.
5821 * @property {number} blockSize The number of
32-bit words this cipher operates on. Default:
1 (
32 bits)
5823 var StreamCipher = C_lib.StreamCipher = Cipher.extend({
5824 _doFinalize: function () {
5825 // Process partial blocks
5826 var finalProcessedBlocks = this._process(!!'flush');
5828 return finalProcessedBlocks;
5837 var C_mode = C.mode = {};
5840 * Abstract base block cipher mode template.
5842 var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
5844 * Creates this mode for encryption.
5846 * @param {Cipher} cipher A block cipher instance.
5847 * @param {Array} iv The IV words.
5853 * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
5855 createEncryptor: function (cipher, iv) {
5856 return this.Encryptor.create(cipher, iv);
5860 * Creates this mode for decryption.
5862 * @param {Cipher} cipher A block cipher instance.
5863 * @param {Array} iv The IV words.
5869 * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
5871 createDecryptor: function (cipher, iv) {
5872 return this.Decryptor.create(cipher, iv);
5876 * Initializes a newly created mode.
5878 * @param {Cipher} cipher A block cipher instance.
5879 * @param {Array} iv The IV words.
5883 * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
5885 init: function (cipher, iv) {
5886 this._cipher = cipher;
5892 * Cipher Block Chaining mode.
5894 var CBC = C_mode.CBC = (function () {
5896 * Abstract base CBC mode.
5898 var CBC = BlockCipherMode.extend();
5903 CBC.Encryptor = CBC.extend({
5905 * Processes the data block at offset.
5907 * @param {Array} words The data words to operate on.
5908 * @param {number} offset The offset where the block starts.
5912 * mode.processBlock(data.words, offset);
5914 processBlock: function (words, offset) {
5916 var cipher = this._cipher;
5917 var blockSize = cipher.blockSize;
5920 xorBlock.call(this, words, offset, blockSize);
5921 cipher.encryptBlock(words, offset);
5923 // Remember this block to use with next block
5924 this._prevBlock = words.slice(offset, offset + blockSize);
5931 CBC.Decryptor = CBC.extend({
5933 * Processes the data block at offset.
5935 * @param {Array} words The data words to operate on.
5936 * @param {number} offset The offset where the block starts.
5940 * mode.processBlock(data.words, offset);
5942 processBlock: function (words, offset) {
5944 var cipher = this._cipher;
5945 var blockSize = cipher.blockSize;
5947 // Remember this block to use with next block
5948 var thisBlock = words.slice(offset, offset + blockSize);
5951 cipher.decryptBlock(words, offset);
5952 xorBlock.call(this, words, offset, blockSize);
5954 // This block becomes the previous block
5955 this._prevBlock = thisBlock;
5959 function xorBlock(words, offset, blockSize) {
5963 // Choose mixing block
5967 // Remove IV for subsequent blocks
5968 this._iv = undefined;
5970 var block = this._prevBlock;
5974 for (var i =
0; i < blockSize; i++) {
5975 words[offset + i] ^= block[i];
5983 * Padding namespace.
5985 var C_pad = C.pad = {};
5988 * PKCS #
5/
7 padding strategy.
5990 var Pkcs7 = C_pad.Pkcs7 = {
5992 * Pads data using the algorithm defined in PKCS #
5/
7.
5994 * @param {WordArray} data The data to pad.
5995 * @param {number} blockSize The multiple that the data should be padded to.
6001 * CryptoJS.pad.Pkcs7.pad(wordArray,
4);
6003 pad: function (data, blockSize) {
6005 var blockSizeBytes = blockSize *
4;
6007 // Count padding bytes
6008 var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
6010 // Create padding word
6011 var paddingWord = (nPaddingBytes <<
24) | (nPaddingBytes <<
16) | (nPaddingBytes <<
8) | nPaddingBytes;
6014 var paddingWords = [];
6015 for (var i =
0; i < nPaddingBytes; i +=
4) {
6016 paddingWords.push(paddingWord);
6018 var padding = WordArray.create(paddingWords, nPaddingBytes);
6021 data.concat(padding);
6025 * Unpads data that had been padded using the algorithm defined in PKCS #
5/
7.
6027 * @param {WordArray} data The data to unpad.
6033 * CryptoJS.pad.Pkcs7.unpad(wordArray);
6035 unpad: function (data) {
6036 // Get number of padding bytes from last byte
6037 var nPaddingBytes = data.words[(data.sigBytes -
1)
>>> 2] &
0xff;
6040 data.sigBytes -= nPaddingBytes;
6045 * Abstract base block cipher template.
6047 * @property {number} blockSize The number of
32-bit words this cipher operates on. Default:
4 (
128 bits)
6049 var BlockCipher = C_lib.BlockCipher = Cipher.extend({
6051 * Configuration options.
6053 * @property {Mode} mode The block mode to use. Default: CBC
6054 * @property {Padding} padding The padding strategy to use. Default: Pkcs7
6056 cfg: Cipher.cfg.extend({
6061 reset: function () {
6063 Cipher.reset.call(this);
6068 var mode = cfg.mode;
6071 if (this._xformMode == this._ENC_XFORM_MODE) {
6072 var modeCreator = mode.createEncryptor;
6073 } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
6074 var modeCreator = mode.createDecryptor;
6076 // Keep at least one block in the buffer for unpadding
6077 this._minBufferSize =
1;
6079 this._mode = modeCreator.call(mode, this, iv && iv.words);
6082 _doProcessBlock: function (words, offset) {
6083 this._mode.processBlock(words, offset);
6086 _doFinalize: function () {
6088 var padding = this.cfg.padding;
6091 if (this._xformMode == this._ENC_XFORM_MODE) {
6093 padding.pad(this._data, this.blockSize);
6095 // Process final blocks
6096 var finalProcessedBlocks = this._process(!!'flush');
6097 } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {
6098 // Process final blocks
6099 var finalProcessedBlocks = this._process(!!'flush');
6102 padding.unpad(finalProcessedBlocks);
6105 return finalProcessedBlocks;
6112 * A collection of cipher parameters.
6114 * @property {WordArray} ciphertext The raw ciphertext.
6115 * @property {WordArray} key The key to this ciphertext.
6116 * @property {WordArray} iv The IV used in the ciphering operation.
6117 * @property {WordArray} salt The salt used with a key derivation function.
6118 * @property {Cipher} algorithm The cipher algorithm.
6119 * @property {Mode} mode The block mode used in the ciphering operation.
6120 * @property {Padding} padding The padding scheme used in the ciphering operation.
6121 * @property {number} blockSize The block size of the cipher.
6122 * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.
6124 var CipherParams = C_lib.CipherParams = Base.extend({
6126 * Initializes a newly created cipher params object.
6128 * @param {Object} cipherParams An object with any of the possible cipher parameters.
6132 * var cipherParams = CryptoJS.lib.CipherParams.create({
6133 * ciphertext: ciphertextWordArray,
6134 * key: keyWordArray,
6136 * salt: saltWordArray,
6137 * algorithm: CryptoJS.algo.AES,
6138 * mode: CryptoJS.mode.CBC,
6139 * padding: CryptoJS.pad.PKCS7,
6141 * formatter: CryptoJS.format.OpenSSL
6144 init: function (cipherParams) {
6145 this.mixIn(cipherParams);
6149 * Converts this cipher params object to a string.
6151 * @param {Format} formatter (Optional) The formatting strategy to use.
6153 * @return {string} The stringified cipher params.
6155 * @throws Error If neither the formatter nor the default formatter is set.
6159 * var string = cipherParams + '';
6160 * var string = cipherParams.toString();
6161 * var string = cipherParams.toString(CryptoJS.format.OpenSSL);
6163 toString: function (formatter) {
6164 return (formatter || this.formatter).stringify(this);
6171 var C_format = C.format = {};
6174 * OpenSSL formatting strategy.
6176 var OpenSSLFormatter = C_format.OpenSSL = {
6178 * Converts a cipher params object to an OpenSSL-compatible string.
6180 * @param {CipherParams} cipherParams The cipher params object.
6182 * @return {string} The OpenSSL-compatible string.
6188 * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
6190 stringify: function (cipherParams) {
6192 var ciphertext = cipherParams.ciphertext;
6193 var salt = cipherParams.salt;
6197 var wordArray = WordArray.create([
0x53616c74,
0x65645f5f]).concat(salt).concat(ciphertext);
6199 var wordArray = ciphertext;
6202 return wordArray.toString(Base64);
6206 * Converts an OpenSSL-compatible string to a cipher params object.
6208 * @param {string} openSSLStr The OpenSSL-compatible string.
6210 * @return {CipherParams} The cipher params object.
6216 * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
6218 parse: function (openSSLStr) {
6220 var ciphertext = Base64.parse(openSSLStr);
6223 var ciphertextWords = ciphertext.words;
6226 if (ciphertextWords[
0] ==
0x53616c74 && ciphertextWords[
1] ==
0x65645f5f) {
6228 var salt = WordArray.create(ciphertextWords.slice(
2,
4));
6230 // Remove salt from ciphertext
6231 ciphertextWords.splice(
0,
4);
6232 ciphertext.sigBytes -=
16;
6235 return CipherParams.create({ ciphertext: ciphertext, salt: salt });
6240 * A cipher wrapper that returns ciphertext as a serializable cipher params object.
6242 var SerializableCipher = C_lib.SerializableCipher = Base.extend({
6244 * Configuration options.
6246 * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
6249 format: OpenSSLFormatter
6253 * Encrypts a message.
6255 * @param {Cipher} cipher The cipher algorithm to use.
6256 * @param {WordArray|string} message The message to encrypt.
6257 * @param {WordArray} key The key.
6258 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6260 * @return {CipherParams} A cipher params object.
6266 * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
6267 * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
6268 * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
6270 encrypt: function (cipher, message, key, cfg) {
6271 // Apply config defaults
6272 cfg = this.cfg.extend(cfg);
6275 var encryptor = cipher.createEncryptor(key, cfg);
6276 var ciphertext = encryptor.finalize(message);
6279 var cipherCfg = encryptor.cfg;
6281 // Create and return serializable cipher params
6282 return CipherParams.create({
6283 ciphertext: ciphertext,
6287 mode: cipherCfg.mode,
6288 padding: cipherCfg.padding,
6289 blockSize: cipher.blockSize,
6290 formatter: cfg.format
6295 * Decrypts serialized ciphertext.
6297 * @param {Cipher} cipher The cipher algorithm to use.
6298 * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
6299 * @param {WordArray} key The key.
6300 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6302 * @return {WordArray} The plaintext.
6308 * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
6309 * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
6311 decrypt: function (cipher, ciphertext, key, cfg) {
6312 // Apply config defaults
6313 cfg = this.cfg.extend(cfg);
6315 // Convert string to CipherParams
6316 ciphertext = this._parse(ciphertext, cfg.format);
6319 var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
6325 * Converts serialized ciphertext to CipherParams,
6326 * else assumed CipherParams already and returns ciphertext unchanged.
6328 * @param {CipherParams|string} ciphertext The ciphertext.
6329 * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
6331 * @return {CipherParams} The unserialized ciphertext.
6337 * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
6339 _parse: function (ciphertext, format) {
6340 if (typeof ciphertext == 'string') {
6341 return format.parse(ciphertext, this);
6349 * Key derivation function namespace.
6351 var C_kdf = C.kdf = {};
6354 * OpenSSL key derivation function.
6356 var OpenSSLKdf = C_kdf.OpenSSL = {
6358 * Derives a key and IV from a password.
6360 * @param {string} password The password to derive from.
6361 * @param {number} keySize The size in words of the key to generate.
6362 * @param {number} ivSize The size in words of the IV to generate.
6363 * @param {WordArray|string} salt (Optional) A
64-bit salt to use. If omitted, a salt will be generated randomly.
6365 * @return {CipherParams} A cipher params object with the key, IV, and salt.
6371 * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password',
256/
32,
128/
32);
6372 * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password',
256/
32,
128/
32, 'saltsalt');
6374 execute: function (password, keySize, ivSize, salt) {
6375 // Generate random salt
6377 salt = WordArray.random(
64/
8);
6380 // Derive key and IV
6381 var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
6383 // Separate key and IV
6384 var iv = WordArray.create(key.words.slice(keySize), ivSize *
4);
6385 key.sigBytes = keySize *
4;
6388 return CipherParams.create({ key: key, iv: iv, salt: salt });
6393 * A serializable cipher wrapper that derives the key from a password,
6394 * and returns ciphertext as a serializable cipher params object.
6396 var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
6398 * Configuration options.
6400 * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
6402 cfg: SerializableCipher.cfg.extend({
6407 * Encrypts a message using a password.
6409 * @param {Cipher} cipher The cipher algorithm to use.
6410 * @param {WordArray|string} message The message to encrypt.
6411 * @param {string} password The password.
6412 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6414 * @return {CipherParams} A cipher params object.
6420 * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
6421 * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
6423 encrypt: function (cipher, message, password, cfg) {
6424 // Apply config defaults
6425 cfg = this.cfg.extend(cfg);
6427 // Derive key and other params
6428 var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);
6431 cfg.iv = derivedParams.iv;
6434 var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
6436 // Mix in derived params
6437 ciphertext.mixIn(derivedParams);
6443 * Decrypts serialized ciphertext using a password.
6445 * @param {Cipher} cipher The cipher algorithm to use.
6446 * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
6447 * @param {string} password The password.
6448 * @param {Object} cfg (Optional) The configuration options to use for this operation.
6450 * @return {WordArray} The plaintext.
6456 * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
6457 * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
6459 decrypt: function (cipher, ciphertext, password, cfg) {
6460 // Apply config defaults
6461 cfg = this.cfg.extend(cfg);
6463 // Convert string to CipherParams
6464 ciphertext = this._parse(ciphertext, cfg.format);
6466 // Derive key and other params
6467 var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);
6470 cfg.iv = derivedParams.iv;
6473 var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
6482 },{
"./core":
31}],
31:[function(_dereq_,module,exports){
6483 ;(function (root, factory) {
6484 if (typeof exports ===
"object") {
6486 module.exports = exports = factory();
6488 else if (typeof define ===
"function" && define.amd) {
6490 define([], factory);
6494 root.CryptoJS = factory();
6496 }(this, function () {
6499 * CryptoJS core components.
6501 var CryptoJS = CryptoJS || (function (Math, undefined) {
6503 * CryptoJS namespace.
6508 * Library namespace.
6510 var C_lib = C.lib = {};
6513 * Base object for prototypal inheritance.
6515 var Base = C_lib.Base = (function () {
6520 * Creates a new object that inherits from this object.
6522 * @param {Object} overrides Properties to copy into the new object.
6524 * @return {Object} The new object.
6530 * var MyType = CryptoJS.lib.Base.extend({
6533 * method: function () {
6537 extend: function (overrides) {
6540 var subtype = new F();
6544 subtype.mixIn(overrides);
6547 // Create default initializer
6548 if (!subtype.hasOwnProperty('init')) {
6549 subtype.init = function () {
6550 subtype.$super.init.apply(this, arguments);
6554 // Initializer's prototype is the subtype object
6555 subtype.init.prototype = subtype;
6557 // Reference supertype
6558 subtype.$super = this;
6564 * Extends this object and runs the init method.
6565 * Arguments to create() will be passed to init().
6567 * @return {Object} The new object.
6573 * var instance = MyType.create();
6575 create: function () {
6576 var instance = this.extend();
6577 instance.init.apply(instance, arguments);
6583 * Initializes a newly created object.
6584 * Override this method to add some logic when your objects are created.
6588 * var MyType = CryptoJS.lib.Base.extend({
6589 * init: function () {
6598 * Copies properties into this object.
6600 * @param {Object} properties The properties to mix in.
6608 mixIn: function (properties) {
6609 for (var propertyName in properties) {
6610 if (properties.hasOwnProperty(propertyName)) {
6611 this[propertyName] = properties[propertyName];
6615 // IE won't copy toString using the loop above
6616 if (properties.hasOwnProperty('toString')) {
6617 this.toString = properties.toString;
6622 * Creates a copy of this object.
6624 * @return {Object} The clone.
6628 * var clone = instance.clone();
6630 clone: function () {
6631 return this.init.prototype.extend(this);
6637 * An array of
32-bit words.
6639 * @property {Array} words The array of
32-bit words.
6640 * @property {number} sigBytes The number of significant bytes in this word array.
6642 var WordArray = C_lib.WordArray = Base.extend({
6644 * Initializes a newly created word array.
6646 * @param {Array} words (Optional) An array of
32-bit words.
6647 * @param {number} sigBytes (Optional) The number of significant bytes in the words.
6651 * var wordArray = CryptoJS.lib.WordArray.create();
6652 * var wordArray = CryptoJS.lib.WordArray.create([
0x00010203,
0x04050607]);
6653 * var wordArray = CryptoJS.lib.WordArray.create([
0x00010203,
0x04050607],
6);
6655 init: function (words, sigBytes) {
6656 words = this.words = words || [];
6658 if (sigBytes != undefined) {
6659 this.sigBytes = sigBytes;
6661 this.sigBytes = words.length *
4;
6666 * Converts this word array to a string.
6668 * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
6670 * @return {string} The stringified word array.
6674 * var string = wordArray + '';
6675 * var string = wordArray.toString();
6676 * var string = wordArray.toString(CryptoJS.enc.Utf8);
6678 toString: function (encoder) {
6679 return (encoder || Hex).stringify(this);
6683 * Concatenates a word array to this word array.
6685 * @param {WordArray} wordArray The word array to append.
6687 * @return {WordArray} This word array.
6691 * wordArray1.concat(wordArray2);
6693 concat: function (wordArray) {
6695 var thisWords = this.words;
6696 var thatWords = wordArray.words;
6697 var thisSigBytes = this.sigBytes;
6698 var thatSigBytes = wordArray.sigBytes;
6700 // Clamp excess bits
6704 if (thisSigBytes %
4) {
6705 // Copy one byte at a time
6706 for (var i =
0; i < thatSigBytes; i++) {
6707 var thatByte = (thatWords[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
6708 thisWords[(thisSigBytes + i)
>>> 2] |= thatByte << (
24 - ((thisSigBytes + i) %
4) *
8);
6710 } else if (thatWords.length
> 0xffff) {
6711 // Copy one word at a time
6712 for (var i =
0; i < thatSigBytes; i +=
4) {
6713 thisWords[(thisSigBytes + i)
>>> 2] = thatWords[i
>>> 2];
6716 // Copy all words at once
6717 thisWords.push.apply(thisWords, thatWords);
6719 this.sigBytes += thatSigBytes;
6726 * Removes insignificant bits.
6730 * wordArray.clamp();
6732 clamp: function () {
6734 var words = this.words;
6735 var sigBytes = this.sigBytes;
6738 words[sigBytes
>>> 2] &=
0xffffffff << (
32 - (sigBytes %
4) *
8);
6739 words.length = Math.ceil(sigBytes /
4);
6743 * Creates a copy of this word array.
6745 * @return {WordArray} The clone.
6749 * var clone = wordArray.clone();
6751 clone: function () {
6752 var clone = Base.clone.call(this);
6753 clone.words = this.words.slice(
0);
6759 * Creates a word array filled with random bytes.
6761 * @param {number} nBytes The number of random bytes to generate.
6763 * @return {WordArray} The random word array.
6769 * var wordArray = CryptoJS.lib.WordArray.random(
16);
6771 random: function (nBytes) {
6773 for (var i =
0; i < nBytes; i +=
4) {
6774 words.push((Math.random() *
0x100000000) |
0);
6777 return new WordArray.init(words, nBytes);
6782 * Encoder namespace.
6784 var C_enc = C.enc = {};
6787 * Hex encoding strategy.
6789 var Hex = C_enc.Hex = {
6791 * Converts a word array to a hex string.
6793 * @param {WordArray} wordArray The word array.
6795 * @return {string} The hex string.
6801 * var hexString = CryptoJS.enc.Hex.stringify(wordArray);
6803 stringify: function (wordArray) {
6805 var words = wordArray.words;
6806 var sigBytes = wordArray.sigBytes;
6810 for (var i =
0; i < sigBytes; i++) {
6811 var bite = (words[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
6812 hexChars.push((bite
>>> 4).toString(
16));
6813 hexChars.push((bite &
0x0f).toString(
16));
6816 return hexChars.join('');
6820 * Converts a hex string to a word array.
6822 * @param {string} hexStr The hex string.
6824 * @return {WordArray} The word array.
6830 * var wordArray = CryptoJS.enc.Hex.parse(hexString);
6832 parse: function (hexStr) {
6834 var hexStrLength = hexStr.length;
6838 for (var i =
0; i < hexStrLength; i +=
2) {
6839 words[i
>>> 3] |= parseInt(hexStr.substr(i,
2),
16) << (
24 - (i %
8) *
4);
6842 return new WordArray.init(words, hexStrLength /
2);
6847 * Latin1 encoding strategy.
6849 var Latin1 = C_enc.Latin1 = {
6851 * Converts a word array to a Latin1 string.
6853 * @param {WordArray} wordArray The word array.
6855 * @return {string} The Latin1 string.
6861 * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
6863 stringify: function (wordArray) {
6865 var words = wordArray.words;
6866 var sigBytes = wordArray.sigBytes;
6869 var latin1Chars = [];
6870 for (var i =
0; i < sigBytes; i++) {
6871 var bite = (words[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
6872 latin1Chars.push(String.fromCharCode(bite));
6875 return latin1Chars.join('');
6879 * Converts a Latin1 string to a word array.
6881 * @param {string} latin1Str The Latin1 string.
6883 * @return {WordArray} The word array.
6889 * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
6891 parse: function (latin1Str) {
6893 var latin1StrLength = latin1Str.length;
6897 for (var i =
0; i < latin1StrLength; i++) {
6898 words[i
>>> 2] |= (latin1Str.charCodeAt(i) &
0xff) << (
24 - (i %
4) *
8);
6901 return new WordArray.init(words, latin1StrLength);
6906 * UTF-
8 encoding strategy.
6908 var Utf8 = C_enc.Utf8 = {
6910 * Converts a word array to a UTF-
8 string.
6912 * @param {WordArray} wordArray The word array.
6914 * @return {string} The UTF-
8 string.
6920 * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
6922 stringify: function (wordArray) {
6924 return decodeURIComponent(escape(Latin1.stringify(wordArray)));
6926 throw new Error('Malformed UTF-
8 data');
6931 * Converts a UTF-
8 string to a word array.
6933 * @param {string} utf8Str The UTF-
8 string.
6935 * @return {WordArray} The word array.
6941 * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
6943 parse: function (utf8Str) {
6944 return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
6949 * Abstract buffered block algorithm template.
6951 * The property blockSize must be implemented in a concrete subtype.
6953 * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default:
0
6955 var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
6957 * Resets this block algorithm's data buffer to its initial state.
6961 * bufferedBlockAlgorithm.reset();
6963 reset: function () {
6965 this._data = new WordArray.init();
6966 this._nDataBytes =
0;
6970 * Adds new data to this block algorithm's buffer.
6972 * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-
8.
6976 * bufferedBlockAlgorithm._append('data');
6977 * bufferedBlockAlgorithm._append(wordArray);
6979 _append: function (data) {
6980 // Convert string to WordArray, else assume WordArray already
6981 if (typeof data == 'string') {
6982 data = Utf8.parse(data);
6986 this._data.concat(data);
6987 this._nDataBytes += data.sigBytes;
6991 * Processes available data blocks.
6993 * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
6995 * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
6997 * @return {WordArray} The processed data.
7001 * var processedData = bufferedBlockAlgorithm._process();
7002 * var processedData = bufferedBlockAlgorithm._process(!!'flush');
7004 _process: function (doFlush) {
7006 var data = this._data;
7007 var dataWords = data.words;
7008 var dataSigBytes = data.sigBytes;
7009 var blockSize = this.blockSize;
7010 var blockSizeBytes = blockSize *
4;
7012 // Count blocks ready
7013 var nBlocksReady = dataSigBytes / blockSizeBytes;
7015 // Round up to include partial blocks
7016 nBlocksReady = Math.ceil(nBlocksReady);
7018 // Round down to include only full blocks,
7019 // less the number of blocks that must remain in the buffer
7020 nBlocksReady = Math.max((nBlocksReady |
0) - this._minBufferSize,
0);
7023 // Count words ready
7024 var nWordsReady = nBlocksReady * blockSize;
7026 // Count bytes ready
7027 var nBytesReady = Math.min(nWordsReady *
4, dataSigBytes);
7031 for (var offset =
0; offset < nWordsReady; offset += blockSize) {
7032 // Perform concrete-algorithm logic
7033 this._doProcessBlock(dataWords, offset);
7036 // Remove processed words
7037 var processedWords = dataWords.splice(
0, nWordsReady);
7038 data.sigBytes -= nBytesReady;
7041 // Return processed words
7042 return new WordArray.init(processedWords, nBytesReady);
7046 * Creates a copy of this object.
7048 * @return {Object} The clone.
7052 * var clone = bufferedBlockAlgorithm.clone();
7054 clone: function () {
7055 var clone = Base.clone.call(this);
7056 clone._data = this._data.clone();
7065 * Abstract hasher template.
7067 * @property {number} blockSize The number of
32-bit words this hasher operates on. Default:
16 (
512 bits)
7069 var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({
7071 * Configuration options.
7076 * Initializes a newly created hasher.
7078 * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
7082 * var hasher = CryptoJS.algo.SHA256.create();
7084 init: function (cfg) {
7085 // Apply config defaults
7086 this.cfg = this.cfg.extend(cfg);
7088 // Set initial values
7093 * Resets this hasher to its initial state.
7099 reset: function () {
7100 // Reset data buffer
7101 BufferedBlockAlgorithm.reset.call(this);
7103 // Perform concrete-hasher logic
7108 * Updates this hasher with a message.
7110 * @param {WordArray|string} messageUpdate The message to append.
7112 * @return {Hasher} This hasher.
7116 * hasher.update('message');
7117 * hasher.update(wordArray);
7119 update: function (messageUpdate) {
7121 this._append(messageUpdate);
7131 * Finalizes the hash computation.
7132 * Note that the finalize operation is effectively a destructive, read-once operation.
7134 * @param {WordArray|string} messageUpdate (Optional) A final message update.
7136 * @return {WordArray} The hash.
7140 * var hash = hasher.finalize();
7141 * var hash = hasher.finalize('message');
7142 * var hash = hasher.finalize(wordArray);
7144 finalize: function (messageUpdate) {
7145 // Final message update
7146 if (messageUpdate) {
7147 this._append(messageUpdate);
7150 // Perform concrete-hasher logic
7151 var hash = this._doFinalize();
7159 * Creates a shortcut function to a hasher's object interface.
7161 * @param {Hasher} hasher The hasher to create a helper for.
7163 * @return {Function} The shortcut function.
7169 * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
7171 _createHelper: function (hasher) {
7172 return function (message, cfg) {
7173 return new hasher.init(cfg).finalize(message);
7178 * Creates a shortcut function to the HMAC's object interface.
7180 * @param {Hasher} hasher The hasher to use in this HMAC helper.
7182 * @return {Function} The shortcut function.
7188 * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
7190 _createHmacHelper: function (hasher) {
7191 return function (message, key) {
7192 return new C_algo.HMAC.init(hasher, key).finalize(message);
7198 * Algorithm namespace.
7200 var C_algo = C.algo = {};
7209 },{}],
32:[function(_dereq_,module,exports){
7210 ;(function (root, factory) {
7211 if (typeof exports ===
"object") {
7213 module.exports = exports = factory(_dereq_(
"./core"));
7215 else if (typeof define ===
"function" && define.amd) {
7217 define([
"./core"], factory);
7221 factory(root.CryptoJS);
7223 }(this, function (CryptoJS) {
7229 var WordArray = C_lib.WordArray;
7233 * Base64 encoding strategy.
7235 var Base64 = C_enc.Base64 = {
7237 * Converts a word array to a Base64 string.
7239 * @param {WordArray} wordArray The word array.
7241 * @return {string} The Base64 string.
7247 * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
7249 stringify: function (wordArray) {
7251 var words = wordArray.words;
7252 var sigBytes = wordArray.sigBytes;
7253 var map = this._map;
7255 // Clamp excess bits
7259 var base64Chars = [];
7260 for (var i =
0; i < sigBytes; i +=
3) {
7261 var byte1 = (words[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff;
7262 var byte2 = (words[(i +
1)
>>> 2]
>>> (
24 - ((i +
1) %
4) *
8)) &
0xff;
7263 var byte3 = (words[(i +
2)
>>> 2]
>>> (
24 - ((i +
2) %
4) *
8)) &
0xff;
7265 var triplet = (byte1 <<
16) | (byte2 <<
8) | byte3;
7267 for (var j =
0; (j <
4) && (i + j *
0.75 < sigBytes); j++) {
7268 base64Chars.push(map.charAt((triplet
>>> (
6 * (
3 - j))) &
0x3f));
7273 var paddingChar = map.charAt(
64);
7275 while (base64Chars.length %
4) {
7276 base64Chars.push(paddingChar);
7280 return base64Chars.join('');
7284 * Converts a Base64 string to a word array.
7286 * @param {string} base64Str The Base64 string.
7288 * @return {WordArray} The word array.
7294 * var wordArray = CryptoJS.enc.Base64.parse(base64String);
7296 parse: function (base64Str) {
7298 var base64StrLength = base64Str.length;
7299 var map = this._map;
7302 var paddingChar = map.charAt(
64);
7304 var paddingIndex = base64Str.indexOf(paddingChar);
7305 if (paddingIndex != -
1) {
7306 base64StrLength = paddingIndex;
7313 for (var i =
0; i < base64StrLength; i++) {
7315 var bits1 = map.indexOf(base64Str.charAt(i -
1)) << ((i %
4) *
2);
7316 var bits2 = map.indexOf(base64Str.charAt(i))
>>> (
6 - (i %
4) *
2);
7317 words[nBytes
>>> 2] |= (bits1 | bits2) << (
24 - (nBytes %
4) *
8);
7322 return WordArray.create(words, nBytes);
7325 _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
7330 return CryptoJS.enc.Base64;
7333 },{
"./core":
31}],
33:[function(_dereq_,module,exports){
7334 ;(function (root, factory) {
7335 if (typeof exports ===
"object") {
7337 module.exports = exports = factory(_dereq_(
"./core"));
7339 else if (typeof define ===
"function" && define.amd) {
7341 define([
"./core"], factory);
7345 factory(root.CryptoJS);
7347 }(this, function (CryptoJS) {
7353 var WordArray = C_lib.WordArray;
7357 * UTF-
16 BE encoding strategy.
7359 var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {
7361 * Converts a word array to a UTF-
16 BE string.
7363 * @param {WordArray} wordArray The word array.
7365 * @return {string} The UTF-
16 BE string.
7371 * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
7373 stringify: function (wordArray) {
7375 var words = wordArray.words;
7376 var sigBytes = wordArray.sigBytes;
7379 var utf16Chars = [];
7380 for (var i =
0; i < sigBytes; i +=
2) {
7381 var codePoint = (words[i
>>> 2]
>>> (
16 - (i %
4) *
8)) &
0xffff;
7382 utf16Chars.push(String.fromCharCode(codePoint));
7385 return utf16Chars.join('');
7389 * Converts a UTF-
16 BE string to a word array.
7391 * @param {string} utf16Str The UTF-
16 BE string.
7393 * @return {WordArray} The word array.
7399 * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
7401 parse: function (utf16Str) {
7403 var utf16StrLength = utf16Str.length;
7407 for (var i =
0; i < utf16StrLength; i++) {
7408 words[i
>>> 1] |= utf16Str.charCodeAt(i) << (
16 - (i %
2) *
16);
7411 return WordArray.create(words, utf16StrLength *
2);
7416 * UTF-
16 LE encoding strategy.
7420 * Converts a word array to a UTF-
16 LE string.
7422 * @param {WordArray} wordArray The word array.
7424 * @return {string} The UTF-
16 LE string.
7430 * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
7432 stringify: function (wordArray) {
7434 var words = wordArray.words;
7435 var sigBytes = wordArray.sigBytes;
7438 var utf16Chars = [];
7439 for (var i =
0; i < sigBytes; i +=
2) {
7440 var codePoint = swapEndian((words[i
>>> 2]
>>> (
16 - (i %
4) *
8)) &
0xffff);
7441 utf16Chars.push(String.fromCharCode(codePoint));
7444 return utf16Chars.join('');
7448 * Converts a UTF-
16 LE string to a word array.
7450 * @param {string} utf16Str The UTF-
16 LE string.
7452 * @return {WordArray} The word array.
7458 * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
7460 parse: function (utf16Str) {
7462 var utf16StrLength = utf16Str.length;
7466 for (var i =
0; i < utf16StrLength; i++) {
7467 words[i
>>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (
16 - (i %
2) *
16));
7470 return WordArray.create(words, utf16StrLength *
2);
7474 function swapEndian(word) {
7475 return ((word <<
8) &
0xff00ff00) | ((word
>>> 8) &
0x00ff00ff);
7480 return CryptoJS.enc.Utf16;
7483 },{
"./core":
31}],
34:[function(_dereq_,module,exports){
7484 ;(function (root, factory, undef) {
7485 if (typeof exports ===
"object") {
7487 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./sha1"), _dereq_(
"./hmac"));
7489 else if (typeof define ===
"function" && define.amd) {
7491 define([
"./core",
"./sha1",
"./hmac"], factory);
7495 factory(root.CryptoJS);
7497 }(this, function (CryptoJS) {
7503 var Base = C_lib.Base;
7504 var WordArray = C_lib.WordArray;
7505 var C_algo = C.algo;
7506 var MD5 = C_algo.MD5;
7509 * This key derivation function is meant to conform with EVP_BytesToKey.
7510 * www.openssl.org/docs/crypto/EVP_BytesToKey.html
7512 var EvpKDF = C_algo.EvpKDF = Base.extend({
7514 * Configuration options.
7516 * @property {number} keySize The key size in words to generate. Default:
4 (
128 bits)
7517 * @property {Hasher} hasher The hash algorithm to use. Default: MD5
7518 * @property {number} iterations The number of iterations to perform. Default:
1
7527 * Initializes a newly created key derivation function.
7529 * @param {Object} cfg (Optional) The configuration options to use for the derivation.
7533 * var kdf = CryptoJS.algo.EvpKDF.create();
7534 * var kdf = CryptoJS.algo.EvpKDF.create({ keySize:
8 });
7535 * var kdf = CryptoJS.algo.EvpKDF.create({ keySize:
8, iterations:
1000 });
7537 init: function (cfg) {
7538 this.cfg = this.cfg.extend(cfg);
7542 * Derives a key from a password.
7544 * @param {WordArray|string} password The password.
7545 * @param {WordArray|string} salt A salt.
7547 * @return {WordArray} The derived key.
7551 * var key = kdf.compute(password, salt);
7553 compute: function (password, salt) {
7558 var hasher = cfg.hasher.create();
7561 var derivedKey = WordArray.create();
7564 var derivedKeyWords = derivedKey.words;
7565 var keySize = cfg.keySize;
7566 var iterations = cfg.iterations;
7569 while (derivedKeyWords.length < keySize) {
7571 hasher.update(block);
7573 var block = hasher.update(password).finalize(salt);
7577 for (var i =
1; i < iterations; i++) {
7578 block = hasher.finalize(block);
7582 derivedKey.concat(block);
7584 derivedKey.sigBytes = keySize *
4;
7591 * Derives a key from a password.
7593 * @param {WordArray|string} password The password.
7594 * @param {WordArray|string} salt A salt.
7595 * @param {Object} cfg (Optional) The configuration options to use for this computation.
7597 * @return {WordArray} The derived key.
7603 * var key = CryptoJS.EvpKDF(password, salt);
7604 * var key = CryptoJS.EvpKDF(password, salt, { keySize:
8 });
7605 * var key = CryptoJS.EvpKDF(password, salt, { keySize:
8, iterations:
1000 });
7607 C.EvpKDF = function (password, salt, cfg) {
7608 return EvpKDF.create(cfg).compute(password, salt);
7613 return CryptoJS.EvpKDF;
7616 },{
"./core":
31,
"./hmac":
36,
"./sha1":
55}],
35:[function(_dereq_,module,exports){
7617 ;(function (root, factory, undef) {
7618 if (typeof exports ===
"object") {
7620 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
7622 else if (typeof define ===
"function" && define.amd) {
7624 define([
"./core",
"./cipher-core"], factory);
7628 factory(root.CryptoJS);
7630 }(this, function (CryptoJS) {
7632 (function (undefined) {
7636 var CipherParams = C_lib.CipherParams;
7638 var Hex = C_enc.Hex;
7639 var C_format = C.format;
7641 var HexFormatter = C_format.Hex = {
7643 * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
7645 * @param {CipherParams} cipherParams The cipher params object.
7647 * @return {string} The hexadecimally encoded string.
7653 * var hexString = CryptoJS.format.Hex.stringify(cipherParams);
7655 stringify: function (cipherParams) {
7656 return cipherParams.ciphertext.toString(Hex);
7660 * Converts a hexadecimally encoded ciphertext string to a cipher params object.
7662 * @param {string} input The hexadecimally encoded string.
7664 * @return {CipherParams} The cipher params object.
7670 * var cipherParams = CryptoJS.format.Hex.parse(hexString);
7672 parse: function (input) {
7673 var ciphertext = Hex.parse(input);
7674 return CipherParams.create({ ciphertext: ciphertext });
7680 return CryptoJS.format.Hex;
7683 },{
"./cipher-core":
30,
"./core":
31}],
36:[function(_dereq_,module,exports){
7684 ;(function (root, factory) {
7685 if (typeof exports ===
"object") {
7687 module.exports = exports = factory(_dereq_(
"./core"));
7689 else if (typeof define ===
"function" && define.amd) {
7691 define([
"./core"], factory);
7695 factory(root.CryptoJS);
7697 }(this, function (CryptoJS) {
7703 var Base = C_lib.Base;
7705 var Utf8 = C_enc.Utf8;
7706 var C_algo = C.algo;
7711 var HMAC = C_algo.HMAC = Base.extend({
7713 * Initializes a newly created HMAC.
7715 * @param {Hasher} hasher The hash algorithm to use.
7716 * @param {WordArray|string} key The secret key.
7720 * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
7722 init: function (hasher, key) {
7724 hasher = this._hasher = new hasher.init();
7726 // Convert string to WordArray, else assume WordArray already
7727 if (typeof key == 'string') {
7728 key = Utf8.parse(key);
7732 var hasherBlockSize = hasher.blockSize;
7733 var hasherBlockSizeBytes = hasherBlockSize *
4;
7735 // Allow arbitrary length keys
7736 if (key.sigBytes
> hasherBlockSizeBytes) {
7737 key = hasher.finalize(key);
7740 // Clamp excess bits
7743 // Clone key for inner and outer pads
7744 var oKey = this._oKey = key.clone();
7745 var iKey = this._iKey = key.clone();
7748 var oKeyWords = oKey.words;
7749 var iKeyWords = iKey.words;
7751 // XOR keys with pad constants
7752 for (var i =
0; i < hasherBlockSize; i++) {
7753 oKeyWords[i] ^=
0x5c5c5c5c;
7754 iKeyWords[i] ^=
0x36363636;
7756 oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
7758 // Set initial values
7763 * Resets this HMAC to its initial state.
7767 * hmacHasher.reset();
7769 reset: function () {
7771 var hasher = this._hasher;
7775 hasher.update(this._iKey);
7779 * Updates this HMAC with a message.
7781 * @param {WordArray|string} messageUpdate The message to append.
7783 * @return {HMAC} This HMAC instance.
7787 * hmacHasher.update('message');
7788 * hmacHasher.update(wordArray);
7790 update: function (messageUpdate) {
7791 this._hasher.update(messageUpdate);
7798 * Finalizes the HMAC computation.
7799 * Note that the finalize operation is effectively a destructive, read-once operation.
7801 * @param {WordArray|string} messageUpdate (Optional) A final message update.
7803 * @return {WordArray} The HMAC.
7807 * var hmac = hmacHasher.finalize();
7808 * var hmac = hmacHasher.finalize('message');
7809 * var hmac = hmacHasher.finalize(wordArray);
7811 finalize: function (messageUpdate) {
7813 var hasher = this._hasher;
7816 var innerHash = hasher.finalize(messageUpdate);
7818 var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));
7827 },{"./core":
31}],
37:[function(_dereq_,module,exports){
7828 ;(function (root, factory, undef) {
7829 if (typeof exports === "object") {
7831 module.exports = exports = factory(_dereq_("./core"), _dereq_("./x64-core"), _dereq_("./lib-typedarrays"), _dereq_("./enc-utf16"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./sha1"), _dereq_("./sha256"), _dereq_("./sha224"), _dereq_("./sha512"), _dereq_("./sha384"), _dereq_("./sha3"), _dereq_("./ripemd160"), _dereq_("./hmac"), _dereq_("./pbkdf2"), _dereq_("./evpkdf"), _dereq_("./cipher-core"), _dereq_("./mode-cfb"), _dereq_("./mode-ctr"), _dereq_("./mode-ctr-gladman"), _dereq_("./mode-ofb"), _dereq_("./mode-ecb"), _dereq_("./pad-ansix923"), _dereq_("./pad-iso10126"), _dereq_("./pad-iso97971"), _dereq_("./pad-zeropadding"), _dereq_("./pad-nopadding"), _dereq_("./format-hex"), _dereq_("./aes"), _dereq_("./tripledes"), _dereq_("./rc4"), _dereq_("./rabbit"), _dereq_("./rabbit-legacy"));
7833 else if (typeof define === "function" && define.amd) {
7835 define(["./core", "./x64-core", "./lib-typedarrays", "./enc-utf16", "./enc-base64", "./md5", "./sha1", "./sha256", "./sha224", "./sha512", "./sha384", "./sha3", "./ripemd160", "./hmac", "./pbkdf2", "./evpkdf", "./cipher-core", "./mode-cfb", "./mode-ctr", "./mode-ctr-gladman", "./mode-ofb", "./mode-ecb", "./pad-ansix923", "./pad-iso10126", "./pad-iso97971", "./pad-zeropadding", "./pad-nopadding", "./format-hex", "./aes", "./tripledes", "./rc4", "./rabbit", "./rabbit-legacy"], factory);
7839 factory(root.CryptoJS);
7841 }(this, function (CryptoJS) {
7846 },{"./aes":
29,"./cipher-core":
30,"./core":
31,"./enc-base64":
32,"./enc-utf16":
33,"./evpkdf":
34,"./format-hex":
35,"./hmac":
36,"./lib-typedarrays":
38,"./md5":
39,"./mode-cfb":
40,"./mode-ctr":
42,"./mode-ctr-gladman":
41,"./mode-ecb":
43,"./mode-ofb":
44,"./pad-ansix923":
45,"./pad-iso10126":
46,"./pad-iso97971":
47,"./pad-nopadding":
48,"./pad-zeropadding":
49,"./pbkdf2":
50,"./rabbit":
52,"./rabbit-legacy":
51,"./rc4":
53,"./ripemd160":
54,"./sha1":
55,"./sha224":
56,"./sha256":
57,"./sha3":
58,"./sha384":
59,"./sha512":
60,"./tripledes":
61,"./x64-core":
62}],
38:[function(_dereq_,module,exports){
7847 ;(function (root, factory) {
7848 if (typeof exports === "object") {
7850 module.exports = exports = factory(_dereq_("./core"));
7852 else if (typeof define === "function" && define.amd) {
7854 define(["./core"], factory);
7858 factory(root.CryptoJS);
7860 }(this, function (CryptoJS) {
7863 // Check if typed arrays are supported
7864 if (typeof ArrayBuffer != 'function') {
7871 var WordArray = C_lib.WordArray;
7873 // Reference original init
7874 var superInit = WordArray.init;
7876 // Augment WordArray.init to handle typed arrays
7877 var subInit = WordArray.init = function (typedArray) {
7878 // Convert buffers to uint8
7879 if (typedArray instanceof ArrayBuffer) {
7880 typedArray = new Uint8Array(typedArray);
7883 // Convert other array views to uint8
7885 typedArray instanceof Int8Array ||
7886 typedArray instanceof Uint8ClampedArray ||
7887 typedArray instanceof Int16Array ||
7888 typedArray instanceof Uint16Array ||
7889 typedArray instanceof Int32Array ||
7890 typedArray instanceof Uint32Array ||
7891 typedArray instanceof Float32Array ||
7892 typedArray instanceof Float64Array
7894 typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
7897 // Handle Uint8Array
7898 if (typedArray instanceof Uint8Array) {
7900 var typedArrayByteLength = typedArray.byteLength;
7904 for (var i =
0; i < typedArrayByteLength; i++) {
7905 words[i
>>> 2] |= typedArray[i] << (
24 - (i %
4) *
8);
7908 // Initialize this word array
7909 superInit.call(this, words, typedArrayByteLength);
7911 // Else call normal init
7912 superInit.apply(this, arguments);
7916 subInit.prototype = WordArray;
7920 return CryptoJS.lib.WordArray;
7923 },{
"./core":
31}],
39:[function(_dereq_,module,exports){
7924 ;(function (root, factory) {
7925 if (typeof exports ===
"object") {
7927 module.exports = exports = factory(_dereq_(
"./core"));
7929 else if (typeof define ===
"function" && define.amd) {
7931 define([
"./core"], factory);
7935 factory(root.CryptoJS);
7937 }(this, function (CryptoJS) {
7943 var WordArray = C_lib.WordArray;
7944 var Hasher = C_lib.Hasher;
7945 var C_algo = C.algo;
7950 // Compute constants
7952 for (var i =
0; i <
64; i++) {
7953 T[i] = (Math.abs(Math.sin(i +
1)) *
0x100000000) |
0;
7958 * MD5 hash algorithm.
7960 var MD5 = C_algo.MD5 = Hasher.extend({
7961 _doReset: function () {
7962 this._hash = new WordArray.init([
7963 0x67452301,
0xefcdab89,
7964 0x98badcfe,
0x10325476
7968 _doProcessBlock: function (M, offset) {
7970 for (var i =
0; i <
16; i++) {
7972 var offset_i = offset + i;
7973 var M_offset_i = M[offset_i];
7976 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
7977 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
7982 var H = this._hash.words;
7984 var M_offset_0 = M[offset +
0];
7985 var M_offset_1 = M[offset +
1];
7986 var M_offset_2 = M[offset +
2];
7987 var M_offset_3 = M[offset +
3];
7988 var M_offset_4 = M[offset +
4];
7989 var M_offset_5 = M[offset +
5];
7990 var M_offset_6 = M[offset +
6];
7991 var M_offset_7 = M[offset +
7];
7992 var M_offset_8 = M[offset +
8];
7993 var M_offset_9 = M[offset +
9];
7994 var M_offset_10 = M[offset +
10];
7995 var M_offset_11 = M[offset +
11];
7996 var M_offset_12 = M[offset +
12];
7997 var M_offset_13 = M[offset +
13];
7998 var M_offset_14 = M[offset +
14];
7999 var M_offset_15 = M[offset +
15];
8001 // Working varialbes
8008 a = FF(a, b, c, d, M_offset_0,
7, T[
0]);
8009 d = FF(d, a, b, c, M_offset_1,
12, T[
1]);
8010 c = FF(c, d, a, b, M_offset_2,
17, T[
2]);
8011 b = FF(b, c, d, a, M_offset_3,
22, T[
3]);
8012 a = FF(a, b, c, d, M_offset_4,
7, T[
4]);
8013 d = FF(d, a, b, c, M_offset_5,
12, T[
5]);
8014 c = FF(c, d, a, b, M_offset_6,
17, T[
6]);
8015 b = FF(b, c, d, a, M_offset_7,
22, T[
7]);
8016 a = FF(a, b, c, d, M_offset_8,
7, T[
8]);
8017 d = FF(d, a, b, c, M_offset_9,
12, T[
9]);
8018 c = FF(c, d, a, b, M_offset_10,
17, T[
10]);
8019 b = FF(b, c, d, a, M_offset_11,
22, T[
11]);
8020 a = FF(a, b, c, d, M_offset_12,
7, T[
12]);
8021 d = FF(d, a, b, c, M_offset_13,
12, T[
13]);
8022 c = FF(c, d, a, b, M_offset_14,
17, T[
14]);
8023 b = FF(b, c, d, a, M_offset_15,
22, T[
15]);
8025 a = GG(a, b, c, d, M_offset_1,
5, T[
16]);
8026 d = GG(d, a, b, c, M_offset_6,
9, T[
17]);
8027 c = GG(c, d, a, b, M_offset_11,
14, T[
18]);
8028 b = GG(b, c, d, a, M_offset_0,
20, T[
19]);
8029 a = GG(a, b, c, d, M_offset_5,
5, T[
20]);
8030 d = GG(d, a, b, c, M_offset_10,
9, T[
21]);
8031 c = GG(c, d, a, b, M_offset_15,
14, T[
22]);
8032 b = GG(b, c, d, a, M_offset_4,
20, T[
23]);
8033 a = GG(a, b, c, d, M_offset_9,
5, T[
24]);
8034 d = GG(d, a, b, c, M_offset_14,
9, T[
25]);
8035 c = GG(c, d, a, b, M_offset_3,
14, T[
26]);
8036 b = GG(b, c, d, a, M_offset_8,
20, T[
27]);
8037 a = GG(a, b, c, d, M_offset_13,
5, T[
28]);
8038 d = GG(d, a, b, c, M_offset_2,
9, T[
29]);
8039 c = GG(c, d, a, b, M_offset_7,
14, T[
30]);
8040 b = GG(b, c, d, a, M_offset_12,
20, T[
31]);
8042 a = HH(a, b, c, d, M_offset_5,
4, T[
32]);
8043 d = HH(d, a, b, c, M_offset_8,
11, T[
33]);
8044 c = HH(c, d, a, b, M_offset_11,
16, T[
34]);
8045 b = HH(b, c, d, a, M_offset_14,
23, T[
35]);
8046 a = HH(a, b, c, d, M_offset_1,
4, T[
36]);
8047 d = HH(d, a, b, c, M_offset_4,
11, T[
37]);
8048 c = HH(c, d, a, b, M_offset_7,
16, T[
38]);
8049 b = HH(b, c, d, a, M_offset_10,
23, T[
39]);
8050 a = HH(a, b, c, d, M_offset_13,
4, T[
40]);
8051 d = HH(d, a, b, c, M_offset_0,
11, T[
41]);
8052 c = HH(c, d, a, b, M_offset_3,
16, T[
42]);
8053 b = HH(b, c, d, a, M_offset_6,
23, T[
43]);
8054 a = HH(a, b, c, d, M_offset_9,
4, T[
44]);
8055 d = HH(d, a, b, c, M_offset_12,
11, T[
45]);
8056 c = HH(c, d, a, b, M_offset_15,
16, T[
46]);
8057 b = HH(b, c, d, a, M_offset_2,
23, T[
47]);
8059 a = II(a, b, c, d, M_offset_0,
6, T[
48]);
8060 d = II(d, a, b, c, M_offset_7,
10, T[
49]);
8061 c = II(c, d, a, b, M_offset_14,
15, T[
50]);
8062 b = II(b, c, d, a, M_offset_5,
21, T[
51]);
8063 a = II(a, b, c, d, M_offset_12,
6, T[
52]);
8064 d = II(d, a, b, c, M_offset_3,
10, T[
53]);
8065 c = II(c, d, a, b, M_offset_10,
15, T[
54]);
8066 b = II(b, c, d, a, M_offset_1,
21, T[
55]);
8067 a = II(a, b, c, d, M_offset_8,
6, T[
56]);
8068 d = II(d, a, b, c, M_offset_15,
10, T[
57]);
8069 c = II(c, d, a, b, M_offset_6,
15, T[
58]);
8070 b = II(b, c, d, a, M_offset_13,
21, T[
59]);
8071 a = II(a, b, c, d, M_offset_4,
6, T[
60]);
8072 d = II(d, a, b, c, M_offset_11,
10, T[
61]);
8073 c = II(c, d, a, b, M_offset_2,
15, T[
62]);
8074 b = II(b, c, d, a, M_offset_9,
21, T[
63]);
8076 // Intermediate hash value
8077 H[
0] = (H[
0] + a) |
0;
8078 H[
1] = (H[
1] + b) |
0;
8079 H[
2] = (H[
2] + c) |
0;
8080 H[
3] = (H[
3] + d) |
0;
8083 _doFinalize: function () {
8085 var data = this._data;
8086 var dataWords = data.words;
8088 var nBitsTotal = this._nDataBytes *
8;
8089 var nBitsLeft = data.sigBytes *
8;
8092 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
8094 var nBitsTotalH = Math.floor(nBitsTotal /
0x100000000);
8095 var nBitsTotalL = nBitsTotal;
8096 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
15] = (
8097 (((nBitsTotalH <<
8) | (nBitsTotalH
>>> 24)) &
0x00ff00ff) |
8098 (((nBitsTotalH <<
24) | (nBitsTotalH
>>> 8)) &
0xff00ff00)
8100 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
8101 (((nBitsTotalL <<
8) | (nBitsTotalL
>>> 24)) &
0x00ff00ff) |
8102 (((nBitsTotalL <<
24) | (nBitsTotalL
>>> 8)) &
0xff00ff00)
8105 data.sigBytes = (dataWords.length +
1) *
4;
8107 // Hash final blocks
8111 var hash = this._hash;
8115 for (var i =
0; i <
4; i++) {
8119 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
8120 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00);
8123 // Return final computed hash
8127 clone: function () {
8128 var clone = Hasher.clone.call(this);
8129 clone._hash = this._hash.clone();
8135 function FF(a, b, c, d, x, s, t) {
8136 var n = a + ((b & c) | (~b & d)) + x + t;
8137 return ((n << s) | (n
>>> (
32 - s))) + b;
8140 function GG(a, b, c, d, x, s, t) {
8141 var n = a + ((b & d) | (c & ~d)) + x + t;
8142 return ((n << s) | (n
>>> (
32 - s))) + b;
8145 function HH(a, b, c, d, x, s, t) {
8146 var n = a + (b ^ c ^ d) + x + t;
8147 return ((n << s) | (n
>>> (
32 - s))) + b;
8150 function II(a, b, c, d, x, s, t) {
8151 var n = a + (c ^ (b | ~d)) + x + t;
8152 return ((n << s) | (n
>>> (
32 - s))) + b;
8156 * Shortcut function to the hasher's object interface.
8158 * @param {WordArray|string} message The message to hash.
8160 * @return {WordArray} The hash.
8166 * var hash = CryptoJS.MD5('message');
8167 * var hash = CryptoJS.MD5(wordArray);
8169 C.MD5 = Hasher._createHelper(MD5);
8172 * Shortcut function to the HMAC's object interface.
8174 * @param {WordArray|string} message The message to hash.
8175 * @param {WordArray|string} key The secret key.
8177 * @return {WordArray} The HMAC.
8183 * var hmac = CryptoJS.HmacMD5(message, key);
8185 C.HmacMD5 = Hasher._createHmacHelper(MD5);
8189 return CryptoJS.MD5;
8192 },{"./core":
31}],
40:[function(_dereq_,module,exports){
8193 ;(function (root, factory, undef) {
8194 if (typeof exports === "object") {
8196 module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
8198 else if (typeof define === "function" && define.amd) {
8200 define(["./core", "./cipher-core"], factory);
8204 factory(root.CryptoJS);
8206 }(this, function (CryptoJS) {
8209 * Cipher Feedback block mode.
8211 CryptoJS.mode.CFB = (function () {
8212 var CFB = CryptoJS.lib.BlockCipherMode.extend();
8214 CFB.Encryptor = CFB.extend({
8215 processBlock: function (words, offset) {
8217 var cipher = this._cipher;
8218 var blockSize = cipher.blockSize;
8220 generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
8222 // Remember this block to use with next block
8223 this._prevBlock = words.slice(offset, offset + blockSize);
8227 CFB.Decryptor = CFB.extend({
8228 processBlock: function (words, offset) {
8230 var cipher = this._cipher;
8231 var blockSize = cipher.blockSize;
8233 // Remember this block to use with next block
8234 var thisBlock = words.slice(offset, offset + blockSize);
8236 generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
8238 // This block becomes the previous block
8239 this._prevBlock = thisBlock;
8243 function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
8247 // Generate keystream
8249 var keystream = iv.slice(
0);
8251 // Remove IV for subsequent blocks
8252 this._iv = undefined;
8254 var keystream = this._prevBlock;
8256 cipher.encryptBlock(keystream,
0);
8259 for (var i =
0; i < blockSize; i++) {
8260 words[offset + i] ^= keystream[i];
8268 return CryptoJS.mode.CFB;
8271 },{"./cipher-core":
30,"./core":
31}],
41:[function(_dereq_,module,exports){
8272 ;(function (root, factory, undef) {
8273 if (typeof exports === "object") {
8275 module.exports = exports = factory(_dereq_("./core"), _dereq_("./cipher-core"));
8277 else if (typeof define === "function" && define.amd) {
8279 define(["./core", "./cipher-core"], factory);
8283 factory(root.CryptoJS);
8285 }(this, function (CryptoJS) {
8288 * Counter block mode compatible with Dr Brian Gladman fileenc.c
8289 * derived from CryptoJS.mode.CTR
8290 * Jan Hruby jhruby.web@gmail.com
8292 CryptoJS.mode.CTRGladman = (function () {
8293 var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
8295 function incWord(word)
8297 if (((word
>> 24) &
0xff) ===
0xff) { //overflow
8298 var b1 = (word
>> 16)
&0xff;
8299 var b2 = (word
>> 8)
&0xff;
8300 var b3 = word &
0xff;
8302 if (b1 ===
0xff) // overflow b1
8334 word += (
0x01 <<
24);
8339 function incCounter(counter)
8341 if ((counter[
0] = incWord(counter[
0])) ===
0)
8343 // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j <
8
8344 counter[
1] = incWord(counter[
1]);
8349 var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
8350 processBlock: function (words, offset) {
8352 var cipher = this._cipher
8353 var blockSize = cipher.blockSize;
8355 var counter = this._counter;
8357 // Generate keystream
8359 counter = this._counter = iv.slice(
0);
8361 // Remove IV for subsequent blocks
8362 this._iv = undefined;
8365 incCounter(counter);
8367 var keystream = counter.slice(
0);
8368 cipher.encryptBlock(keystream,
0);
8371 for (var i =
0; i < blockSize; i++) {
8372 words[offset + i] ^= keystream[i];
8377 CTRGladman.Decryptor = Encryptor;
8385 return CryptoJS.mode.CTRGladman;
8388 },{
"./cipher-core":
30,
"./core":
31}],
42:[function(_dereq_,module,exports){
8389 ;(function (root, factory, undef) {
8390 if (typeof exports ===
"object") {
8392 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8394 else if (typeof define ===
"function" && define.amd) {
8396 define([
"./core",
"./cipher-core"], factory);
8400 factory(root.CryptoJS);
8402 }(this, function (CryptoJS) {
8405 * Counter block mode.
8407 CryptoJS.mode.CTR = (function () {
8408 var CTR = CryptoJS.lib.BlockCipherMode.extend();
8410 var Encryptor = CTR.Encryptor = CTR.extend({
8411 processBlock: function (words, offset) {
8413 var cipher = this._cipher
8414 var blockSize = cipher.blockSize;
8416 var counter = this._counter;
8418 // Generate keystream
8420 counter = this._counter = iv.slice(
0);
8422 // Remove IV for subsequent blocks
8423 this._iv = undefined;
8425 var keystream = counter.slice(
0);
8426 cipher.encryptBlock(keystream,
0);
8428 // Increment counter
8429 counter[blockSize -
1] = (counter[blockSize -
1] +
1) |
0
8432 for (var i =
0; i < blockSize; i++) {
8433 words[offset + i] ^= keystream[i];
8438 CTR.Decryptor = Encryptor;
8444 return CryptoJS.mode.CTR;
8447 },{
"./cipher-core":
30,
"./core":
31}],
43:[function(_dereq_,module,exports){
8448 ;(function (root, factory, undef) {
8449 if (typeof exports ===
"object") {
8451 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8453 else if (typeof define ===
"function" && define.amd) {
8455 define([
"./core",
"./cipher-core"], factory);
8459 factory(root.CryptoJS);
8461 }(this, function (CryptoJS) {
8464 * Electronic Codebook block mode.
8466 CryptoJS.mode.ECB = (function () {
8467 var ECB = CryptoJS.lib.BlockCipherMode.extend();
8469 ECB.Encryptor = ECB.extend({
8470 processBlock: function (words, offset) {
8471 this._cipher.encryptBlock(words, offset);
8475 ECB.Decryptor = ECB.extend({
8476 processBlock: function (words, offset) {
8477 this._cipher.decryptBlock(words, offset);
8485 return CryptoJS.mode.ECB;
8488 },{
"./cipher-core":
30,
"./core":
31}],
44:[function(_dereq_,module,exports){
8489 ;(function (root, factory, undef) {
8490 if (typeof exports ===
"object") {
8492 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8494 else if (typeof define ===
"function" && define.amd) {
8496 define([
"./core",
"./cipher-core"], factory);
8500 factory(root.CryptoJS);
8502 }(this, function (CryptoJS) {
8505 * Output Feedback block mode.
8507 CryptoJS.mode.OFB = (function () {
8508 var OFB = CryptoJS.lib.BlockCipherMode.extend();
8510 var Encryptor = OFB.Encryptor = OFB.extend({
8511 processBlock: function (words, offset) {
8513 var cipher = this._cipher
8514 var blockSize = cipher.blockSize;
8516 var keystream = this._keystream;
8518 // Generate keystream
8520 keystream = this._keystream = iv.slice(
0);
8522 // Remove IV for subsequent blocks
8523 this._iv = undefined;
8525 cipher.encryptBlock(keystream,
0);
8528 for (var i =
0; i < blockSize; i++) {
8529 words[offset + i] ^= keystream[i];
8534 OFB.Decryptor = Encryptor;
8540 return CryptoJS.mode.OFB;
8543 },{
"./cipher-core":
30,
"./core":
31}],
45:[function(_dereq_,module,exports){
8544 ;(function (root, factory, undef) {
8545 if (typeof exports ===
"object") {
8547 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8549 else if (typeof define ===
"function" && define.amd) {
8551 define([
"./core",
"./cipher-core"], factory);
8555 factory(root.CryptoJS);
8557 }(this, function (CryptoJS) {
8560 * ANSI X
.923 padding strategy.
8562 CryptoJS.pad.AnsiX923 = {
8563 pad: function (data, blockSize) {
8565 var dataSigBytes = data.sigBytes;
8566 var blockSizeBytes = blockSize *
4;
8568 // Count padding bytes
8569 var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
8571 // Compute last byte position
8572 var lastBytePos = dataSigBytes + nPaddingBytes -
1;
8576 data.words[lastBytePos
>>> 2] |= nPaddingBytes << (
24 - (lastBytePos %
4) *
8);
8577 data.sigBytes += nPaddingBytes;
8580 unpad: function (data) {
8581 // Get number of padding bytes from last byte
8582 var nPaddingBytes = data.words[(data.sigBytes -
1)
>>> 2] &
0xff;
8585 data.sigBytes -= nPaddingBytes;
8590 return CryptoJS.pad.Ansix923;
8593 },{
"./cipher-core":
30,
"./core":
31}],
46:[function(_dereq_,module,exports){
8594 ;(function (root, factory, undef) {
8595 if (typeof exports ===
"object") {
8597 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8599 else if (typeof define ===
"function" && define.amd) {
8601 define([
"./core",
"./cipher-core"], factory);
8605 factory(root.CryptoJS);
8607 }(this, function (CryptoJS) {
8610 * ISO
10126 padding strategy.
8612 CryptoJS.pad.Iso10126 = {
8613 pad: function (data, blockSize) {
8615 var blockSizeBytes = blockSize *
4;
8617 // Count padding bytes
8618 var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
8621 data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes -
1)).
8622 concat(CryptoJS.lib.WordArray.create([nPaddingBytes <<
24],
1));
8625 unpad: function (data) {
8626 // Get number of padding bytes from last byte
8627 var nPaddingBytes = data.words[(data.sigBytes -
1)
>>> 2] &
0xff;
8630 data.sigBytes -= nPaddingBytes;
8635 return CryptoJS.pad.Iso10126;
8638 },{
"./cipher-core":
30,
"./core":
31}],
47:[function(_dereq_,module,exports){
8639 ;(function (root, factory, undef) {
8640 if (typeof exports ===
"object") {
8642 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8644 else if (typeof define ===
"function" && define.amd) {
8646 define([
"./core",
"./cipher-core"], factory);
8650 factory(root.CryptoJS);
8652 }(this, function (CryptoJS) {
8655 * ISO/IEC
9797-
1 Padding Method
2.
8657 CryptoJS.pad.Iso97971 = {
8658 pad: function (data, blockSize) {
8660 data.concat(CryptoJS.lib.WordArray.create([
0x80000000],
1));
8662 // Zero pad the rest
8663 CryptoJS.pad.ZeroPadding.pad(data, blockSize);
8666 unpad: function (data) {
8667 // Remove zero padding
8668 CryptoJS.pad.ZeroPadding.unpad(data);
8670 // Remove one more byte -- the
0x80 byte
8676 return CryptoJS.pad.Iso97971;
8679 },{
"./cipher-core":
30,
"./core":
31}],
48:[function(_dereq_,module,exports){
8680 ;(function (root, factory, undef) {
8681 if (typeof exports ===
"object") {
8683 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8685 else if (typeof define ===
"function" && define.amd) {
8687 define([
"./core",
"./cipher-core"], factory);
8691 factory(root.CryptoJS);
8693 }(this, function (CryptoJS) {
8696 * A noop padding strategy.
8698 CryptoJS.pad.NoPadding = {
8702 unpad: function () {
8707 return CryptoJS.pad.NoPadding;
8710 },{
"./cipher-core":
30,
"./core":
31}],
49:[function(_dereq_,module,exports){
8711 ;(function (root, factory, undef) {
8712 if (typeof exports ===
"object") {
8714 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./cipher-core"));
8716 else if (typeof define ===
"function" && define.amd) {
8718 define([
"./core",
"./cipher-core"], factory);
8722 factory(root.CryptoJS);
8724 }(this, function (CryptoJS) {
8727 * Zero padding strategy.
8729 CryptoJS.pad.ZeroPadding = {
8730 pad: function (data, blockSize) {
8732 var blockSizeBytes = blockSize *
4;
8736 data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
8739 unpad: function (data) {
8741 var dataWords = data.words;
8744 var i = data.sigBytes -
1;
8745 while (!((dataWords[i
>>> 2]
>>> (
24 - (i %
4) *
8)) &
0xff)) {
8748 data.sigBytes = i +
1;
8753 return CryptoJS.pad.ZeroPadding;
8756 },{"./cipher-core":
30,"./core":
31}],
50:[function(_dereq_,module,exports){
8757 ;(function (root, factory, undef) {
8758 if (typeof exports === "object") {
8760 module.exports = exports = factory(_dereq_("./core"), _dereq_("./sha1"), _dereq_("./hmac"));
8762 else if (typeof define === "function" && define.amd) {
8764 define(["./core", "./sha1", "./hmac"], factory);
8768 factory(root.CryptoJS);
8770 }(this, function (CryptoJS) {
8776 var Base = C_lib.Base;
8777 var WordArray = C_lib.WordArray;
8778 var C_algo = C.algo;
8779 var SHA1 = C_algo.SHA1;
8780 var HMAC = C_algo.HMAC;
8783 * Password-Based Key Derivation Function
2 algorithm.
8785 var PBKDF2 = C_algo.PBKDF2 = Base.extend({
8787 * Configuration options.
8789 * @property {number} keySize The key size in words to generate. Default:
4 (
128 bits)
8790 * @property {Hasher} hasher The hasher to use. Default: SHA1
8791 * @property {number} iterations The number of iterations to perform. Default:
1
8800 * Initializes a newly created key derivation function.
8802 * @param {Object} cfg (Optional) The configuration options to use for the derivation.
8806 * var kdf = CryptoJS.algo.PBKDF2.create();
8807 * var kdf = CryptoJS.algo.PBKDF2.create({ keySize:
8 });
8808 * var kdf = CryptoJS.algo.PBKDF2.create({ keySize:
8, iterations:
1000 });
8810 init: function (cfg) {
8811 this.cfg = this.cfg.extend(cfg);
8815 * Computes the Password-Based Key Derivation Function
2.
8817 * @param {WordArray|string} password The password.
8818 * @param {WordArray|string} salt A salt.
8820 * @return {WordArray} The derived key.
8824 * var key = kdf.compute(password, salt);
8826 compute: function (password, salt) {
8831 var hmac = HMAC.create(cfg.hasher, password);
8834 var derivedKey = WordArray.create();
8835 var blockIndex = WordArray.create([
0x00000001]);
8838 var derivedKeyWords = derivedKey.words;
8839 var blockIndexWords = blockIndex.words;
8840 var keySize = cfg.keySize;
8841 var iterations = cfg.iterations;
8844 while (derivedKeyWords.length < keySize) {
8845 var block = hmac.update(salt).finalize(blockIndex);
8849 var blockWords = block.words;
8850 var blockWordsLength = blockWords.length;
8853 var intermediate = block;
8854 for (var i =
1; i < iterations; i++) {
8855 intermediate = hmac.finalize(intermediate);
8859 var intermediateWords = intermediate.words;
8861 // XOR intermediate with block
8862 for (var j =
0; j < blockWordsLength; j++) {
8863 blockWords[j] ^= intermediateWords[j];
8867 derivedKey.concat(block);
8868 blockIndexWords[
0]++;
8870 derivedKey.sigBytes = keySize *
4;
8877 * Computes the Password-Based Key Derivation Function
2.
8879 * @param {WordArray|string} password The password.
8880 * @param {WordArray|string} salt A salt.
8881 * @param {Object} cfg (Optional) The configuration options to use for this computation.
8883 * @return {WordArray} The derived key.
8889 * var key = CryptoJS.PBKDF2(password, salt);
8890 * var key = CryptoJS.PBKDF2(password, salt, { keySize:
8 });
8891 * var key = CryptoJS.PBKDF2(password, salt, { keySize:
8, iterations:
1000 });
8893 C.PBKDF2 = function (password, salt, cfg) {
8894 return PBKDF2.create(cfg).compute(password, salt);
8899 return CryptoJS.PBKDF2;
8902 },{"./core":
31,"./hmac":
36,"./sha1":
55}],
51:[function(_dereq_,module,exports){
8903 ;(function (root, factory, undef) {
8904 if (typeof exports === "object") {
8906 module.exports = exports = factory(_dereq_("./core"), _dereq_("./enc-base64"), _dereq_("./md5"), _dereq_("./evpkdf"), _dereq_("./cipher-core"));
8908 else if (typeof define === "function" && define.amd) {
8910 define(["./core", "./enc-base64", "./md5", "./evpkdf", "./cipher-core"], factory);
8914 factory(root.CryptoJS);
8916 }(this, function (CryptoJS) {
8922 var StreamCipher = C_lib.StreamCipher;
8923 var C_algo = C.algo;
8931 * Rabbit stream cipher algorithm.
8933 * This is a legacy version that neglected to convert the key to little-endian.
8934 * This error doesn't affect the cipher's security,
8935 * but it does affect its compatibility with other implementations.
8937 var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
8938 _doReset: function () {
8940 var K = this._key.words;
8941 var iv = this.cfg.iv;
8943 // Generate initial state values
8945 K[
0], (K[
3] <<
16) | (K[
2]
>>> 16),
8946 K[
1], (K[
0] <<
16) | (K[
3]
>>> 16),
8947 K[
2], (K[
1] <<
16) | (K[
0]
>>> 16),
8948 K[
3], (K[
2] <<
16) | (K[
1]
>>> 16)
8951 // Generate initial counter values
8953 (K[
2] <<
16) | (K[
2]
>>> 16), (K[
0] &
0xffff0000) | (K[
1] &
0x0000ffff),
8954 (K[
3] <<
16) | (K[
3]
>>> 16), (K[
1] &
0xffff0000) | (K[
2] &
0x0000ffff),
8955 (K[
0] <<
16) | (K[
0]
>>> 16), (K[
2] &
0xffff0000) | (K[
3] &
0x0000ffff),
8956 (K[
1] <<
16) | (K[
1]
>>> 16), (K[
3] &
0xffff0000) | (K[
0] &
0x0000ffff)
8962 // Iterate the system four times
8963 for (var i =
0; i <
4; i++) {
8964 nextState.call(this);
8967 // Modify the counters
8968 for (var i =
0; i <
8; i++) {
8969 C[i] ^= X[(i +
4) &
7];
8979 // Generate four subvectors
8980 var i0 = (((IV_0 <<
8) | (IV_0
>>> 24)) &
0x00ff00ff) | (((IV_0 <<
24) | (IV_0
>>> 8)) &
0xff00ff00);
8981 var i2 = (((IV_1 <<
8) | (IV_1
>>> 24)) &
0x00ff00ff) | (((IV_1 <<
24) | (IV_1
>>> 8)) &
0xff00ff00);
8982 var i1 = (i0
>>> 16) | (i2 &
0xffff0000);
8983 var i3 = (i2 <<
16) | (i0 &
0x0000ffff);
8985 // Modify counter values
8995 // Iterate the system four times
8996 for (var i =
0; i <
4; i++) {
8997 nextState.call(this);
9002 _doProcessBlock: function (M, offset) {
9006 // Iterate the system
9007 nextState.call(this);
9009 // Generate four keystream words
9010 S[
0] = X[
0] ^ (X[
5]
>>> 16) ^ (X[
3] <<
16);
9011 S[
1] = X[
2] ^ (X[
7]
>>> 16) ^ (X[
5] <<
16);
9012 S[
2] = X[
4] ^ (X[
1]
>>> 16) ^ (X[
7] <<
16);
9013 S[
3] = X[
6] ^ (X[
3]
>>> 16) ^ (X[
1] <<
16);
9015 for (var i =
0; i <
4; i++) {
9017 S[i] = (((S[i] <<
8) | (S[i]
>>> 24)) &
0x00ff00ff) |
9018 (((S[i] <<
24) | (S[i]
>>> 8)) &
0xff00ff00);
9021 M[offset + i] ^= S[i];
9030 function nextState() {
9035 // Save old counter values
9036 for (var i =
0; i <
8; i++) {
9040 // Calculate new counter values
9041 C[
0] = (C[
0] +
0x4d34d34d + this._b) |
0;
9042 C[
1] = (C[
1] +
0xd34d34d3 + ((C[
0]
>>> 0) < (C_[
0]
>>> 0) ?
1 :
0)) |
0;
9043 C[
2] = (C[
2] +
0x34d34d34 + ((C[
1]
>>> 0) < (C_[
1]
>>> 0) ?
1 :
0)) |
0;
9044 C[
3] = (C[
3] +
0x4d34d34d + ((C[
2]
>>> 0) < (C_[
2]
>>> 0) ?
1 :
0)) |
0;
9045 C[
4] = (C[
4] +
0xd34d34d3 + ((C[
3]
>>> 0) < (C_[
3]
>>> 0) ?
1 :
0)) |
0;
9046 C[
5] = (C[
5] +
0x34d34d34 + ((C[
4]
>>> 0) < (C_[
4]
>>> 0) ?
1 :
0)) |
0;
9047 C[
6] = (C[
6] +
0x4d34d34d + ((C[
5]
>>> 0) < (C_[
5]
>>> 0) ?
1 :
0)) |
0;
9048 C[
7] = (C[
7] +
0xd34d34d3 + ((C[
6]
>>> 0) < (C_[
6]
>>> 0) ?
1 :
0)) |
0;
9049 this._b = (C[
7]
>>> 0) < (C_[
7]
>>> 0) ?
1 :
0;
9051 // Calculate the g-values
9052 for (var i =
0; i <
8; i++) {
9053 var gx = X[i] + C[i];
9055 // Construct high and low argument for squaring
9056 var ga = gx &
0xffff;
9059 // Calculate high and low result of squaring
9060 var gh = ((((ga * ga)
>>> 17) + ga * gb)
>>> 15) + gb * gb;
9061 var gl = (((gx &
0xffff0000) * gx) |
0) + (((gx &
0x0000ffff) * gx) |
0);
9067 // Calculate new state values
9068 X[
0] = (G[
0] + ((G[
7] <<
16) | (G[
7]
>>> 16)) + ((G[
6] <<
16) | (G[
6]
>>> 16))) |
0;
9069 X[
1] = (G[
1] + ((G[
0] <<
8) | (G[
0]
>>> 24)) + G[
7]) |
0;
9070 X[
2] = (G[
2] + ((G[
1] <<
16) | (G[
1]
>>> 16)) + ((G[
0] <<
16) | (G[
0]
>>> 16))) |
0;
9071 X[
3] = (G[
3] + ((G[
2] <<
8) | (G[
2]
>>> 24)) + G[
1]) |
0;
9072 X[
4] = (G[
4] + ((G[
3] <<
16) | (G[
3]
>>> 16)) + ((G[
2] <<
16) | (G[
2]
>>> 16))) |
0;
9073 X[
5] = (G[
5] + ((G[
4] <<
8) | (G[
4]
>>> 24)) + G[
3]) |
0;
9074 X[
6] = (G[
6] + ((G[
5] <<
16) | (G[
5]
>>> 16)) + ((G[
4] <<
16) | (G[
4]
>>> 16))) |
0;
9075 X[
7] = (G[
7] + ((G[
6] <<
8) | (G[
6]
>>> 24)) + G[
5]) |
0;
9079 * Shortcut functions to the cipher's object interface.
9083 * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);
9084 * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);
9086 C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
9090 return CryptoJS.RabbitLegacy;
9093 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
52:[function(_dereq_,module,exports){
9094 ;(function (root, factory, undef) {
9095 if (typeof exports ===
"object") {
9097 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./enc-base64"), _dereq_(
"./md5"), _dereq_(
"./evpkdf"), _dereq_(
"./cipher-core"));
9099 else if (typeof define ===
"function" && define.amd) {
9101 define([
"./core",
"./enc-base64",
"./md5",
"./evpkdf",
"./cipher-core"], factory);
9105 factory(root.CryptoJS);
9107 }(this, function (CryptoJS) {
9113 var StreamCipher = C_lib.StreamCipher;
9114 var C_algo = C.algo;
9122 * Rabbit stream cipher algorithm
9124 var Rabbit = C_algo.Rabbit = StreamCipher.extend({
9125 _doReset: function () {
9127 var K = this._key.words;
9128 var iv = this.cfg.iv;
9131 for (var i =
0; i <
4; i++) {
9132 K[i] = (((K[i] <<
8) | (K[i]
>>> 24)) &
0x00ff00ff) |
9133 (((K[i] <<
24) | (K[i]
>>> 8)) &
0xff00ff00);
9136 // Generate initial state values
9138 K[
0], (K[
3] <<
16) | (K[
2]
>>> 16),
9139 K[
1], (K[
0] <<
16) | (K[
3]
>>> 16),
9140 K[
2], (K[
1] <<
16) | (K[
0]
>>> 16),
9141 K[
3], (K[
2] <<
16) | (K[
1]
>>> 16)
9144 // Generate initial counter values
9146 (K[
2] <<
16) | (K[
2]
>>> 16), (K[
0] &
0xffff0000) | (K[
1] &
0x0000ffff),
9147 (K[
3] <<
16) | (K[
3]
>>> 16), (K[
1] &
0xffff0000) | (K[
2] &
0x0000ffff),
9148 (K[
0] <<
16) | (K[
0]
>>> 16), (K[
2] &
0xffff0000) | (K[
3] &
0x0000ffff),
9149 (K[
1] <<
16) | (K[
1]
>>> 16), (K[
3] &
0xffff0000) | (K[
0] &
0x0000ffff)
9155 // Iterate the system four times
9156 for (var i =
0; i <
4; i++) {
9157 nextState.call(this);
9160 // Modify the counters
9161 for (var i =
0; i <
8; i++) {
9162 C[i] ^= X[(i +
4) &
7];
9172 // Generate four subvectors
9173 var i0 = (((IV_0 <<
8) | (IV_0
>>> 24)) &
0x00ff00ff) | (((IV_0 <<
24) | (IV_0
>>> 8)) &
0xff00ff00);
9174 var i2 = (((IV_1 <<
8) | (IV_1
>>> 24)) &
0x00ff00ff) | (((IV_1 <<
24) | (IV_1
>>> 8)) &
0xff00ff00);
9175 var i1 = (i0
>>> 16) | (i2 &
0xffff0000);
9176 var i3 = (i2 <<
16) | (i0 &
0x0000ffff);
9178 // Modify counter values
9188 // Iterate the system four times
9189 for (var i =
0; i <
4; i++) {
9190 nextState.call(this);
9195 _doProcessBlock: function (M, offset) {
9199 // Iterate the system
9200 nextState.call(this);
9202 // Generate four keystream words
9203 S[
0] = X[
0] ^ (X[
5]
>>> 16) ^ (X[
3] <<
16);
9204 S[
1] = X[
2] ^ (X[
7]
>>> 16) ^ (X[
5] <<
16);
9205 S[
2] = X[
4] ^ (X[
1]
>>> 16) ^ (X[
7] <<
16);
9206 S[
3] = X[
6] ^ (X[
3]
>>> 16) ^ (X[
1] <<
16);
9208 for (var i =
0; i <
4; i++) {
9210 S[i] = (((S[i] <<
8) | (S[i]
>>> 24)) &
0x00ff00ff) |
9211 (((S[i] <<
24) | (S[i]
>>> 8)) &
0xff00ff00);
9214 M[offset + i] ^= S[i];
9223 function nextState() {
9228 // Save old counter values
9229 for (var i =
0; i <
8; i++) {
9233 // Calculate new counter values
9234 C[
0] = (C[
0] +
0x4d34d34d + this._b) |
0;
9235 C[
1] = (C[
1] +
0xd34d34d3 + ((C[
0]
>>> 0) < (C_[
0]
>>> 0) ?
1 :
0)) |
0;
9236 C[
2] = (C[
2] +
0x34d34d34 + ((C[
1]
>>> 0) < (C_[
1]
>>> 0) ?
1 :
0)) |
0;
9237 C[
3] = (C[
3] +
0x4d34d34d + ((C[
2]
>>> 0) < (C_[
2]
>>> 0) ?
1 :
0)) |
0;
9238 C[
4] = (C[
4] +
0xd34d34d3 + ((C[
3]
>>> 0) < (C_[
3]
>>> 0) ?
1 :
0)) |
0;
9239 C[
5] = (C[
5] +
0x34d34d34 + ((C[
4]
>>> 0) < (C_[
4]
>>> 0) ?
1 :
0)) |
0;
9240 C[
6] = (C[
6] +
0x4d34d34d + ((C[
5]
>>> 0) < (C_[
5]
>>> 0) ?
1 :
0)) |
0;
9241 C[
7] = (C[
7] +
0xd34d34d3 + ((C[
6]
>>> 0) < (C_[
6]
>>> 0) ?
1 :
0)) |
0;
9242 this._b = (C[
7]
>>> 0) < (C_[
7]
>>> 0) ?
1 :
0;
9244 // Calculate the g-values
9245 for (var i =
0; i <
8; i++) {
9246 var gx = X[i] + C[i];
9248 // Construct high and low argument for squaring
9249 var ga = gx &
0xffff;
9252 // Calculate high and low result of squaring
9253 var gh = ((((ga * ga)
>>> 17) + ga * gb)
>>> 15) + gb * gb;
9254 var gl = (((gx &
0xffff0000) * gx) |
0) + (((gx &
0x0000ffff) * gx) |
0);
9260 // Calculate new state values
9261 X[
0] = (G[
0] + ((G[
7] <<
16) | (G[
7]
>>> 16)) + ((G[
6] <<
16) | (G[
6]
>>> 16))) |
0;
9262 X[
1] = (G[
1] + ((G[
0] <<
8) | (G[
0]
>>> 24)) + G[
7]) |
0;
9263 X[
2] = (G[
2] + ((G[
1] <<
16) | (G[
1]
>>> 16)) + ((G[
0] <<
16) | (G[
0]
>>> 16))) |
0;
9264 X[
3] = (G[
3] + ((G[
2] <<
8) | (G[
2]
>>> 24)) + G[
1]) |
0;
9265 X[
4] = (G[
4] + ((G[
3] <<
16) | (G[
3]
>>> 16)) + ((G[
2] <<
16) | (G[
2]
>>> 16))) |
0;
9266 X[
5] = (G[
5] + ((G[
4] <<
8) | (G[
4]
>>> 24)) + G[
3]) |
0;
9267 X[
6] = (G[
6] + ((G[
5] <<
16) | (G[
5]
>>> 16)) + ((G[
4] <<
16) | (G[
4]
>>> 16))) |
0;
9268 X[
7] = (G[
7] + ((G[
6] <<
8) | (G[
6]
>>> 24)) + G[
5]) |
0;
9272 * Shortcut functions to the cipher's object interface.
9276 * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);
9277 * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);
9279 C.Rabbit = StreamCipher._createHelper(Rabbit);
9283 return CryptoJS.Rabbit;
9286 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
53:[function(_dereq_,module,exports){
9287 ;(function (root, factory, undef) {
9288 if (typeof exports ===
"object") {
9290 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./enc-base64"), _dereq_(
"./md5"), _dereq_(
"./evpkdf"), _dereq_(
"./cipher-core"));
9292 else if (typeof define ===
"function" && define.amd) {
9294 define([
"./core",
"./enc-base64",
"./md5",
"./evpkdf",
"./cipher-core"], factory);
9298 factory(root.CryptoJS);
9300 }(this, function (CryptoJS) {
9306 var StreamCipher = C_lib.StreamCipher;
9307 var C_algo = C.algo;
9310 * RC4 stream cipher algorithm.
9312 var RC4 = C_algo.RC4 = StreamCipher.extend({
9313 _doReset: function () {
9315 var key = this._key;
9316 var keyWords = key.words;
9317 var keySigBytes = key.sigBytes;
9320 var S = this._S = [];
9321 for (var i =
0; i <
256; i++) {
9326 for (var i =
0, j =
0; i <
256; i++) {
9327 var keyByteIndex = i % keySigBytes;
9328 var keyByte = (keyWords[keyByteIndex
>>> 2]
>>> (
24 - (keyByteIndex %
4) *
8)) &
0xff;
9330 j = (j + S[i] + keyByte) %
256;
9339 this._i = this._j =
0;
9342 _doProcessBlock: function (M, offset) {
9343 M[offset] ^= generateKeystreamWord.call(this);
9351 function generateKeystreamWord() {
9357 // Generate keystream word
9358 var keystreamWord =
0;
9359 for (var n =
0; n <
4; n++) {
9361 j = (j + S[i]) %
256;
9368 keystreamWord |= S[(S[i] + S[j]) %
256] << (
24 - n *
8);
9375 return keystreamWord;
9379 * Shortcut functions to the cipher's object interface.
9383 * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);
9384 * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);
9386 C.RC4 = StreamCipher._createHelper(RC4);
9389 * Modified RC4 stream cipher algorithm.
9391 var RC4Drop = C_algo.RC4Drop = RC4.extend({
9393 * Configuration options.
9395 * @property {number} drop The number of keystream words to drop. Default
192
9397 cfg: RC4.cfg.extend({
9401 _doReset: function () {
9402 RC4._doReset.call(this);
9405 for (var i = this.cfg.drop; i
> 0; i--) {
9406 generateKeystreamWord.call(this);
9412 * Shortcut functions to the cipher's object interface.
9416 * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);
9417 * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);
9419 C.RC4Drop = StreamCipher._createHelper(RC4Drop);
9423 return CryptoJS.RC4;
9426 },{
"./cipher-core":
30,
"./core":
31,
"./enc-base64":
32,
"./evpkdf":
34,
"./md5":
39}],
54:[function(_dereq_,module,exports){
9427 ;(function (root, factory) {
9428 if (typeof exports ===
"object") {
9430 module.exports = exports = factory(_dereq_(
"./core"));
9432 else if (typeof define ===
"function" && define.amd) {
9434 define([
"./core"], factory);
9438 factory(root.CryptoJS);
9440 }(this, function (CryptoJS) {
9443 (c)
2012 by Cédric Mesnil. All rights reserved.
9445 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
9447 - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
9448 - 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.
9450 THIS 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 HOLDER 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.
9457 var WordArray = C_lib.WordArray;
9458 var Hasher = C_lib.Hasher;
9459 var C_algo = C.algo;
9462 var _zl = WordArray.create([
9463 0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
9464 7,
4,
13,
1,
10,
6,
15,
3,
12,
0,
9,
5,
2,
14,
11,
8,
9465 3,
10,
14,
4,
9,
15,
8,
1,
2,
7,
0,
6,
13,
11,
5,
12,
9466 1,
9,
11,
10,
0,
8,
12,
4,
13,
3,
7,
15,
14,
5,
6,
2,
9467 4,
0,
5,
9,
7,
12,
2,
10,
14,
1,
3,
8,
11,
6,
15,
13]);
9468 var _zr = WordArray.create([
9469 5,
14,
7,
0,
9,
2,
11,
4,
13,
6,
15,
8,
1,
10,
3,
12,
9470 6,
11,
3,
7,
0,
13,
5,
10,
14,
15,
8,
12,
4,
9,
1,
2,
9471 15,
5,
1,
3,
7,
14,
6,
9,
11,
8,
12,
2,
10,
0,
4,
13,
9472 8,
6,
4,
1,
3,
11,
15,
0,
5,
12,
2,
13,
9,
7,
10,
14,
9473 12,
15,
10,
4,
1,
5,
8,
7,
6,
2,
13,
14,
0,
3,
9,
11]);
9474 var _sl = WordArray.create([
9475 11,
14,
15,
12,
5,
8,
7,
9,
11,
13,
14,
15,
6,
7,
9,
8,
9476 7,
6,
8,
13,
11,
9,
7,
15,
7,
12,
15,
9,
11,
7,
13,
12,
9477 11,
13,
6,
7,
14,
9,
13,
15,
14,
8,
13,
6,
5,
12,
7,
5,
9478 11,
12,
14,
15,
14,
15,
9,
8,
9,
14,
5,
6,
8,
6,
5,
12,
9479 9,
15,
5,
11,
6,
8,
13,
12,
5,
12,
13,
14,
11,
8,
5,
6 ]);
9480 var _sr = WordArray.create([
9481 8,
9,
9,
11,
13,
15,
15,
5,
7,
7,
8,
11,
14,
14,
12,
6,
9482 9,
13,
15,
7,
12,
8,
9,
11,
7,
7,
12,
7,
6,
15,
13,
11,
9483 9,
7,
15,
11,
8,
6,
6,
14,
12,
13,
5,
14,
13,
13,
7,
5,
9484 15,
5,
8,
11,
14,
14,
6,
14,
6,
9,
12,
9,
12,
5,
15,
8,
9485 8,
5,
12,
9,
12,
5,
14,
6,
8,
13,
6,
5,
15,
13,
11,
11 ]);
9487 var _hl = WordArray.create([
0x00000000,
0x5A827999,
0x6ED9EBA1,
0x8F1BBCDC,
0xA953FD4E]);
9488 var _hr = WordArray.create([
0x50A28BE6,
0x5C4DD124,
0x6D703EF3,
0x7A6D76E9,
0x00000000]);
9491 * RIPEMD160 hash algorithm.
9493 var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
9494 _doReset: function () {
9495 this._hash = WordArray.create([
0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0]);
9498 _doProcessBlock: function (M, offset) {
9501 for (var i =
0; i <
16; i++) {
9503 var offset_i = offset + i;
9504 var M_offset_i = M[offset_i];
9508 (((M_offset_i <<
8) | (M_offset_i
>>> 24)) &
0x00ff00ff) |
9509 (((M_offset_i <<
24) | (M_offset_i
>>> 8)) &
0xff00ff00)
9513 var H = this._hash.words;
9521 // Working variables
9522 var al, bl, cl, dl, el;
9523 var ar, br, cr, dr, er;
9532 for (var i =
0; i <
80; i +=
1) {
9533 t = (al + M[offset+zl[i]])|
0;
9535 t += f1(bl,cl,dl) + hl[
0];
9537 t += f2(bl,cl,dl) + hl[
1];
9539 t += f3(bl,cl,dl) + hl[
2];
9541 t += f4(bl,cl,dl) + hl[
3];
9542 } else {// if (i
<80) {
9543 t += f5(bl,cl,dl) + hl[
4];
9554 t = (ar + M[offset+zr[i]])|
0;
9556 t += f5(br,cr,dr) + hr[
0];
9558 t += f4(br,cr,dr) + hr[
1];
9560 t += f3(br,cr,dr) + hr[
2];
9562 t += f2(br,cr,dr) + hr[
3];
9563 } else {// if (i
<80) {
9564 t += f1(br,cr,dr) + hr[
4];
9575 // Intermediate hash value
9576 t = (H[
1] + cl + dr)|
0;
9577 H[
1] = (H[
2] + dl + er)|
0;
9578 H[
2] = (H[
3] + el + ar)|
0;
9579 H[
3] = (H[
4] + al + br)|
0;
9580 H[
4] = (H[
0] + bl + cr)|
0;
9584 _doFinalize: function () {
9586 var data = this._data;
9587 var dataWords = data.words;
9589 var nBitsTotal = this._nDataBytes *
8;
9590 var nBitsLeft = data.sigBytes *
8;
9593 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
9594 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = (
9595 (((nBitsTotal <<
8) | (nBitsTotal
>>> 24)) &
0x00ff00ff) |
9596 (((nBitsTotal <<
24) | (nBitsTotal
>>> 8)) &
0xff00ff00)
9598 data.sigBytes = (dataWords.length +
1) *
4;
9600 // Hash final blocks
9604 var hash = this._hash;
9608 for (var i =
0; i <
5; i++) {
9613 H[i] = (((H_i <<
8) | (H_i
>>> 24)) &
0x00ff00ff) |
9614 (((H_i <<
24) | (H_i
>>> 8)) &
0xff00ff00);
9617 // Return final computed hash
9621 clone: function () {
9622 var clone = Hasher.clone.call(this);
9623 clone._hash = this._hash.clone();
9630 function f1(x, y, z) {
9631 return ((x) ^ (y) ^ (z));
9635 function f2(x, y, z) {
9636 return (((x)&(y)) | ((~x)&(z)));
9639 function f3(x, y, z) {
9640 return (((x) | (~(y))) ^ (z));
9643 function f4(x, y, z) {
9644 return (((x) & (z)) | ((y)&(~(z))));
9647 function f5(x, y, z) {
9648 return ((x) ^ ((y) |(~(z))));
9652 function rotl(x,n) {
9653 return (x<
<n) | (x
>>>(
32-n));
9658 * Shortcut function to the hasher's object interface.
9660 * @param {WordArray|string} message The message to hash.
9662 * @return {WordArray} The hash.
9668 * var hash = CryptoJS.RIPEMD160('message');
9669 * var hash = CryptoJS.RIPEMD160(wordArray);
9671 C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
9674 * Shortcut function to the HMAC's object interface.
9676 * @param {WordArray|string} message The message to hash.
9677 * @param {WordArray|string} key The secret key.
9679 * @return {WordArray} The HMAC.
9685 * var hmac = CryptoJS.HmacRIPEMD160(message, key);
9687 C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
9691 return CryptoJS.RIPEMD160;
9694 },{"./core":
31}],
55:[function(_dereq_,module,exports){
9695 ;(function (root, factory) {
9696 if (typeof exports === "object") {
9698 module.exports = exports = factory(_dereq_("./core"));
9700 else if (typeof define === "function" && define.amd) {
9702 define(["./core"], factory);
9706 factory(root.CryptoJS);
9708 }(this, function (CryptoJS) {
9714 var WordArray = C_lib.WordArray;
9715 var Hasher = C_lib.Hasher;
9716 var C_algo = C.algo;
9722 * SHA-
1 hash algorithm.
9724 var SHA1 = C_algo.SHA1 = Hasher.extend({
9725 _doReset: function () {
9726 this._hash = new WordArray.init([
9727 0x67452301,
0xefcdab89,
9728 0x98badcfe,
0x10325476,
9733 _doProcessBlock: function (M, offset) {
9735 var H = this._hash.words;
9737 // Working variables
9745 for (var i =
0; i <
80; i++) {
9747 W[i] = M[offset + i] |
0;
9749 var n = W[i -
3] ^ W[i -
8] ^ W[i -
14] ^ W[i -
16];
9750 W[i] = (n <<
1) | (n
>>> 31);
9753 var t = ((a <<
5) | (a
>>> 27)) + e + W[i];
9755 t += ((b & c) | (~b & d)) +
0x5a827999;
9756 } else if (i <
40) {
9757 t += (b ^ c ^ d) +
0x6ed9eba1;
9758 } else if (i <
60) {
9759 t += ((b & c) | (b & d) | (c & d)) -
0x70e44324;
9760 } else /* if (i <
80) */ {
9761 t += (b ^ c ^ d) -
0x359d3e2a;
9766 c = (b <<
30) | (b
>>> 2);
9771 // Intermediate hash value
9772 H[
0] = (H[
0] + a) |
0;
9773 H[
1] = (H[
1] + b) |
0;
9774 H[
2] = (H[
2] + c) |
0;
9775 H[
3] = (H[
3] + d) |
0;
9776 H[
4] = (H[
4] + e) |
0;
9779 _doFinalize: function () {
9781 var data = this._data;
9782 var dataWords = data.words;
9784 var nBitsTotal = this._nDataBytes *
8;
9785 var nBitsLeft = data.sigBytes *
8;
9788 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
9789 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = Math.floor(nBitsTotal /
0x100000000);
9790 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
15] = nBitsTotal;
9791 data.sigBytes = dataWords.length *
4;
9793 // Hash final blocks
9796 // Return final computed hash
9800 clone: function () {
9801 var clone = Hasher.clone.call(this);
9802 clone._hash = this._hash.clone();
9809 * Shortcut function to the hasher's object interface.
9811 * @param {WordArray|string} message The message to hash.
9813 * @return {WordArray} The hash.
9819 * var hash = CryptoJS.SHA1('message');
9820 * var hash = CryptoJS.SHA1(wordArray);
9822 C.SHA1 = Hasher._createHelper(SHA1);
9825 * Shortcut function to the HMAC's object interface.
9827 * @param {WordArray|string} message The message to hash.
9828 * @param {WordArray|string} key The secret key.
9830 * @return {WordArray} The HMAC.
9836 * var hmac = CryptoJS.HmacSHA1(message, key);
9838 C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
9842 return CryptoJS.SHA1;
9845 },{
"./core":
31}],
56:[function(_dereq_,module,exports){
9846 ;(function (root, factory, undef) {
9847 if (typeof exports ===
"object") {
9849 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./sha256"));
9851 else if (typeof define ===
"function" && define.amd) {
9853 define([
"./core",
"./sha256"], factory);
9857 factory(root.CryptoJS);
9859 }(this, function (CryptoJS) {
9865 var WordArray = C_lib.WordArray;
9866 var C_algo = C.algo;
9867 var SHA256 = C_algo.SHA256;
9870 * SHA-
224 hash algorithm.
9872 var SHA224 = C_algo.SHA224 = SHA256.extend({
9873 _doReset: function () {
9874 this._hash = new WordArray.init([
9875 0xc1059ed8,
0x367cd507,
0x3070dd17,
0xf70e5939,
9876 0xffc00b31,
0x68581511,
0x64f98fa7,
0xbefa4fa4
9880 _doFinalize: function () {
9881 var hash = SHA256._doFinalize.call(this);
9890 * Shortcut function to the hasher's object interface.
9892 * @param {WordArray|string} message The message to hash.
9894 * @return {WordArray} The hash.
9900 * var hash = CryptoJS.SHA224('message');
9901 * var hash = CryptoJS.SHA224(wordArray);
9903 C.SHA224 = SHA256._createHelper(SHA224);
9906 * Shortcut function to the HMAC's object interface.
9908 * @param {WordArray|string} message The message to hash.
9909 * @param {WordArray|string} key The secret key.
9911 * @return {WordArray} The HMAC.
9917 * var hmac = CryptoJS.HmacSHA224(message, key);
9919 C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
9923 return CryptoJS.SHA224;
9926 },{
"./core":
31,
"./sha256":
57}],
57:[function(_dereq_,module,exports){
9927 ;(function (root, factory) {
9928 if (typeof exports ===
"object") {
9930 module.exports = exports = factory(_dereq_(
"./core"));
9932 else if (typeof define ===
"function" && define.amd) {
9934 define([
"./core"], factory);
9938 factory(root.CryptoJS);
9940 }(this, function (CryptoJS) {
9946 var WordArray = C_lib.WordArray;
9947 var Hasher = C_lib.Hasher;
9948 var C_algo = C.algo;
9950 // Initialization and round constants tables
9954 // Compute constants
9956 function isPrime(n) {
9957 var sqrtN = Math.sqrt(n);
9958 for (var factor =
2; factor <= sqrtN; factor++) {
9959 if (!(n % factor)) {
9967 function getFractionalBits(n) {
9968 return ((n - (n |
0)) *
0x100000000) |
0;
9973 while (nPrime <
64) {
9976 H[nPrime] = getFractionalBits(Math.pow(n,
1 /
2));
9978 K[nPrime] = getFractionalBits(Math.pow(n,
1 /
3));
9991 * SHA-
256 hash algorithm.
9993 var SHA256 = C_algo.SHA256 = Hasher.extend({
9994 _doReset: function () {
9995 this._hash = new WordArray.init(H.slice(
0));
9998 _doProcessBlock: function (M, offset) {
10000 var H = this._hash.words;
10002 // Working variables
10013 for (var i =
0; i <
64; i++) {
10015 W[i] = M[offset + i] |
0;
10017 var gamma0x = W[i -
15];
10018 var gamma0 = ((gamma0x <<
25) | (gamma0x
>>> 7)) ^
10019 ((gamma0x <<
14) | (gamma0x
>>> 18)) ^
10022 var gamma1x = W[i -
2];
10023 var gamma1 = ((gamma1x <<
15) | (gamma1x
>>> 17)) ^
10024 ((gamma1x <<
13) | (gamma1x
>>> 19)) ^
10027 W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16];
10030 var ch = (e & f) ^ (~e & g);
10031 var maj = (a & b) ^ (a & c) ^ (b & c);
10033 var sigma0 = ((a <<
30) | (a
>>> 2)) ^ ((a <<
19) | (a
>>> 13)) ^ ((a <<
10) | (a
>>> 22));
10034 var sigma1 = ((e <<
26) | (e
>>> 6)) ^ ((e <<
21) | (e
>>> 11)) ^ ((e <<
7) | (e
>>> 25));
10036 var t1 = h + sigma1 + ch + K[i] + W[i];
10037 var t2 = sigma0 + maj;
10049 // Intermediate hash value
10050 H[
0] = (H[
0] + a) |
0;
10051 H[
1] = (H[
1] + b) |
0;
10052 H[
2] = (H[
2] + c) |
0;
10053 H[
3] = (H[
3] + d) |
0;
10054 H[
4] = (H[
4] + e) |
0;
10055 H[
5] = (H[
5] + f) |
0;
10056 H[
6] = (H[
6] + g) |
0;
10057 H[
7] = (H[
7] + h) |
0;
10060 _doFinalize: function () {
10062 var data = this._data;
10063 var dataWords = data.words;
10065 var nBitsTotal = this._nDataBytes *
8;
10066 var nBitsLeft = data.sigBytes *
8;
10069 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
10070 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
14] = Math.floor(nBitsTotal /
0x100000000);
10071 dataWords[(((nBitsLeft +
64)
>>> 9) <<
4) +
15] = nBitsTotal;
10072 data.sigBytes = dataWords.length *
4;
10074 // Hash final blocks
10077 // Return final computed hash
10081 clone: function () {
10082 var clone = Hasher.clone.call(this);
10083 clone._hash = this._hash.clone();
10090 * Shortcut function to the hasher's object interface.
10092 * @param {WordArray|string} message The message to hash.
10094 * @return {WordArray} The hash.
10100 * var hash = CryptoJS.SHA256('message');
10101 * var hash = CryptoJS.SHA256(wordArray);
10103 C.SHA256 = Hasher._createHelper(SHA256);
10106 * Shortcut function to the HMAC's object interface.
10108 * @param {WordArray|string} message The message to hash.
10109 * @param {WordArray|string} key The secret key.
10111 * @return {WordArray} The HMAC.
10117 * var hmac = CryptoJS.HmacSHA256(message, key);
10119 C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
10123 return CryptoJS.SHA256;
10126 },{
"./core":
31}],
58:[function(_dereq_,module,exports){
10127 ;(function (root, factory, undef) {
10128 if (typeof exports ===
"object") {
10130 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./x64-core"));
10132 else if (typeof define ===
"function" && define.amd) {
10134 define([
"./core",
"./x64-core"], factory);
10137 // Global (browser)
10138 factory(root.CryptoJS);
10140 }(this, function (CryptoJS) {
10146 var WordArray = C_lib.WordArray;
10147 var Hasher = C_lib.Hasher;
10149 var X64Word = C_x64.Word;
10150 var C_algo = C.algo;
10152 // Constants tables
10153 var RHO_OFFSETS = [];
10154 var PI_INDEXES = [];
10155 var ROUND_CONSTANTS = [];
10157 // Compute Constants
10159 // Compute rho offset constants
10161 for (var t =
0; t <
24; t++) {
10162 RHO_OFFSETS[x +
5 * y] = ((t +
1) * (t +
2) /
2) %
64;
10165 var newY = (
2 * x +
3 * y) %
5;
10170 // Compute pi index constants
10171 for (var x =
0; x <
5; x++) {
10172 for (var y =
0; y <
5; y++) {
10173 PI_INDEXES[x +
5 * y] = y + ((
2 * x +
3 * y) %
5) *
5;
10177 // Compute round constants
10179 for (var i =
0; i <
24; i++) {
10180 var roundConstantMsw =
0;
10181 var roundConstantLsw =
0;
10183 for (var j =
0; j <
7; j++) {
10185 var bitPosition = (
1 << j) -
1;
10186 if (bitPosition <
32) {
10187 roundConstantLsw ^=
1 << bitPosition;
10188 } else /* if (bitPosition
>=
32) */ {
10189 roundConstantMsw ^=
1 << (bitPosition -
32);
10193 // Compute next LFSR
10195 // Primitive polynomial over GF(
2): x^
8 + x^
6 + x^
5 + x^
4 +
1
10196 LFSR = (LFSR <<
1) ^
0x71;
10202 ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
10206 // Reusable objects for temporary values
10209 for (var i =
0; i <
25; i++) {
10210 T[i] = X64Word.create();
10215 * SHA-
3 hash algorithm.
10217 var SHA3 = C_algo.SHA3 = Hasher.extend({
10219 * Configuration options.
10221 * @property {number} outputLength
10222 * The desired number of bits in the output hash.
10223 * Only values permitted are:
224,
256,
384,
512.
10226 cfg: Hasher.cfg.extend({
10230 _doReset: function () {
10231 var state = this._state = []
10232 for (var i =
0; i <
25; i++) {
10233 state[i] = new X64Word.init();
10236 this.blockSize = (
1600 -
2 * this.cfg.outputLength) /
32;
10239 _doProcessBlock: function (M, offset) {
10241 var state = this._state;
10242 var nBlockSizeLanes = this.blockSize /
2;
10245 for (var i =
0; i < nBlockSizeLanes; i++) {
10247 var M2i = M[offset +
2 * i];
10248 var M2i1 = M[offset +
2 * i +
1];
10252 (((M2i <<
8) | (M2i
>>> 24)) &
0x00ff00ff) |
10253 (((M2i <<
24) | (M2i
>>> 8)) &
0xff00ff00)
10256 (((M2i1 <<
8) | (M2i1
>>> 24)) &
0x00ff00ff) |
10257 (((M2i1 <<
24) | (M2i1
>>> 8)) &
0xff00ff00)
10260 // Absorb message into state
10261 var lane = state[i];
10267 for (var round =
0; round <
24; round++) {
10269 for (var x =
0; x <
5; x++) {
10270 // Mix column lanes
10271 var tMsw =
0, tLsw =
0;
10272 for (var y =
0; y <
5; y++) {
10273 var lane = state[x +
5 * y];
10278 // Temporary values
10283 for (var x =
0; x <
5; x++) {
10285 var Tx4 = T[(x +
4) %
5];
10286 var Tx1 = T[(x +
1) %
5];
10287 var Tx1Msw = Tx1.high;
10288 var Tx1Lsw = Tx1.low;
10290 // Mix surrounding columns
10291 var tMsw = Tx4.high ^ ((Tx1Msw <<
1) | (Tx1Lsw
>>> 31));
10292 var tLsw = Tx4.low ^ ((Tx1Lsw <<
1) | (Tx1Msw
>>> 31));
10293 for (var y =
0; y <
5; y++) {
10294 var lane = state[x +
5 * y];
10301 for (var laneIndex =
1; laneIndex <
25; laneIndex++) {
10303 var lane = state[laneIndex];
10304 var laneMsw = lane.high;
10305 var laneLsw = lane.low;
10306 var rhoOffset = RHO_OFFSETS[laneIndex];
10309 if (rhoOffset <
32) {
10310 var tMsw = (laneMsw << rhoOffset) | (laneLsw
>>> (
32 - rhoOffset));
10311 var tLsw = (laneLsw << rhoOffset) | (laneMsw
>>> (
32 - rhoOffset));
10312 } else /* if (rhoOffset
>=
32) */ {
10313 var tMsw = (laneLsw << (rhoOffset -
32)) | (laneMsw
>>> (
64 - rhoOffset));
10314 var tLsw = (laneMsw << (rhoOffset -
32)) | (laneLsw
>>> (
64 - rhoOffset));
10318 var TPiLane = T[PI_INDEXES[laneIndex]];
10319 TPiLane.high = tMsw;
10320 TPiLane.low = tLsw;
10323 // Rho pi at x = y =
0
10325 var state0 = state[
0];
10326 T0.high = state0.high;
10327 T0.low = state0.low;
10330 for (var x =
0; x <
5; x++) {
10331 for (var y =
0; y <
5; y++) {
10333 var laneIndex = x +
5 * y;
10334 var lane = state[laneIndex];
10335 var TLane = T[laneIndex];
10336 var Tx1Lane = T[((x +
1) %
5) +
5 * y];
10337 var Tx2Lane = T[((x +
2) %
5) +
5 * y];
10340 lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);
10341 lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);
10346 var lane = state[
0];
10347 var roundConstant = ROUND_CONSTANTS[round];
10348 lane.high ^= roundConstant.high;
10349 lane.low ^= roundConstant.low;;
10353 _doFinalize: function () {
10355 var data = this._data;
10356 var dataWords = data.words;
10357 var nBitsTotal = this._nDataBytes *
8;
10358 var nBitsLeft = data.sigBytes *
8;
10359 var blockSizeBits = this.blockSize *
32;
10362 dataWords[nBitsLeft
>>> 5] |=
0x1 << (
24 - nBitsLeft %
32);
10363 dataWords[((Math.ceil((nBitsLeft +
1) / blockSizeBits) * blockSizeBits)
>>> 5) -
1] |=
0x80;
10364 data.sigBytes = dataWords.length *
4;
10366 // Hash final blocks
10370 var state = this._state;
10371 var outputLengthBytes = this.cfg.outputLength /
8;
10372 var outputLengthLanes = outputLengthBytes /
8;
10375 var hashWords = [];
10376 for (var i =
0; i < outputLengthLanes; i++) {
10378 var lane = state[i];
10379 var laneMsw = lane.high;
10380 var laneLsw = lane.low;
10384 (((laneMsw <<
8) | (laneMsw
>>> 24)) &
0x00ff00ff) |
10385 (((laneMsw <<
24) | (laneMsw
>>> 8)) &
0xff00ff00)
10388 (((laneLsw <<
8) | (laneLsw
>>> 24)) &
0x00ff00ff) |
10389 (((laneLsw <<
24) | (laneLsw
>>> 8)) &
0xff00ff00)
10392 // Squeeze state to retrieve hash
10393 hashWords.push(laneLsw);
10394 hashWords.push(laneMsw);
10397 // Return final computed hash
10398 return new WordArray.init(hashWords, outputLengthBytes);
10401 clone: function () {
10402 var clone = Hasher.clone.call(this);
10404 var state = clone._state = this._state.slice(
0);
10405 for (var i =
0; i <
25; i++) {
10406 state[i] = state[i].clone();
10414 * Shortcut function to the hasher's object interface.
10416 * @param {WordArray|string} message The message to hash.
10418 * @return {WordArray} The hash.
10424 * var hash = CryptoJS.SHA3('message');
10425 * var hash = CryptoJS.SHA3(wordArray);
10427 C.SHA3 = Hasher._createHelper(SHA3);
10430 * Shortcut function to the HMAC's object interface.
10432 * @param {WordArray|string} message The message to hash.
10433 * @param {WordArray|string} key The secret key.
10435 * @return {WordArray} The HMAC.
10441 * var hmac = CryptoJS.HmacSHA3(message, key);
10443 C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
10447 return CryptoJS.SHA3;
10450 },{
"./core":
31,
"./x64-core":
62}],
59:[function(_dereq_,module,exports){
10451 ;(function (root, factory, undef) {
10452 if (typeof exports ===
"object") {
10454 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./x64-core"), _dereq_(
"./sha512"));
10456 else if (typeof define ===
"function" && define.amd) {
10458 define([
"./core",
"./x64-core",
"./sha512"], factory);
10461 // Global (browser)
10462 factory(root.CryptoJS);
10464 }(this, function (CryptoJS) {
10470 var X64Word = C_x64.Word;
10471 var X64WordArray = C_x64.WordArray;
10472 var C_algo = C.algo;
10473 var SHA512 = C_algo.SHA512;
10476 * SHA-
384 hash algorithm.
10478 var SHA384 = C_algo.SHA384 = SHA512.extend({
10479 _doReset: function () {
10480 this._hash = new X64WordArray.init([
10481 new X64Word.init(
0xcbbb9d5d,
0xc1059ed8), new X64Word.init(
0x629a292a,
0x367cd507),
10482 new X64Word.init(
0x9159015a,
0x3070dd17), new X64Word.init(
0x152fecd8,
0xf70e5939),
10483 new X64Word.init(
0x67332667,
0xffc00b31), new X64Word.init(
0x8eb44a87,
0x68581511),
10484 new X64Word.init(
0xdb0c2e0d,
0x64f98fa7), new X64Word.init(
0x47b5481d,
0xbefa4fa4)
10488 _doFinalize: function () {
10489 var hash = SHA512._doFinalize.call(this);
10491 hash.sigBytes -=
16;
10498 * Shortcut function to the hasher's object interface.
10500 * @param {WordArray|string} message The message to hash.
10502 * @return {WordArray} The hash.
10508 * var hash = CryptoJS.SHA384('message');
10509 * var hash = CryptoJS.SHA384(wordArray);
10511 C.SHA384 = SHA512._createHelper(SHA384);
10514 * Shortcut function to the HMAC's object interface.
10516 * @param {WordArray|string} message The message to hash.
10517 * @param {WordArray|string} key The secret key.
10519 * @return {WordArray} The HMAC.
10525 * var hmac = CryptoJS.HmacSHA384(message, key);
10527 C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
10531 return CryptoJS.SHA384;
10534 },{
"./core":
31,
"./sha512":
60,
"./x64-core":
62}],
60:[function(_dereq_,module,exports){
10535 ;(function (root, factory, undef) {
10536 if (typeof exports ===
"object") {
10538 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./x64-core"));
10540 else if (typeof define ===
"function" && define.amd) {
10542 define([
"./core",
"./x64-core"], factory);
10545 // Global (browser)
10546 factory(root.CryptoJS);
10548 }(this, function (CryptoJS) {
10554 var Hasher = C_lib.Hasher;
10556 var X64Word = C_x64.Word;
10557 var X64WordArray = C_x64.WordArray;
10558 var C_algo = C.algo;
10560 function X64Word_create() {
10561 return X64Word.create.apply(X64Word, arguments);
10566 X64Word_create(
0x428a2f98,
0xd728ae22), X64Word_create(
0x71374491,
0x23ef65cd),
10567 X64Word_create(
0xb5c0fbcf,
0xec4d3b2f), X64Word_create(
0xe9b5dba5,
0x8189dbbc),
10568 X64Word_create(
0x3956c25b,
0xf348b538), X64Word_create(
0x59f111f1,
0xb605d019),
10569 X64Word_create(
0x923f82a4,
0xaf194f9b), X64Word_create(
0xab1c5ed5,
0xda6d8118),
10570 X64Word_create(
0xd807aa98,
0xa3030242), X64Word_create(
0x12835b01,
0x45706fbe),
10571 X64Word_create(
0x243185be,
0x4ee4b28c), X64Word_create(
0x550c7dc3,
0xd5ffb4e2),
10572 X64Word_create(
0x72be5d74,
0xf27b896f), X64Word_create(
0x80deb1fe,
0x3b1696b1),
10573 X64Word_create(
0x9bdc06a7,
0x25c71235), X64Word_create(
0xc19bf174,
0xcf692694),
10574 X64Word_create(
0xe49b69c1,
0x9ef14ad2), X64Word_create(
0xefbe4786,
0x384f25e3),
10575 X64Word_create(
0x0fc19dc6,
0x8b8cd5b5), X64Word_create(
0x240ca1cc,
0x77ac9c65),
10576 X64Word_create(
0x2de92c6f,
0x592b0275), X64Word_create(
0x4a7484aa,
0x6ea6e483),
10577 X64Word_create(
0x5cb0a9dc,
0xbd41fbd4), X64Word_create(
0x76f988da,
0x831153b5),
10578 X64Word_create(
0x983e5152,
0xee66dfab), X64Word_create(
0xa831c66d,
0x2db43210),
10579 X64Word_create(
0xb00327c8,
0x98fb213f), X64Word_create(
0xbf597fc7,
0xbeef0ee4),
10580 X64Word_create(
0xc6e00bf3,
0x3da88fc2), X64Word_create(
0xd5a79147,
0x930aa725),
10581 X64Word_create(
0x06ca6351,
0xe003826f), X64Word_create(
0x14292967,
0x0a0e6e70),
10582 X64Word_create(
0x27b70a85,
0x46d22ffc), X64Word_create(
0x2e1b2138,
0x5c26c926),
10583 X64Word_create(
0x4d2c6dfc,
0x5ac42aed), X64Word_create(
0x53380d13,
0x9d95b3df),
10584 X64Word_create(
0x650a7354,
0x8baf63de), X64Word_create(
0x766a0abb,
0x3c77b2a8),
10585 X64Word_create(
0x81c2c92e,
0x47edaee6), X64Word_create(
0x92722c85,
0x1482353b),
10586 X64Word_create(
0xa2bfe8a1,
0x4cf10364), X64Word_create(
0xa81a664b,
0xbc423001),
10587 X64Word_create(
0xc24b8b70,
0xd0f89791), X64Word_create(
0xc76c51a3,
0x0654be30),
10588 X64Word_create(
0xd192e819,
0xd6ef5218), X64Word_create(
0xd6990624,
0x5565a910),
10589 X64Word_create(
0xf40e3585,
0x5771202a), X64Word_create(
0x106aa070,
0x32bbd1b8),
10590 X64Word_create(
0x19a4c116,
0xb8d2d0c8), X64Word_create(
0x1e376c08,
0x5141ab53),
10591 X64Word_create(
0x2748774c,
0xdf8eeb99), X64Word_create(
0x34b0bcb5,
0xe19b48a8),
10592 X64Word_create(
0x391c0cb3,
0xc5c95a63), X64Word_create(
0x4ed8aa4a,
0xe3418acb),
10593 X64Word_create(
0x5b9cca4f,
0x7763e373), X64Word_create(
0x682e6ff3,
0xd6b2b8a3),
10594 X64Word_create(
0x748f82ee,
0x5defb2fc), X64Word_create(
0x78a5636f,
0x43172f60),
10595 X64Word_create(
0x84c87814,
0xa1f0ab72), X64Word_create(
0x8cc70208,
0x1a6439ec),
10596 X64Word_create(
0x90befffa,
0x23631e28), X64Word_create(
0xa4506ceb,
0xde82bde9),
10597 X64Word_create(
0xbef9a3f7,
0xb2c67915), X64Word_create(
0xc67178f2,
0xe372532b),
10598 X64Word_create(
0xca273ece,
0xea26619c), X64Word_create(
0xd186b8c7,
0x21c0c207),
10599 X64Word_create(
0xeada7dd6,
0xcde0eb1e), X64Word_create(
0xf57d4f7f,
0xee6ed178),
10600 X64Word_create(
0x06f067aa,
0x72176fba), X64Word_create(
0x0a637dc5,
0xa2c898a6),
10601 X64Word_create(
0x113f9804,
0xbef90dae), X64Word_create(
0x1b710b35,
0x131c471b),
10602 X64Word_create(
0x28db77f5,
0x23047d84), X64Word_create(
0x32caab7b,
0x40c72493),
10603 X64Word_create(
0x3c9ebe0a,
0x15c9bebc), X64Word_create(
0x431d67c4,
0x9c100d4c),
10604 X64Word_create(
0x4cc5d4be,
0xcb3e42b6), X64Word_create(
0x597f299c,
0xfc657e2a),
10605 X64Word_create(
0x5fcb6fab,
0x3ad6faec), X64Word_create(
0x6c44198c,
0x4a475817)
10608 // Reusable objects
10611 for (var i =
0; i <
80; i++) {
10612 W[i] = X64Word_create();
10617 * SHA-
512 hash algorithm.
10619 var SHA512 = C_algo.SHA512 = Hasher.extend({
10620 _doReset: function () {
10621 this._hash = new X64WordArray.init([
10622 new X64Word.init(
0x6a09e667,
0xf3bcc908), new X64Word.init(
0xbb67ae85,
0x84caa73b),
10623 new X64Word.init(
0x3c6ef372,
0xfe94f82b), new X64Word.init(
0xa54ff53a,
0x5f1d36f1),
10624 new X64Word.init(
0x510e527f,
0xade682d1), new X64Word.init(
0x9b05688c,
0x2b3e6c1f),
10625 new X64Word.init(
0x1f83d9ab,
0xfb41bd6b), new X64Word.init(
0x5be0cd19,
0x137e2179)
10629 _doProcessBlock: function (M, offset) {
10631 var H = this._hash.words;
10659 // Working variables
10678 for (var i =
0; i <
80; i++) {
10684 var Wih = Wi.high = M[offset + i *
2] |
0;
10685 var Wil = Wi.low = M[offset + i *
2 +
1] |
0;
10688 var gamma0x = W[i -
15];
10689 var gamma0xh = gamma0x.high;
10690 var gamma0xl = gamma0x.low;
10691 var gamma0h = ((gamma0xh
>>> 1) | (gamma0xl <<
31)) ^ ((gamma0xh
>>> 8) | (gamma0xl <<
24)) ^ (gamma0xh
>>> 7);
10692 var gamma0l = ((gamma0xl
>>> 1) | (gamma0xh <<
31)) ^ ((gamma0xl
>>> 8) | (gamma0xh <<
24)) ^ ((gamma0xl
>>> 7) | (gamma0xh <<
25));
10695 var gamma1x = W[i -
2];
10696 var gamma1xh = gamma1x.high;
10697 var gamma1xl = gamma1x.low;
10698 var gamma1h = ((gamma1xh
>>> 19) | (gamma1xl <<
13)) ^ ((gamma1xh <<
3) | (gamma1xl
>>> 29)) ^ (gamma1xh
>>> 6);
10699 var gamma1l = ((gamma1xl
>>> 19) | (gamma1xh <<
13)) ^ ((gamma1xl <<
3) | (gamma1xh
>>> 29)) ^ ((gamma1xl
>>> 6) | (gamma1xh <<
26));
10701 // W[i] = gamma0 + W[i -
7] + gamma1 + W[i -
16]
10702 var Wi7 = W[i -
7];
10703 var Wi7h = Wi7.high;
10704 var Wi7l = Wi7.low;
10706 var Wi16 = W[i -
16];
10707 var Wi16h = Wi16.high;
10708 var Wi16l = Wi16.low;
10710 var Wil = gamma0l + Wi7l;
10711 var Wih = gamma0h + Wi7h + ((Wil
>>> 0) < (gamma0l
>>> 0) ?
1 :
0);
10712 var Wil = Wil + gamma1l;
10713 var Wih = Wih + gamma1h + ((Wil
>>> 0) < (gamma1l
>>> 0) ?
1 :
0);
10714 var Wil = Wil + Wi16l;
10715 var Wih = Wih + Wi16h + ((Wil
>>> 0) < (Wi16l
>>> 0) ?
1 :
0);
10721 var chh = (eh & fh) ^ (~eh & gh);
10722 var chl = (el & fl) ^ (~el & gl);
10723 var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
10724 var majl = (al & bl) ^ (al & cl) ^ (bl & cl);
10726 var sigma0h = ((ah
>>> 28) | (al <<
4)) ^ ((ah <<
30) | (al
>>> 2)) ^ ((ah <<
25) | (al
>>> 7));
10727 var sigma0l = ((al
>>> 28) | (ah <<
4)) ^ ((al <<
30) | (ah
>>> 2)) ^ ((al <<
25) | (ah
>>> 7));
10728 var sigma1h = ((eh
>>> 14) | (el <<
18)) ^ ((eh
>>> 18) | (el <<
14)) ^ ((eh <<
23) | (el
>>> 9));
10729 var sigma1l = ((el
>>> 14) | (eh <<
18)) ^ ((el
>>> 18) | (eh <<
14)) ^ ((el <<
23) | (eh
>>> 9));
10731 // t1 = h + sigma1 + ch + K[i] + W[i]
10736 var t1l = hl + sigma1l;
10737 var t1h = hh + sigma1h + ((t1l
>>> 0) < (hl
>>> 0) ?
1 :
0);
10738 var t1l = t1l + chl;
10739 var t1h = t1h + chh + ((t1l
>>> 0) < (chl
>>> 0) ?
1 :
0);
10740 var t1l = t1l + Kil;
10741 var t1h = t1h + Kih + ((t1l
>>> 0) < (Kil
>>> 0) ?
1 :
0);
10742 var t1l = t1l + Wil;
10743 var t1h = t1h + Wih + ((t1l
>>> 0) < (Wil
>>> 0) ?
1 :
0);
10745 // t2 = sigma0 + maj
10746 var t2l = sigma0l + majl;
10747 var t2h = sigma0h + majh + ((t2l
>>> 0) < (sigma0l
>>> 0) ?
1 :
0);
10749 // Update working variables
10756 el = (dl + t1l) |
0;
10757 eh = (dh + t1h + ((el
>>> 0) < (dl
>>> 0) ?
1 :
0)) |
0;
10764 al = (t1l + t2l) |
0;
10765 ah = (t1h + t2h + ((al
>>> 0) < (t1l
>>> 0) ?
1 :
0)) |
0;
10768 // Intermediate hash value
10769 H0l = H0.low = (H0l + al);
10770 H0.high = (H0h + ah + ((H0l
>>> 0) < (al
>>> 0) ?
1 :
0));
10771 H1l = H1.low = (H1l + bl);
10772 H1.high = (H1h + bh + ((H1l
>>> 0) < (bl
>>> 0) ?
1 :
0));
10773 H2l = H2.low = (H2l + cl);
10774 H2.high = (H2h + ch + ((H2l
>>> 0) < (cl
>>> 0) ?
1 :
0));
10775 H3l = H3.low = (H3l + dl);
10776 H3.high = (H3h + dh + ((H3l
>>> 0) < (dl
>>> 0) ?
1 :
0));
10777 H4l = H4.low = (H4l + el);
10778 H4.high = (H4h + eh + ((H4l
>>> 0) < (el
>>> 0) ?
1 :
0));
10779 H5l = H5.low = (H5l + fl);
10780 H5.high = (H5h + fh + ((H5l
>>> 0) < (fl
>>> 0) ?
1 :
0));
10781 H6l = H6.low = (H6l + gl);
10782 H6.high = (H6h + gh + ((H6l
>>> 0) < (gl
>>> 0) ?
1 :
0));
10783 H7l = H7.low = (H7l + hl);
10784 H7.high = (H7h + hh + ((H7l
>>> 0) < (hl
>>> 0) ?
1 :
0));
10787 _doFinalize: function () {
10789 var data = this._data;
10790 var dataWords = data.words;
10792 var nBitsTotal = this._nDataBytes *
8;
10793 var nBitsLeft = data.sigBytes *
8;
10796 dataWords[nBitsLeft
>>> 5] |=
0x80 << (
24 - nBitsLeft %
32);
10797 dataWords[(((nBitsLeft +
128)
>>> 10) <<
5) +
30] = Math.floor(nBitsTotal /
0x100000000);
10798 dataWords[(((nBitsLeft +
128)
>>> 10) <<
5) +
31] = nBitsTotal;
10799 data.sigBytes = dataWords.length *
4;
10801 // Hash final blocks
10804 // Convert hash to
32-bit word array before returning
10805 var hash = this._hash.toX32();
10807 // Return final computed hash
10811 clone: function () {
10812 var clone = Hasher.clone.call(this);
10813 clone._hash = this._hash.clone();
10822 * Shortcut function to the hasher's object interface.
10824 * @param {WordArray|string} message The message to hash.
10826 * @return {WordArray} The hash.
10832 * var hash = CryptoJS.SHA512('message');
10833 * var hash = CryptoJS.SHA512(wordArray);
10835 C.SHA512 = Hasher._createHelper(SHA512);
10838 * Shortcut function to the HMAC's object interface.
10840 * @param {WordArray|string} message The message to hash.
10841 * @param {WordArray|string} key The secret key.
10843 * @return {WordArray} The HMAC.
10849 * var hmac = CryptoJS.HmacSHA512(message, key);
10851 C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
10855 return CryptoJS.SHA512;
10858 },{
"./core":
31,
"./x64-core":
62}],
61:[function(_dereq_,module,exports){
10859 ;(function (root, factory, undef) {
10860 if (typeof exports ===
"object") {
10862 module.exports = exports = factory(_dereq_(
"./core"), _dereq_(
"./enc-base64"), _dereq_(
"./md5"), _dereq_(
"./evpkdf"), _dereq_(
"./cipher-core"));
10864 else if (typeof define ===
"function" && define.amd) {
10866 define([
"./core",
"./enc-base64",
"./md5",
"./evpkdf",
"./cipher-core"], factory);
10869 // Global (browser)
10870 factory(root.CryptoJS);
10872 }(this, function (CryptoJS) {
10878 var WordArray = C_lib.WordArray;
10879 var BlockCipher = C_lib.BlockCipher;
10880 var C_algo = C.algo;
10882 // Permuted Choice
1 constants
10884 57,
49,
41,
33,
25,
17,
9,
1,
10885 58,
50,
42,
34,
26,
18,
10,
2,
10886 59,
51,
43,
35,
27,
19,
11,
3,
10887 60,
52,
44,
36,
63,
55,
47,
39,
10888 31,
23,
15,
7,
62,
54,
46,
38,
10889 30,
22,
14,
6,
61,
53,
45,
37,
10890 29,
21,
13,
5,
28,
20,
12,
4
10893 // Permuted Choice
2 constants
10895 14,
17,
11,
24,
1,
5,
10896 3,
28,
15,
6,
21,
10,
10897 23,
19,
12,
4,
26,
8,
10898 16,
7,
27,
20,
13,
2,
10899 41,
52,
31,
37,
47,
55,
10900 30,
40,
51,
45,
33,
48,
10901 44,
49,
39,
56,
34,
53,
10902 46,
42,
50,
36,
29,
32
10905 // Cumulative bit shift constants
10906 var BIT_SHIFTS = [
1,
2,
4,
6,
8,
10,
12,
14,
15,
17,
19,
21,
23,
25,
27,
28];
10908 // SBOXes and round permutation constants
10912 0x10000000:
0x8000,
10913 0x20000000:
0x808002,
10916 0x50000000:
0x808202,
10917 0x60000000:
0x800202,
10918 0x70000000:
0x800000,
10920 0x90000000:
0x800200,
10921 0xa0000000:
0x8200,
10922 0xb0000000:
0x808000,
10923 0xc0000000:
0x8002,
10924 0xd0000000:
0x800002,
10926 0xf0000000:
0x8202,
10928 0x18000000:
0x808202,
10929 0x28000000:
0x8202,
10930 0x38000000:
0x8000,
10931 0x48000000:
0x808200,
10933 0x68000000:
0x808002,
10935 0x88000000:
0x800200,
10936 0x98000000:
0x8200,
10937 0xa8000000:
0x808000,
10938 0xb8000000:
0x800202,
10939 0xc8000000:
0x800002,
10940 0xd8000000:
0x8002,
10942 0xf8000000:
0x800000,
10945 0x20000001:
0x808200,
10946 0x30000001:
0x800000,
10947 0x40000001:
0x808002,
10948 0x50000001:
0x8200,
10950 0x70000001:
0x800202,
10951 0x80000001:
0x808202,
10952 0x90000001:
0x808000,
10953 0xa0000001:
0x800002,
10954 0xb0000001:
0x8202,
10956 0xd0000001:
0x800200,
10957 0xe0000001:
0x8002,
10959 0x8000001:
0x808202,
10960 0x18000001:
0x808000,
10961 0x28000001:
0x800000,
10963 0x48000001:
0x8000,
10964 0x58000001:
0x800002,
10966 0x78000001:
0x8202,
10967 0x88000001:
0x8002,
10968 0x98000001:
0x800202,
10970 0xb8000001:
0x808200,
10971 0xc8000001:
0x800200,
10973 0xe8000001:
0x8200,
10974 0xf8000001:
0x808002
10979 0x2000000:
0x80000,
10980 0x3000000:
0x40080010,
10981 0x4000000:
0x40000010,
10982 0x5000000:
0x40084000,
10983 0x6000000:
0x40004000,
10985 0x8000000:
0x84000,
10986 0x9000000:
0x40004010,
10987 0xa000000:
0x40000000,
10988 0xb000000:
0x84010,
10989 0xc000000:
0x80010,
10992 0xf000000:
0x40080000,
10993 0x800000:
0x40004000,
10994 0x1800000:
0x84010,
10996 0x3800000:
0x40004010,
10997 0x4800000:
0x40084010,
10998 0x5800000:
0x40000000,
10999 0x6800000:
0x80000,
11000 0x7800000:
0x40080010,
11001 0x8800000:
0x80010,
11004 0xb800000:
0x40080000,
11005 0xc800000:
0x40000010,
11006 0xd800000:
0x84000,
11007 0xe800000:
0x40084000,
11010 0x11000000:
0x40080010,
11011 0x12000000:
0x40004010,
11012 0x13000000:
0x40084000,
11013 0x14000000:
0x40080000,
11015 0x16000000:
0x84010,
11016 0x17000000:
0x4000,
11017 0x18000000:
0x4010,
11018 0x19000000:
0x80000,
11019 0x1a000000:
0x80010,
11020 0x1b000000:
0x40000010,
11021 0x1c000000:
0x84000,
11022 0x1d000000:
0x40004000,
11023 0x1e000000:
0x40000000,
11024 0x1f000000:
0x40084010,
11025 0x10800000:
0x84010,
11026 0x11800000:
0x80000,
11027 0x12800000:
0x40080000,
11028 0x13800000:
0x4000,
11029 0x14800000:
0x40004000,
11030 0x15800000:
0x40084010,
11032 0x17800000:
0x40000000,
11033 0x18800000:
0x40084000,
11034 0x19800000:
0x40000010,
11035 0x1a800000:
0x40004010,
11036 0x1b800000:
0x80010,
11038 0x1d800000:
0x4010,
11039 0x1e800000:
0x40080010,
11040 0x1f800000:
0x84000
11045 0x200000:
0x4000100,
11048 0x500000:
0x4000004,
11049 0x600000:
0x4010104,
11050 0x700000:
0x4010000,
11051 0x800000:
0x4000000,
11052 0x900000:
0x4010100,
11054 0xb00000:
0x4010004,
11055 0xc00000:
0x4000104,
11059 0x80000:
0x4010100,
11060 0x180000:
0x4010004,
11062 0x380000:
0x4000100,
11063 0x480000:
0x4000004,
11069 0xa80000:
0x4010000,
11072 0xd80000:
0x4000104,
11073 0xe80000:
0x4010104,
11074 0xf80000:
0x4000000,
11075 0x1000000:
0x4010100,
11076 0x1100000:
0x10004,
11077 0x1200000:
0x10000,
11078 0x1300000:
0x4000100,
11080 0x1500000:
0x4010104,
11081 0x1600000:
0x4000004,
11083 0x1800000:
0x4000104,
11084 0x1900000:
0x4000000,
11086 0x1b00000:
0x10100,
11087 0x1c00000:
0x4010000,
11089 0x1e00000:
0x10104,
11090 0x1f00000:
0x4010004,
11091 0x1080000:
0x4000000,
11093 0x1280000:
0x4010100,
11095 0x1480000:
0x10004,
11096 0x1580000:
0x4000100,
11098 0x1780000:
0x4010004,
11099 0x1880000:
0x10000,
11100 0x1980000:
0x4010104,
11101 0x1a80000:
0x10104,
11102 0x1b80000:
0x4000004,
11103 0x1c80000:
0x4000104,
11104 0x1d80000:
0x4010000,
11110 0x10000:
0x80001040,
11112 0x30000:
0x80400000,
11115 0x60000:
0x80000040,
11117 0x80000:
0x80000000,
11120 0xb0000:
0x80001000,
11121 0xc0000:
0x80400040,
11124 0xf0000:
0x80401040,
11125 0x8000:
0x80001040,
11127 0x28000:
0x80400040,
11128 0x38000:
0x80001000,
11130 0x58000:
0x80401040,
11132 0x78000:
0x80400000,
11134 0x98000:
0x80401000,
11137 0xc8000:
0x80000000,
11140 0xf8000:
0x80000040,
11141 0x100000:
0x400040,
11142 0x110000:
0x401000,
11143 0x120000:
0x80000040,
11146 0x150000:
0x80400040,
11147 0x160000:
0x80401000,
11148 0x170000:
0x80001040,
11149 0x180000:
0x80401040,
11150 0x190000:
0x80000000,
11151 0x1a0000:
0x80400000,
11152 0x1b0000:
0x401040,
11153 0x1c0000:
0x80001000,
11154 0x1d0000:
0x400000,
11157 0x108000:
0x80400000,
11158 0x118000:
0x80401040,
11160 0x138000:
0x401000,
11161 0x148000:
0x400040,
11162 0x158000:
0x80000000,
11163 0x168000:
0x80001040,
11165 0x188000:
0x80000040,
11167 0x1a8000:
0x80001000,
11168 0x1b8000:
0x80400040,
11170 0x1d8000:
0x80401000,
11171 0x1e8000:
0x400000,
11178 0x3000:
0x20000000,
11179 0x4000:
0x20040080,
11181 0x6000:
0x21000080,
11184 0x9000:
0x20040000,
11185 0xa000:
0x20000080,
11186 0xb000:
0x21040080,
11187 0xc000:
0x21040000,
11190 0xf000:
0x21000000,
11192 0x1800:
0x21000080,
11196 0x5800:
0x20040080,
11197 0x6800:
0x21040000,
11198 0x7800:
0x20000000,
11199 0x8800:
0x20040000,
11201 0xa800:
0x21040080,
11203 0xc800:
0x20000080,
11204 0xd800:
0x21000000,
11209 0x12000:
0x20000000,
11210 0x13000:
0x21000080,
11211 0x14000:
0x1000080,
11212 0x15000:
0x21040000,
11213 0x16000:
0x20040080,
11214 0x17000:
0x1000000,
11215 0x18000:
0x21040080,
11216 0x19000:
0x21000000,
11217 0x1a000:
0x1040000,
11218 0x1b000:
0x20040000,
11220 0x1d000:
0x20000080,
11222 0x1f000:
0x1040080,
11223 0x10800:
0x21000080,
11224 0x11800:
0x1000000,
11225 0x12800:
0x1040000,
11226 0x13800:
0x20040080,
11227 0x14800:
0x20000000,
11228 0x15800:
0x1040080,
11230 0x17800:
0x21040000,
11232 0x19800:
0x21040080,
11234 0x1b800:
0x21000000,
11235 0x1c800:
0x1000080,
11237 0x1e800:
0x20040000,
11238 0x1f800:
0x20000080
11273 0x1000:
0x10002000,
11274 0x1100:
0x10200008,
11275 0x1200:
0x10202008,
11278 0x1500:
0x10000000,
11279 0x1600:
0x10000008,
11284 0x1b00:
0x10200000,
11286 0x1d00:
0x10002008,
11287 0x1e00:
0x10202000,
11292 0x1380:
0x10000008,
11293 0x1480:
0x10002000,
11295 0x1680:
0x10202008,
11296 0x1780:
0x10200000,
11297 0x1880:
0x10202000,
11298 0x1980:
0x10200008,
11303 0x1e80:
0x10000000,
11390 0x80000001:
0x8020820,
11391 0x80000002:
0x8000820,
11392 0x80000003:
0x8000000,
11393 0x80000004:
0x8020000,
11394 0x80000005:
0x20800,
11395 0x80000006:
0x20820,
11397 0x80000008:
0x8000020,
11399 0x8000000a:
0x20020,
11400 0x8000000b:
0x8020800,
11402 0x8000000d:
0x8020020,
11403 0x8000000e:
0x8000800,
11404 0x8000000f:
0x20000,
11421 0x80000010:
0x20000,
11423 0x80000012:
0x8020020,
11424 0x80000013:
0x20820,
11426 0x80000015:
0x8020000,
11427 0x80000016:
0x8000000,
11428 0x80000017:
0x8000820,
11429 0x80000018:
0x8020820,
11430 0x80000019:
0x8000020,
11431 0x8000001a:
0x8000800,
11433 0x8000001c:
0x20800,
11435 0x8000001e:
0x20020,
11436 0x8000001f:
0x8020800
11440 // Masks that select the SBOX input
11442 0xf8000001,
0x1f800000,
0x01f80000,
0x001f8000,
11443 0x0001f800,
0x00001f80,
0x000001f8,
0x8000001f
11447 * DES block cipher algorithm.
11449 var DES = C_algo.DES = BlockCipher.extend({
11450 _doReset: function () {
11452 var key = this._key;
11453 var keyWords = key.words;
11455 // Select
56 bits according to PC1
11457 for (var i =
0; i <
56; i++) {
11458 var keyBitPos = PC1[i] -
1;
11459 keyBits[i] = (keyWords[keyBitPos
>>> 5]
>>> (
31 - keyBitPos %
32)) &
1;
11462 // Assemble
16 subkeys
11463 var subKeys = this._subKeys = [];
11464 for (var nSubKey =
0; nSubKey <
16; nSubKey++) {
11466 var subKey = subKeys[nSubKey] = [];
11469 var bitShift = BIT_SHIFTS[nSubKey];
11471 // Select
48 bits according to PC2
11472 for (var i =
0; i <
24; i++) {
11473 // Select from the left
28 key bits
11474 subKey[(i /
6) |
0] |= keyBits[((PC2[i] -
1) + bitShift) %
28] << (
31 - i %
6);
11476 // Select from the right
28 key bits
11477 subKey[
4 + ((i /
6) |
0)] |= keyBits[
28 + (((PC2[i +
24] -
1) + bitShift) %
28)] << (
31 - i %
6);
11480 // Since each subkey is applied to an expanded
32-bit input,
11481 // the subkey can be broken into
8 values scaled to
32-bits,
11482 // which allows the key to be used without expansion
11483 subKey[
0] = (subKey[
0] <<
1) | (subKey[
0]
>>> 31);
11484 for (var i =
1; i <
7; i++) {
11485 subKey[i] = subKey[i]
>>> ((i -
1) *
4 +
3);
11487 subKey[
7] = (subKey[
7] <<
5) | (subKey[
7]
>>> 27);
11490 // Compute inverse subkeys
11491 var invSubKeys = this._invSubKeys = [];
11492 for (var i =
0; i <
16; i++) {
11493 invSubKeys[i] = subKeys[
15 - i];
11497 encryptBlock: function (M, offset) {
11498 this._doCryptBlock(M, offset, this._subKeys);
11501 decryptBlock: function (M, offset) {
11502 this._doCryptBlock(M, offset, this._invSubKeys);
11505 _doCryptBlock: function (M, offset, subKeys) {
11507 this._lBlock = M[offset];
11508 this._rBlock = M[offset +
1];
11510 // Initial permutation
11511 exchangeLR.call(this,
4,
0x0f0f0f0f);
11512 exchangeLR.call(this,
16,
0x0000ffff);
11513 exchangeRL.call(this,
2,
0x33333333);
11514 exchangeRL.call(this,
8,
0x00ff00ff);
11515 exchangeLR.call(this,
1,
0x55555555);
11518 for (var round =
0; round <
16; round++) {
11520 var subKey = subKeys[round];
11521 var lBlock = this._lBlock;
11522 var rBlock = this._rBlock;
11524 // Feistel function
11526 for (var i =
0; i <
8; i++) {
11527 f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i])
>>> 0];
11529 this._lBlock = rBlock;
11530 this._rBlock = lBlock ^ f;
11533 // Undo swap from last round
11534 var t = this._lBlock;
11535 this._lBlock = this._rBlock;
11538 // Final permutation
11539 exchangeLR.call(this,
1,
0x55555555);
11540 exchangeRL.call(this,
8,
0x00ff00ff);
11541 exchangeRL.call(this,
2,
0x33333333);
11542 exchangeLR.call(this,
16,
0x0000ffff);
11543 exchangeLR.call(this,
4,
0x0f0f0f0f);
11546 M[offset] = this._lBlock;
11547 M[offset +
1] = this._rBlock;
11557 // Swap bits across the left and right words
11558 function exchangeLR(offset, mask) {
11559 var t = ((this._lBlock
>>> offset) ^ this._rBlock) & mask;
11561 this._lBlock ^= t << offset;
11564 function exchangeRL(offset, mask) {
11565 var t = ((this._rBlock
>>> offset) ^ this._lBlock) & mask;
11567 this._rBlock ^= t << offset;
11571 * Shortcut functions to the cipher's object interface.
11575 * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);
11576 * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);
11578 C.DES = BlockCipher._createHelper(DES);
11581 * Triple-DES block cipher algorithm.
11583 var TripleDES = C_algo.TripleDES = BlockCipher.extend({
11584 _doReset: function () {
11586 var key = this._key;
11587 var keyWords = key.words;
11589 // Create DES instances
11590 this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(
0,
2)));
11591 this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(
2,
4)));
11592 this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(
4,
6)));
11595 encryptBlock: function (M, offset) {
11596 this._des1.encryptBlock(M, offset);
11597 this._des2.decryptBlock(M, offset);
11598 this._des3.encryptBlock(M, offset);
11601 decryptBlock: function (M, offset) {
11602 this._des3.decryptBlock(M, offset);
11603 this._des2.encryptBlock(M, offset);
11604 this._des1.decryptBlock(M, offset);
11615 * Shortcut functions to the cipher's object interface.
11619 * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);
11620 * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);
11622 C.TripleDES = BlockCipher._createHelper(TripleDES);
11626 return CryptoJS.TripleDES;
11629 },{"./cipher-core":
30,"./core":
31,"./enc-base64":
32,"./evpkdf":
34,"./md5":
39}],
62:[function(_dereq_,module,exports){
11630 ;(function (root, factory) {
11631 if (typeof exports === "object") {
11633 module.exports = exports = factory(_dereq_("./core"));
11635 else if (typeof define === "function" && define.amd) {
11637 define(["./core"], factory);
11640 // Global (browser)
11641 factory(root.CryptoJS);
11643 }(this, function (CryptoJS) {
11645 (function (undefined) {
11649 var Base = C_lib.Base;
11650 var X32WordArray = C_lib.WordArray;
11655 var C_x64 = C.x64 = {};
11660 var X64Word = C_x64.Word = Base.extend({
11662 * Initializes a newly created
64-bit word.
11664 * @param {number} high The high
32 bits.
11665 * @param {number} low The low
32 bits.
11669 * var x64Word = CryptoJS.x64.Word.create(
0x00010203,
0x04050607);
11671 init: function (high, low) {
11677 * Bitwise NOTs this word.
11679 * @return {X64Word} A new x64-Word object after negating.
11683 * var negated = x64Word.not();
11685 // not: function () {
11686 // var high = ~this.high;
11687 // var low = ~this.low;
11689 // return X64Word.create(high, low);
11693 * Bitwise ANDs this word with the passed word.
11695 * @param {X64Word} word The x64-Word to AND with this word.
11697 * @return {X64Word} A new x64-Word object after ANDing.
11701 * var anded = x64Word.and(anotherX64Word);
11703 // and: function (word) {
11704 // var high = this.high & word.high;
11705 // var low = this.low & word.low;
11707 // return X64Word.create(high, low);
11711 * Bitwise ORs this word with the passed word.
11713 * @param {X64Word} word The x64-Word to OR with this word.
11715 * @return {X64Word} A new x64-Word object after ORing.
11719 * var ored = x64Word.or(anotherX64Word);
11721 // or: function (word) {
11722 // var high = this.high | word.high;
11723 // var low = this.low | word.low;
11725 // return X64Word.create(high, low);
11729 * Bitwise XORs this word with the passed word.
11731 * @param {X64Word} word The x64-Word to XOR with this word.
11733 * @return {X64Word} A new x64-Word object after XORing.
11737 * var xored = x64Word.xor(anotherX64Word);
11739 // xor: function (word) {
11740 // var high = this.high ^ word.high;
11741 // var low = this.low ^ word.low;
11743 // return X64Word.create(high, low);
11747 * Shifts this word n bits to the left.
11749 * @param {number} n The number of bits to shift.
11751 * @return {X64Word} A new x64-Word object after shifting.
11755 * var shifted = x64Word.shiftL(
25);
11757 // shiftL: function (n) {
11759 // var high = (this.high << n) | (this.low
>>> (
32 - n));
11760 // var low = this.low << n;
11762 // var high = this.low << (n -
32);
11766 // return X64Word.create(high, low);
11770 * Shifts this word n bits to the right.
11772 * @param {number} n The number of bits to shift.
11774 * @return {X64Word} A new x64-Word object after shifting.
11778 * var shifted = x64Word.shiftR(
7);
11780 // shiftR: function (n) {
11782 // var low = (this.low
>>> n) | (this.high << (
32 - n));
11783 // var high = this.high
>>> n;
11785 // var low = this.high
>>> (n -
32);
11789 // return X64Word.create(high, low);
11793 * Rotates this word n bits to the left.
11795 * @param {number} n The number of bits to rotate.
11797 * @return {X64Word} A new x64-Word object after rotating.
11801 * var rotated = x64Word.rotL(
25);
11803 // rotL: function (n) {
11804 // return this.shiftL(n).or(this.shiftR(
64 - n));
11808 * Rotates this word n bits to the right.
11810 * @param {number} n The number of bits to rotate.
11812 * @return {X64Word} A new x64-Word object after rotating.
11816 * var rotated = x64Word.rotR(
7);
11818 // rotR: function (n) {
11819 // return this.shiftR(n).or(this.shiftL(
64 - n));
11823 * Adds this word with the passed word.
11825 * @param {X64Word} word The x64-Word to add with this word.
11827 * @return {X64Word} A new x64-Word object after adding.
11831 * var added = x64Word.add(anotherX64Word);
11833 // add: function (word) {
11834 // var low = (this.low + word.low) |
0;
11835 // var carry = (low
>>> 0) < (this.low
>>> 0) ?
1 :
0;
11836 // var high = (this.high + word.high + carry) |
0;
11838 // return X64Word.create(high, low);
11843 * An array of
64-bit words.
11845 * @property {Array} words The array of CryptoJS.x64.Word objects.
11846 * @property {number} sigBytes The number of significant bytes in this word array.
11848 var X64WordArray = C_x64.WordArray = Base.extend({
11850 * Initializes a newly created word array.
11852 * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
11853 * @param {number} sigBytes (Optional) The number of significant bytes in the words.
11857 * var wordArray = CryptoJS.x64.WordArray.create();
11859 * var wordArray = CryptoJS.x64.WordArray.create([
11860 * CryptoJS.x64.Word.create(
0x00010203,
0x04050607),
11861 * CryptoJS.x64.Word.create(
0x18191a1b,
0x1c1d1e1f)
11864 * var wordArray = CryptoJS.x64.WordArray.create([
11865 * CryptoJS.x64.Word.create(
0x00010203,
0x04050607),
11866 * CryptoJS.x64.Word.create(
0x18191a1b,
0x1c1d1e1f)
11869 init: function (words, sigBytes) {
11870 words = this.words = words || [];
11872 if (sigBytes != undefined) {
11873 this.sigBytes = sigBytes;
11875 this.sigBytes = words.length *
8;
11880 * Converts this
64-bit word array to a
32-bit word array.
11882 * @return {CryptoJS.lib.WordArray} This word array's data as a
32-bit word array.
11886 * var x32WordArray = x64WordArray.toX32();
11888 toX32: function () {
11890 var x64Words = this.words;
11891 var x64WordsLength = x64Words.length;
11895 for (var i =
0; i < x64WordsLength; i++) {
11896 var x64Word = x64Words[i];
11897 x32Words.push(x64Word.high);
11898 x32Words.push(x64Word.low);
11901 return X32WordArray.create(x32Words, this.sigBytes);
11905 * Creates a copy of this word array.
11907 * @return {X64WordArray} The clone.
11911 * var clone = x64WordArray.clone();
11913 clone: function () {
11914 var clone = Base.clone.call(this);
11916 // Clone
"words" array
11917 var words = clone.words = this.words.slice(
0);
11919 // Clone each X64Word object
11920 var wordsLength = words.length;
11921 for (var i =
0; i < wordsLength; i++) {
11922 words[i] = words[i].clone();
11934 },{
"./core":
31}],
63:[function(_dereq_,module,exports){
11935 var assert = _dereq_('assert')
11936 var BigInteger = _dereq_('bigi')
11938 var Point = _dereq_('./point')
11940 function Curve(p, a, b, Gx, Gy, n, h) {
11944 this.G = Point.fromAffine(this, Gx, Gy)
11948 this.infinity = new Point(this, null, null, BigInteger.ZERO)
11951 this.pOverFour = p.add(BigInteger.ONE).shiftRight(
2)
11954 Curve.prototype.pointFromX = function(isOdd, x) {
11955 var alpha = x.pow(
3).add(this.a.multiply(x)).add(this.b).mod(this.p)
11956 var beta = alpha.modPow(this.pOverFour, this.p)
11959 if (beta.isEven() ^ !isOdd) {
11960 y = this.p.subtract(y) // -y % p
11963 return Point.fromAffine(this, x, y)
11966 Curve.prototype.isInfinity = function(Q) {
11967 if (Q === this.infinity) return true
11969 return Q.z.signum() ===
0 && Q.y.signum() !==
0
11972 Curve.prototype.isOnCurve = function(Q) {
11973 if (this.isInfinity(Q)) return true
11981 // Check that xQ and yQ are integers in the interval [
0, p -
1]
11982 if (x.signum() <
0 || x.compareTo(p)
>=
0) return false
11983 if (y.signum() <
0 || y.compareTo(p)
>=
0) return false
11985 // and check that y^
2 = x^
3 + ax + b (mod p)
11986 var lhs = y.square().mod(p)
11987 var rhs = x.pow(
3).add(a.multiply(x)).add(b).mod(p)
11988 return lhs.equals(rhs)
11992 * Validate an elliptic curve point.
11994 * See SEC
1, section
3.2.2.1: Elliptic Curve Public Key Validation Primitive
11996 Curve.prototype.validate = function(Q) {
11998 assert(!this.isInfinity(Q), 'Point is at infinity')
11999 assert(this.isOnCurve(Q), 'Point is not on the curve')
12001 // Check nQ = O (where Q is a scalar multiple of G)
12002 var nQ = Q.multiply(this.n)
12003 assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')
12008 module.exports = Curve
12010 },{"./point":
67,"assert":
4,"bigi":
3}],
64:[function(_dereq_,module,exports){
12013 "p": "fffffffdffffffffffffffffffffffff",
12014 "a": "fffffffdfffffffffffffffffffffffc",
12015 "b": "e87579c11079f43dd824993c2cee5ed3",
12016 "n": "fffffffe0000000075a30d1b9038a115",
12018 "Gx": "
161ff7528b899b2d0c28607ca52c5b86",
12019 "Gy": "cf5ac8395bafeb13c02da292dded7a83"
12022 "p": "fffffffffffffffffffffffffffffffeffffac73",
12025 "n": "
0100000000000000000001b8fa16dfab9aca16b6b3",
12027 "Gx": "
3b4c382ce37aa192a4019e763036f4f5dd4d7ebb",
12028 "Gy": "
938cf935318fdced6bc28286531733c3f03c4fee"
12031 "p": "ffffffffffffffffffffffffffffffff7fffffff",
12032 "a": "ffffffffffffffffffffffffffffffff7ffffffc",
12033 "b": "
1c97befc54bd7a8b65acf89f81d4d4adc565fa45",
12034 "n": "
0100000000000000000001f4c8f927aed3ca752257",
12036 "Gx": "
4a96b5688ef573284664698968c38bb913cbfc82",
12037 "Gy": "
23a628553168947d59dcc912042351377ac5fb32"
12040 "p": "fffffffffffffffffffffffffffffffffffffffeffffee37",
12043 "n": "fffffffffffffffffffffffe26f2fc170f69466a74defd8d",
12045 "Gx": "db4ff10ec057e9ae26b07d0280b7f4341da5d1b1eae06c7d",
12046 "Gy": "
9b2f2f6d9c5628a7844163d015be86344082aa88d95e2f9d"
12049 "p": "fffffffffffffffffffffffffffffffeffffffffffffffff",
12050 "a": "fffffffffffffffffffffffffffffffefffffffffffffffc",
12051 "b": "
64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1",
12052 "n": "ffffffffffffffffffffffff99def836146bc9b1b4d22831",
12054 "Gx": "
188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012",
12055 "Gy": "
07192b95ffc8da78631011ed6b24cdd573f977a11e794811"
12058 "p": "ffffffffffffffffffffffffffffffff000000000000000000000001",
12059 "a": "fffffffffffffffffffffffffffffffefffffffffffffffffffffffe",
12060 "b": "b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4",
12061 "n": "ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d",
12063 "Gx": "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
12064 "Gy": "bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34"
12067 "p": "fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
12070 "n": "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",
12072 "Gx": "
79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
12073 "Gy": "
483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
12076 "p": "ffffffff00000001000000000000000000000000ffffffffffffffffffffffff",
12077 "a": "ffffffff00000001000000000000000000000000fffffffffffffffffffffffc",
12078 "b": "
5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b",
12079 "n": "ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551",
12081 "Gx": "
6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296",
12082 "Gy": "
4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5"
12086 },{}],
65:[function(_dereq_,module,exports){
12087 var Point = _dereq_('./point')
12088 var Curve = _dereq_('./curve')
12090 var getCurveByName = _dereq_('./names')
12095 getCurveByName: getCurveByName
12098 },{"./curve":
63,"./names":
66,"./point":
67}],
66:[function(_dereq_,module,exports){
12099 var BigInteger = _dereq_('bigi')
12101 var curves = _dereq_('./curves')
12102 var Curve = _dereq_('./curve')
12104 function getCurveByName(name) {
12105 var curve = curves[name]
12106 if (!curve) return null
12108 var p = new BigInteger(curve.p,
16)
12109 var a = new BigInteger(curve.a,
16)
12110 var b = new BigInteger(curve.b,
16)
12111 var n = new BigInteger(curve.n,
16)
12112 var h = new BigInteger(curve.h,
16)
12113 var Gx = new BigInteger(curve.Gx,
16)
12114 var Gy = new BigInteger(curve.Gy,
16)
12116 return new Curve(p, a, b, Gx, Gy, n, h)
12119 module.exports = getCurveByName
12121 },{"./curve":
63,"./curves":
64,"bigi":
3}],
67:[function(_dereq_,module,exports){
12122 (function (Buffer){
12123 var assert = _dereq_('assert')
12124 var BigInteger = _dereq_('bigi')
12126 var THREE = BigInteger.valueOf(
3)
12128 function Point(curve, x, y, z) {
12129 assert.notStrictEqual(z, undefined, 'Missing Z coordinate')
12137 this.compressed = true
12140 Object.defineProperty(Point.prototype, 'zInv', {
12142 if (this._zInv === null) {
12143 this._zInv = this.z.modInverse(this.curve.p)
12150 Object.defineProperty(Point.prototype, 'affineX', {
12152 return this.x.multiply(this.zInv).mod(this.curve.p)
12156 Object.defineProperty(Point.prototype, 'affineY', {
12158 return this.y.multiply(this.zInv).mod(this.curve.p)
12162 Point.fromAffine = function(curve, x, y) {
12163 return new Point(curve, x, y, BigInteger.ONE)
12166 Point.prototype.equals = function(other) {
12167 if (other === this) return true
12168 if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)
12169 if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)
12171 // u = Y2 * Z1 - Y1 * Z2
12172 var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)
12174 if (u.signum() !==
0) return false
12176 // v = X2 * Z1 - X1 * Z2
12177 var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)
12179 return v.signum() ===
0
12182 Point.prototype.negate = function() {
12183 var y = this.curve.p.subtract(this.y)
12185 return new Point(this.curve, this.x, y, this.z)
12188 Point.prototype.add = function(b) {
12189 if (this.curve.isInfinity(this)) return b
12190 if (this.curve.isInfinity(b)) return this
12197 // u = Y2 * Z1 - Y1 * Z2
12198 var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)
12199 // v = X2 * Z1 - X1 * Z2
12200 var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)
12202 if (v.signum() ===
0) {
12203 if (u.signum() ===
0) {
12204 return this.twice() // this == b, so double
12207 return this.curve.infinity // this = -b, so infinity
12210 var v2 = v.square()
12211 var v3 = v2.multiply(v)
12212 var x1v2 = x1.multiply(v2)
12213 var zu2 = u.square().multiply(this.z)
12215 // x3 = v * (z2 * (z1 * u^
2 -
2 * x1 * v^
2) - v^
3)
12216 var x3 = zu2.subtract(x1v2.shiftLeft(
1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)
12217 // y3 = z2 * (
3 * x1 * u * v^
2 - y1 * v^
3 - z1 * u^
3) + u * v^
3
12218 var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)
12219 // z3 = v^
3 * z1 * z2
12220 var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)
12222 return new Point(this.curve, x3, y3, z3)
12225 Point.prototype.twice = function() {
12226 if (this.curve.isInfinity(this)) return this
12227 if (this.y.signum() ===
0) return this.curve.infinity
12232 var y1z1 = y1.multiply(this.z)
12233 var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)
12234 var a = this.curve.a
12236 // w =
3 * x1^
2 + a * z1^
2
12237 var w = x1.square().multiply(THREE)
12239 if (a.signum() !==
0) {
12240 w = w.add(this.z.square().multiply(a))
12243 w = w.mod(this.curve.p)
12244 // x3 =
2 * y1 * z1 * (w^
2 -
8 * x1 * y1^
2 * z1)
12245 var x3 = w.square().subtract(x1.shiftLeft(
3).multiply(y1sqz1)).shiftLeft(
1).multiply(y1z1).mod(this.curve.p)
12246 // y3 =
4 * y1^
2 * z1 * (
3 * w * x1 -
2 * y1^
2 * z1) - w^
3
12247 var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(
1)).shiftLeft(
2).multiply(y1sqz1).subtract(w.pow(
3)).mod(this.curve.p)
12248 // z3 =
8 * (y1 * z1)^
3
12249 var z3 = y1z1.pow(
3).shiftLeft(
3).mod(this.curve.p)
12251 return new Point(this.curve, x3, y3, z3)
12254 // Simple NAF (Non-Adjacent Form) multiplication algorithm
12255 // TODO: modularize the multiplication algorithm
12256 Point.prototype.multiply = function(k) {
12257 if (this.curve.isInfinity(this)) return this
12258 if (k.signum() ===
0) return this.curve.infinity
12261 var h = e.multiply(THREE)
12263 var neg = this.negate()
12266 for (var i = h.bitLength() -
2; i
> 0; --i) {
12269 var hBit = h.testBit(i)
12270 var eBit = e.testBit(i)
12272 if (hBit != eBit) {
12273 R = R.add(hBit ? this : neg)
12280 // Compute this*j + x*k (simultaneous multiplication)
12281 Point.prototype.multiplyTwo = function(j, x, k) {
12284 if (j.bitLength()
> k.bitLength())
12285 i = j.bitLength() -
1
12287 i = k.bitLength() -
1
12289 var R = this.curve.infinity
12290 var both = this.add(x)
12295 var jBit = j.testBit(i)
12296 var kBit = k.testBit(i)
12317 Point.prototype.getEncoded = function(compressed) {
12318 if (compressed == undefined) compressed = this.compressed
12319 if (this.curve.isInfinity(this)) return new Buffer('
00', 'hex') // Infinity point encoded is simply '
00'
12321 var x = this.affineX
12322 var y = this.affineY
12326 // Determine size of q in bytes
12327 var byteLength = Math.floor((this.curve.p.bitLength() +
7) /
8)
12331 buffer = new Buffer(
1 + byteLength)
12332 buffer.writeUInt8(y.isEven() ?
0x02 :
0x03,
0)
12336 buffer = new Buffer(
1 + byteLength + byteLength)
12337 buffer.writeUInt8(
0x04,
0)
12339 y.toBuffer(byteLength).copy(buffer,
1 + byteLength)
12342 x.toBuffer(byteLength).copy(buffer,
1)
12347 Point.decodeFrom = function(curve, buffer) {
12348 var type = buffer.readUInt8(
0)
12349 var compressed = (type !==
4)
12351 var x = BigInteger.fromBuffer(buffer.slice(
1,
33))
12352 var byteLength = Math.floor((curve.p.bitLength() +
7) /
8)
12356 assert.equal(buffer.length, byteLength +
1, 'Invalid sequence length')
12357 assert(type ===
0x02 || type ===
0x03, 'Invalid sequence tag')
12359 var isOdd = (type ===
0x03)
12360 Q = curve.pointFromX(isOdd, x)
12363 assert.equal(buffer.length,
1 + byteLength + byteLength, 'Invalid sequence length')
12365 var y = BigInteger.fromBuffer(buffer.slice(
1 + byteLength))
12366 Q = Point.fromAffine(curve, x, y)
12369 Q.compressed = compressed
12373 Point.prototype.toString = function () {
12374 if (this.curve.isInfinity(this)) return '(INFINITY)'
12376 return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'
12379 module.exports = Point
12381 }).call(this,_dereq_("buffer").Buffer)
12382 },{"assert":
4,"bigi":
3,"buffer":
8}],
68:[function(_dereq_,module,exports){
12383 (function (process,Buffer){
12384 // Closure compiler error - result of 'not' operator not being used
12385 //!function(globals){
12386 (function(globals){
12390 if (typeof define !== 'undefined' && define.amd) { //require.js / AMD
12391 define([], function() {
12392 return secureRandom
12394 } else if (typeof module !== 'undefined' && module.exports) { //CommonJS
12395 module.exports = secureRandom
12396 } else { //script / browser
12397 globals.secureRandom = secureRandom
12401 //options.type is the only valid option
12402 function secureRandom(count, options) {
12403 options = options || {type: 'Array'}
12404 //we check for process.pid to prevent browserify from tricking us
12405 if (typeof process != 'undefined' && typeof process.pid == 'number') {
12406 return nodeRandom(count, options)
12408 var crypto = window.crypto || window.msCrypto
12409 if (!crypto) throw new Error("Your browser does not support window.crypto.")
12410 return browserRandom(count, options)
12414 function nodeRandom(count, options) {
12415 var crypto = _dereq_('crypto')
12416 var buf = crypto.randomBytes(count)
12418 switch (options.type) {
12420 return [].slice.call(buf)
12424 var arr = new Uint8Array(count)
12425 for (var i =
0; i < count; ++i) { arr[i] = buf.readUInt8(i) }
12428 throw new Error(options.type + " is unsupported.")
12432 function browserRandom(count, options) {
12433 var nativeArr = new Uint8Array(count)
12434 var crypto = window.crypto || window.msCrypto
12435 crypto.getRandomValues(nativeArr)
12437 switch (options.type) {
12439 return [].slice.call(nativeArr)
12441 try { var b = new Buffer(
1) } catch(e) { throw new Error('Buffer not supported in this environment. Use Node.js or Browserify for browser support.')}
12442 return new Buffer(nativeArr)
12446 throw new Error(options.type + " is unsupported.")
12450 secureRandom.randomArray = function(byteCount) {
12451 return secureRandom(byteCount, {type: 'Array'})
12454 secureRandom.randomUint8Array = function(byteCount) {
12455 return secureRandom(byteCount, {type: 'Uint8Array'})
12458 secureRandom.randomBuffer = function(byteCount) {
12459 return secureRandom(byteCount, {type: 'Buffer'})
12465 }).call(this,_dereq_("FWaASH"),_dereq_("buffer").Buffer)
12466 },{"FWaASH":
12,"buffer":
8,"crypto":
7}],
69:[function(_dereq_,module,exports){
12467 (function (Buffer){
12468 var assert = _dereq_('assert')
12469 var base58check = _dereq_('./base58check')
12470 var networks = _dereq_('./networks')
12471 var scripts = _dereq_('./scripts')
12473 function findScriptTypeByVersion(version) {
12474 for (var networkName in networks) {
12475 var network = networks[networkName]
12477 if (version === network.pubKeyHash) return 'pubkeyhash'
12478 if (version === network.scriptHash) return 'scripthash'
12482 function Address(hash, version) {
12483 assert(Buffer.isBuffer(hash), 'Expected Buffer, got ' + hash)
12484 assert.strictEqual(hash.length,
20, 'Invalid hash length')
12485 assert.strictEqual(version &
0xff, version, 'Invalid version byte')
12488 this.version = version
12491 // Import functions
12492 Address.fromBase58Check = function(string) {
12493 var payload = base58check.decode(string)
12494 var version = payload.readUInt8(
0)
12495 var hash = payload.slice(
1)
12497 return new Address(hash, version)
12500 Address.fromOutputScript = function(script, network) {
12501 network = network || networks.bitcoin
12503 var type = scripts.classifyOutput(script)
12505 if (type === 'pubkeyhash') return new Address(script.chunks[
2], network.pubKeyHash)
12506 if (type === 'scripthash') return new Address(script.chunks[
1], network.scriptHash)
12508 assert(false, type + ' has no matching Address')
12511 // Export functions
12512 Address.prototype.toBase58Check = function () {
12513 var payload = new Buffer(
21)
12514 payload.writeUInt8(this.version,
0)
12515 this.hash.copy(payload,
1)
12517 return base58check.encode(payload)
12520 Address.prototype.toOutputScript = function() {
12521 var scriptType = findScriptTypeByVersion(this.version)
12523 if (scriptType === 'pubkeyhash') return scripts.pubKeyHashOutput(this.hash)
12524 if (scriptType === 'scripthash') return scripts.scriptHashOutput(this.hash)
12526 assert(false, this.toString() + ' has no matching Script')
12529 Address.prototype.toString = Address.prototype.toBase58Check
12531 module.exports = Address
12533 }).call(this,_dereq_("buffer").Buffer)
12534 },{"./base58check":
70,"./networks":
81,"./scripts":
84,"assert":
4,"buffer":
8}],
70:[function(_dereq_,module,exports){
12535 (function (Buffer){
12536 // https://en.bitcoin.it/wiki/Base58Check_encoding
12537 var assert = _dereq_('assert')
12538 var base58 = _dereq_('bs58')
12539 var crypto = _dereq_('./crypto')
12541 // Encode a buffer as a base58-check-encoded string
12542 function encode(payload) {
12543 var checksum = crypto.hash256(payload).slice(
0,
4)
12545 return base58.encode(Buffer.concat([
12551 // Decode a base58-check-encoded string to a buffer
12552 function decode(string) {
12553 var buffer = base58.decode(string)
12555 var payload = buffer.slice(
0, -
4)
12556 var checksum = buffer.slice(-
4)
12557 var newChecksum = crypto.hash256(payload).slice(
0,
4)
12559 assert.deepEqual(newChecksum, checksum, 'Invalid checksum')
12569 }).call(this,_dereq_("buffer").Buffer)
12570 },{"./crypto":
73,"assert":
4,"bs58":
15,"buffer":
8}],
71:[function(_dereq_,module,exports){
12571 var assert = _dereq_('assert')
12572 var opcodes = _dereq_('./opcodes')
12574 // https://github.com/feross/buffer/blob/master/index.js#L1127
12575 function verifuint(value, max) {
12576 assert(typeof value === 'number', 'cannot write a non-number as a number')
12577 assert(value
>=
0, 'specified a negative value for writing an unsigned value')
12578 assert(value <= max, 'value is larger than maximum value for type')
12579 assert(Math.floor(value) === value, 'value has a fractional component')
12582 function pushDataSize(i) {
12583 return i < opcodes.OP_PUSHDATA1 ?
1
12589 function readPushDataInt(buffer, offset) {
12590 var opcode = buffer.readUInt8(offset)
12594 if (opcode < opcodes.OP_PUSHDATA1) {
12599 } else if (opcode === opcodes.OP_PUSHDATA1) {
12600 number = buffer.readUInt8(offset +
1)
12604 } else if (opcode === opcodes.OP_PUSHDATA2) {
12605 number = buffer.readUInt16LE(offset +
1)
12610 assert.equal(opcode, opcodes.OP_PUSHDATA4, 'Unexpected opcode')
12612 number = buffer.readUInt32LE(offset +
1)
12624 function readUInt64LE(buffer, offset) {
12625 var a = buffer.readUInt32LE(offset)
12626 var b = buffer.readUInt32LE(offset +
4)
12629 verifuint(b + a,
0x001fffffffffffff)
12634 function readVarInt(buffer, offset) {
12635 var t = buffer.readUInt8(offset)
12644 } else if (t <
254) {
12645 number = buffer.readUInt16LE(offset +
1)
12649 } else if (t <
255) {
12650 number = buffer.readUInt32LE(offset +
1)
12655 number = readUInt64LE(buffer, offset +
1)
12665 function writePushDataInt(buffer, number, offset) {
12666 var size = pushDataSize(number)
12670 buffer.writeUInt8(number, offset)
12673 } else if (size ===
2) {
12674 buffer.writeUInt8(opcodes.OP_PUSHDATA1, offset)
12675 buffer.writeUInt8(number, offset +
1)
12678 } else if (size ===
3) {
12679 buffer.writeUInt8(opcodes.OP_PUSHDATA2, offset)
12680 buffer.writeUInt16LE(number, offset +
1)
12684 buffer.writeUInt8(opcodes.OP_PUSHDATA4, offset)
12685 buffer.writeUInt32LE(number, offset +
1)
12692 function writeUInt64LE(buffer, value, offset) {
12693 verifuint(value,
0x001fffffffffffff)
12695 buffer.writeInt32LE(value & -
1, offset)
12696 buffer.writeUInt32LE(Math.floor(value /
0x100000000), offset +
4)
12699 function varIntSize(i) {
12702 : i <
0x100000000 ?
5
12706 function writeVarInt(buffer, number, offset) {
12707 var size = varIntSize(number)
12711 buffer.writeUInt8(number, offset)
12714 } else if (size ===
3) {
12715 buffer.writeUInt8(
253, offset)
12716 buffer.writeUInt16LE(number, offset +
1)
12719 } else if (size ===
5) {
12720 buffer.writeUInt8(
254, offset)
12721 buffer.writeUInt32LE(number, offset +
1)
12725 buffer.writeUInt8(
255, offset)
12726 writeUInt64LE(buffer, number, offset +
1)
12733 pushDataSize: pushDataSize,
12734 readPushDataInt: readPushDataInt,
12735 readUInt64LE: readUInt64LE,
12736 readVarInt: readVarInt,
12737 varIntSize: varIntSize,
12738 writePushDataInt: writePushDataInt,
12739 writeUInt64LE: writeUInt64LE,
12740 writeVarInt: writeVarInt
12743 },{"./opcodes":
82,"assert":
4}],
72:[function(_dereq_,module,exports){
12744 (function (Buffer){
12745 var assert = _dereq_('assert')
12746 var Crypto = _dereq_('crypto-js')
12747 var WordArray = Crypto.lib.WordArray
12749 function bufferToWordArray(buffer) {
12750 assert(Buffer.isBuffer(buffer), 'Expected Buffer, got', buffer)
12753 for (var i =
0, b =
0; i < buffer.length; i++, b +=
8) {
12754 words[b
>>> 5] |= buffer[i] << (
24 - b %
32)
12757 return new WordArray.init(words, buffer.length)
12760 function wordArrayToBuffer(wordArray) {
12761 assert(Array.isArray(wordArray.words), 'Expected WordArray, got' + wordArray)
12763 var words = wordArray.words
12764 var buffer = new Buffer(words.length *
4)
12766 words.forEach(function(value, i) {
12767 buffer.writeInt32BE(value & -
1, i *
4)
12774 bufferToWordArray: bufferToWordArray,
12775 wordArrayToBuffer: wordArrayToBuffer
12778 }).call(this,_dereq_(
"buffer").Buffer)
12779 },{
"assert":
4,
"buffer":
8,
"crypto-js":
37}],
73:[function(_dereq_,module,exports){
12780 (function (Buffer){
12781 // Crypto, crypto, where art thou crypto
12782 var assert = _dereq_('assert')
12783 var CryptoJS = _dereq_('crypto-js')
12784 var crypto = _dereq_('crypto')
12785 var convert = _dereq_('./convert')
12787 function hash160(buffer) {
12788 return ripemd160(sha256(buffer))
12791 function hash256(buffer) {
12792 return sha256(sha256(buffer))
12795 function ripemd160(buffer) {
12796 return crypto.createHash('rmd160').update(buffer).digest()
12799 function sha1(buffer) {
12800 return crypto.createHash('sha1').update(buffer).digest()
12803 function sha256(buffer) {
12804 return crypto.createHash('sha256').update(buffer).digest()
12807 // FIXME: Name not consistent with others
12808 function HmacSHA256(buffer, secret) {
12809 return crypto.createHmac('sha256', secret).update(buffer).digest()
12812 function HmacSHA512(data, secret) {
12813 assert(Buffer.isBuffer(data), 'Expected Buffer for data, got ' + data)
12814 assert(Buffer.isBuffer(secret), 'Expected Buffer for secret, got ' + secret)
12816 var dataWords = convert.bufferToWordArray(data)
12817 var secretWords = convert.bufferToWordArray(secret)
12819 var hash = CryptoJS.HmacSHA512(dataWords, secretWords)
12821 return convert.wordArrayToBuffer(hash)
12825 ripemd160: ripemd160,
12830 HmacSHA256: HmacSHA256,
12831 HmacSHA512: HmacSHA512
12834 }).call(this,_dereq_(
"buffer").Buffer)
12835 },{
"./convert":
72,
"assert":
4,
"buffer":
8,
"crypto":
19,
"crypto-js":
37}],
74:[function(_dereq_,module,exports){
12836 (function (Buffer){
12837 var assert = _dereq_('assert')
12838 var crypto = _dereq_('./crypto')
12840 var BigInteger = _dereq_('bigi')
12841 var ECSignature = _dereq_('./ecsignature')
12842 var Point = _dereq_('ecurve').Point
12844 // https://tools.ietf.org/html/rfc6979#section-
3.2
12845 function deterministicGenerateK(curve, hash, d) {
12846 assert(Buffer.isBuffer(hash), 'Hash must be a Buffer, not ' + hash)
12847 assert.equal(hash.length,
32, 'Hash must be
256 bit')
12848 assert(d instanceof BigInteger, 'Private key must be a BigInteger')
12850 var x = d.toBuffer(
32)
12851 var k = new Buffer(
32)
12852 var v = new Buffer(
32)
12861 k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([
0]), x, hash]), k)
12864 v = crypto.HmacSHA256(v, k)
12867 k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([
1]), x, hash]), k)
12870 v = crypto.HmacSHA256(v, k)
12872 // Step H1/H2a, ignored as tlen === qlen (
256 bit)
12874 v = crypto.HmacSHA256(v, k)
12876 var T = BigInteger.fromBuffer(v)
12878 // Step H3, repeat until T is within the interval [
1, n -
1]
12879 while ((T.signum() <=
0) || (T.compareTo(curve.n)
>=
0)) {
12880 k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([
0])]), k)
12881 v = crypto.HmacSHA256(v, k)
12883 T = BigInteger.fromBuffer(v)
12889 function sign(curve, hash, d) {
12890 var k = deterministicGenerateK(curve, hash, d)
12894 var Q = G.multiply(k)
12895 var e = BigInteger.fromBuffer(hash)
12897 var r = Q.affineX.mod(n)
12898 assert.notEqual(r.signum(),
0, 'Invalid R value')
12900 var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n)
12901 assert.notEqual(s.signum(),
0, 'Invalid S value')
12903 var N_OVER_TWO = n.shiftRight(
1)
12905 // enforce low S values, see bip62: 'low s values in signatures'
12906 if (s.compareTo(N_OVER_TWO)
> 0) {
12910 return new ECSignature(r, s)
12913 function verify(curve, hash, signature, Q) {
12914 var e = BigInteger.fromBuffer(hash)
12916 return verifyRaw(curve, e, signature, Q)
12919 function verifyRaw(curve, e, signature, Q) {
12923 var r = signature.r
12924 var s = signature.s
12926 if (r.signum() ===
0 || r.compareTo(n)
>=
0) return false
12927 if (s.signum() ===
0 || s.compareTo(n)
>=
0) return false
12929 var c = s.modInverse(n)
12931 var u1 = e.multiply(c).mod(n)
12932 var u2 = r.multiply(c).mod(n)
12934 var point = G.multiplyTwo(u1, Q, u2)
12935 var v = point.affineX.mod(n)
12941 * Recover a public key from a signature.
12943 * See SEC
1: Elliptic Curve Cryptography, section
4.1.6, "Public
12944 * Key Recovery Operation".
12946 * http://www.secg.org/download/aid-
780/sec1-v2.pdf
12948 function recoverPubKey(curve, e, signature, i) {
12949 assert.strictEqual(i &
3, i, 'Recovery param is more than two bits')
12951 var r = signature.r
12952 var s = signature.s
12954 // A set LSB signifies that the y-coordinate is odd
12957 // The more significant bit specifies whether we should use the
12958 // first or second candidate key.
12959 var isSecondKey = i
>> 1
12964 //
1.1 Let x = r + jn
12965 var x = isSecondKey ? r.add(n) : r
12966 var R = curve.pointFromX(isYOdd, x)
12968 //
1.4 Check that nR is at infinity
12969 var nR = R.multiply(n)
12970 assert(curve.isInfinity(nR), 'nR is not a valid curve point')
12972 // Compute -e from e
12973 var eNeg = e.negate().mod(n)
12975 //
1.6.1 Compute Q = r^-
1 (sR - eG)
12976 // Q = r^-
1 (sR + -eG)
12977 var rInv = r.modInverse(n)
12979 var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv)
12986 * Calculate pubkey extraction parameter.
12988 * When extracting a pubkey from a signature, we have to
12989 * distinguish four different cases. Rather than putting this
12990 * burden on the verifier, Bitcoin includes a
2-bit value with the
12993 * This function simply tries all four cases and returns the value
12994 * that resulted in a successful pubkey recovery.
12996 function calcPubKeyRecoveryParam(curve, e, signature, Q) {
12997 for (var i =
0; i <
4; i++) {
12998 var Qprime = recoverPubKey(curve, e, signature, i)
13001 if (Qprime.equals(Q)) {
13006 throw new Error('Unable to find valid recovery factor')
13010 calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,
13011 deterministicGenerateK: deterministicGenerateK,
13012 recoverPubKey: recoverPubKey,
13015 verifyRaw: verifyRaw
13018 }).call(this,_dereq_(
"buffer").Buffer)
13019 },{
"./crypto":
73,
"./ecsignature":
77,
"assert":
4,
"bigi":
3,
"buffer":
8,
"ecurve":
65}],
75:[function(_dereq_,module,exports){
13020 (function (Buffer){
13021 var assert = _dereq_('assert')
13022 var base58check = _dereq_('./base58check')
13023 var ecdsa = _dereq_('./ecdsa')
13024 var networks = _dereq_('./networks')
13025 var secureRandom = _dereq_('secure-random')
13027 var BigInteger = _dereq_('bigi')
13028 var ECPubKey = _dereq_('./ecpubkey')
13030 var ecurve = _dereq_('ecurve')
13031 var curve = ecurve.getCurveByName('secp256k1')
13033 function ECKey(d, compressed) {
13034 assert(d.signum()
> 0, 'Private key must be greater than
0')
13035 assert(d.compareTo(curve.n) <
0, 'Private key must be less than the curve order')
13037 var Q = curve.G.multiply(d)
13040 this.pub = new ECPubKey(Q, compressed)
13043 // Static constructors
13044 ECKey.fromWIF = function(string) {
13045 var payload = base58check.decode(string)
13046 var compressed = false
13048 // Ignore the version byte
13049 payload = payload.slice(
1)
13051 if (payload.length ===
33) {
13052 assert.strictEqual(payload[
32],
0x01, 'Invalid compression flag')
13054 // Truncate the compression flag
13055 payload = payload.slice(
0, -
1)
13059 assert.equal(payload.length,
32, 'Invalid WIF payload length')
13061 var d = BigInteger.fromBuffer(payload)
13062 return new ECKey(d, compressed)
13065 ECKey.makeRandom = function(compressed, rng) {
13066 rng = rng || secureRandom.randomBuffer
13068 var buffer = rng(
32)
13069 assert(Buffer.isBuffer(buffer), 'Expected Buffer, got ' + buffer)
13071 var d = BigInteger.fromBuffer(buffer)
13074 return new ECKey(d, compressed)
13077 // Export functions
13078 ECKey.prototype.toWIF = function(network) {
13079 network = network || networks.bitcoin
13081 var bufferLen = this.pub.compressed ?
34 :
33
13082 var buffer = new Buffer(bufferLen)
13084 buffer.writeUInt8(network.wif,
0)
13085 this.d.toBuffer(
32).copy(buffer,
1)
13087 if (this.pub.compressed) {
13088 buffer.writeUInt8(
0x01,
33)
13091 return base58check.encode(buffer)
13095 ECKey.prototype.sign = function(hash) {
13096 return ecdsa.sign(curve, hash, this.d)
13099 module.exports = ECKey
13101 }).call(this,_dereq_(
"buffer").Buffer)
13102 },{
"./base58check":
70,
"./ecdsa":
74,
"./ecpubkey":
76,
"./networks":
81,
"assert":
4,
"bigi":
3,
"buffer":
8,
"ecurve":
65,
"secure-random":
68}],
76:[function(_dereq_,module,exports){
13103 (function (Buffer){
13104 var assert = _dereq_('assert')
13105 var crypto = _dereq_('./crypto')
13106 var ecdsa = _dereq_('./ecdsa')
13107 var networks = _dereq_('./networks')
13109 var Address = _dereq_('./address')
13111 var ecurve = _dereq_('ecurve')
13112 var curve = ecurve.getCurveByName('secp256k1')
13114 function ECPubKey(Q, compressed) {
13115 assert(Q instanceof ecurve.Point, 'Expected Point, got ' + Q)
13117 if (compressed == undefined) compressed = true
13118 assert.strictEqual(typeof compressed, 'boolean', 'Expected boolean, got ' + compressed)
13120 this.compressed = compressed
13124 // Static constructors
13125 ECPubKey.fromBuffer = function(buffer) {
13126 var Q = ecurve.Point.decodeFrom(curve, buffer)
13127 return new ECPubKey(Q, Q.compressed)
13130 ECPubKey.fromHex = function(hex) {
13131 return ECPubKey.fromBuffer(new Buffer(hex, 'hex'))
13135 ECPubKey.prototype.getAddress = function(network) {
13136 network = network || networks.bitcoin
13138 return new Address(crypto.hash160(this.toBuffer()), network.pubKeyHash)
13141 ECPubKey.prototype.verify = function(hash, signature) {
13142 return ecdsa.verify(curve, hash, signature, this.Q)
13145 // Export functions
13146 ECPubKey.prototype.toBuffer = function() {
13147 return this.Q.getEncoded(this.compressed)
13150 ECPubKey.prototype.toHex = function() {
13151 return this.toBuffer().toString('hex')
13154 module.exports = ECPubKey
13156 }).call(this,_dereq_(
"buffer").Buffer)
13157 },{
"./address":
69,
"./crypto":
73,
"./ecdsa":
74,
"./networks":
81,
"assert":
4,
"buffer":
8,
"ecurve":
65}],
77:[function(_dereq_,module,exports){
13158 (function (Buffer){
13159 var assert = _dereq_('assert')
13160 var BigInteger = _dereq_('bigi')
13162 function ECSignature(r, s) {
13163 assert(r instanceof BigInteger, 'Expected BigInteger, got ' + r)
13164 assert(s instanceof BigInteger, 'Expected BigInteger, got ' + s)
13169 // Import operations
13170 ECSignature.parseCompact = function(buffer) {
13171 assert.equal(buffer.length,
65, 'Invalid signature length')
13172 var i = buffer.readUInt8(
0) -
27
13175 assert.equal(i, i &
7, 'Invalid signature parameter')
13176 var compressed = !!(i &
4)
13178 // Recovery param only
13181 var r = BigInteger.fromBuffer(buffer.slice(
1,
33))
13182 var s = BigInteger.fromBuffer(buffer.slice(
33))
13185 compressed: compressed,
13187 signature: new ECSignature(r, s)
13191 ECSignature.fromDER = function(buffer) {
13192 assert.equal(buffer.readUInt8(
0),
0x30, 'Not a DER sequence')
13193 assert.equal(buffer.readUInt8(
1), buffer.length -
2, 'Invalid sequence length')
13194 assert.equal(buffer.readUInt8(
2),
0x02, 'Expected a DER integer')
13196 var rLen = buffer.readUInt8(
3)
13197 assert(rLen
> 0, 'R length is zero')
13199 var offset =
4 + rLen
13200 assert.equal(buffer.readUInt8(offset),
0x02, 'Expected a DER integer (
2)')
13202 var sLen = buffer.readUInt8(offset +
1)
13203 assert(sLen
> 0, 'S length is zero')
13205 var rB = buffer.slice(
4, offset)
13206 var sB = buffer.slice(offset +
2)
13209 if (rLen
> 1 && rB.readUInt8(
0) ===
0x00) {
13210 assert(rB.readUInt8(
1) &
0x80, 'R value excessively padded')
13213 if (sLen
> 1 && sB.readUInt8(
0) ===
0x00) {
13214 assert(sB.readUInt8(
1) &
0x80, 'S value excessively padded')
13217 assert.equal(offset, buffer.length, 'Invalid DER encoding')
13218 var r = BigInteger.fromDERInteger(rB)
13219 var s = BigInteger.fromDERInteger(sB)
13221 assert(r.signum()
>=
0, 'R value is negative')
13222 assert(s.signum()
>=
0, 'S value is negative')
13224 return new ECSignature(r, s)
13227 // FIXME:
0x00,
0x04,
0x80 are SIGHASH_* boundary constants, importing Transaction causes a circular dependency
13228 ECSignature.parseScriptSignature = function(buffer) {
13229 var hashType = buffer.readUInt8(buffer.length -
1)
13230 var hashTypeMod = hashType & ~
0x80
13232 assert(hashTypeMod
> 0x00 && hashTypeMod <
0x04, 'Invalid hashType')
13235 signature: ECSignature.fromDER(buffer.slice(
0, -
1)),
13240 // Export operations
13241 ECSignature.prototype.toCompact = function(i, compressed) {
13242 if (compressed) i +=
4
13245 var buffer = new Buffer(
65)
13246 buffer.writeUInt8(i,
0)
13248 this.r.toBuffer(
32).copy(buffer,
1)
13249 this.s.toBuffer(
32).copy(buffer,
33)
13254 ECSignature.prototype.toDER = function() {
13255 var rBa = this.r.toDERInteger()
13256 var sBa = this.s.toDERInteger()
13259 sequence.push(
0x02) // INTEGER
13260 sequence.push(rBa.length)
13261 sequence = sequence.concat(rBa)
13263 sequence.push(
0x02) // INTEGER
13264 sequence.push(sBa.length)
13265 sequence = sequence.concat(sBa)
13267 sequence.unshift(sequence.length)
13268 sequence.unshift(
0x30) // SEQUENCE
13270 return new Buffer(sequence)
13273 ECSignature.prototype.toScriptSignature = function(hashType) {
13274 var hashTypeBuffer = new Buffer(
1)
13275 hashTypeBuffer.writeUInt8(hashType,
0)
13277 return Buffer.concat([this.toDER(), hashTypeBuffer])
13280 module.exports = ECSignature
13282 }).call(this,_dereq_(
"buffer").Buffer)
13283 },{
"assert":
4,
"bigi":
3,
"buffer":
8}],
78:[function(_dereq_,module,exports){
13284 (function (Buffer){
13285 var assert = _dereq_('assert')
13286 var base58check = _dereq_('./base58check')
13287 var crypto = _dereq_('./crypto')
13288 var networks = _dereq_('./networks')
13290 var BigInteger = _dereq_('bigi')
13291 var ECKey = _dereq_('./eckey')
13292 var ECPubKey = _dereq_('./ecpubkey')
13294 var ecurve = _dereq_('ecurve')
13295 var curve = ecurve.getCurveByName('secp256k1')
13297 function findBIP32ParamsByVersion(version) {
13298 for (var name in networks) {
13299 var network = networks[name]
13301 for (var type in network.bip32) {
13302 if (version != network.bip32[type]) continue
13305 isPrivate: (type === 'private'),
13311 assert(false, 'Could not find version ' + version.toString(
16))
13314 function HDNode(K, chainCode, network) {
13315 network = network || networks.bitcoin
13317 assert(Buffer.isBuffer(chainCode), 'Expected Buffer, got ' + chainCode)
13318 assert(network.bip32, 'Unknown BIP32 constants for network')
13320 this.chainCode = chainCode
13323 this.network = network
13325 if (K instanceof BigInteger) {
13326 this.privKey = new ECKey(K, true)
13327 this.pubKey = this.privKey.pub
13329 this.pubKey = new ECPubKey(K, true)
13333 HDNode.MASTER_SECRET = new Buffer('Bitcoin seed')
13334 HDNode.HIGHEST_BIT =
0x80000000
13337 HDNode.fromSeedBuffer = function(seed, network) {
13338 var I = crypto.HmacSHA512(seed, HDNode.MASTER_SECRET)
13339 var IL = I.slice(
0,
32)
13340 var IR = I.slice(
32)
13342 // In case IL is
0 or
>= n, the master key is invalid
13343 // This is handled by `new ECKey` in the HDNode constructor
13344 var pIL = BigInteger.fromBuffer(IL)
13346 return new HDNode(pIL, IR, network)
13349 HDNode.fromSeedHex = function(hex, network) {
13350 return HDNode.fromSeedBuffer(new Buffer(hex, 'hex'), network)
13353 HDNode.fromBase58 = function(string) {
13354 return HDNode.fromBuffer(base58check.decode(string))
13357 HDNode.fromBuffer = function(buffer) {
13358 assert.strictEqual(buffer.length, HDNode.LENGTH, 'Invalid buffer length')
13360 //
4 byte: version bytes
13361 var version = buffer.readUInt32BE(
0)
13362 var params = findBIP32ParamsByVersion(version)
13364 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ...
13365 var depth = buffer.readUInt8(
4)
13367 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
13368 var parentFingerprint = buffer.readUInt32BE(
5)
13370 assert.strictEqual(parentFingerprint,
0x00000000, 'Invalid parent fingerprint')
13373 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
13374 // This is encoded in MSB order. (
0x00000000 if master key)
13375 var index = buffer.readUInt32BE(
9)
13376 assert(depth
> 0 || index ===
0, 'Invalid index')
13378 //
32 bytes: the chain code
13379 var chainCode = buffer.slice(
13,
45)
13382 //
33 bytes: private key data (
0x00 + k)
13383 if (params.isPrivate) {
13384 assert.strictEqual(buffer.readUInt8(
45),
0x00, 'Invalid private key')
13385 var data = buffer.slice(
46,
78)
13386 var d = BigInteger.fromBuffer(data)
13387 hd = new HDNode(d, chainCode, params.network)
13389 //
33 bytes: public key data (
0x02 + X or
0x03 + X)
13391 var data = buffer.slice(
45,
78)
13392 var Q = ecurve.Point.decodeFrom(curve, data)
13393 assert.equal(Q.compressed, true, 'Invalid public key')
13395 // Verify that the X coordinate in the public point corresponds to a point on the curve.
13396 // If not, the extended public key is invalid.
13399 hd = new HDNode(Q, chainCode, params.network)
13404 hd.parentFingerprint = parentFingerprint
13409 HDNode.fromHex = function(hex) {
13410 return HDNode.fromBuffer(new Buffer(hex, 'hex'))
13413 HDNode.prototype.getIdentifier = function() {
13414 return crypto.hash160(this.pubKey.toBuffer())
13417 HDNode.prototype.getFingerprint = function() {
13418 return this.getIdentifier().slice(
0,
4)
13421 HDNode.prototype.getAddress = function() {
13422 return this.pubKey.getAddress(this.network)
13425 HDNode.prototype.toBase58 = function(isPrivate) {
13426 return base58check.encode(this.toBuffer(isPrivate))
13429 HDNode.prototype.toBuffer = function(isPrivate) {
13430 if (isPrivate == undefined) isPrivate = !!this.privKey
13433 var version = isPrivate ? this.network.bip32.private : this.network.bip32.public
13434 var buffer = new Buffer(HDNode.LENGTH)
13436 //
4 bytes: version bytes
13437 buffer.writeUInt32BE(version,
0)
13440 //
1 byte: depth:
0x00 for master nodes,
0x01 for level-
1 descendants, ....
13441 buffer.writeUInt8(this.depth,
4)
13443 //
4 bytes: the fingerprint of the parent's key (
0x00000000 if master key)
13444 var fingerprint = (this.depth ===
0) ?
0x00000000 : this.parentFingerprint
13445 buffer.writeUInt32BE(fingerprint,
5)
13447 //
4 bytes: child number. This is the number i in xi = xpar/i, with xi the key being serialized.
13448 // This is encoded in Big endian. (
0x00000000 if master key)
13449 buffer.writeUInt32BE(this.index,
9)
13451 //
32 bytes: the chain code
13452 this.chainCode.copy(buffer,
13)
13454 //
33 bytes: the public key or private key data
13456 assert(this.privKey, 'Missing private key')
13458 //
0x00 + k for private keys
13459 buffer.writeUInt8(
0,
45)
13460 this.privKey.d.toBuffer(
32).copy(buffer,
46)
13463 // X9.62 encoding for public keys
13464 this.pubKey.toBuffer().copy(buffer,
45)
13470 HDNode.prototype.toHex = function(isPrivate) {
13471 return this.toBuffer(isPrivate).toString('hex')
13474 // https://github.com/bitcoin/bips/blob/master/bip-
0032.mediawiki#child-key-derivation-ckd-functions
13475 HDNode.prototype.derive = function(index) {
13476 var isHardened = index
>= HDNode.HIGHEST_BIT
13477 var indexBuffer = new Buffer(
4)
13478 indexBuffer.writeUInt32BE(index,
0)
13484 assert(this.privKey, 'Could not derive hardened child key')
13486 // data =
0x00 || ser256(kpar) || ser32(index)
13487 data = Buffer.concat([
13488 this.privKey.d.toBuffer(
33),
13494 // data = serP(point(kpar)) || ser32(index)
13495 // = serP(Kpar) || ser32(index)
13496 data = Buffer.concat([
13497 this.pubKey.toBuffer(),
13502 var I = crypto.HmacSHA512(data, this.chainCode)
13503 var IL = I.slice(
0,
32)
13504 var IR = I.slice(
32)
13506 var pIL = BigInteger.fromBuffer(IL)
13508 // In case parse256(IL)
>= n, proceed with the next value for i
13509 if (pIL.compareTo(curve.n)
>=
0) {
13510 return this.derive(index +
1)
13513 // Private parent key -
> private child key
13515 if (this.privKey) {
13516 // ki = parse256(IL) + kpar (mod n)
13517 var ki = pIL.add(this.privKey.d).mod(curve.n)
13519 // In case ki ==
0, proceed with the next value for i
13520 if (ki.signum() ===
0) {
13521 return this.derive(index +
1)
13524 hd = new HDNode(ki, IR, this.network)
13526 // Public parent key -
> public child key
13528 // Ki = point(parse256(IL)) + Kpar
13530 var Ki = curve.G.multiply(pIL).add(this.pubKey.Q)
13532 // In case Ki is the point at infinity, proceed with the next value for i
13533 if (curve.isInfinity(Ki)) {
13534 return this.derive(index +
1)
13537 hd = new HDNode(Ki, IR, this.network)
13540 hd.depth = this.depth +
1
13542 hd.parentFingerprint = this.getFingerprint().readUInt32BE(
0)
13547 HDNode.prototype.deriveHardened = function(index) {
13548 // Only derives hardened private keys by default
13549 return this.derive(index + HDNode.HIGHEST_BIT)
13552 HDNode.prototype.toString = HDNode.prototype.toBase58
13554 module.exports = HDNode
13556 }).call(this,_dereq_("buffer").Buffer)
13557 },{"./base58check":
70,"./crypto":
73,"./eckey":
75,"./ecpubkey":
76,"./networks":
81,"assert":
4,"bigi":
3,"buffer":
8,"ecurve":
65}],
79:[function(_dereq_,module,exports){
13559 Address: _dereq_('./address'),
13560 base58check: _dereq_('./base58check'),
13561 bufferutils: _dereq_('./bufferutils'),
13562 convert: _dereq_('./convert'),
13563 crypto: _dereq_('./crypto'),
13564 ecdsa: _dereq_('./ecdsa'),
13565 ECKey: _dereq_('./eckey'),
13566 ECPubKey: _dereq_('./ecpubkey'),
13567 ECSignature: _dereq_('./ecsignature'),
13568 Message: _dereq_('./message'),
13569 opcodes: _dereq_('./opcodes'),
13570 HDNode: _dereq_('./hdnode'),
13571 Script: _dereq_('./script'),
13572 scripts: _dereq_('./scripts'),
13573 Transaction: _dereq_('./transaction'),
13574 networks: _dereq_('./networks'),
13575 Wallet: _dereq_('./wallet')
13578 },{"./address":
69,"./base58check":
70,"./bufferutils":
71,"./convert":
72,"./crypto":
73,"./ecdsa":
74,"./eckey":
75,"./ecpubkey":
76,"./ecsignature":
77,"./hdnode":
78,"./message":
80,"./networks":
81,"./opcodes":
82,"./script":
83,"./scripts":
84,"./transaction":
85,"./wallet":
86}],
80:[function(_dereq_,module,exports){
13579 (function (Buffer){
13580 /// Implements Bitcoin's feature for signing arbitrary messages.
13581 var Address = _dereq_('./address')
13582 var BigInteger = _dereq_('bigi')
13583 var bufferutils = _dereq_('./bufferutils')
13584 var crypto = _dereq_('./crypto')
13585 var ecdsa = _dereq_('./ecdsa')
13586 var networks = _dereq_('./networks')
13588 var Address = _dereq_('./address')
13589 var ECPubKey = _dereq_('./ecpubkey')
13590 var ECSignature = _dereq_('./ecsignature')
13592 var ecurve = _dereq_('ecurve')
13593 var ecparams = ecurve.getCurveByName('secp256k1')
13595 function magicHash(message, network) {
13596 var magicPrefix = new Buffer(network.magicPrefix)
13597 var messageBuffer = new Buffer(message)
13598 var lengthBuffer = new Buffer(bufferutils.varIntSize(messageBuffer.length))
13599 bufferutils.writeVarInt(lengthBuffer, messageBuffer.length,
0)
13601 var buffer = Buffer.concat([magicPrefix, lengthBuffer, messageBuffer])
13602 return crypto.hash256(buffer)
13605 function sign(privKey, message, network) {
13606 network = network || networks.bitcoin
13608 var hash = magicHash(message, network)
13609 var signature = privKey.sign(hash)
13610 var e = BigInteger.fromBuffer(hash)
13611 var i = ecdsa.calcPubKeyRecoveryParam(ecparams, e, signature, privKey.pub.Q)
13613 return signature.toCompact(i, privKey.pub.compressed)
13616 // TODO: network could be implied from address
13617 function verify(address, signatureBuffer, message, network) {
13618 if (address instanceof Address) {
13619 address = address.toString()
13621 network = network || networks.bitcoin
13623 var hash = magicHash(message, network)
13624 var parsed = ECSignature.parseCompact(signatureBuffer)
13625 var e = BigInteger.fromBuffer(hash)
13626 var Q = ecdsa.recoverPubKey(ecparams, e, parsed.signature, parsed.i)
13628 var pubKey = new ECPubKey(Q, parsed.compressed)
13629 return pubKey.getAddress(network).toString() === address
13633 magicHash: magicHash,
13638 }).call(this,_dereq_("buffer").Buffer)
13639 },{"./address":
69,"./bufferutils":
71,"./crypto":
73,"./ecdsa":
74,"./ecpubkey":
76,"./ecsignature":
77,"./networks":
81,"bigi":
3,"buffer":
8,"ecurve":
65}],
81:[function(_dereq_,module,exports){
13640 // https://en.bitcoin.it/wiki/List_of_address_prefixes
13641 // Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=
409731
13645 magicPrefix: '\x18Bitcoin Signed Message:\n',
13647 public:
0x0488b21e,
13648 private:
0x0488ade4
13653 dustThreshold:
546, // https://github.com/bitcoin/bitcoin/blob/v0.9
.2/src/core.h#L151-L162
13654 feePerKb:
10000, // https://github.com/bitcoin/bitcoin/blob/v0.9
.2/src/main.cpp#L53
13655 estimateFee: estimateFee('bitcoin')
13658 magicPrefix: '\x19Dogecoin Signed Message:\n',
13660 public:
0x02facafd,
13661 private:
0x02fac398
13666 dustThreshold:
0, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/core.h#L155-L160
13667 dustSoftThreshold:
100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/main.h#L62
13668 feePerKb:
100000000, // https://github.com/dogecoin/dogecoin/blob/v1.7
.1/src/main.cpp#L58
13669 estimateFee: estimateFee('dogecoin')
13672 magicPrefix: '\x19Litecoin Signed Message:\n',
13674 public:
0x019da462,
13675 private:
0x019d9cfe
13680 dustThreshold:
0, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.cpp#L360-L365
13681 dustSoftThreshold:
100000, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.h#L53
13682 feePerKb:
100000, // https://github.com/litecoin-project/litecoin/blob/v0.8
.7.2/src/main.cpp#L56
13683 estimateFee: estimateFee('litecoin')
13686 magicPrefix: '\x18Bitcoin Signed Message:\n',
13688 public:
0x043587cf,
13689 private:
0x04358394
13694 dustThreshold:
546,
13696 estimateFee: estimateFee('testnet')
13700 function estimateFee(type) {
13701 return function(tx) {
13702 var network = networks[type]
13703 var baseFee = network.feePerKb
13704 var byteSize = tx.toBuffer().length
13706 var fee = baseFee * Math.ceil(byteSize /
1000)
13707 if (network.dustSoftThreshold == undefined) return fee
13709 tx.outs.forEach(function(e){
13710 if (e.value < network.dustSoftThreshold) {
13719 module.exports = networks
13721 },{}],
82:[function(_dereq_,module,exports){
13762 OP_TOALTSTACK :
107,
13763 OP_FROMALTSTACK :
108,
13795 OP_EQUALVERIFY :
136,
13796 OP_RESERVED1 :
137,
13797 OP_RESERVED2 :
138,
13807 OP_0NOTEQUAL :
146,
13820 OP_NUMEQUALVERIFY :
157,
13821 OP_NUMNOTEQUAL :
158,
13823 OP_GREATERTHAN :
160,
13824 OP_LESSTHANOREQUAL :
161,
13825 OP_GREATERTHANOREQUAL :
162,
13832 OP_RIPEMD160 :
166,
13837 OP_CODESEPARATOR :
171,
13839 OP_CHECKSIGVERIFY :
173,
13840 OP_CHECKMULTISIG :
174,
13841 OP_CHECKMULTISIGVERIFY :
175,
13855 // template matching params
13856 OP_PUBKEYHASH :
253,
13858 OP_INVALIDOPCODE :
255
13861 },{}],
83:[function(_dereq_,module,exports){
13862 (function (Buffer){
13863 var assert = _dereq_('assert')
13864 var bufferutils = _dereq_('./bufferutils')
13865 var crypto = _dereq_('./crypto')
13866 var opcodes = _dereq_('./opcodes')
13868 function Script(buffer, chunks) {
13869 assert(Buffer.isBuffer(buffer), 'Expected Buffer, got ' + buffer)
13870 assert(Array.isArray(chunks), 'Expected Array, got ' + chunks)
13872 this.buffer = buffer
13873 this.chunks = chunks
13876 // Import operations
13877 Script.fromASM = function(asm) {
13878 var strChunks = asm.split(' ')
13880 var chunks = strChunks.map(function(strChunk) {
13881 if (strChunk in opcodes) {
13882 return opcodes[strChunk]
13885 return new Buffer(strChunk, 'hex')
13889 return Script.fromChunks(chunks)
13892 Script.fromBuffer = function(buffer) {
13897 while (i < buffer.length) {
13898 var opcode = buffer.readUInt8(i)
13900 if ((opcode
> opcodes.OP_0) && (opcode <= opcodes.OP_PUSHDATA4)) {
13901 var d = bufferutils.readPushDataInt(buffer, i)
13904 var data = buffer.slice(i, i + d.number)
13910 chunks.push(opcode)
13916 return new Script(buffer, chunks)
13919 Script.fromChunks = function(chunks) {
13920 assert(Array.isArray(chunks), 'Expected Array, got ' + chunks)
13922 var bufferSize = chunks.reduce(function(accum, chunk) {
13923 if (Buffer.isBuffer(chunk)) {
13924 return accum + bufferutils.pushDataSize(chunk.length) + chunk.length
13930 var buffer = new Buffer(bufferSize)
13933 chunks.forEach(function(chunk) {
13934 if (Buffer.isBuffer(chunk)) {
13935 offset += bufferutils.writePushDataInt(buffer, chunk.length, offset)
13937 chunk.copy(buffer, offset)
13938 offset += chunk.length
13941 buffer.writeUInt8(chunk, offset)
13946 assert.equal(offset, buffer.length, 'Could not decode chunks')
13947 return new Script(buffer, chunks)
13950 Script.fromHex = function(hex) {
13951 return Script.fromBuffer(new Buffer(hex, 'hex'))
13955 Script.EMPTY = Script.fromChunks([])
13958 Script.prototype.getHash = function() {
13959 return crypto.hash160(this.buffer)
13962 // FIXME: doesn't work for data chunks, maybe time to use buffertools.compare...
13963 Script.prototype.without = function(needle) {
13964 return Script.fromChunks(this.chunks.filter(function(op) {
13965 return op !== needle
13969 // Export operations
13970 var reverseOps = []
13971 for (var op in opcodes) {
13972 var code = opcodes[op]
13973 reverseOps[code] = op
13976 Script.prototype.toASM = function() {
13977 return this.chunks.map(function(chunk) {
13978 if (Buffer.isBuffer(chunk)) {
13979 return chunk.toString('hex')
13982 return reverseOps[chunk]
13987 Script.prototype.toBuffer = function() {
13991 Script.prototype.toHex = function() {
13992 return this.toBuffer().toString('hex')
13995 module.exports = Script
13997 }).call(this,_dereq_("buffer").Buffer)
13998 },{"./bufferutils":
71,"./crypto":
73,"./opcodes":
82,"assert":
4,"buffer":
8}],
84:[function(_dereq_,module,exports){
13999 (function (Buffer){
14000 var assert = _dereq_('assert')
14001 var opcodes = _dereq_('./opcodes')
14003 // FIXME: use ECPubKey, currently the circular dependency breaks everything.
14006 // * Remove ECPubKey.getAddress
14007 // - Minimal change, but likely unpopular
14008 // * Move all script related functionality out of Address
14009 // - Means a lot of changes to Transaction/Wallet
14010 // * Ignore it (existing solution)
14011 // * Some form of hackery with commonjs
14013 var ecurve = _dereq_('ecurve')
14014 var curve = ecurve.getCurveByName('secp256k1')
14016 var ECSignature = _dereq_('./ecsignature')
14017 var Script = _dereq_('./script')
14019 function classifyOutput(script) {
14020 assert(script instanceof Script, 'Expected Script, got ', script)
14022 if (isPubKeyHashOutput.call(script)) {
14023 return 'pubkeyhash'
14024 } else if (isScriptHashOutput.call(script)) {
14025 return 'scripthash'
14026 } else if (isMultisigOutput.call(script)) {
14028 } else if (isPubKeyOutput.call(script)) {
14030 } else if (isNulldataOutput.call(script)) {
14033 return 'nonstandard'
14037 function classifyInput(script) {
14038 assert(script instanceof Script, 'Expected Script, got ', script)
14040 if (isPubKeyHashInput.call(script)) {
14041 return 'pubkeyhash'
14042 } else if (isScriptHashInput.call(script)) {
14043 return 'scripthash'
14044 } else if (isMultisigInput.call(script)) {
14046 } else if (isPubKeyInput.call(script)) {
14049 return 'nonstandard'
14053 function isCanonicalPubKey(buffer) {
14054 if (!Buffer.isBuffer(buffer)) return false
14058 ecurve.Point.decodeFrom(curve, buffer)
14060 if (!(e.message.match(/Invalid sequence (length|tag)/))) throw e
14068 function isCanonicalSignature(buffer) {
14069 if (!Buffer.isBuffer(buffer)) return false
14072 ECSignature.parseScriptSignature(buffer)
14074 if (!(e.message.match(/Not a DER sequence|Invalid sequence length|Expected a DER integer|R length is zero|S length is zero|R value excessively padded|S value excessively padded|R value is negative|S value is negative|Invalid hashType/))) throw e
14082 function isPubKeyHashInput() {
14083 return this.chunks.length ===
2 &&
14084 isCanonicalSignature(this.chunks[
0]) &&
14085 isCanonicalPubKey(this.chunks[
1])
14088 function isPubKeyHashOutput() {
14089 return this.chunks.length ===
5 &&
14090 this.chunks[
0] === opcodes.OP_DUP &&
14091 this.chunks[
1] === opcodes.OP_HASH160 &&
14092 Buffer.isBuffer(this.chunks[
2]) &&
14093 this.chunks[
2].length ===
20 &&
14094 this.chunks[
3] === opcodes.OP_EQUALVERIFY &&
14095 this.chunks[
4] === opcodes.OP_CHECKSIG
14098 function isPubKeyInput() {
14099 return this.chunks.length ===
1 &&
14100 isCanonicalSignature(this.chunks[
0])
14103 function isPubKeyOutput() {
14104 return this.chunks.length ===
2 &&
14105 isCanonicalPubKey(this.chunks[
0]) &&
14106 this.chunks[
1] === opcodes.OP_CHECKSIG
14109 function isScriptHashInput() {
14110 if (this.chunks.length <
2) return false
14111 var lastChunk = this.chunks[this.chunks.length -
1]
14113 if (!Buffer.isBuffer(lastChunk)) return false
14115 var scriptSig = Script.fromChunks(this.chunks.slice(
0, -
1))
14116 var scriptPubKey = Script.fromBuffer(lastChunk)
14118 return classifyInput(scriptSig) === classifyOutput(scriptPubKey)
14121 function isScriptHashOutput() {
14122 return this.chunks.length ===
3 &&
14123 this.chunks[
0] === opcodes.OP_HASH160 &&
14124 Buffer.isBuffer(this.chunks[
1]) &&
14125 this.chunks[
1].length ===
20 &&
14126 this.chunks[
2] === opcodes.OP_EQUAL
14129 function isMultisigInput() {
14130 return this.chunks[
0] === opcodes.OP_0 &&
14131 this.chunks.slice(
1).every(isCanonicalSignature)
14134 function isMultisigOutput() {
14135 if (this.chunks <
4) return false
14136 if (this.chunks[this.chunks.length -
1] !== opcodes.OP_CHECKMULTISIG) return false
14138 var mOp = this.chunks[
0]
14139 if (mOp === opcodes.OP_0) return false
14140 if (mOp < opcodes.OP_1) return false
14141 if (mOp
> opcodes.OP_16) return false
14143 var nOp = this.chunks[this.chunks.length -
2]
14144 if (nOp === opcodes.OP_0) return false
14145 if (nOp < opcodes.OP_1) return false
14146 if (nOp
> opcodes.OP_16) return false
14148 var m = mOp - (opcodes.OP_1 -
1)
14149 var n = nOp - (opcodes.OP_1 -
1)
14150 if (n < m) return false
14152 var pubKeys = this.chunks.slice(
1, -
2)
14153 if (n < pubKeys.length) return false
14155 return pubKeys.every(isCanonicalPubKey)
14158 function isNulldataOutput() {
14159 return this.chunks[
0] === opcodes.OP_RETURN
14162 // Standard Script Templates
14163 // {pubKey} OP_CHECKSIG
14164 function pubKeyOutput(pubKey) {
14165 return Script.fromChunks([
14167 opcodes.OP_CHECKSIG
14171 // OP_DUP OP_HASH160 {pubKeyHash} OP_EQUALVERIFY OP_CHECKSIG
14172 function pubKeyHashOutput(hash) {
14173 assert(Buffer.isBuffer(hash), 'Expected Buffer, got ' + hash)
14175 return Script.fromChunks([
14177 opcodes.OP_HASH160,
14179 opcodes.OP_EQUALVERIFY,
14180 opcodes.OP_CHECKSIG
14184 // OP_HASH160 {scriptHash} OP_EQUAL
14185 function scriptHashOutput(hash) {
14186 assert(Buffer.isBuffer(hash), 'Expected Buffer, got ' + hash)
14188 return Script.fromChunks([
14189 opcodes.OP_HASH160,
14195 // m [pubKeys ...] n OP_CHECKMULTISIG
14196 function multisigOutput(m, pubKeys) {
14197 assert(Array.isArray(pubKeys), 'Expected Array, got ' + pubKeys)
14198 assert(pubKeys.length
>= m, 'Not enough pubKeys provided')
14200 var pubKeyBuffers = pubKeys.map(function(pubKey) {
14201 return pubKey.toBuffer()
14203 var n = pubKeys.length
14205 return Script.fromChunks([].concat(
14206 (opcodes.OP_1 -
1) + m,
14208 (opcodes.OP_1 -
1) + n,
14209 opcodes.OP_CHECKMULTISIG
14214 function pubKeyInput(signature) {
14215 assert(Buffer.isBuffer(signature), 'Expected Buffer, got ' + signature)
14217 return Script.fromChunks([signature])
14220 // {signature} {pubKey}
14221 function pubKeyHashInput(signature, pubKey) {
14222 assert(Buffer.isBuffer(signature), 'Expected Buffer, got ' + signature)
14224 return Script.fromChunks([signature, pubKey.toBuffer()])
14227 //
<scriptSig> {serialized scriptPubKey script}
14228 function scriptHashInput(scriptSig, scriptPubKey) {
14229 return Script.fromChunks([].concat(
14231 scriptPubKey.toBuffer()
14235 // OP_0 [signatures ...]
14236 function multisigInput(signatures, scriptPubKey) {
14237 if (scriptPubKey) {
14238 assert(isMultisigOutput.call(scriptPubKey))
14240 var m = scriptPubKey.chunks[
0]
14241 var k = m - (opcodes.OP_1 -
1)
14242 assert(k <= signatures.length, 'Not enough signatures provided')
14245 return Script.fromChunks([].concat(opcodes.OP_0, signatures))
14249 classifyInput: classifyInput,
14250 classifyOutput: classifyOutput,
14251 multisigInput: multisigInput,
14252 multisigOutput: multisigOutput,
14253 pubKeyHashInput: pubKeyHashInput,
14254 pubKeyHashOutput: pubKeyHashOutput,
14255 pubKeyInput: pubKeyInput,
14256 pubKeyOutput: pubKeyOutput,
14257 scriptHashInput: scriptHashInput,
14258 scriptHashOutput: scriptHashOutput
14261 }).call(this,_dereq_("buffer").Buffer)
14262 },{"./ecsignature":
77,"./opcodes":
82,"./script":
83,"assert":
4,"buffer":
8,"ecurve":
65}],
85:[function(_dereq_,module,exports){
14263 (function (Buffer){
14264 var assert = _dereq_('assert')
14265 var bufferutils = _dereq_('./bufferutils')
14266 var crypto = _dereq_('./crypto')
14267 var opcodes = _dereq_('./opcodes')
14268 var scripts = _dereq_('./scripts')
14270 var Address = _dereq_('./address')
14271 var ECKey = _dereq_('./eckey')
14272 var ECSignature = _dereq_('./ecsignature')
14273 var Script = _dereq_('./script')
14275 Transaction.DEFAULT_SEQUENCE =
0xffffffff
14276 Transaction.SIGHASH_ALL =
0x01
14277 Transaction.SIGHASH_NONE =
0x02
14278 Transaction.SIGHASH_SINGLE =
0x03
14279 Transaction.SIGHASH_ANYONECANPAY =
0x80
14281 function Transaction() {
14289 * Create a new txin.
14291 * Can be called with any of:
14293 * - A transaction and an index
14294 * - A transaction hash and an index
14296 * Note that this method does not sign the created input.
14298 Transaction.prototype.addInput = function(tx, index, sequence) {
14299 if (sequence == undefined) sequence = Transaction.DEFAULT_SEQUENCE
14303 if (typeof tx === 'string') {
14304 hash = new Buffer(tx, 'hex')
14306 // TxId hex is big-endian, we need little-endian
14307 Array.prototype.reverse.call(hash)
14309 } else if (tx instanceof Transaction) {
14310 hash = tx.getHash()
14316 assert(Buffer.isBuffer(hash), 'Expected Transaction, txId or txHash, got ' + tx)
14317 assert.equal(hash.length,
32, 'Expected hash length of
32, got ' + hash.length)
14318 assert.equal(typeof index, 'number', 'Expected number index, got ' + index)
14320 return (this.ins.push({
14323 script: Script.EMPTY,
14329 * Create a new txout.
14331 * Can be called with:
14333 * - A base58 address string and a value
14334 * - An Address object and a value
14335 * - A scriptPubKey Script and a value
14337 Transaction.prototype.addOutput = function(scriptPubKey, value) {
14338 // Attempt to get a valid address if it's a base58 address string
14339 if (typeof scriptPubKey === 'string') {
14340 scriptPubKey = Address.fromBase58Check(scriptPubKey)
14343 // Attempt to get a valid script if it's an Address object
14344 if (scriptPubKey instanceof Address) {
14345 var address = scriptPubKey
14347 scriptPubKey = address.toOutputScript()
14350 return (this.outs.push({
14351 script: scriptPubKey,
14356 Transaction.prototype.toBuffer = function () {
14357 var txInSize = this.ins.reduce(function(a, x) {
14358 return a + (
40 + bufferutils.varIntSize(x.script.buffer.length) + x.script.buffer.length)
14361 var txOutSize = this.outs.reduce(function(a, x) {
14362 return a + (
8 + bufferutils.varIntSize(x.script.buffer.length) + x.script.buffer.length)
14365 var buffer = new Buffer(
14367 bufferutils.varIntSize(this.ins.length) +
14368 bufferutils.varIntSize(this.outs.length) +
14374 function writeSlice(slice) {
14375 slice.copy(buffer, offset)
14376 offset += slice.length
14378 function writeUInt32(i) {
14379 buffer.writeUInt32LE(i, offset)
14382 function writeUInt64(i) {
14383 bufferutils.writeUInt64LE(buffer, i, offset)
14386 function writeVarInt(i) {
14387 var n = bufferutils.writeVarInt(buffer, i, offset)
14391 writeUInt32(this.version)
14392 writeVarInt(this.ins.length)
14394 this.ins.forEach(function(txin) {
14395 writeSlice(txin.hash)
14396 writeUInt32(txin.index)
14397 writeVarInt(txin.script.buffer.length)
14398 writeSlice(txin.script.buffer)
14399 writeUInt32(txin.sequence)
14402 writeVarInt(this.outs.length)
14403 this.outs.forEach(function(txout) {
14404 writeUInt64(txout.value)
14405 writeVarInt(txout.script.buffer.length)
14406 writeSlice(txout.script.buffer)
14409 writeUInt32(this.locktime)
14414 Transaction.prototype.toHex = function() {
14415 return this.toBuffer().toString('hex')
14419 * Hash transaction for signing a specific input.
14421 * Bitcoin uses a different hash for each signed transaction input. This
14422 * method copies the transaction, makes the necessary changes based on the
14423 * hashType, serializes and finally hashes the result. This hash can then be
14424 * used to sign the transaction input in question.
14426 Transaction.prototype.hashForSignature = function(prevOutScript, inIndex, hashType) {
14427 assert(inIndex
>=
0, 'Invalid vin index')
14428 assert(inIndex < this.ins.length, 'Invalid vin index')
14429 assert(prevOutScript instanceof Script, 'Invalid Script object')
14431 var txTmp = this.clone()
14432 var hashScript = prevOutScript.without(opcodes.OP_CODESEPARATOR)
14434 // Blank out other inputs' signatures
14435 txTmp.ins.forEach(function(txin) {
14436 txin.script = Script.EMPTY
14438 txTmp.ins[inIndex].script = hashScript
14440 var hashTypeModifier = hashType &
0x1f
14441 if (hashTypeModifier === Transaction.SIGHASH_NONE) {
14442 assert(false, 'SIGHASH_NONE not yet supported')
14444 } else if (hashTypeModifier === Transaction.SIGHASH_SINGLE) {
14445 assert(false, 'SIGHASH_SINGLE not yet supported')
14449 if (hashType & Transaction.SIGHASH_ANYONECANPAY) {
14450 assert(false, 'SIGHASH_ANYONECANPAY not yet supported')
14453 var hashTypeBuffer = new Buffer(
4)
14454 hashTypeBuffer.writeInt32LE(hashType,
0)
14456 var buffer = Buffer.concat([txTmp.toBuffer(), hashTypeBuffer])
14457 return crypto.hash256(buffer)
14460 Transaction.prototype.getHash = function () {
14461 return crypto.hash256(this.toBuffer())
14464 Transaction.prototype.getId = function () {
14465 var buffer = this.getHash()
14467 // Big-endian is used for TxHash
14468 Array.prototype.reverse.call(buffer)
14470 return buffer.toString('hex')
14473 Transaction.prototype.clone = function () {
14474 var newTx = new Transaction()
14475 newTx.version = this.version
14476 newTx.locktime = this.locktime
14478 newTx.ins = this.ins.map(function(txin) {
14482 script: txin.script,
14483 sequence: txin.sequence
14487 newTx.outs = this.outs.map(function(txout) {
14489 script: txout.script,
14497 Transaction.fromBuffer = function(buffer) {
14499 function readSlice(n) {
14501 return buffer.slice(offset - n, offset)
14503 function readUInt32() {
14504 var i = buffer.readUInt32LE(offset)
14508 function readUInt64() {
14509 var i = bufferutils.readUInt64LE(buffer, offset)
14513 function readVarInt() {
14514 var vi = bufferutils.readVarInt(buffer, offset)
14519 var tx = new Transaction()
14520 tx.version = readUInt32()
14522 var vinLen = readVarInt()
14523 for (var i =
0; i < vinLen; ++i) {
14524 var hash = readSlice(
32)
14525 var vout = readUInt32()
14526 var scriptLen = readVarInt()
14527 var script = readSlice(scriptLen)
14528 var sequence = readUInt32()
14533 script: Script.fromBuffer(script),
14538 var voutLen = readVarInt()
14539 for (i =
0; i < voutLen; ++i) {
14540 var value = readUInt64()
14541 var scriptLen = readVarInt()
14542 var script = readSlice(scriptLen)
14546 script: Script.fromBuffer(script)
14550 tx.locktime = readUInt32()
14551 assert.equal(offset, buffer.length, 'Transaction has unexpected data')
14556 Transaction.fromHex = function(hex) {
14557 return Transaction.fromBuffer(new Buffer(hex, 'hex'))
14561 * Signs a pubKeyHash output at some index with the given key
14563 Transaction.prototype.sign = function(index, privKey, hashType) {
14564 var prevOutScript = privKey.pub.getAddress().toOutputScript()
14565 var signature = this.signInput(index, prevOutScript, privKey, hashType)
14567 // FIXME: Assumed prior TX was pay-to-pubkey-hash
14568 var scriptSig = scripts.pubKeyHashInput(signature, privKey.pub)
14569 this.setInputScript(index, scriptSig)
14572 Transaction.prototype.signInput = function(index, prevOutScript, privKey, hashType) {
14573 hashType = hashType || Transaction.SIGHASH_ALL
14575 var hash = this.hashForSignature(prevOutScript, index, hashType)
14576 var signature = privKey.sign(hash)
14578 return signature.toScriptSignature(hashType)
14581 Transaction.prototype.setInputScript = function(index, script) {
14582 this.ins[index].script = script
14585 // FIXME: could be validateInput(index, prevTxOut, pub)
14586 Transaction.prototype.validateInput = function(index, prevOutScript, pubKey, buffer) {
14587 var parsed = ECSignature.parseScriptSignature(buffer)
14588 var hash = this.hashForSignature(prevOutScript, index, parsed.hashType)
14590 return pubKey.verify(hash, parsed.signature)
14593 module.exports = Transaction
14595 }).call(this,_dereq_("buffer").Buffer)
14596 },{"./address":
69,"./bufferutils":
71,"./crypto":
73,"./eckey":
75,"./ecsignature":
77,"./opcodes":
82,"./script":
83,"./scripts":
84,"assert":
4,"buffer":
8}],
86:[function(_dereq_,module,exports){
14597 (function (Buffer){
14598 var assert = _dereq_('assert')
14599 var networks = _dereq_('./networks')
14600 var rng = _dereq_('secure-random')
14602 var Address = _dereq_('./address')
14603 var HDNode = _dereq_('./hdnode')
14604 var Transaction = _dereq_('./transaction')
14606 function Wallet(seed, network) {
14607 network = network || networks.bitcoin
14609 // Stored in a closure to make accidental serialization less likely
14610 var masterkey = null
14612 var accountZero = null
14613 var internalAccount = null
14614 var externalAccount = null
14617 this.addresses = []
14618 this.changeAddresses = []
14620 // Transaction output data
14623 // Make a new master key
14624 this.newMasterKey = function(seed) {
14625 seed = seed || new Buffer(rng(
32))
14626 masterkey = HDNode.fromSeedBuffer(seed, network)
14628 // HD first-level child derivation method should be hardened
14629 // See https://bitcointalk.org/index.php?topic=
405179.msg4415254#msg4415254
14630 accountZero = masterkey.deriveHardened(
0)
14631 externalAccount = accountZero.derive(
0)
14632 internalAccount = accountZero.derive(
1)
14635 me.changeAddresses = []
14640 this.newMasterKey(seed)
14642 this.generateAddress = function() {
14643 var key = externalAccount.derive(this.addresses.length)
14644 this.addresses.push(key.getAddress().toString())
14645 return this.addresses[this.addresses.length -
1]
14648 this.generateChangeAddress = function() {
14649 var key = internalAccount.derive(this.changeAddresses.length)
14650 this.changeAddresses.push(key.getAddress().toString())
14651 return this.changeAddresses[this.changeAddresses.length -
1]
14654 this.getBalance = function() {
14655 return this.getUnspentOutputs().reduce(function(memo, output){
14656 return memo + output.value
14660 this.getUnspentOutputs = function() {
14663 for(var key in this.outputs){
14664 var output = this.outputs[key]
14665 if(!output.to) utxo.push(outputToUnspentOutput(output))
14671 this.setUnspentOutputs = function(utxo) {
14674 utxo.forEach(function(uo){
14675 validateUnspentOutput(uo)
14676 var o = unspentOutputToOutput(uo)
14677 outputs[o.from] = o
14680 this.outputs = outputs
14683 function outputToUnspentOutput(output){
14684 var hashAndIndex = output.from.split(":")
14687 hash: hashAndIndex[
0],
14688 outputIndex: parseInt(hashAndIndex[
1]),
14689 address: output.address,
14690 value: output.value,
14691 pending: output.pending
14695 function unspentOutputToOutput(o) {
14697 var key = hash + ":" + o.outputIndex
14700 address: o.address,
14706 function validateUnspentOutput(uo) {
14709 if (isNullOrUndefined(uo.hash)) {
14710 missingField = "hash"
14713 var requiredKeys = ['outputIndex', 'address', 'value']
14714 requiredKeys.forEach(function (key) {
14715 if (isNullOrUndefined(uo[key])){
14720 if (missingField) {
14722 'Invalid unspent output: key', missingField, 'is missing.',
14723 'A valid unspent output must contain'
14725 message.push(requiredKeys.join(', '))
14726 message.push("and hash")
14727 throw new Error(message.join(' '))
14731 function isNullOrUndefined(value) {
14732 return value == undefined
14735 this.processPendingTx = function(tx){
14736 processTx(tx, true)
14739 this.processConfirmedTx = function(tx){
14740 processTx(tx, false)
14743 function processTx(tx, isPending) {
14744 var txid = tx.getId()
14746 tx.outs.forEach(function(txOut, i) {
14750 address = Address.fromOutputScript(txOut.script, network).toString()
14752 if (!(e.message.match(/has no matching Address/))) throw e
14755 if (isMyAddress(address)) {
14756 var output = txid + ':' + i
14758 me.outputs[output] = {
14760 value: txOut.value,
14767 tx.ins.forEach(function(txIn, i) {
14768 // copy and convert to big-endian hex
14769 var txinId = new Buffer(txIn.hash)
14770 Array.prototype.reverse.call(txinId)
14771 txinId = txinId.toString('hex')
14773 var output = txinId + ':' + txIn.index
14775 if (!(output in me.outputs)) return
14778 me.outputs[output].to = txid + ':' + i
14779 me.outputs[output].pending = true
14781 delete me.outputs[output]
14786 this.createTx = function(to, value, fixedFee, changeAddress) {
14787 assert(value
> network.dustThreshold, value + ' must be above dust threshold (' + network.dustThreshold + ' Satoshis)')
14789 var utxos = getCandidateOutputs(value)
14791 var subTotal = value
14794 var tx = new Transaction()
14795 tx.addOutput(to, value)
14797 for (var i =
0; i < utxos.length; ++i) {
14798 var utxo = utxos[i]
14799 addresses.push(utxo.address)
14801 var outpoint = utxo.from.split(':')
14802 tx.addInput(outpoint[
0], parseInt(outpoint[
1]))
14804 var fee = fixedFee == undefined ? estimateFeePadChangeOutput(tx) : fixedFee
14806 accum += utxo.value
14807 subTotal = value + fee
14808 if (accum
>= subTotal) {
14809 var change = accum - subTotal
14811 if (change
> network.dustThreshold) {
14812 tx.addOutput(changeAddress || getChangeAddress(), change)
14819 assert(accum
>= subTotal, 'Not enough funds (incl. fee): ' + accum + ' < ' + subTotal)
14821 this.signWith(tx, addresses)
14825 function getCandidateOutputs() {
14828 for (var key in me.outputs) {
14829 var output = me.outputs[key]
14830 if (!output.pending) unspent.push(output)
14833 var sortByValueDesc = unspent.sort(function(o1, o2){
14834 return o2.value - o1.value
14837 return sortByValueDesc
14840 function estimateFeePadChangeOutput(tx) {
14841 var tmpTx = tx.clone()
14842 tmpTx.addOutput(getChangeAddress(), network.dustSoftThreshold ||
0)
14844 return network.estimateFee(tmpTx)
14847 function getChangeAddress() {
14848 if(me.changeAddresses.length ===
0) me.generateChangeAddress();
14849 return me.changeAddresses[me.changeAddresses.length -
1]
14852 this.signWith = function(tx, addresses) {
14853 assert.equal(tx.ins.length, addresses.length, 'Number of addresses must match number of transaction inputs')
14855 addresses.forEach(function(address, i) {
14856 var key = me.getPrivateKeyForAddress(address)
14864 this.getMasterKey = function() { return masterkey }
14865 this.getAccountZero = function() { return accountZero }
14866 this.getInternalAccount = function() { return internalAccount }
14867 this.getExternalAccount = function() { return externalAccount }
14869 this.getPrivateKey = function(index) {
14870 return externalAccount.derive(index).privKey
14873 this.getInternalPrivateKey = function(index) {
14874 return internalAccount.derive(index).privKey
14877 this.getPrivateKeyForAddress = function(address) {
14879 if((index = this.addresses.indexOf(address))
> -
1) {
14880 return this.getPrivateKey(index)
14881 } else if((index = this.changeAddresses.indexOf(address))
> -
1) {
14882 return this.getInternalPrivateKey(index)
14884 throw new Error('Unknown address. Make sure the address is from the keychain and has been generated.')
14888 function isReceiveAddress(address){
14889 return me.addresses.indexOf(address)
> -
1
14892 function isChangeAddress(address){
14893 return me.changeAddresses.indexOf(address)
> -
1
14896 function isMyAddress(address) {
14897 return isReceiveAddress(address) || isChangeAddress(address)
14901 module.exports = Wallet
14903 }).call(this,_dereq_("buffer").Buffer)
14904 },{"./address":
69,"./hdnode":
78,"./networks":
81,"./transaction":
85,"assert":
4,"buffer":
8,"secure-random":
68}]},{},[
79])
14909 <!--<script src="/js/asmcrypto.js"></script>-->
14911 // INCLUDE ASMCRYPTO
14912 // https://rawgit.com/tresorit/asmcrypto.js/
598a1098504f1b2d0e615bc51dd8404afd2d338b/asmcrypto.js
14913 // Provides PBKDF2 functionality
14914 // It's faster than CryptoJS
14915 // Couldn't get SJCL working as desired
14918 (function(exports, global) {
14920 global["asmCrypto"] = exports;
14921 function string_to_bytes(str) {
14922 var i, len = str.length, arr = new Uint8Array(len);
14923 for (i =
0; i < len; i +=
1) {
14924 arr[i] = str.charCodeAt(i);
14928 function hex_to_bytes(str) {
14929 var arr = [], len = str.length, i;
14934 for (i =
0; i < len; i +=
2) {
14935 arr.push(parseInt(str.substr(i,
2),
16));
14937 return new Uint8Array(arr);
14939 function base64_to_bytes(str) {
14940 return string_to_bytes(atob(str));
14942 function bytes_to_string(arr) {
14944 for (var i =
0; i < arr.length; i++) str += String.fromCharCode(arr[i]);
14947 function bytes_to_hex(arr) {
14948 var sz = (arr.byteLength || arr.length) / arr.length, str = "";
14949 for (var i =
0; i < arr.length; i++) {
14950 var h = arr[i].toString(
16);
14951 if (h.length <
2 * sz) str += "
00000000000000".substr(
0,
2 * sz - h.length);
14956 function bytes_to_base64(arr) {
14957 return btoa(bytes_to_string(arr));
14959 function pow2_ceil(a) {
14969 function is_number(a) {
14970 return typeof a ===
"number";
14972 function is_string(a) {
14973 return typeof a ===
"string";
14975 function is_buffer(a) {
14976 return a instanceof ArrayBuffer;
14978 function is_bytes(a) {
14979 return a instanceof Uint8Array;
14981 function is_typed_array(a) {
14982 return a instanceof Int8Array || a instanceof Uint8Array || a instanceof Int16Array || a instanceof Uint16Array || a instanceof Int32Array || a instanceof Uint32Array || a instanceof Float32Array || a instanceof Float64Array;
14984 function IllegalStateError() {
14985 Error.apply(this, arguments);
14987 IllegalStateError.prototype = new Error();
14988 function IllegalArgumentError() {
14989 Error.apply(this, arguments);
14991 IllegalArgumentError.prototype = new Error();
14992 function SecurityError() {
14993 Error.apply(this, arguments);
14995 IllegalArgumentError.prototype = new Error();
14996 var _aes_tables = [
99,
124,
119,
123,
242,
107,
111,
197,
48,
1,
103,
43,
254,
215,
171,
118,
202,
130,
201,
125,
250,
89,
71,
240,
173,
212,
162,
175,
156,
164,
114,
192,
183,
253,
147,
38,
54,
63,
247,
204,
52,
165,
229,
241,
113,
216,
49,
21,
4,
199,
35,
195,
24,
150,
5,
154,
7,
18,
128,
226,
235,
39,
178,
117,
9,
131,
44,
26,
27,
110,
90,
160,
82,
59,
214,
179,
41,
227,
47,
132,
83,
209,
0,
237,
32,
252,
177,
91,
106,
203,
190,
57,
74,
76,
88,
207,
208,
239,
170,
251,
67,
77,
51,
133,
69,
249,
2,
127,
80,
60,
159,
168,
81,
163,
64,
143,
146,
157,
56,
245,
188,
182,
218,
33,
16,
255,
243,
210,
205,
12,
19,
236,
95,
151,
68,
23,
196,
167,
126,
61,
100,
93,
25,
115,
96,
129,
79,
220,
34,
42,
144,
136,
70,
238,
184,
20,
222,
94,
11,
219,
224,
50,
58,
10,
73,
6,
36,
92,
194,
211,
172,
98,
145,
149,
228,
121,
231,
200,
55,
109,
141,
213,
78,
169,
108,
86,
244,
234,
101,
122,
174,
8,
186,
120,
37,
46,
28,
166,
180,
198,
232,
221,
116,
31,
75,
189,
139,
138,
112,
62,
181,
102,
72,
3,
246,
14,
97,
53,
87,
185,
134,
193,
29,
158,
225,
248,
152,
17,
105,
217,
142,
148,
155,
30,
135,
233,
206,
85,
40,
223,
140,
161,
137,
13,
191,
230,
66,
104,
65,
153,
45,
15,
176,
84,
187,
22,
82,
9,
106,
213,
48,
54,
165,
56,
191,
64,
163,
158,
129,
243,
215,
251,
124,
227,
57,
130,
155,
47,
255,
135,
52,
142,
67,
68,
196,
222,
233,
203,
84,
123,
148,
50,
166,
194,
35,
61,
238,
76,
149,
11,
66,
250,
195,
78,
8,
46,
161,
102,
40,
217,
36,
178,
118,
91,
162,
73,
109,
139,
209,
37,
114,
248,
246,
100,
134,
104,
152,
22,
212,
164,
92,
204,
93,
101,
182,
146,
108,
112,
72,
80,
253,
237,
185,
218,
94,
21,
70,
87,
167,
141,
157,
132,
144,
216,
171,
0,
140,
188,
211,
10,
247,
228,
88,
5,
184,
179,
69,
6,
208,
44,
30,
143,
202,
63,
15,
2,
193,
175,
189,
3,
1,
19,
138,
107,
58,
145,
17,
65,
79,
103,
220,
234,
151,
242,
207,
206,
240,
180,
230,
115,
150,
172,
116,
34,
231,
173,
53,
133,
226,
249,
55,
232,
28,
117,
223,
110,
71,
241,
26,
113,
29,
41,
197,
137,
111,
183,
98,
14,
170,
24,
190,
27,
252,
86,
62,
75,
198,
210,
121,
32,
154,
219,
192,
254,
120,
205,
90,
244,
31,
221,
168,
51,
136,
7,
199,
49,
177,
18,
16,
89,
39,
128,
236,
95,
96,
81,
127,
169,
25,
181,
74,
13,
45,
229,
122,
159,
147,
201,
156,
239,
160,
224,
59,
77,
174,
42,
245,
176,
200,
235,
187,
60,
131,
83,
153,
97,
23,
43,
4,
126,
186,
119,
214,
38,
225,
105,
20,
99,
85,
33,
12,
125,
198,
248,
238,
246,
255,
214,
222,
145,
96,
2,
206,
86,
231,
181,
77,
236,
143,
31,
137,
250,
239,
178,
142,
251,
65,
179,
95,
69,
35,
83,
228,
155,
117,
225,
61,
76,
108,
126,
245,
131,
104,
81,
209,
249,
226,
171,
98,
42,
8,
149,
70,
157,
48,
55,
10,
47,
14,
36,
27,
223,
205,
78,
127,
234,
18,
29,
88,
52,
54,
220,
180,
91,
164,
118,
183,
125,
82,
221,
94,
19,
166,
185,
0,
193,
64,
227,
121,
182,
212,
141,
103,
114,
148,
152,
176,
133,
187,
197,
79,
237,
134,
154,
102,
17,
138,
233,
4,
254,
160,
120,
37,
75,
162,
93,
128,
5,
63,
33,
112,
241,
99,
119,
175,
66,
32,
229,
253,
191,
129,
24,
38,
195,
190,
53,
136,
46,
147,
85,
252,
122,
200,
186,
50,
230,
192,
25,
158,
163,
68,
84,
59,
11,
140,
199,
107,
40,
167,
188,
22,
173,
219,
100,
116,
20,
146,
12,
72,
184,
159,
189,
67,
196,
57,
49,
211,
242,
213,
139,
110,
218,
1,
177,
156,
73,
216,
172,
243,
207,
202,
244,
71,
16,
111,
240,
74,
92,
56,
87,
115,
151,
203,
161,
232,
62,
150,
97,
13,
15,
224,
124,
113,
204,
144,
6,
247,
28,
194,
106,
174,
105,
23,
153,
58,
39,
217,
235,
43,
34,
210,
169,
7,
51,
45,
60,
21,
201,
135,
170,
80,
165,
3,
89,
9,
26,
101,
215,
132,
208,
130,
41,
90,
30,
123,
168,
109,
44,
165,
132,
153,
141,
13,
189,
177,
84,
80,
3,
169,
125,
25,
98,
230,
154,
69,
157,
64,
135,
21,
235,
201,
11,
236,
103,
253,
234,
191,
247,
150,
91,
194,
28,
174,
106,
90,
65,
2,
79,
92,
244,
52,
8,
147,
115,
83,
63,
12,
82,
101,
94,
40,
161,
15,
181,
9,
54,
155,
61,
38,
105,
205,
159,
27,
158,
116,
46,
45,
178,
238,
251,
246,
77,
97,
206,
123,
62,
113,
151,
245,
104,
0,
44,
96,
31,
200,
237,
190,
70,
217,
75,
222,
212,
232,
74,
107,
42,
229,
22,
197,
215,
85,
148,
207,
16,
6,
129,
240,
68,
186,
227,
243,
254,
192,
138,
173,
188,
72,
4,
223,
193,
117,
99,
48,
26,
14,
109,
76,
20,
53,
47,
225,
162,
204,
57,
87,
242,
130,
71,
172,
231,
43,
149,
160,
152,
209,
127,
102,
126,
171,
131,
202,
41,
211,
60,
121,
226,
29,
118,
59,
86,
78,
30,
219,
10,
108,
228,
93,
110,
239,
166,
168,
164,
55,
139,
50,
67,
89,
183,
140,
100,
210,
224,
180,
250,
7,
37,
175,
142,
233,
24,
213,
136,
111,
114,
36,
241,
199,
81,
35,
124,
156,
33,
221,
220,
134,
133,
144,
66,
196,
170,
216,
5,
1,
18,
163,
95,
249,
208,
145,
88,
39,
185,
56,
19,
179,
51,
187,
112,
137,
167,
182,
34,
146,
32,
73,
255,
120,
122,
143,
248,
128,
23,
218,
49,
198,
184,
195,
176,
119,
17,
203,
252,
214,
58,
0,
9,
18,
27,
36,
45,
54,
63,
72,
65,
90,
83,
108,
101,
126,
119,
144,
153,
130,
139,
180,
189,
166,
175,
216,
209,
202,
195,
252,
245,
238,
231,
59,
50,
41,
32,
31,
22,
13,
4,
115,
122,
97,
104,
87,
94,
69,
76,
171,
162,
185,
176,
143,
134,
157,
148,
227,
234,
241,
248,
199,
206,
213,
220,
118,
127,
100,
109,
82,
91,
64,
73,
62,
55,
44,
37,
26,
19,
8,
1,
230,
239,
244,
253,
194,
203,
208,
217,
174,
167,
188,
181,
138,
131,
152,
145,
77,
68,
95,
86,
105,
96,
123,
114,
5,
12,
23,
30,
33,
40,
51,
58,
221,
212,
207,
198,
249,
240,
235,
226,
149,
156,
135,
142,
177,
184,
163,
170,
236,
229,
254,
247,
200,
193,
218,
211,
164,
173,
182,
191,
128,
137,
146,
155,
124,
117,
110,
103,
88,
81,
74,
67,
52,
61,
38,
47,
16,
25,
2,
11,
215,
222,
197,
204,
243,
250,
225,
232,
159,
150,
141,
132,
187,
178,
169,
160,
71,
78,
85,
92,
99,
106,
113,
120,
15,
6,
29,
20,
43,
34,
57,
48,
154,
147,
136,
129,
190,
183,
172,
165,
210,
219,
192,
201,
246,
255,
228,
237,
10,
3,
24,
17,
46,
39,
60,
53,
66,
75,
80,
89,
102,
111,
116,
125,
161,
168,
179,
186,
133,
140,
151,
158,
233,
224,
251,
242,
205,
196,
223,
214,
49,
56,
35,
42,
21,
28,
7,
14,
121,
112,
107,
98,
93,
84,
79,
70,
0,
11,
22,
29,
44,
39,
58,
49,
88,
83,
78,
69,
116,
127,
98,
105,
176,
187,
166,
173,
156,
151,
138,
129,
232,
227,
254,
245,
196,
207,
210,
217,
123,
112,
109,
102,
87,
92,
65,
74,
35,
40,
53,
62,
15,
4,
25,
18,
203,
192,
221,
214,
231,
236,
241,
250,
147,
152,
133,
142,
191,
180,
169,
162,
246,
253,
224,
235,
218,
209,
204,
199,
174,
165,
184,
179,
130,
137,
148,
159,
70,
77,
80,
91,
106,
97,
124,
119,
30,
21,
8,
3,
50,
57,
36,
47,
141,
134,
155,
144,
161,
170,
183,
188,
213,
222,
195,
200,
249,
242,
239,
228,
61,
54,
43,
32,
17,
26,
7,
12,
101,
110,
115,
120,
73,
66,
95,
84,
247,
252,
225,
234,
219,
208,
205,
198,
175,
164,
185,
178,
131,
136,
149,
158,
71,
76,
81,
90,
107,
96,
125,
118,
31,
20,
9,
2,
51,
56,
37,
46,
140,
135,
154,
145,
160,
171,
182,
189,
212,
223,
194,
201,
248,
243,
238,
229,
60,
55,
42,
33,
16,
27,
6,
13,
100,
111,
114,
121,
72,
67,
94,
85,
1,
10,
23,
28,
45,
38,
59,
48,
89,
82,
79,
68,
117,
126,
99,
104,
177,
186,
167,
172,
157,
150,
139,
128,
233,
226,
255,
244,
197,
206,
211,
216,
122,
113,
108,
103,
86,
93,
64,
75,
34,
41,
52,
63,
14,
5,
24,
19,
202,
193,
220,
215,
230,
237,
240,
251,
146,
153,
132,
143,
190,
181,
168,
163,
0,
13,
26,
23,
52,
57,
46,
35,
104,
101,
114,
127,
92,
81,
70,
75,
208,
221,
202,
199,
228,
233,
254,
243,
184,
181,
162,
175,
140,
129,
150,
155,
187,
182,
161,
172,
143,
130,
149,
152,
211,
222,
201,
196,
231,
234,
253,
240,
107,
102,
113,
124,
95,
82,
69,
72,
3,
14,
25,
20,
55,
58,
45,
32,
109,
96,
119,
122,
89,
84,
67,
78,
5,
8,
31,
18,
49,
60,
43,
38,
189,
176,
167,
170,
137,
132,
147,
158,
213,
216,
207,
194,
225,
236,
251,
246,
214,
219,
204,
193,
226,
239,
248,
245,
190,
179,
164,
169,
138,
135,
144,
157,
6,
11,
28,
17,
50,
63,
40,
37,
110,
99,
116,
121,
90,
87,
64,
77,
218,
215,
192,
205,
238,
227,
244,
249,
178,
191,
168,
165,
134,
139,
156,
145,
10,
7,
16,
29,
62,
51,
36,
41,
98,
111,
120,
117,
86,
91,
76,
65,
97,
108,
123,
118,
85,
88,
79,
66,
9,
4,
19,
30,
61,
48,
39,
42,
177,
188,
171,
166,
133,
136,
159,
146,
217,
212,
195,
206,
237,
224,
247,
250,
183,
186,
173,
160,
131,
142,
153,
148,
223,
210,
197,
200,
235,
230,
241,
252,
103,
106,
125,
112,
83,
94,
73,
68,
15,
2,
21,
24,
59,
54,
33,
44,
12,
1,
22,
27,
56,
53,
34,
47,
100,
105,
126,
115,
80,
93,
74,
71,
220,
209,
198,
203,
232,
229,
242,
255,
180,
185,
174,
163,
128,
141,
154,
151,
0,
14,
28,
18,
56,
54,
36,
42,
112,
126,
108,
98,
72,
70,
84,
90,
224,
238,
252,
242,
216,
214,
196,
202,
144,
158,
140,
130,
168,
166,
180,
186,
219,
213,
199,
201,
227,
237,
255,
241,
171,
165,
183,
185,
147,
157,
143,
129,
59,
53,
39,
41,
3,
13,
31,
17,
75,
69,
87,
89,
115,
125,
111,
97,
173,
163,
177,
191,
149,
155,
137,
135,
221,
211,
193,
207,
229,
235,
249,
247,
77,
67,
81,
95,
117,
123,
105,
103,
61,
51,
33,
47,
5,
11,
25,
23,
118,
120,
106,
100,
78,
64,
82,
92,
6,
8,
26,
20,
62,
48,
34,
44,
150,
152,
138,
132,
174,
160,
178,
188,
230,
232,
250,
244,
222,
208,
194,
204,
65,
79,
93,
83,
121,
119,
101,
107,
49,
63,
45,
35,
9,
7,
21,
27,
161,
175,
189,
179,
153,
151,
133,
139,
209,
223,
205,
195,
233,
231,
245,
251,
154,
148,
134,
136,
162,
172,
190,
176,
234,
228,
246,
248,
210,
220,
206,
192,
122,
116,
102,
104,
66,
76,
94,
80,
10,
4,
22,
24,
50,
60,
46,
32,
236,
226,
240,
254,
212,
218,
200,
198,
156,
146,
128,
142,
164,
170,
184,
182,
12,
2,
16,
30,
52,
58,
40,
38,
124,
114,
96,
110,
68,
74,
88,
86,
55,
57,
43,
37,
15,
1,
19,
29,
71,
73,
91,
85,
127,
113,
99,
109,
215,
217,
203,
197,
239,
225,
243,
253,
167,
169,
187,
181,
159,
145,
131,
141 ];
14997 var _aes_heap_start =
2048;
14998 function _aes_asm(stdlib, foreign, buffer) {
14999 // Closure Compiler warning - commented out
15001 var S0 =
0, S1 =
0, S2 =
0, S3 =
0, S4 =
0, S5 =
0, S6 =
0, S7 =
0, S8 =
0, S9 =
0, SA =
0, SB =
0, SC =
0, SD =
0, SE =
0, SF =
0;
15003 var R00 =
0, R01 =
0, R02 =
0, R03 =
0, R04 =
0, R05 =
0, R06 =
0, R07 =
0, R08 =
0, R09 =
0, R0A =
0, R0B =
0, R0C =
0, R0D =
0, R0E =
0, R0F =
0, R10 =
0, R11 =
0, R12 =
0, R13 =
0, R14 =
0, R15 =
0, R16 =
0, R17 =
0, R18 =
0, R19 =
0, R1A =
0, R1B =
0, R1C =
0, R1D =
0, R1E =
0, R1F =
0, R20 =
0, R21 =
0, R22 =
0, R23 =
0, R24 =
0, R25 =
0, R26 =
0, R27 =
0, R28 =
0, R29 =
0, R2A =
0, R2B =
0, R2C =
0, R2D =
0, R2E =
0, R2F =
0, R30 =
0, R31 =
0, R32 =
0, R33 =
0, R34 =
0, R35 =
0, R36 =
0, R37 =
0, R38 =
0, R39 =
0, R3A =
0, R3B =
0, R3C =
0, R3D =
0, R3E =
0, R3F =
0, R40 =
0, R41 =
0, R42 =
0, R43 =
0, R44 =
0, R45 =
0, R46 =
0, R47 =
0, R48 =
0, R49 =
0, R4A =
0, R4B =
0, R4C =
0, R4D =
0, R4E =
0, R4F =
0, R50 =
0, R51 =
0, R52 =
0, R53 =
0, R54 =
0, R55 =
0, R56 =
0, R57 =
0, R58 =
0, R59 =
0, R5A =
0, R5B =
0, R5C =
0, R5D =
0, R5E =
0, R5F =
0, R60 =
0, R61 =
0, R62 =
0, R63 =
0, R64 =
0, R65 =
0, R66 =
0, R67 =
0, R68 =
0, R69 =
0, R6A =
0, R6B =
0, R6C =
0, R6D =
0, R6E =
0, R6F =
0, R70 =
0, R71 =
0, R72 =
0, R73 =
0, R74 =
0, R75 =
0, R76 =
0, R77 =
0, R78 =
0, R79 =
0, R7A =
0, R7B =
0, R7C =
0, R7D =
0, R7E =
0, R7F =
0, R80 =
0, R81 =
0, R82 =
0, R83 =
0, R84 =
0, R85 =
0, R86 =
0, R87 =
0, R88 =
0, R89 =
0, R8A =
0, R8B =
0, R8C =
0, R8D =
0, R8E =
0, R8F =
0, R90 =
0, R91 =
0, R92 =
0, R93 =
0, R94 =
0, R95 =
0, R96 =
0, R97 =
0, R98 =
0, R99 =
0, R9A =
0, R9B =
0, R9C =
0, R9D =
0, R9E =
0, R9F =
0, RA0 =
0, RA1 =
0, RA2 =
0, RA3 =
0, RA4 =
0, RA5 =
0, RA6 =
0, RA7 =
0, RA8 =
0, RA9 =
0, RAA =
0, RAB =
0, RAC =
0, RAD =
0, RAE =
0, RAF =
0, RB0 =
0, RB1 =
0, RB2 =
0, RB3 =
0, RB4 =
0, RB5 =
0, RB6 =
0, RB7 =
0, RB8 =
0, RB9 =
0, RBA =
0, RBB =
0, RBC =
0, RBD =
0, RBE =
0, RBF =
0, RC0 =
0, RC1 =
0, RC2 =
0, RC3 =
0, RC4 =
0, RC5 =
0, RC6 =
0, RC7 =
0, RC8 =
0, RC9 =
0, RCA =
0, RCB =
0, RCC =
0, RCD =
0, RCE =
0, RCF =
0, RD0 =
0, RD1 =
0, RD2 =
0, RD3 =
0, RD4 =
0, RD5 =
0, RD6 =
0, RD7 =
0, RD8 =
0, RD9 =
0, RDA =
0, RDB =
0, RDC =
0, RDD =
0, RDE =
0, RDF =
0, RE0 =
0, RE1 =
0, RE2 =
0, RE3 =
0, RE4 =
0, RE5 =
0, RE6 =
0, RE7 =
0, RE8 =
0, RE9 =
0, REA =
0, REB =
0, REC =
0, RED =
0, REE =
0, REF =
0;
15004 var HEAP = new stdlib.Uint8Array(buffer);
15005 function _expand_key_128() {
15007 R10 = R00 ^ HEAP[sbox | R0D] ^
1;
15008 R11 = R01 ^ HEAP[sbox | R0E];
15009 R12 = R02 ^ HEAP[sbox | R0F];
15010 R13 = R03 ^ HEAP[sbox | R0C];
15023 R20 = R10 ^ HEAP[sbox | R1D] ^
2;
15024 R21 = R11 ^ HEAP[sbox | R1E];
15025 R22 = R12 ^ HEAP[sbox | R1F];
15026 R23 = R13 ^ HEAP[sbox | R1C];
15039 R30 = R20 ^ HEAP[sbox | R2D] ^
4;
15040 R31 = R21 ^ HEAP[sbox | R2E];
15041 R32 = R22 ^ HEAP[sbox | R2F];
15042 R33 = R23 ^ HEAP[sbox | R2C];
15055 R40 = R30 ^ HEAP[sbox | R3D] ^
8;
15056 R41 = R31 ^ HEAP[sbox | R3E];
15057 R42 = R32 ^ HEAP[sbox | R3F];
15058 R43 = R33 ^ HEAP[sbox | R3C];
15071 R50 = R40 ^ HEAP[sbox | R4D] ^
16;
15072 R51 = R41 ^ HEAP[sbox | R4E];
15073 R52 = R42 ^ HEAP[sbox | R4F];
15074 R53 = R43 ^ HEAP[sbox | R4C];
15087 R60 = R50 ^ HEAP[sbox | R5D] ^
32;
15088 R61 = R51 ^ HEAP[sbox | R5E];
15089 R62 = R52 ^ HEAP[sbox | R5F];
15090 R63 = R53 ^ HEAP[sbox | R5C];
15103 R70 = R60 ^ HEAP[sbox | R6D] ^
64;
15104 R71 = R61 ^ HEAP[sbox | R6E];
15105 R72 = R62 ^ HEAP[sbox | R6F];
15106 R73 = R63 ^ HEAP[sbox | R6C];
15119 R80 = R70 ^ HEAP[sbox | R7D] ^
128;
15120 R81 = R71 ^ HEAP[sbox | R7E];
15121 R82 = R72 ^ HEAP[sbox | R7F];
15122 R83 = R73 ^ HEAP[sbox | R7C];
15135 R90 = R80 ^ HEAP[sbox | R8D] ^
27;
15136 R91 = R81 ^ HEAP[sbox | R8E];
15137 R92 = R82 ^ HEAP[sbox | R8F];
15138 R93 = R83 ^ HEAP[sbox | R8C];
15151 RA0 = R90 ^ HEAP[sbox | R9D] ^
54;
15152 RA1 = R91 ^ HEAP[sbox | R9E];
15153 RA2 = R92 ^ HEAP[sbox | R9F];
15154 RA3 = R93 ^ HEAP[sbox | R9C];
15168 function _expand_key_256() {
15170 R20 = R00 ^ HEAP[sbox | R1D] ^
1;
15171 R21 = R01 ^ HEAP[sbox | R1E];
15172 R22 = R02 ^ HEAP[sbox | R1F];
15173 R23 = R03 ^ HEAP[sbox | R1C];
15186 R30 = R10 ^ HEAP[sbox | R2C];
15187 R31 = R11 ^ HEAP[sbox | R2D];
15188 R32 = R12 ^ HEAP[sbox | R2E];
15189 R33 = R13 ^ HEAP[sbox | R2F];
15202 R40 = R20 ^ HEAP[sbox | R3D] ^
2;
15203 R41 = R21 ^ HEAP[sbox | R3E];
15204 R42 = R22 ^ HEAP[sbox | R3F];
15205 R43 = R23 ^ HEAP[sbox | R3C];
15218 R50 = R30 ^ HEAP[sbox | R4C];
15219 R51 = R31 ^ HEAP[sbox | R4D];
15220 R52 = R32 ^ HEAP[sbox | R4E];
15221 R53 = R33 ^ HEAP[sbox | R4F];
15234 R60 = R40 ^ HEAP[sbox | R5D] ^
4;
15235 R61 = R41 ^ HEAP[sbox | R5E];
15236 R62 = R42 ^ HEAP[sbox | R5F];
15237 R63 = R43 ^ HEAP[sbox | R5C];
15250 R70 = R50 ^ HEAP[sbox | R6C];
15251 R71 = R51 ^ HEAP[sbox | R6D];
15252 R72 = R52 ^ HEAP[sbox | R6E];
15253 R73 = R53 ^ HEAP[sbox | R6F];
15266 R80 = R60 ^ HEAP[sbox | R7D] ^
8;
15267 R81 = R61 ^ HEAP[sbox | R7E];
15268 R82 = R62 ^ HEAP[sbox | R7F];
15269 R83 = R63 ^ HEAP[sbox | R7C];
15282 R90 = R70 ^ HEAP[sbox | R8C];
15283 R91 = R71 ^ HEAP[sbox | R8D];
15284 R92 = R72 ^ HEAP[sbox | R8E];
15285 R93 = R73 ^ HEAP[sbox | R8F];
15298 RA0 = R80 ^ HEAP[sbox | R9D] ^
16;
15299 RA1 = R81 ^ HEAP[sbox | R9E];
15300 RA2 = R82 ^ HEAP[sbox | R9F];
15301 RA3 = R83 ^ HEAP[sbox | R9C];
15314 RB0 = R90 ^ HEAP[sbox | RAC];
15315 RB1 = R91 ^ HEAP[sbox | RAD];
15316 RB2 = R92 ^ HEAP[sbox | RAE];
15317 RB3 = R93 ^ HEAP[sbox | RAF];
15330 RC0 = RA0 ^ HEAP[sbox | RBD] ^
32;
15331 RC1 = RA1 ^ HEAP[sbox | RBE];
15332 RC2 = RA2 ^ HEAP[sbox | RBF];
15333 RC3 = RA3 ^ HEAP[sbox | RBC];
15346 RD0 = RB0 ^ HEAP[sbox | RCC];
15347 RD1 = RB1 ^ HEAP[sbox | RCD];
15348 RD2 = RB2 ^ HEAP[sbox | RCE];
15349 RD3 = RB3 ^ HEAP[sbox | RCF];
15362 RE0 = RC0 ^ HEAP[sbox | RDD] ^
64;
15363 RE1 = RC1 ^ HEAP[sbox | RDE];
15364 RE2 = RC2 ^ HEAP[sbox | RDF];
15365 RE3 = RC3 ^ HEAP[sbox | RDC];
15379 function _encrypt(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF) {
15396 var t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0, t8 =
0, t9 =
0, tA =
0, tB =
0, tC =
0, tD =
0, tE =
0, tF =
0, sbox =
0, x2_sbox =
512, x3_sbox =
768;
15413 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R10;
15414 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R11;
15415 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R12;
15416 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R13;
15417 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R14;
15418 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R15;
15419 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R16;
15420 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R17;
15421 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R18;
15422 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R19;
15423 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R1A;
15424 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R1B;
15425 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R1C;
15426 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R1D;
15427 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R1E;
15428 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R1F;
15429 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R20;
15430 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R21;
15431 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R22;
15432 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R23;
15433 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R24;
15434 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R25;
15435 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R26;
15436 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R27;
15437 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R28;
15438 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R29;
15439 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R2A;
15440 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R2B;
15441 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R2C;
15442 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R2D;
15443 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R2E;
15444 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R2F;
15445 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R30;
15446 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R31;
15447 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R32;
15448 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R33;
15449 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R34;
15450 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R35;
15451 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R36;
15452 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R37;
15453 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R38;
15454 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R39;
15455 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R3A;
15456 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R3B;
15457 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R3C;
15458 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R3D;
15459 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R3E;
15460 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R3F;
15461 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R40;
15462 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R41;
15463 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R42;
15464 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R43;
15465 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R44;
15466 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R45;
15467 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R46;
15468 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R47;
15469 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R48;
15470 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R49;
15471 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R4A;
15472 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R4B;
15473 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R4C;
15474 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R4D;
15475 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R4E;
15476 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R4F;
15477 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R50;
15478 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R51;
15479 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R52;
15480 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R53;
15481 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R54;
15482 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R55;
15483 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R56;
15484 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R57;
15485 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R58;
15486 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R59;
15487 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R5A;
15488 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R5B;
15489 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R5C;
15490 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R5D;
15491 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R5E;
15492 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R5F;
15493 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R60;
15494 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R61;
15495 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R62;
15496 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R63;
15497 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R64;
15498 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R65;
15499 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R66;
15500 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R67;
15501 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R68;
15502 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R69;
15503 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R6A;
15504 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R6B;
15505 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R6C;
15506 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R6D;
15507 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R6E;
15508 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R6F;
15509 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R70;
15510 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R71;
15511 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R72;
15512 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R73;
15513 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R74;
15514 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R75;
15515 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R76;
15516 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R77;
15517 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R78;
15518 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R79;
15519 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R7A;
15520 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R7B;
15521 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R7C;
15522 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R7D;
15523 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R7E;
15524 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R7F;
15525 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ R80;
15526 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ R81;
15527 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ R82;
15528 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ R83;
15529 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ R84;
15530 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ R85;
15531 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ R86;
15532 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ R87;
15533 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ R88;
15534 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ R89;
15535 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ R8A;
15536 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ R8B;
15537 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ R8C;
15538 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ R8D;
15539 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ R8E;
15540 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ R8F;
15541 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ R90;
15542 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ R91;
15543 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ R92;
15544 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ R93;
15545 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ R94;
15546 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ R95;
15547 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ R96;
15548 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ R97;
15549 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ R98;
15550 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ R99;
15551 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ R9A;
15552 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ R9B;
15553 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ R9C;
15554 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ R9D;
15555 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ R9E;
15556 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ R9F;
15557 if ((keySize |
0) ==
16) {
15558 S0 = HEAP[sbox | t0] ^ RA0;
15559 S1 = HEAP[sbox | t5] ^ RA1;
15560 S2 = HEAP[sbox | tA] ^ RA2;
15561 S3 = HEAP[sbox | tF] ^ RA3;
15562 S4 = HEAP[sbox | t4] ^ RA4;
15563 S5 = HEAP[sbox | t9] ^ RA5;
15564 S6 = HEAP[sbox | tE] ^ RA6;
15565 S7 = HEAP[sbox | t3] ^ RA7;
15566 S8 = HEAP[sbox | t8] ^ RA8;
15567 S9 = HEAP[sbox | tD] ^ RA9;
15568 SA = HEAP[sbox | t2] ^ RAA;
15569 SB = HEAP[sbox | t7] ^ RAB;
15570 SC = HEAP[sbox | tC] ^ RAC;
15571 SD = HEAP[sbox | t1] ^ RAD;
15572 SE = HEAP[sbox | t6] ^ RAE;
15573 SF = HEAP[sbox | tB] ^ RAF;
15576 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ RA0;
15577 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ RA1;
15578 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ RA2;
15579 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ RA3;
15580 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ RA4;
15581 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ RA5;
15582 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ RA6;
15583 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ RA7;
15584 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ RA8;
15585 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ RA9;
15586 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ RAA;
15587 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ RAB;
15588 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ RAC;
15589 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ RAD;
15590 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ RAE;
15591 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ RAF;
15592 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ RB0;
15593 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ RB1;
15594 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ RB2;
15595 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ RB3;
15596 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ RB4;
15597 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ RB5;
15598 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ RB6;
15599 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ RB7;
15600 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ RB8;
15601 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ RB9;
15602 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ RBA;
15603 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ RBB;
15604 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ RBC;
15605 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ RBD;
15606 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ RBE;
15607 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ RBF;
15608 s0 = HEAP[x2_sbox | t0] ^ HEAP[x3_sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[sbox | tF] ^ RC0;
15609 s1 = HEAP[sbox | t0] ^ HEAP[x2_sbox | t5] ^ HEAP[x3_sbox | tA] ^ HEAP[sbox | tF] ^ RC1;
15610 s2 = HEAP[sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[x2_sbox | tA] ^ HEAP[x3_sbox | tF] ^ RC2;
15611 s3 = HEAP[x3_sbox | t0] ^ HEAP[sbox | t5] ^ HEAP[sbox | tA] ^ HEAP[x2_sbox | tF] ^ RC3;
15612 s4 = HEAP[x2_sbox | t4] ^ HEAP[x3_sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[sbox | t3] ^ RC4;
15613 s5 = HEAP[sbox | t4] ^ HEAP[x2_sbox | t9] ^ HEAP[x3_sbox | tE] ^ HEAP[sbox | t3] ^ RC5;
15614 s6 = HEAP[sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[x2_sbox | tE] ^ HEAP[x3_sbox | t3] ^ RC6;
15615 s7 = HEAP[x3_sbox | t4] ^ HEAP[sbox | t9] ^ HEAP[sbox | tE] ^ HEAP[x2_sbox | t3] ^ RC7;
15616 s8 = HEAP[x2_sbox | t8] ^ HEAP[x3_sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[sbox | t7] ^ RC8;
15617 s9 = HEAP[sbox | t8] ^ HEAP[x2_sbox | tD] ^ HEAP[x3_sbox | t2] ^ HEAP[sbox | t7] ^ RC9;
15618 sA = HEAP[sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[x2_sbox | t2] ^ HEAP[x3_sbox | t7] ^ RCA;
15619 sB = HEAP[x3_sbox | t8] ^ HEAP[sbox | tD] ^ HEAP[sbox | t2] ^ HEAP[x2_sbox | t7] ^ RCB;
15620 sC = HEAP[x2_sbox | tC] ^ HEAP[x3_sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[sbox | tB] ^ RCC;
15621 sD = HEAP[sbox | tC] ^ HEAP[x2_sbox | t1] ^ HEAP[x3_sbox | t6] ^ HEAP[sbox | tB] ^ RCD;
15622 sE = HEAP[sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[x2_sbox | t6] ^ HEAP[x3_sbox | tB] ^ RCE;
15623 sF = HEAP[x3_sbox | tC] ^ HEAP[sbox | t1] ^ HEAP[sbox | t6] ^ HEAP[x2_sbox | tB] ^ RCF;
15624 t0 = HEAP[x2_sbox | s0] ^ HEAP[x3_sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[sbox | sF] ^ RD0;
15625 t1 = HEAP[sbox | s0] ^ HEAP[x2_sbox | s5] ^ HEAP[x3_sbox | sA] ^ HEAP[sbox | sF] ^ RD1;
15626 t2 = HEAP[sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[x2_sbox | sA] ^ HEAP[x3_sbox | sF] ^ RD2;
15627 t3 = HEAP[x3_sbox | s0] ^ HEAP[sbox | s5] ^ HEAP[sbox | sA] ^ HEAP[x2_sbox | sF] ^ RD3;
15628 t4 = HEAP[x2_sbox | s4] ^ HEAP[x3_sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[sbox | s3] ^ RD4;
15629 t5 = HEAP[sbox | s4] ^ HEAP[x2_sbox | s9] ^ HEAP[x3_sbox | sE] ^ HEAP[sbox | s3] ^ RD5;
15630 t6 = HEAP[sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[x2_sbox | sE] ^ HEAP[x3_sbox | s3] ^ RD6;
15631 t7 = HEAP[x3_sbox | s4] ^ HEAP[sbox | s9] ^ HEAP[sbox | sE] ^ HEAP[x2_sbox | s3] ^ RD7;
15632 t8 = HEAP[x2_sbox | s8] ^ HEAP[x3_sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[sbox | s7] ^ RD8;
15633 t9 = HEAP[sbox | s8] ^ HEAP[x2_sbox | sD] ^ HEAP[x3_sbox | s2] ^ HEAP[sbox | s7] ^ RD9;
15634 tA = HEAP[sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[x2_sbox | s2] ^ HEAP[x3_sbox | s7] ^ RDA;
15635 tB = HEAP[x3_sbox | s8] ^ HEAP[sbox | sD] ^ HEAP[sbox | s2] ^ HEAP[x2_sbox | s7] ^ RDB;
15636 tC = HEAP[x2_sbox | sC] ^ HEAP[x3_sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[sbox | sB] ^ RDC;
15637 tD = HEAP[sbox | sC] ^ HEAP[x2_sbox | s1] ^ HEAP[x3_sbox | s6] ^ HEAP[sbox | sB] ^ RDD;
15638 tE = HEAP[sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[x2_sbox | s6] ^ HEAP[x3_sbox | sB] ^ RDE;
15639 tF = HEAP[x3_sbox | sC] ^ HEAP[sbox | s1] ^ HEAP[sbox | s6] ^ HEAP[x2_sbox | sB] ^ RDF;
15640 S0 = HEAP[sbox | t0] ^ RE0;
15641 S1 = HEAP[sbox | t5] ^ RE1;
15642 S2 = HEAP[sbox | tA] ^ RE2;
15643 S3 = HEAP[sbox | tF] ^ RE3;
15644 S4 = HEAP[sbox | t4] ^ RE4;
15645 S5 = HEAP[sbox | t9] ^ RE5;
15646 S6 = HEAP[sbox | tE] ^ RE6;
15647 S7 = HEAP[sbox | t3] ^ RE7;
15648 S8 = HEAP[sbox | t8] ^ RE8;
15649 S9 = HEAP[sbox | tD] ^ RE9;
15650 SA = HEAP[sbox | t2] ^ REA;
15651 SB = HEAP[sbox | t7] ^ REB;
15652 SC = HEAP[sbox | tC] ^ REC;
15653 SD = HEAP[sbox | t1] ^ RED;
15654 SE = HEAP[sbox | t6] ^ REE;
15655 SF = HEAP[sbox | tB] ^ REF;
15657 function _decrypt(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF) {
15674 var t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0, t8 =
0, t9 =
0, tA =
0, tB =
0, tC =
0, tD =
0, tE =
0, tF =
0, inv_sbox =
256, x9 =
1024, xB =
1280, xD =
1536, xE =
1792;
15675 if ((keySize |
0) ==
32) {
15676 t0 = HEAP[inv_sbox | s0 ^ RE0] ^ RD0;
15677 t1 = HEAP[inv_sbox | sD ^ RED] ^ RD1;
15678 t2 = HEAP[inv_sbox | sA ^ REA] ^ RD2;
15679 t3 = HEAP[inv_sbox | s7 ^ RE7] ^ RD3;
15680 t4 = HEAP[inv_sbox | s4 ^ RE4] ^ RD4;
15681 t5 = HEAP[inv_sbox | s1 ^ RE1] ^ RD5;
15682 t6 = HEAP[inv_sbox | sE ^ REE] ^ RD6;
15683 t7 = HEAP[inv_sbox | sB ^ REB] ^ RD7;
15684 t8 = HEAP[inv_sbox | s8 ^ RE8] ^ RD8;
15685 t9 = HEAP[inv_sbox | s5 ^ RE5] ^ RD9;
15686 tA = HEAP[inv_sbox | s2 ^ RE2] ^ RDA;
15687 tB = HEAP[inv_sbox | sF ^ REF] ^ RDB;
15688 tC = HEAP[inv_sbox | sC ^ REC] ^ RDC;
15689 tD = HEAP[inv_sbox | s9 ^ RE9] ^ RDD;
15690 tE = HEAP[inv_sbox | s6 ^ RE6] ^ RDE;
15691 tF = HEAP[inv_sbox | s3 ^ RE3] ^ RDF;
15692 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15693 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15694 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15695 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15696 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15697 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15698 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15699 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15700 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15701 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15702 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15703 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15704 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15705 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15706 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15707 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15708 t0 = HEAP[inv_sbox | s0] ^ RC0;
15709 t1 = HEAP[inv_sbox | s1] ^ RC1;
15710 t2 = HEAP[inv_sbox | s2] ^ RC2;
15711 t3 = HEAP[inv_sbox | s3] ^ RC3;
15712 t4 = HEAP[inv_sbox | s4] ^ RC4;
15713 t5 = HEAP[inv_sbox | s5] ^ RC5;
15714 t6 = HEAP[inv_sbox | s6] ^ RC6;
15715 t7 = HEAP[inv_sbox | s7] ^ RC7;
15716 t8 = HEAP[inv_sbox | s8] ^ RC8;
15717 t9 = HEAP[inv_sbox | s9] ^ RC9;
15718 tA = HEAP[inv_sbox | sA] ^ RCA;
15719 tB = HEAP[inv_sbox | sB] ^ RCB;
15720 tC = HEAP[inv_sbox | sC] ^ RCC;
15721 tD = HEAP[inv_sbox | sD] ^ RCD;
15722 tE = HEAP[inv_sbox | sE] ^ RCE;
15723 tF = HEAP[inv_sbox | sF] ^ RCF;
15724 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15725 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15726 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15727 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15728 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15729 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15730 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15731 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15732 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15733 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15734 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15735 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15736 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15737 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15738 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15739 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15740 t0 = HEAP[inv_sbox | s0] ^ RB0;
15741 t1 = HEAP[inv_sbox | s1] ^ RB1;
15742 t2 = HEAP[inv_sbox | s2] ^ RB2;
15743 t3 = HEAP[inv_sbox | s3] ^ RB3;
15744 t4 = HEAP[inv_sbox | s4] ^ RB4;
15745 t5 = HEAP[inv_sbox | s5] ^ RB5;
15746 t6 = HEAP[inv_sbox | s6] ^ RB6;
15747 t7 = HEAP[inv_sbox | s7] ^ RB7;
15748 t8 = HEAP[inv_sbox | s8] ^ RB8;
15749 t9 = HEAP[inv_sbox | s9] ^ RB9;
15750 tA = HEAP[inv_sbox | sA] ^ RBA;
15751 tB = HEAP[inv_sbox | sB] ^ RBB;
15752 tC = HEAP[inv_sbox | sC] ^ RBC;
15753 tD = HEAP[inv_sbox | sD] ^ RBD;
15754 tE = HEAP[inv_sbox | sE] ^ RBE;
15755 tF = HEAP[inv_sbox | sF] ^ RBF;
15756 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15757 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15758 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15759 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15760 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15761 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15762 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15763 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15764 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15765 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15766 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15767 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15768 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15769 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15770 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15771 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15772 t0 = HEAP[inv_sbox | s0] ^ RA0;
15773 t1 = HEAP[inv_sbox | s1] ^ RA1;
15774 t2 = HEAP[inv_sbox | s2] ^ RA2;
15775 t3 = HEAP[inv_sbox | s3] ^ RA3;
15776 t4 = HEAP[inv_sbox | s4] ^ RA4;
15777 t5 = HEAP[inv_sbox | s5] ^ RA5;
15778 t6 = HEAP[inv_sbox | s6] ^ RA6;
15779 t7 = HEAP[inv_sbox | s7] ^ RA7;
15780 t8 = HEAP[inv_sbox | s8] ^ RA8;
15781 t9 = HEAP[inv_sbox | s9] ^ RA9;
15782 tA = HEAP[inv_sbox | sA] ^ RAA;
15783 tB = HEAP[inv_sbox | sB] ^ RAB;
15784 tC = HEAP[inv_sbox | sC] ^ RAC;
15785 tD = HEAP[inv_sbox | sD] ^ RAD;
15786 tE = HEAP[inv_sbox | sE] ^ RAE;
15787 tF = HEAP[inv_sbox | sF] ^ RAF;
15788 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15789 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15790 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15791 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15792 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15793 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15794 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15795 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15796 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15797 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15798 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15799 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15800 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15801 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15802 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15803 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15804 t0 = HEAP[inv_sbox | s0] ^ R90;
15805 t1 = HEAP[inv_sbox | s1] ^ R91;
15806 t2 = HEAP[inv_sbox | s2] ^ R92;
15807 t3 = HEAP[inv_sbox | s3] ^ R93;
15808 t4 = HEAP[inv_sbox | s4] ^ R94;
15809 t5 = HEAP[inv_sbox | s5] ^ R95;
15810 t6 = HEAP[inv_sbox | s6] ^ R96;
15811 t7 = HEAP[inv_sbox | s7] ^ R97;
15812 t8 = HEAP[inv_sbox | s8] ^ R98;
15813 t9 = HEAP[inv_sbox | s9] ^ R99;
15814 tA = HEAP[inv_sbox | sA] ^ R9A;
15815 tB = HEAP[inv_sbox | sB] ^ R9B;
15816 tC = HEAP[inv_sbox | sC] ^ R9C;
15817 tD = HEAP[inv_sbox | sD] ^ R9D;
15818 tE = HEAP[inv_sbox | sE] ^ R9E;
15819 tF = HEAP[inv_sbox | sF] ^ R9F;
15821 t0 = HEAP[inv_sbox | s0 ^ RA0] ^ R90;
15822 t1 = HEAP[inv_sbox | sD ^ RAD] ^ R91;
15823 t2 = HEAP[inv_sbox | sA ^ RAA] ^ R92;
15824 t3 = HEAP[inv_sbox | s7 ^ RA7] ^ R93;
15825 t4 = HEAP[inv_sbox | s4 ^ RA4] ^ R94;
15826 t5 = HEAP[inv_sbox | s1 ^ RA1] ^ R95;
15827 t6 = HEAP[inv_sbox | sE ^ RAE] ^ R96;
15828 t7 = HEAP[inv_sbox | sB ^ RAB] ^ R97;
15829 t8 = HEAP[inv_sbox | s8 ^ RA8] ^ R98;
15830 t9 = HEAP[inv_sbox | s5 ^ RA5] ^ R99;
15831 tA = HEAP[inv_sbox | s2 ^ RA2] ^ R9A;
15832 tB = HEAP[inv_sbox | sF ^ RAF] ^ R9B;
15833 tC = HEAP[inv_sbox | sC ^ RAC] ^ R9C;
15834 tD = HEAP[inv_sbox | s9 ^ RA9] ^ R9D;
15835 tE = HEAP[inv_sbox | s6 ^ RA6] ^ R9E;
15836 tF = HEAP[inv_sbox | s3 ^ RA3] ^ R9F;
15838 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15839 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15840 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15841 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15842 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15843 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15844 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15845 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15846 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15847 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15848 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15849 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15850 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15851 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15852 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15853 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15854 t0 = HEAP[inv_sbox | s0] ^ R80;
15855 t1 = HEAP[inv_sbox | s1] ^ R81;
15856 t2 = HEAP[inv_sbox | s2] ^ R82;
15857 t3 = HEAP[inv_sbox | s3] ^ R83;
15858 t4 = HEAP[inv_sbox | s4] ^ R84;
15859 t5 = HEAP[inv_sbox | s5] ^ R85;
15860 t6 = HEAP[inv_sbox | s6] ^ R86;
15861 t7 = HEAP[inv_sbox | s7] ^ R87;
15862 t8 = HEAP[inv_sbox | s8] ^ R88;
15863 t9 = HEAP[inv_sbox | s9] ^ R89;
15864 tA = HEAP[inv_sbox | sA] ^ R8A;
15865 tB = HEAP[inv_sbox | sB] ^ R8B;
15866 tC = HEAP[inv_sbox | sC] ^ R8C;
15867 tD = HEAP[inv_sbox | sD] ^ R8D;
15868 tE = HEAP[inv_sbox | sE] ^ R8E;
15869 tF = HEAP[inv_sbox | sF] ^ R8F;
15870 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15871 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15872 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15873 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15874 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15875 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15876 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15877 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15878 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15879 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15880 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15881 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15882 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15883 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15884 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15885 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15886 t0 = HEAP[inv_sbox | s0] ^ R70;
15887 t1 = HEAP[inv_sbox | s1] ^ R71;
15888 t2 = HEAP[inv_sbox | s2] ^ R72;
15889 t3 = HEAP[inv_sbox | s3] ^ R73;
15890 t4 = HEAP[inv_sbox | s4] ^ R74;
15891 t5 = HEAP[inv_sbox | s5] ^ R75;
15892 t6 = HEAP[inv_sbox | s6] ^ R76;
15893 t7 = HEAP[inv_sbox | s7] ^ R77;
15894 t8 = HEAP[inv_sbox | s8] ^ R78;
15895 t9 = HEAP[inv_sbox | s9] ^ R79;
15896 tA = HEAP[inv_sbox | sA] ^ R7A;
15897 tB = HEAP[inv_sbox | sB] ^ R7B;
15898 tC = HEAP[inv_sbox | sC] ^ R7C;
15899 tD = HEAP[inv_sbox | sD] ^ R7D;
15900 tE = HEAP[inv_sbox | sE] ^ R7E;
15901 tF = HEAP[inv_sbox | sF] ^ R7F;
15902 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15903 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15904 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15905 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15906 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15907 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15908 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15909 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15910 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15911 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15912 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15913 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15914 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15915 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15916 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15917 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15918 t0 = HEAP[inv_sbox | s0] ^ R60;
15919 t1 = HEAP[inv_sbox | s1] ^ R61;
15920 t2 = HEAP[inv_sbox | s2] ^ R62;
15921 t3 = HEAP[inv_sbox | s3] ^ R63;
15922 t4 = HEAP[inv_sbox | s4] ^ R64;
15923 t5 = HEAP[inv_sbox | s5] ^ R65;
15924 t6 = HEAP[inv_sbox | s6] ^ R66;
15925 t7 = HEAP[inv_sbox | s7] ^ R67;
15926 t8 = HEAP[inv_sbox | s8] ^ R68;
15927 t9 = HEAP[inv_sbox | s9] ^ R69;
15928 tA = HEAP[inv_sbox | sA] ^ R6A;
15929 tB = HEAP[inv_sbox | sB] ^ R6B;
15930 tC = HEAP[inv_sbox | sC] ^ R6C;
15931 tD = HEAP[inv_sbox | sD] ^ R6D;
15932 tE = HEAP[inv_sbox | sE] ^ R6E;
15933 tF = HEAP[inv_sbox | sF] ^ R6F;
15934 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15935 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15936 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15937 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15938 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15939 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15940 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15941 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15942 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15943 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15944 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15945 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15946 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15947 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15948 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15949 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15950 t0 = HEAP[inv_sbox | s0] ^ R50;
15951 t1 = HEAP[inv_sbox | s1] ^ R51;
15952 t2 = HEAP[inv_sbox | s2] ^ R52;
15953 t3 = HEAP[inv_sbox | s3] ^ R53;
15954 t4 = HEAP[inv_sbox | s4] ^ R54;
15955 t5 = HEAP[inv_sbox | s5] ^ R55;
15956 t6 = HEAP[inv_sbox | s6] ^ R56;
15957 t7 = HEAP[inv_sbox | s7] ^ R57;
15958 t8 = HEAP[inv_sbox | s8] ^ R58;
15959 t9 = HEAP[inv_sbox | s9] ^ R59;
15960 tA = HEAP[inv_sbox | sA] ^ R5A;
15961 tB = HEAP[inv_sbox | sB] ^ R5B;
15962 tC = HEAP[inv_sbox | sC] ^ R5C;
15963 tD = HEAP[inv_sbox | sD] ^ R5D;
15964 tE = HEAP[inv_sbox | sE] ^ R5E;
15965 tF = HEAP[inv_sbox | sF] ^ R5F;
15966 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15967 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
15968 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
15969 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
15970 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
15971 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
15972 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
15973 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
15974 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
15975 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
15976 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
15977 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
15978 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
15979 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
15980 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
15981 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
15982 t0 = HEAP[inv_sbox | s0] ^ R40;
15983 t1 = HEAP[inv_sbox | s1] ^ R41;
15984 t2 = HEAP[inv_sbox | s2] ^ R42;
15985 t3 = HEAP[inv_sbox | s3] ^ R43;
15986 t4 = HEAP[inv_sbox | s4] ^ R44;
15987 t5 = HEAP[inv_sbox | s5] ^ R45;
15988 t6 = HEAP[inv_sbox | s6] ^ R46;
15989 t7 = HEAP[inv_sbox | s7] ^ R47;
15990 t8 = HEAP[inv_sbox | s8] ^ R48;
15991 t9 = HEAP[inv_sbox | s9] ^ R49;
15992 tA = HEAP[inv_sbox | sA] ^ R4A;
15993 tB = HEAP[inv_sbox | sB] ^ R4B;
15994 tC = HEAP[inv_sbox | sC] ^ R4C;
15995 tD = HEAP[inv_sbox | sD] ^ R4D;
15996 tE = HEAP[inv_sbox | sE] ^ R4E;
15997 tF = HEAP[inv_sbox | sF] ^ R4F;
15998 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
15999 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
16000 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
16001 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
16002 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
16003 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
16004 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
16005 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
16006 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
16007 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
16008 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
16009 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
16010 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
16011 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
16012 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
16013 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
16014 t0 = HEAP[inv_sbox | s0] ^ R30;
16015 t1 = HEAP[inv_sbox | s1] ^ R31;
16016 t2 = HEAP[inv_sbox | s2] ^ R32;
16017 t3 = HEAP[inv_sbox | s3] ^ R33;
16018 t4 = HEAP[inv_sbox | s4] ^ R34;
16019 t5 = HEAP[inv_sbox | s5] ^ R35;
16020 t6 = HEAP[inv_sbox | s6] ^ R36;
16021 t7 = HEAP[inv_sbox | s7] ^ R37;
16022 t8 = HEAP[inv_sbox | s8] ^ R38;
16023 t9 = HEAP[inv_sbox | s9] ^ R39;
16024 tA = HEAP[inv_sbox | sA] ^ R3A;
16025 tB = HEAP[inv_sbox | sB] ^ R3B;
16026 tC = HEAP[inv_sbox | sC] ^ R3C;
16027 tD = HEAP[inv_sbox | sD] ^ R3D;
16028 tE = HEAP[inv_sbox | sE] ^ R3E;
16029 tF = HEAP[inv_sbox | sF] ^ R3F;
16030 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
16031 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
16032 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
16033 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
16034 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
16035 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
16036 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
16037 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
16038 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
16039 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
16040 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
16041 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
16042 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
16043 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
16044 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
16045 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
16046 t0 = HEAP[inv_sbox | s0] ^ R20;
16047 t1 = HEAP[inv_sbox | s1] ^ R21;
16048 t2 = HEAP[inv_sbox | s2] ^ R22;
16049 t3 = HEAP[inv_sbox | s3] ^ R23;
16050 t4 = HEAP[inv_sbox | s4] ^ R24;
16051 t5 = HEAP[inv_sbox | s5] ^ R25;
16052 t6 = HEAP[inv_sbox | s6] ^ R26;
16053 t7 = HEAP[inv_sbox | s7] ^ R27;
16054 t8 = HEAP[inv_sbox | s8] ^ R28;
16055 t9 = HEAP[inv_sbox | s9] ^ R29;
16056 tA = HEAP[inv_sbox | sA] ^ R2A;
16057 tB = HEAP[inv_sbox | sB] ^ R2B;
16058 tC = HEAP[inv_sbox | sC] ^ R2C;
16059 tD = HEAP[inv_sbox | sD] ^ R2D;
16060 tE = HEAP[inv_sbox | sE] ^ R2E;
16061 tF = HEAP[inv_sbox | sF] ^ R2F;
16062 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
16063 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
16064 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
16065 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
16066 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
16067 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
16068 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
16069 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
16070 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
16071 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
16072 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
16073 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
16074 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
16075 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
16076 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
16077 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
16078 t0 = HEAP[inv_sbox | s0] ^ R10;
16079 t1 = HEAP[inv_sbox | s1] ^ R11;
16080 t2 = HEAP[inv_sbox | s2] ^ R12;
16081 t3 = HEAP[inv_sbox | s3] ^ R13;
16082 t4 = HEAP[inv_sbox | s4] ^ R14;
16083 t5 = HEAP[inv_sbox | s5] ^ R15;
16084 t6 = HEAP[inv_sbox | s6] ^ R16;
16085 t7 = HEAP[inv_sbox | s7] ^ R17;
16086 t8 = HEAP[inv_sbox | s8] ^ R18;
16087 t9 = HEAP[inv_sbox | s9] ^ R19;
16088 tA = HEAP[inv_sbox | sA] ^ R1A;
16089 tB = HEAP[inv_sbox | sB] ^ R1B;
16090 tC = HEAP[inv_sbox | sC] ^ R1C;
16091 tD = HEAP[inv_sbox | sD] ^ R1D;
16092 tE = HEAP[inv_sbox | sE] ^ R1E;
16093 tF = HEAP[inv_sbox | sF] ^ R1F;
16094 s0 = HEAP[xE | t0] ^ HEAP[xB | t1] ^ HEAP[xD | t2] ^ HEAP[x9 | t3];
16095 s1 = HEAP[x9 | tC] ^ HEAP[xE | tD] ^ HEAP[xB | tE] ^ HEAP[xD | tF];
16096 s2 = HEAP[xD | t8] ^ HEAP[x9 | t9] ^ HEAP[xE | tA] ^ HEAP[xB | tB];
16097 s3 = HEAP[xB | t4] ^ HEAP[xD | t5] ^ HEAP[x9 | t6] ^ HEAP[xE | t7];
16098 s4 = HEAP[xE | t4] ^ HEAP[xB | t5] ^ HEAP[xD | t6] ^ HEAP[x9 | t7];
16099 s5 = HEAP[x9 | t0] ^ HEAP[xE | t1] ^ HEAP[xB | t2] ^ HEAP[xD | t3];
16100 s6 = HEAP[xD | tC] ^ HEAP[x9 | tD] ^ HEAP[xE | tE] ^ HEAP[xB | tF];
16101 s7 = HEAP[xB | t8] ^ HEAP[xD | t9] ^ HEAP[x9 | tA] ^ HEAP[xE | tB];
16102 s8 = HEAP[xE | t8] ^ HEAP[xB | t9] ^ HEAP[xD | tA] ^ HEAP[x9 | tB];
16103 s9 = HEAP[x9 | t4] ^ HEAP[xE | t5] ^ HEAP[xB | t6] ^ HEAP[xD | t7];
16104 sA = HEAP[xD | t0] ^ HEAP[x9 | t1] ^ HEAP[xE | t2] ^ HEAP[xB | t3];
16105 sB = HEAP[xB | tC] ^ HEAP[xD | tD] ^ HEAP[x9 | tE] ^ HEAP[xE | tF];
16106 sC = HEAP[xE | tC] ^ HEAP[xB | tD] ^ HEAP[xD | tE] ^ HEAP[x9 | tF];
16107 sD = HEAP[x9 | t8] ^ HEAP[xE | t9] ^ HEAP[xB | tA] ^ HEAP[xD | tB];
16108 sE = HEAP[xD | t4] ^ HEAP[x9 | t5] ^ HEAP[xE | t6] ^ HEAP[xB | t7];
16109 sF = HEAP[xB | t0] ^ HEAP[xD | t1] ^ HEAP[x9 | t2] ^ HEAP[xE | t3];
16110 S0 = HEAP[inv_sbox | s0] ^ R00;
16111 S1 = HEAP[inv_sbox | s1] ^ R01;
16112 S2 = HEAP[inv_sbox | s2] ^ R02;
16113 S3 = HEAP[inv_sbox | s3] ^ R03;
16114 S4 = HEAP[inv_sbox | s4] ^ R04;
16115 S5 = HEAP[inv_sbox | s5] ^ R05;
16116 S6 = HEAP[inv_sbox | s6] ^ R06;
16117 S7 = HEAP[inv_sbox | s7] ^ R07;
16118 S8 = HEAP[inv_sbox | s8] ^ R08;
16119 S9 = HEAP[inv_sbox | s9] ^ R09;
16120 SA = HEAP[inv_sbox | sA] ^ R0A;
16121 SB = HEAP[inv_sbox | sB] ^ R0B;
16122 SC = HEAP[inv_sbox | sC] ^ R0C;
16123 SD = HEAP[inv_sbox | sD] ^ R0D;
16124 SE = HEAP[inv_sbox | sE] ^ R0E;
16125 SF = HEAP[inv_sbox | sF] ^ R0F;
16127 function init_state(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, sA, sB, sC, sD, sE, sF) {
16161 function save_state(offset) {
16162 offset = offset |
0;
16164 HEAP[offset |
1] = S1;
16165 HEAP[offset |
2] = S2;
16166 HEAP[offset |
3] = S3;
16167 HEAP[offset |
4] = S4;
16168 HEAP[offset |
5] = S5;
16169 HEAP[offset |
6] = S6;
16170 HEAP[offset |
7] = S7;
16171 HEAP[offset |
8] = S8;
16172 HEAP[offset |
9] = S9;
16173 HEAP[offset |
10] = SA;
16174 HEAP[offset |
11] = SB;
16175 HEAP[offset |
12] = SC;
16176 HEAP[offset |
13] = SD;
16177 HEAP[offset |
14] = SE;
16178 HEAP[offset |
15] = SF;
16180 function init_key_128(k0, k1, k2, k3, k4, k5, k6, k7, k8, k9, kA, kB, kC, kD, kE, kF) {
16216 function init_key_256(k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F) {
16284 function cbc_encrypt(offset, length) {
16285 offset = offset |
0;
16286 length = length |
0;
16288 if (offset &
15) return -
1;
16289 while ((length |
0)
>=
16) {
16290 _encrypt(S0 ^ HEAP[offset], S1 ^ HEAP[offset |
1], S2 ^ HEAP[offset |
2], S3 ^ HEAP[offset |
3], S4 ^ HEAP[offset |
4], S5 ^ HEAP[offset |
5], S6 ^ HEAP[offset |
6], S7 ^ HEAP[offset |
7], S8 ^ HEAP[offset |
8], S9 ^ HEAP[offset |
9], SA ^ HEAP[offset |
10], SB ^ HEAP[offset |
11], SC ^ HEAP[offset |
12], SD ^ HEAP[offset |
13], SE ^ HEAP[offset |
14], SF ^ HEAP[offset |
15]);
16292 HEAP[offset |
1] = S1;
16293 HEAP[offset |
2] = S2;
16294 HEAP[offset |
3] = S3;
16295 HEAP[offset |
4] = S4;
16296 HEAP[offset |
5] = S5;
16297 HEAP[offset |
6] = S6;
16298 HEAP[offset |
7] = S7;
16299 HEAP[offset |
8] = S8;
16300 HEAP[offset |
9] = S9;
16301 HEAP[offset |
10] = SA;
16302 HEAP[offset |
11] = SB;
16303 HEAP[offset |
12] = SC;
16304 HEAP[offset |
13] = SD;
16305 HEAP[offset |
14] = SE;
16306 HEAP[offset |
15] = SF;
16307 offset = offset +
16 |
0;
16308 length = length -
16 |
0;
16309 encrypted = encrypted +
16 |
0;
16311 return encrypted |
0;
16313 function cbc_decrypt(offset, length) {
16314 offset = offset |
0;
16315 length = length |
0;
16316 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, decrypted =
0;
16317 if (offset &
15) return -
1;
16334 while ((length |
0)
>=
16) {
16335 _decrypt(HEAP[offset] |
0, HEAP[offset |
1] |
0, HEAP[offset |
2] |
0, HEAP[offset |
3] |
0, HEAP[offset |
4] |
0, HEAP[offset |
5] |
0, HEAP[offset |
6] |
0, HEAP[offset |
7] |
0, HEAP[offset |
8] |
0, HEAP[offset |
9] |
0, HEAP[offset |
10] |
0, HEAP[offset |
11] |
0, HEAP[offset |
12] |
0, HEAP[offset |
13] |
0, HEAP[offset |
14] |
0, HEAP[offset |
15] |
0);
16337 iv0 = HEAP[offset] |
0;
16339 iv1 = HEAP[offset |
1] |
0;
16341 iv2 = HEAP[offset |
2] |
0;
16343 iv3 = HEAP[offset |
3] |
0;
16345 iv4 = HEAP[offset |
4] |
0;
16347 iv5 = HEAP[offset |
5] |
0;
16349 iv6 = HEAP[offset |
6] |
0;
16351 iv7 = HEAP[offset |
7] |
0;
16353 iv8 = HEAP[offset |
8] |
0;
16355 iv9 = HEAP[offset |
9] |
0;
16357 ivA = HEAP[offset |
10] |
0;
16359 ivB = HEAP[offset |
11] |
0;
16361 ivC = HEAP[offset |
12] |
0;
16363 ivD = HEAP[offset |
13] |
0;
16365 ivE = HEAP[offset |
14] |
0;
16367 ivF = HEAP[offset |
15] |
0;
16369 HEAP[offset |
1] = S1;
16370 HEAP[offset |
2] = S2;
16371 HEAP[offset |
3] = S3;
16372 HEAP[offset |
4] = S4;
16373 HEAP[offset |
5] = S5;
16374 HEAP[offset |
6] = S6;
16375 HEAP[offset |
7] = S7;
16376 HEAP[offset |
8] = S8;
16377 HEAP[offset |
9] = S9;
16378 HEAP[offset |
10] = SA;
16379 HEAP[offset |
11] = SB;
16380 HEAP[offset |
12] = SC;
16381 HEAP[offset |
13] = SD;
16382 HEAP[offset |
14] = SE;
16383 HEAP[offset |
15] = SF;
16384 offset = offset +
16 |
0;
16385 length = length -
16 |
0;
16386 decrypted = decrypted +
16 |
0;
16404 return decrypted |
0;
16406 function cbc_mac(offset, length, output) {
16407 offset = offset |
0;
16408 length = length |
0;
16409 output = output |
0;
16410 if (offset &
15) return -
1;
16411 if (~output) if (output &
31) return -
1;
16412 while ((length |
0)
>=
16) {
16413 _encrypt(S0 ^ HEAP[offset], S1 ^ HEAP[offset |
1], S2 ^ HEAP[offset |
2], S3 ^ HEAP[offset |
3], S4 ^ HEAP[offset |
4], S5 ^ HEAP[offset |
5], S6 ^ HEAP[offset |
6], S7 ^ HEAP[offset |
7], S8 ^ HEAP[offset |
8], S9 ^ HEAP[offset |
9], SA ^ HEAP[offset |
10], SB ^ HEAP[offset |
11], SC ^ HEAP[offset |
12], SD ^ HEAP[offset |
13], SE ^ HEAP[offset |
14], SF ^ HEAP[offset |
15]);
16414 offset = offset +
16 |
0;
16415 length = length -
16 |
0;
16417 if ((length |
0)
> 0) {
16418 S0 = S0 ^ HEAP[offset];
16419 if ((length |
0)
> 1) S1 = S1 ^ HEAP[offset |
1];
16420 if ((length |
0)
> 2) S2 = S2 ^ HEAP[offset |
2];
16421 if ((length |
0)
> 3) S3 = S3 ^ HEAP[offset |
3];
16422 if ((length |
0)
> 4) S4 = S4 ^ HEAP[offset |
4];
16423 if ((length |
0)
> 5) S5 = S5 ^ HEAP[offset |
5];
16424 if ((length |
0)
> 6) S6 = S6 ^ HEAP[offset |
6];
16425 if ((length |
0)
> 7) S7 = S7 ^ HEAP[offset |
7];
16426 if ((length |
0)
> 8) S8 = S8 ^ HEAP[offset |
8];
16427 if ((length |
0)
> 9) S9 = S9 ^ HEAP[offset |
9];
16428 if ((length |
0)
> 10) SA = SA ^ HEAP[offset |
10];
16429 if ((length |
0)
> 11) SB = SB ^ HEAP[offset |
11];
16430 if ((length |
0)
> 12) SC = SC ^ HEAP[offset |
12];
16431 if ((length |
0)
> 13) SD = SD ^ HEAP[offset |
13];
16432 if ((length |
0)
> 14) SE = SE ^ HEAP[offset |
14];
16433 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16434 offset = offset + length |
0;
16438 HEAP[output |
0] = S0;
16439 HEAP[output |
1] = S1;
16440 HEAP[output |
2] = S2;
16441 HEAP[output |
3] = S3;
16442 HEAP[output |
4] = S4;
16443 HEAP[output |
5] = S5;
16444 HEAP[output |
6] = S6;
16445 HEAP[output |
7] = S7;
16446 HEAP[output |
8] = S8;
16447 HEAP[output |
9] = S9;
16448 HEAP[output |
10] = SA;
16449 HEAP[output |
11] = SB;
16450 HEAP[output |
12] = SC;
16451 HEAP[output |
13] = SD;
16452 HEAP[output |
14] = SE;
16453 HEAP[output |
15] = SF;
16457 function ccm_encrypt(offset, length, nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8, nonce9, nonceA, nonceB, nonceC, nonceD, counter0, counter1) {
16458 offset = offset |
0;
16459 length = length |
0;
16460 nonce0 = nonce0 |
0;
16461 nonce1 = nonce1 |
0;
16462 nonce2 = nonce2 |
0;
16463 nonce3 = nonce3 |
0;
16464 nonce4 = nonce4 |
0;
16465 nonce5 = nonce5 |
0;
16466 nonce6 = nonce6 |
0;
16467 nonce7 = nonce7 |
0;
16468 nonce8 = nonce8 |
0;
16469 nonce9 = nonce9 |
0;
16470 nonceA = nonceA |
0;
16471 nonceB = nonceB |
0;
16472 nonceC = nonceC |
0;
16473 nonceD = nonceD |
0;
16474 counter0 = counter0 |
0;
16475 counter1 = counter1 |
0;
16476 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, s0 =
0, s1 =
0, s2 =
0, s3 =
0, s4 =
0, s5 =
0, s6 =
0, s7 =
0, s8 =
0, s9 =
0, sA =
0, sB =
0, sC =
0, sD =
0, sE =
0, sF =
0, encrypted =
0;
16477 if (offset &
15) return -
1;
16478 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16479 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16480 while ((length |
0)
>=
16) {
16481 s0 = HEAP[offset] |
0;
16482 s1 = HEAP[offset |
1] |
0;
16483 s2 = HEAP[offset |
2] |
0;
16484 s3 = HEAP[offset |
3] |
0;
16485 s4 = HEAP[offset |
4] |
0;
16486 s5 = HEAP[offset |
5] |
0;
16487 s6 = HEAP[offset |
6] |
0;
16488 s7 = HEAP[offset |
7] |
0;
16489 s8 = HEAP[offset |
8] |
0;
16490 s9 = HEAP[offset |
9] |
0;
16491 sA = HEAP[offset |
10] |
0;
16492 sB = HEAP[offset |
11] |
0;
16493 sC = HEAP[offset |
12] |
0;
16494 sD = HEAP[offset |
13] |
0;
16495 sE = HEAP[offset |
14] |
0;
16496 sF = HEAP[offset |
15] |
0;
16497 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16498 HEAP[offset] = s0 ^ S0;
16499 HEAP[offset |
1] = s1 ^ S1;
16500 HEAP[offset |
2] = s2 ^ S2;
16501 HEAP[offset |
3] = s3 ^ S3;
16502 HEAP[offset |
4] = s4 ^ S4;
16503 HEAP[offset |
5] = s5 ^ S5;
16504 HEAP[offset |
6] = s6 ^ S6;
16505 HEAP[offset |
7] = s7 ^ S7;
16506 HEAP[offset |
8] = s8 ^ S8;
16507 HEAP[offset |
9] = s9 ^ S9;
16508 HEAP[offset |
10] = sA ^ SA;
16509 HEAP[offset |
11] = sB ^ SB;
16510 HEAP[offset |
12] = sC ^ SC;
16511 HEAP[offset |
13] = sD ^ SD;
16512 HEAP[offset |
14] = sE ^ SE;
16513 HEAP[offset |
15] = sF ^ SF;
16514 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, sF ^ ivF);
16515 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16516 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16517 encrypted = encrypted +
16 |
0;
16518 offset = offset +
16 |
0;
16519 length = length -
16 |
0;
16520 counter1 = counter1 +
1 |
0;
16521 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16523 if ((length |
0)
> 0) {
16524 s0 = HEAP[offset] |
0;
16525 s1 = (length |
0)
> 1 ? HEAP[offset |
1] |
0 :
0;
16526 s2 = (length |
0)
> 2 ? HEAP[offset |
2] |
0 :
0;
16527 s3 = (length |
0)
> 3 ? HEAP[offset |
3] |
0 :
0;
16528 s4 = (length |
0)
> 4 ? HEAP[offset |
4] |
0 :
0;
16529 s5 = (length |
0)
> 5 ? HEAP[offset |
5] |
0 :
0;
16530 s6 = (length |
0)
> 6 ? HEAP[offset |
6] |
0 :
0;
16531 s7 = (length |
0)
> 7 ? HEAP[offset |
7] |
0 :
0;
16532 s8 = (length |
0)
> 8 ? HEAP[offset |
8] |
0 :
0;
16533 s9 = (length |
0)
> 9 ? HEAP[offset |
9] |
0 :
0;
16534 sA = (length |
0)
> 10 ? HEAP[offset |
10] |
0 :
0;
16535 sB = (length |
0)
> 11 ? HEAP[offset |
11] |
0 :
0;
16536 sC = (length |
0)
> 12 ? HEAP[offset |
12] |
0 :
0;
16537 sD = (length |
0)
> 13 ? HEAP[offset |
13] |
0 :
0;
16538 sE = (length |
0)
> 14 ? HEAP[offset |
14] |
0 :
0;
16539 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16540 HEAP[offset] = s0 ^ S0;
16541 if ((length |
0)
> 1) HEAP[offset |
1] = s1 ^ S1;
16542 if ((length |
0)
> 2) HEAP[offset |
2] = s2 ^ S2;
16543 if ((length |
0)
> 3) HEAP[offset |
3] = s3 ^ S3;
16544 if ((length |
0)
> 4) HEAP[offset |
4] = s4 ^ S4;
16545 if ((length |
0)
> 5) HEAP[offset |
5] = s5 ^ S5;
16546 if ((length |
0)
> 6) HEAP[offset |
6] = s6 ^ S6;
16547 if ((length |
0)
> 7) HEAP[offset |
7] = s7 ^ S7;
16548 if ((length |
0)
> 8) HEAP[offset |
8] = s8 ^ S8;
16549 if ((length |
0)
> 9) HEAP[offset |
9] = s9 ^ S9;
16550 if ((length |
0)
> 10) HEAP[offset |
10] = sA ^ SA;
16551 if ((length |
0)
> 11) HEAP[offset |
11] = sB ^ SB;
16552 if ((length |
0)
> 12) HEAP[offset |
12] = sC ^ SC;
16553 if ((length |
0)
> 13) HEAP[offset |
13] = sD ^ SD;
16554 if ((length |
0)
> 14) HEAP[offset |
14] = sE ^ SE;
16555 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, ivF);
16556 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16557 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16558 encrypted = encrypted + length |
0;
16559 offset = offset + length |
0;
16561 counter1 = counter1 +
1 |
0;
16562 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16564 return encrypted |
0;
16566 function ccm_decrypt(offset, length, nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8, nonce9, nonceA, nonceB, nonceC, nonceD, counter0, counter1) {
16567 offset = offset |
0;
16568 length = length |
0;
16569 nonce0 = nonce0 |
0;
16570 nonce1 = nonce1 |
0;
16571 nonce2 = nonce2 |
0;
16572 nonce3 = nonce3 |
0;
16573 nonce4 = nonce4 |
0;
16574 nonce5 = nonce5 |
0;
16575 nonce6 = nonce6 |
0;
16576 nonce7 = nonce7 |
0;
16577 nonce8 = nonce8 |
0;
16578 nonce9 = nonce9 |
0;
16579 nonceA = nonceA |
0;
16580 nonceB = nonceB |
0;
16581 nonceC = nonceC |
0;
16582 nonceD = nonceD |
0;
16583 counter0 = counter0 |
0;
16584 counter1 = counter1 |
0;
16585 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, s0 =
0, s1 =
0, s2 =
0, s3 =
0, s4 =
0, s5 =
0, s6 =
0, s7 =
0, s8 =
0, s9 =
0, sA =
0, sB =
0, sC =
0, sD =
0, sE =
0, sF =
0, decrypted =
0;
16586 if (offset &
15) return -
1;
16587 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16588 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16589 while ((length |
0)
>=
16) {
16590 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16591 HEAP[offset] = s0 = HEAP[offset] ^ S0;
16592 HEAP[offset |
1] = s1 = HEAP[offset |
1] ^ S1;
16593 HEAP[offset |
2] = s2 = HEAP[offset |
2] ^ S2;
16594 HEAP[offset |
3] = s3 = HEAP[offset |
3] ^ S3;
16595 HEAP[offset |
4] = s4 = HEAP[offset |
4] ^ S4;
16596 HEAP[offset |
5] = s5 = HEAP[offset |
5] ^ S5;
16597 HEAP[offset |
6] = s6 = HEAP[offset |
6] ^ S6;
16598 HEAP[offset |
7] = s7 = HEAP[offset |
7] ^ S7;
16599 HEAP[offset |
8] = s8 = HEAP[offset |
8] ^ S8;
16600 HEAP[offset |
9] = s9 = HEAP[offset |
9] ^ S9;
16601 HEAP[offset |
10] = sA = HEAP[offset |
10] ^ SA;
16602 HEAP[offset |
11] = sB = HEAP[offset |
11] ^ SB;
16603 HEAP[offset |
12] = sC = HEAP[offset |
12] ^ SC;
16604 HEAP[offset |
13] = sD = HEAP[offset |
13] ^ SD;
16605 HEAP[offset |
14] = sE = HEAP[offset |
14] ^ SE;
16606 HEAP[offset |
15] = sF = HEAP[offset |
15] ^ SF;
16607 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, sF ^ ivF);
16608 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16609 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16610 decrypted = decrypted +
16 |
0;
16611 offset = offset +
16 |
0;
16612 length = length -
16 |
0;
16613 counter1 = counter1 +
1 |
0;
16614 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16616 if ((length |
0)
> 0) {
16617 _encrypt(nonce0, nonce1, nonce2, nonce3, nonce4, nonce5, nonce6, nonce7, nonce8 ^ counter0
>>> 24, nonce9 ^ counter0
>>> 16 &
255, nonceA ^ counter0
>>> 8 &
255, nonceB ^ counter0 &
255, nonceC ^ counter1
>>> 24, nonceD ^ counter1
>>> 16 &
255, counter1
>>> 8 &
255, counter1 &
255);
16618 s0 = HEAP[offset] ^ S0;
16619 s1 = (length |
0)
> 1 ? HEAP[offset |
1] ^ S1 :
0;
16620 s2 = (length |
0)
> 2 ? HEAP[offset |
2] ^ S2 :
0;
16621 s3 = (length |
0)
> 3 ? HEAP[offset |
3] ^ S3 :
0;
16622 s4 = (length |
0)
> 4 ? HEAP[offset |
4] ^ S4 :
0;
16623 s5 = (length |
0)
> 5 ? HEAP[offset |
5] ^ S5 :
0;
16624 s6 = (length |
0)
> 6 ? HEAP[offset |
6] ^ S6 :
0;
16625 s7 = (length |
0)
> 7 ? HEAP[offset |
7] ^ S7 :
0;
16626 s8 = (length |
0)
> 8 ? HEAP[offset |
8] ^ S8 :
0;
16627 s9 = (length |
0)
> 9 ? HEAP[offset |
9] ^ S9 :
0;
16628 sA = (length |
0)
> 10 ? HEAP[offset |
10] ^ SA :
0;
16629 sB = (length |
0)
> 11 ? HEAP[offset |
11] ^ SB :
0;
16630 sC = (length |
0)
> 12 ? HEAP[offset |
12] ^ SC :
0;
16631 sD = (length |
0)
> 13 ? HEAP[offset |
13] ^ SD :
0;
16632 sE = (length |
0)
> 14 ? HEAP[offset |
14] ^ SE :
0;
16633 sF = (length |
0)
> 15 ? HEAP[offset |
15] ^ SF :
0;
16635 if ((length |
0)
> 1) HEAP[offset |
1] = s1;
16636 if ((length |
0)
> 2) HEAP[offset |
2] = s2;
16637 if ((length |
0)
> 3) HEAP[offset |
3] = s3;
16638 if ((length |
0)
> 4) HEAP[offset |
4] = s4;
16639 if ((length |
0)
> 5) HEAP[offset |
5] = s5;
16640 if ((length |
0)
> 6) HEAP[offset |
6] = s6;
16641 if ((length |
0)
> 7) HEAP[offset |
7] = s7;
16642 if ((length |
0)
> 8) HEAP[offset |
8] = s8;
16643 if ((length |
0)
> 9) HEAP[offset |
9] = s9;
16644 if ((length |
0)
> 10) HEAP[offset |
10] = sA;
16645 if ((length |
0)
> 11) HEAP[offset |
11] = sB;
16646 if ((length |
0)
> 12) HEAP[offset |
12] = sC;
16647 if ((length |
0)
> 13) HEAP[offset |
13] = sD;
16648 if ((length |
0)
> 14) HEAP[offset |
14] = sE;
16649 _encrypt(s0 ^ iv0, s1 ^ iv1, s2 ^ iv2, s3 ^ iv3, s4 ^ iv4, s5 ^ iv5, s6 ^ iv6, s7 ^ iv7, s8 ^ iv8, s9 ^ iv9, sA ^ ivA, sB ^ ivB, sC ^ ivC, sD ^ ivD, sE ^ ivE, sF ^ ivF);
16650 iv0 = S0, iv1 = S1, iv2 = S2, iv3 = S3, iv4 = S4, iv5 = S5, iv6 = S6, iv7 = S7,
16651 iv8 = S8, iv9 = S9, ivA = SA, ivB = SB, ivC = SC, ivD = SD, ivE = SE, ivF = SF;
16652 decrypted = decrypted + length |
0;
16653 offset = offset + length |
0;
16655 counter1 = counter1 +
1 |
0;
16656 if ((counter1 |
0) ==
0) counter0 = counter0 +
1 |
0;
16658 return decrypted |
0;
16660 function cfb_encrypt(offset, length) {
16661 offset = offset |
0;
16662 length = length |
0;
16664 if (offset &
15) return -
1;
16665 while ((length |
0)
>=
16) {
16666 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16667 S0 = S0 ^ HEAP[offset];
16668 S1 = S1 ^ HEAP[offset |
1];
16669 S2 = S2 ^ HEAP[offset |
2];
16670 S3 = S3 ^ HEAP[offset |
3];
16671 S4 = S4 ^ HEAP[offset |
4];
16672 S5 = S5 ^ HEAP[offset |
5];
16673 S6 = S6 ^ HEAP[offset |
6];
16674 S7 = S7 ^ HEAP[offset |
7];
16675 S8 = S8 ^ HEAP[offset |
8];
16676 S9 = S9 ^ HEAP[offset |
9];
16677 SA = SA ^ HEAP[offset |
10];
16678 SB = SB ^ HEAP[offset |
11];
16679 SC = SC ^ HEAP[offset |
12];
16680 SD = SD ^ HEAP[offset |
13];
16681 SE = SE ^ HEAP[offset |
14];
16682 SF = SF ^ HEAP[offset |
15];
16684 HEAP[offset |
1] = S1;
16685 HEAP[offset |
2] = S2;
16686 HEAP[offset |
3] = S3;
16687 HEAP[offset |
4] = S4;
16688 HEAP[offset |
5] = S5;
16689 HEAP[offset |
6] = S6;
16690 HEAP[offset |
7] = S7;
16691 HEAP[offset |
8] = S8;
16692 HEAP[offset |
9] = S9;
16693 HEAP[offset |
10] = SA;
16694 HEAP[offset |
11] = SB;
16695 HEAP[offset |
12] = SC;
16696 HEAP[offset |
13] = SD;
16697 HEAP[offset |
14] = SE;
16698 HEAP[offset |
15] = SF;
16699 offset = offset +
16 |
0;
16700 length = length -
16 |
0;
16701 encrypted = encrypted +
16 |
0;
16703 if ((length |
0)
> 0) {
16704 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16705 HEAP[offset] = HEAP[offset] ^ S0;
16706 if ((length |
0)
> 1) HEAP[offset |
1] = HEAP[offset |
1] ^ S1;
16707 if ((length |
0)
> 2) HEAP[offset |
2] = HEAP[offset |
2] ^ S2;
16708 if ((length |
0)
> 3) HEAP[offset |
3] = HEAP[offset |
3] ^ S3;
16709 if ((length |
0)
> 4) HEAP[offset |
4] = HEAP[offset |
4] ^ S4;
16710 if ((length |
0)
> 5) HEAP[offset |
5] = HEAP[offset |
5] ^ S5;
16711 if ((length |
0)
> 6) HEAP[offset |
6] = HEAP[offset |
6] ^ S6;
16712 if ((length |
0)
> 7) HEAP[offset |
7] = HEAP[offset |
7] ^ S7;
16713 if ((length |
0)
> 8) HEAP[offset |
8] = HEAP[offset |
8] ^ S8;
16714 if ((length |
0)
> 9) HEAP[offset |
9] = HEAP[offset |
9] ^ S9;
16715 if ((length |
0)
> 10) HEAP[offset |
10] = HEAP[offset |
10] ^ SA;
16716 if ((length |
0)
> 11) HEAP[offset |
11] = HEAP[offset |
11] ^ SB;
16717 if ((length |
0)
> 12) HEAP[offset |
12] = HEAP[offset |
12] ^ SC;
16718 if ((length |
0)
> 13) HEAP[offset |
13] = HEAP[offset |
13] ^ SD;
16719 if ((length |
0)
> 14) HEAP[offset |
14] = HEAP[offset |
14] ^ SE;
16720 encrypted = encrypted + length |
0;
16721 offset = offset + length |
0;
16724 return encrypted |
0;
16726 function cfb_decrypt(offset, length) {
16727 offset = offset |
0;
16728 length = length |
0;
16729 var iv0 =
0, iv1 =
0, iv2 =
0, iv3 =
0, iv4 =
0, iv5 =
0, iv6 =
0, iv7 =
0, iv8 =
0, iv9 =
0, ivA =
0, ivB =
0, ivC =
0, ivD =
0, ivE =
0, ivF =
0, decrypted =
0;
16730 if (offset &
15) return -
1;
16731 while ((length |
0)
>=
16) {
16732 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16733 iv0 = HEAP[offset] |
0;
16734 iv1 = HEAP[offset |
1] |
0;
16735 iv2 = HEAP[offset |
2] |
0;
16736 iv3 = HEAP[offset |
3] |
0;
16737 iv4 = HEAP[offset |
4] |
0;
16738 iv5 = HEAP[offset |
5] |
0;
16739 iv6 = HEAP[offset |
6] |
0;
16740 iv7 = HEAP[offset |
7] |
0;
16741 iv8 = HEAP[offset |
8] |
0;
16742 iv9 = HEAP[offset |
9] |
0;
16743 ivA = HEAP[offset |
10] |
0;
16744 ivB = HEAP[offset |
11] |
0;
16745 ivC = HEAP[offset |
12] |
0;
16746 ivD = HEAP[offset |
13] |
0;
16747 ivE = HEAP[offset |
14] |
0;
16748 ivF = HEAP[offset |
15] |
0;
16749 HEAP[offset] = S0 ^ iv0;
16750 HEAP[offset |
1] = S1 ^ iv1;
16751 HEAP[offset |
2] = S2 ^ iv2;
16752 HEAP[offset |
3] = S3 ^ iv3;
16753 HEAP[offset |
4] = S4 ^ iv4;
16754 HEAP[offset |
5] = S5 ^ iv5;
16755 HEAP[offset |
6] = S6 ^ iv6;
16756 HEAP[offset |
7] = S7 ^ iv7;
16757 HEAP[offset |
8] = S8 ^ iv8;
16758 HEAP[offset |
9] = S9 ^ iv9;
16759 HEAP[offset |
10] = SA ^ ivA;
16760 HEAP[offset |
11] = SB ^ ivB;
16761 HEAP[offset |
12] = SC ^ ivC;
16762 HEAP[offset |
13] = SD ^ ivD;
16763 HEAP[offset |
14] = SE ^ ivE;
16764 HEAP[offset |
15] = SF ^ ivF;
16781 offset = offset +
16 |
0;
16782 length = length -
16 |
0;
16783 decrypted = decrypted +
16 |
0;
16785 if ((length |
0)
> 0) {
16786 _encrypt(S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, SA, SB, SC, SD, SE, SF);
16787 HEAP[offset] = HEAP[offset] ^ S0;
16788 if ((length |
0)
> 1) HEAP[offset |
1] = HEAP[offset |
1] ^ S1;
16789 if ((length |
0)
> 2) HEAP[offset |
2] = HEAP[offset |
2] ^ S2;
16790 if ((length |
0)
> 3) HEAP[offset |
3] = HEAP[offset |
3] ^ S3;
16791 if ((length |
0)
> 4) HEAP[offset |
4] = HEAP[offset |
4] ^ S4;
16792 if ((length |
0)
> 5) HEAP[offset |
5] = HEAP[offset |
5] ^ S5;
16793 if ((length |
0)
> 6) HEAP[offset |
6] = HEAP[offset |
6] ^ S6;
16794 if ((length |
0)
> 7) HEAP[offset |
7] = HEAP[offset |
7] ^ S7;
16795 if ((length |
0)
> 8) HEAP[offset |
8] = HEAP[offset |
8] ^ S8;
16796 if ((length |
0)
> 9) HEAP[offset |
9] = HEAP[offset |
9] ^ S9;
16797 if ((length |
0)
> 10) HEAP[offset |
10] = HEAP[offset |
10] ^ SA;
16798 if ((length |
0)
> 11) HEAP[offset |
11] = HEAP[offset |
11] ^ SB;
16799 if ((length |
0)
> 12) HEAP[offset |
12] = HEAP[offset |
12] ^ SC;
16800 if ((length |
0)
> 13) HEAP[offset |
13] = HEAP[offset |
13] ^ SD;
16801 if ((length |
0)
> 14) HEAP[offset |
14] = HEAP[offset |
14] ^ SE;
16802 decrypted = decrypted + length |
0;
16803 offset = offset + length |
0;
16806 return decrypted |
0;
16809 init_state: init_state,
16810 save_state: save_state,
16811 init_key_128: init_key_128,
16812 init_key_256: init_key_256,
16813 cbc_encrypt: cbc_encrypt,
16814 cbc_decrypt: cbc_decrypt,
16816 ccm_encrypt: ccm_encrypt,
16817 ccm_decrypt: ccm_decrypt,
16818 cfb_encrypt: cfb_encrypt,
16819 cfb_decrypt: cfb_decrypt
16822 function aes_asm(stdlib, foreign, buffer) {
16823 var heap = new Uint8Array(buffer);
16824 heap.set(_aes_tables);
16825 return _aes_asm(stdlib, foreign, buffer);
16827 var _aes_block_size =
16;
16828 function _aes_constructor(options) {
16829 options = options || {};
16830 options.heapSize = options.heapSize ||
4096;
16831 if (options.heapSize <=
0 || options.heapSize %
4096) throw new IllegalArgumentError(
"heapSize must be a positive number and multiple of 4096");
16832 this.BLOCK_SIZE = _aes_block_size;
16833 this.heap = options.heap || new Uint8Array(options.heapSize);
16834 this.asm = options.asm || aes_asm(global, null, this.heap.buffer);
16835 this.pos = _aes_heap_start;
16838 this.result = null;
16839 this.reset(options);
16841 function _aes_reset(options) {
16842 options = options || {};
16843 this.result = null;
16844 this.pos = _aes_heap_start;
16846 var asm = this.asm;
16847 var key = options.key;
16848 if (key !== undefined) {
16849 if (is_buffer(key) || is_bytes(key)) {
16850 key = new Uint8Array(key);
16851 } else if (is_string(key)) {
16853 key = new Uint8Array(str.length);
16854 for (var i =
0; i < str.length; ++i) key[i] = str.charCodeAt(i);
16856 throw new TypeError(
"unexpected key type");
16858 if (key.length ===
16) {
16860 asm.init_key_128.call(asm, key[
0], key[
1], key[
2], key[
3], key[
4], key[
5], key[
6], key[
7], key[
8], key[
9], key[
10], key[
11], key[
12], key[
13], key[
14], key[
15]);
16861 } else if (key.length ===
24) {
16862 throw new IllegalArgumentError(
"illegal key size");
16863 } else if (key.length ===
32) {
16865 asm.init_key_256.call(asm, key[
0], key[
1], key[
2], key[
3], key[
4], key[
5], key[
6], key[
7], key[
8], key[
9], key[
10], key[
11], key[
12], key[
13], key[
14], key[
15], key[
16], key[
17], key[
18], key[
19], key[
20], key[
21], key[
22], key[
23], key[
24], key[
25], key[
26], key[
27], key[
28], key[
29], key[
30], key[
31]);
16867 throw new IllegalArgumentError(
"illegal key size");
16872 function _aes_init_iv(iv) {
16873 var asm = this.asm;
16874 if (iv !== undefined) {
16875 if (is_buffer(iv) || is_bytes(iv)) {
16876 iv = new Uint8Array(iv);
16877 } else if (is_string(iv)) {
16879 iv = new Uint8Array(str.length);
16880 for (var i =
0; i < str.length; ++i) iv[i] = str.charCodeAt(i);
16882 throw new TypeError(
"unexpected iv type");
16884 if (iv.length !== _aes_block_size) throw new IllegalArgumentError(
"illegal iv size");
16886 asm.init_state.call(asm, iv[
0], iv[
1], iv[
2], iv[
3], iv[
4], iv[
5], iv[
6], iv[
7], iv[
8], iv[
9], iv[
10], iv[
11], iv[
12], iv[
13], iv[
14], iv[
15]);
16889 asm.init_state.call(asm,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0);
16892 function _aes_heap_write(heap, hpos, data, dpos, dlen) {
16893 var hlen = heap.byteLength - hpos, wlen = hlen < dlen ? hlen : dlen;
16894 if (is_buffer(data) || is_bytes(data)) {
16895 heap.set(new Uint8Array(data.buffer || data, dpos, wlen), hpos);
16896 } else if (is_string(data)) {
16897 for (var i =
0; i < wlen; ++i) heap[hpos + i] = data.charCodeAt(dpos + i);
16899 throw new TypeError(
"unexpected data type");
16903 function cbc_aes_constructor(options) {
16904 this.padding = true;
16907 _aes_constructor.call(this, options);
16909 function cbc_aes_encrypt_constructor(options) {
16910 cbc_aes_constructor.call(this, options);
16912 function cbc_aes_decrypt_constructor(options) {
16913 cbc_aes_constructor.call(this, options);
16915 function cbc_aes_reset(options) {
16916 options = options || {};
16917 _aes_reset.call(this, options);
16918 var padding = options.padding;
16919 if (padding !== undefined) {
16920 this.padding = !!padding;
16922 this.padding = true;
16924 _aes_init_iv.call(this, options.iv);
16927 function cbc_aes_encrypt_process(data) {
16928 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
16929 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
16930 var result = new Uint8Array(rlen);
16932 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
16936 wlen = asm.cbc_encrypt(pos, len);
16937 result.set(heap.subarray(pos, pos + wlen), rpos);
16943 pos = _aes_heap_start;
16947 this.result = result;
16952 function cbc_aes_encrypt_finish() {
16953 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
16954 var asm = this.asm, heap = this.heap, padding = this.padding, pos = this.pos, len = this.len, rlen = _aes_block_size * Math.ceil(len / _aes_block_size);
16955 if (len % _aes_block_size ===
0) {
16956 if (padding) rlen += _aes_block_size;
16957 } else if (!padding) {
16958 throw new IllegalArgumentError(
"data length must be a multiple of " + _aes_block_size);
16960 var result = new Uint8Array(rlen);
16962 var plen = _aes_block_size - len % _aes_block_size;
16963 for (var p =
0; p < plen; ++p) heap[pos + len + p] = plen;
16966 asm.cbc_encrypt(pos, len);
16967 result.set(heap.subarray(pos, pos + len));
16968 this.result = result;
16969 this.pos = _aes_heap_start;
16973 function cbc_aes_encrypt(data) {
16974 var result1 = cbc_aes_encrypt_process.call(this, data).result, result2 = cbc_aes_encrypt_finish.call(this).result, result;
16975 result = new Uint8Array(result1.length + result2.length);
16976 result.set(result1);
16977 result.set(result2, result1.length);
16978 this.result = result;
16981 function cbc_aes_decrypt_process(data) {
16982 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
16983 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, padding = this.padding, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
16984 var result = new Uint8Array(rlen);
16986 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
16990 wlen = asm.cbc_decrypt(pos, len - (padding && dlen ===
0 && len % _aes_block_size ===
0 ? _aes_block_size :
0));
16991 result.set(heap.subarray(pos, pos + wlen), rpos);
16997 pos = _aes_heap_start;
17001 this.result = result.subarray(
0, rpos);
17006 function cbc_aes_decrypt_finish() {
17007 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17008 var asm = this.asm, heap = this.heap, padding = this.padding, pos = this.pos, len = this.len;
17011 this.result = new Uint8Array(
0);
17012 this.pos = _aes_heap_start;
17016 throw new IllegalStateError(
"padding not found");
17019 if (len % _aes_block_size !==
0) throw new IllegalArgumentError(
"data length must be a multiple of " + _aes_block_size);
17020 var result = new Uint8Array(len);
17021 asm.cbc_decrypt(pos, len);
17022 result.set(heap.subarray(pos, pos + len));
17024 var pad = result[len -
1];
17025 result = result.subarray(
0, len - pad);
17027 this.result = result;
17028 this.pos = _aes_heap_start;
17032 function cbc_aes_decrypt(data) {
17033 var result1 = cbc_aes_decrypt_process.call(this, data).result, result2 = cbc_aes_decrypt_finish.call(this).result, result;
17034 result = new Uint8Array(result1.length + result2.length);
17035 result.set(result1);
17036 result.set(result2, result1.length);
17037 this.result = result;
17040 var cbc_aes_encrypt_prototype = cbc_aes_encrypt_constructor.prototype;
17041 cbc_aes_encrypt_prototype.reset = cbc_aes_reset;
17042 cbc_aes_encrypt_prototype.process = cbc_aes_encrypt_process;
17043 cbc_aes_encrypt_prototype.finish = cbc_aes_encrypt_finish;
17044 var cbc_aes_decrypt_prototype = cbc_aes_decrypt_constructor.prototype;
17045 cbc_aes_decrypt_prototype.reset = cbc_aes_reset;
17046 cbc_aes_decrypt_prototype.process = cbc_aes_decrypt_process;
17047 cbc_aes_decrypt_prototype.finish = cbc_aes_decrypt_finish;
17048 var cbc_aes_prototype = cbc_aes_constructor.prototype;
17049 cbc_aes_prototype.reset = cbc_aes_reset;
17050 cbc_aes_prototype.encrypt = cbc_aes_encrypt;
17051 cbc_aes_prototype.decrypt = cbc_aes_decrypt;
17052 function _cbc_mac_process(data) {
17053 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, wlen =
0;
17055 wlen = _aes_heap_write(this.heap, _aes_heap_start, data, dpos, dlen);
17056 this.asm.cbc_mac(_aes_heap_start, wlen, -
1);
17061 var _ccm_adata_maxLength =
65279, _ccm_data_maxLength =
68719476720;
17062 function ccm_aes_constructor(options) {
17063 this.padding = false;
17065 this.tagSize = _aes_block_size;
17066 this.lengthSize =
4;
17070 this.dataLength = -
1;
17071 this.dataLeft = -
1;
17073 _aes_constructor.call(this, options);
17075 function ccm_aes_encrypt_constructor(options) {
17076 ccm_aes_constructor.call(this, options);
17078 function ccm_aes_decrypt_constructor(options) {
17079 ccm_aes_constructor.call(this, options);
17081 function _ccm_calculate_iv() {
17082 var nonce = this.nonce, adata = this.adata, tagSize = this.tagSize, lengthSize = this.lengthSize, dataLength = this.dataLength;
17083 var data = new Uint8Array(_aes_block_size + (adata ?
2 + adata.byteLength :
0));
17084 data[
0] = (adata ?
64 :
0) | tagSize -
2 <<
2 | lengthSize -
1;
17085 data.set(nonce,
1);
17086 if (lengthSize
> 4) data[
11] = (dataLength - (dataLength
>>> 0)) /
4294967296 &
15;
17087 if (lengthSize
> 3) data[
12] = dataLength
>>> 24;
17088 if (lengthSize
> 2) data[
13] = dataLength
>>> 16 &
255;
17089 data[
14] = dataLength
>>> 8 &
255;
17090 data[
15] = dataLength &
255;
17092 data[
16] = adata.byteLength
>>> 8 &
255;
17093 data[
17] = adata.byteLength &
255;
17094 data.set(adata,
18);
17096 _cbc_mac_process.call(this, data);
17097 this.asm.save_state(_aes_heap_start);
17098 this.iv = new Uint8Array(this.heap.subarray(_aes_heap_start, _aes_heap_start + _aes_block_size));
17100 function ccm_aes_reset(options) {
17101 options = options || {};
17102 _aes_reset.call(this, options);
17103 _aes_init_iv.call(this, options.iv);
17104 var tagSize = options.tagSize;
17105 if (tagSize !== undefined) {
17106 if (!is_number(tagSize)) throw new TypeError(
"tagSize must be a number");
17107 if (tagSize <
4 || tagSize
> 16 || tagSize &
1) throw new IllegalArgumentError(
"illegal tagSize value");
17108 this.tagSize = tagSize;
17110 this.tagSize = _aes_block_size;
17112 var lengthSize = options.lengthSize, nonce = options.nonce;
17113 if (nonce !== undefined) {
17114 if (is_buffer(nonce) || is_bytes(nonce)) {
17115 nonce = new Uint8Array(nonce);
17116 } else if (is_string(nonce)) {
17118 nonce = new Uint8Array(str.length);
17119 for (var i =
0; i < str.length; ++i) nonce[i] = str.charCodeAt(i);
17121 throw new TypeError(
"unexpected nonce type");
17123 if (nonce.length <
10 || nonce.length
> 13) throw new IllegalArgumentError(
"illegal nonce length");
17124 lengthSize = lengthSize ||
15 - nonce.length;
17125 this.nonce = nonce;
17129 if (lengthSize !== undefined) {
17130 if (!is_number(lengthSize)) throw new TypeError(
"lengthSize must be a number");
17131 if (lengthSize <
2 || lengthSize
> 5 || nonce.length + lengthSize !==
15) throw new IllegalArgumentError(
"illegal lengthSize value");
17132 this.lengthSize = lengthSize;
17134 this.lengthSize = lengthSize =
4;
17137 var counter = options.counter;
17138 if (counter !== undefined) {
17139 if (iv === null) throw new IllegalStateError(
"iv is also required");
17140 if (!is_number(counter)) throw new TypeError(
"counter must be a number");
17141 this.counter = counter;
17145 var dataLength = options.dataLength;
17146 if (dataLength !== undefined) {
17147 if (!is_number(dataLength)) throw new TypeError(
"dataLength must be a number");
17148 if (dataLength <
0 || dataLength
> _ccm_data_maxLength || dataLength
> Math.pow(
2,
8 * lengthSize) -
1) throw new IllegalArgumentError("illegal dataLength value");
17149 this.dataLength = dataLength;
17150 var dataLeft = options.dataLeft || dataLength;
17151 if (!is_number(dataLeft)) throw new TypeError("dataLeft must be a number");
17152 if (dataLeft <
0 || dataLeft
> dataLength) throw new IllegalArgumentError("illegal dataLeft value");
17153 this.dataLeft = dataLeft;
17155 this.dataLength = dataLength = -
1;
17156 this.dataLeft = dataLength;
17158 var adata = options.adata;
17159 if (adata !== undefined) {
17160 if (iv !== null) throw new IllegalStateError("you must specify either adata or iv, not both");
17161 if (is_buffer(adata) || is_bytes(adata)) {
17162 adata = new Uint8Array(adata);
17163 } else if (is_string(adata)) {
17165 adata = new Uint8Array(str.length);
17166 for (var i =
0; i < str.length; ++i) adata[i] = str.charCodeAt(i);
17168 throw new TypeError("unexpected adata type");
17170 if (adata.byteLength ===
0 || adata.byteLength
> _ccm_adata_maxLength) throw new IllegalArgumentError("illegal adata length");
17171 this.adata = adata;
17174 this.adata = adata = null;
17176 if (dataLength !== -
1) _ccm_calculate_iv.call(this);
17179 function ccm_aes_encrypt_process(data) {
17180 if (!this.key) throw new IllegalStateError("no key is associated with the instance");
17181 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17182 if ((counter -
1 <<
4) + len + dlen
> _ccm_data_maxLength) throw new RangeError("counter overflow");
17183 var result = new Uint8Array(rlen);
17184 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17185 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17187 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17192 asm_args[
1] = len & ~
15;
17193 asm_args[
16] = counter /
4294967296 >>> 0;
17194 asm_args[
17] = counter
>>> 0;
17195 wlen = asm.ccm_encrypt.apply(asm, asm_args);
17196 result.set(heap.subarray(pos, pos + wlen), rpos);
17197 counter += wlen
>>> 4;
17203 pos = _aes_heap_start;
17207 this.result = result;
17208 this.counter = counter;
17213 function ccm_aes_encrypt_finish() {
17214 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17215 var asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, tagSize = this.tagSize, pos = this.pos, len = this.len, wlen =
0;
17216 var result = new Uint8Array(len + tagSize);
17217 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17218 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17221 asm_args[
16] = counter /
4294967296 >>> 0;
17222 asm_args[
17] = counter
>>> 0;
17223 wlen = asm.ccm_encrypt.apply(asm, asm_args);
17224 result.set(heap.subarray(pos, pos + wlen));
17226 pos = _aes_heap_start;
17228 asm.save_state(_aes_heap_start);
17229 asm_args[
0] = _aes_heap_start, asm_args[
1] = _aes_block_size, asm_args[
16] =
0;
17231 asm.ccm_encrypt.apply(asm, asm_args);
17232 result.set(heap.subarray(_aes_heap_start, _aes_heap_start + tagSize), wlen);
17233 this.result = result;
17234 this.counter = counter;
17239 function ccm_aes_encrypt(data) {
17240 this.dataLength = this.dataLeft = data.byteLength || data.length ||
0;
17241 var result1 = ccm_aes_encrypt_process.call(this, data).result, result2 = ccm_aes_encrypt_finish.call(this).result, result;
17242 result = new Uint8Array(result1.length + result2.length);
17243 result.set(result1);
17244 result.set(result2, result1.length);
17245 this.result = result;
17248 function ccm_aes_decrypt_process(data) {
17249 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17250 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, tagSize = this.tagSize, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17251 if ((counter -
1 <<
4) + len + dlen
> _ccm_data_maxLength) throw new RangeError("counter overflow");
17252 var result = new Uint8Array(rlen);
17253 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17254 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17256 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17261 asm_args[
1] = len + dlen - tagSize
>= _aes_block_size ? dlen
>= tagSize ? len & ~
15 : len + dlen - tagSize & ~
15 :
0;
17262 asm_args[
16] = counter /
4294967296 >>> 0;
17263 asm_args[
17] = counter
>>> 0;
17264 wlen = asm.ccm_decrypt.apply(asm, asm_args);
17265 result.set(heap.subarray(pos, pos + wlen), rpos);
17266 counter += wlen
>>> 4;
17272 pos = _aes_heap_start;
17276 this.result = result.subarray(
0, rpos);
17277 this.counter = counter;
17282 function ccm_aes_decrypt_finish() {
17283 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17284 var asm = this.asm, heap = this.heap, nonce = this.nonce, counter = this.counter, tagSize = this.tagSize, pos = this.pos, len = this.len, rlen = len - tagSize, wlen =
0;
17285 if (len < tagSize) throw new IllegalStateError(
"authentication tag not found");
17286 var result = new Uint8Array(rlen), atag = new Uint8Array(heap.subarray(pos + rlen, pos + len));
17287 var asm_args = [
0,
0, this.lengthSize -
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0 ];
17288 for (var i =
0; i < nonce.length; i++) asm_args[
3 + i] = nonce[i];
17290 asm_args[
1] = rlen;
17291 asm_args[
16] = counter /
4294967296 >>> 0;
17292 asm_args[
17] = counter
>>> 0;
17293 wlen = asm.ccm_decrypt.apply(asm, asm_args);
17294 result.set(heap.subarray(pos, pos + wlen));
17296 pos = _aes_heap_start;
17298 asm.save_state(_aes_heap_start);
17299 asm_args[
0] = _aes_heap_start, asm_args[
1] = _aes_block_size, asm_args[
16] =
0;
17301 asm.ccm_encrypt.apply(asm, asm_args);
17303 for (var i =
0; i < tagSize; ++i) acheck |= atag[i] ^ heap[_aes_heap_start + i];
17304 if (acheck) throw new SecurityError(
"data integrity check failed");
17305 this.result = result;
17306 this.counter = counter;
17311 function ccm_aes_decrypt(data) {
17312 this.dataLength = this.dataLeft = data.byteLength || data.length ||
0;
17313 var result1 = ccm_aes_decrypt_process.call(this, data).result, result2 = ccm_aes_decrypt_finish.call(this).result, result;
17314 result = new Uint8Array(result1.length + result2.length);
17315 result.set(result1);
17316 result.set(result2, result1.length);
17317 this.result = result;
17320 var ccm_aes_prototype = ccm_aes_constructor.prototype;
17321 ccm_aes_prototype.reset = ccm_aes_reset;
17322 ccm_aes_prototype.encrypt = ccm_aes_encrypt;
17323 ccm_aes_prototype.decrypt = ccm_aes_decrypt;
17324 var ccm_aes_encrypt_prototype = ccm_aes_encrypt_constructor.prototype;
17325 ccm_aes_encrypt_prototype.reset = ccm_aes_reset;
17326 ccm_aes_encrypt_prototype.process = ccm_aes_encrypt_process;
17327 ccm_aes_encrypt_prototype.finish = ccm_aes_encrypt_finish;
17328 var ccm_aes_decrypt_prototype = ccm_aes_decrypt_constructor.prototype;
17329 ccm_aes_decrypt_prototype.reset = ccm_aes_reset;
17330 ccm_aes_decrypt_prototype.process = ccm_aes_decrypt_process;
17331 ccm_aes_decrypt_prototype.finish = ccm_aes_decrypt_finish;
17332 function cfb_aes_constructor(options) {
17333 this.padding = false;
17336 _aes_constructor.call(this, options);
17338 function cfb_aes_encrypt_constructor(options) {
17339 cfb_aes_constructor.call(this, options);
17341 function cfb_aes_decrypt_constructor(options) {
17342 cfb_aes_constructor.call(this, options);
17344 function cfb_aes_reset(options) {
17345 options = options || {};
17346 _aes_reset.call(this, options);
17347 _aes_init_iv.call(this, options.iv);
17350 function cfb_aes_encrypt_process(data) {
17351 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17352 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17353 var result = new Uint8Array(rlen);
17355 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17359 wlen = asm.cfb_encrypt(pos, _aes_block_size * Math.floor(len / _aes_block_size));
17360 result.set(heap.subarray(pos, pos + wlen), rpos);
17366 pos = _aes_heap_start;
17370 this.result = result;
17375 function cfb_aes_encrypt_finish() {
17376 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17377 var asm = this.asm, heap = this.heap, pos = this.pos, len = this.len;
17378 var result = new Uint8Array(len);
17379 asm.cfb_encrypt(pos, len);
17380 result.set(heap.subarray(pos, pos + len));
17381 this.result = result;
17382 this.pos = _aes_heap_start;
17386 function cfb_aes_encrypt(data) {
17387 var result1 = cfb_aes_encrypt_process.call(this, data).result, result2 = cfb_aes_encrypt_finish.call(this).result, result;
17388 result = new Uint8Array(result1.length + result2.length);
17389 result.set(result1);
17390 result.set(result2, result1.length);
17391 this.result = result;
17394 function cfb_aes_decrypt_process(data) {
17395 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17396 var dpos = data.byteOffset ||
0, dlen = data.byteLength || data.length ||
0, asm = this.asm, heap = this.heap, pos = this.pos, len = this.len, rpos =
0, rlen = _aes_block_size * Math.floor((len + dlen) / _aes_block_size), wlen =
0;
17397 var result = new Uint8Array(rlen);
17399 wlen = _aes_heap_write(heap, pos + len, data, dpos, dlen);
17403 wlen = asm.cfb_decrypt(pos, _aes_block_size * Math.floor(len / _aes_block_size));
17404 result.set(heap.subarray(pos, pos + wlen), rpos);
17410 pos = _aes_heap_start;
17414 this.result = result.subarray(
0, rpos);
17419 function cfb_aes_decrypt_finish() {
17420 if (!this.key) throw new IllegalStateError(
"no key is associated with the instance");
17421 var asm = this.asm, heap = this.heap, pos = this.pos, len = this.len;
17423 this.result = new Uint8Array(
0);
17424 this.pos = _aes_heap_start;
17428 var result = new Uint8Array(len);
17429 asm.cfb_decrypt(pos, len);
17430 result.set(heap.subarray(pos, pos + len));
17431 this.result = result;
17432 this.pos = _aes_heap_start;
17436 function cfb_aes_decrypt(data) {
17437 var result1 = cfb_aes_decrypt_process.call(this, data).result, result2 = cfb_aes_decrypt_finish.call(this).result, result;
17438 result = new Uint8Array(result1.length + result2.length);
17439 result.set(result1);
17440 result.set(result2, result1.length);
17441 this.result = result;
17444 var cfb_aes_encrypt_prototype = cfb_aes_encrypt_constructor.prototype;
17445 cfb_aes_encrypt_prototype.reset = cfb_aes_reset;
17446 cfb_aes_encrypt_prototype.process = cfb_aes_encrypt_process;
17447 cfb_aes_encrypt_prototype.finish = cfb_aes_encrypt_finish;
17448 var cfb_aes_decrypt_prototype = cfb_aes_decrypt_constructor.prototype;
17449 cfb_aes_decrypt_prototype.reset = cfb_aes_reset;
17450 cfb_aes_decrypt_prototype.process = cfb_aes_decrypt_process;
17451 cfb_aes_decrypt_prototype.finish = cfb_aes_decrypt_finish;
17452 var cfb_aes_prototype = cfb_aes_constructor.prototype;
17453 cfb_aes_prototype.reset = cfb_aes_reset;
17454 cfb_aes_prototype.encrypt = cfb_aes_encrypt;
17455 cfb_aes_prototype.decrypt = cfb_aes_decrypt;
17456 function sha256_asm(stdlib, foreign, buffer) {
17457 // Closure Compiler warning - commented out
17459 var H0 =
0, H1 =
0, H2 =
0, H3 =
0, H4 =
0, H5 =
0, H6 =
0, H7 =
0, TOTAL =
0;
17460 var I0 =
0, I1 =
0, I2 =
0, I3 =
0, I4 =
0, I5 =
0, I6 =
0, I7 =
0, O0 =
0, O1 =
0, O2 =
0, O3 =
0, O4 =
0, O5 =
0, O6 =
0, O7 =
0;
17461 var HEAP = new stdlib.Uint8Array(buffer);
17462 function _core(w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15) {
17479 var a =
0, b =
0, c =
0, d =
0, e =
0, f =
0, g =
0, h =
0, t =
0;
17488 t = w0 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1116352408 |
0;
17496 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17497 t = w1 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1899447441 |
0;
17505 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17506 t = w2 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3049323471 |
0;
17514 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17515 t = w3 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3921009573 |
0;
17523 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17524 t = w4 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
961987163 |
0;
17532 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17533 t = w5 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1508970993 |
0;
17541 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17542 t = w6 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2453635748 |
0;
17550 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17551 t = w7 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2870763221 |
0;
17559 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17560 t = w8 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3624381080 |
0;
17568 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17569 t = w9 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
310598401 |
0;
17577 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17578 t = w10 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
607225278 |
0;
17586 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17587 t = w11 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1426881987 |
0;
17595 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17596 t = w12 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1925078388 |
0;
17604 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17605 t = w13 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2162078206 |
0;
17613 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17614 t = w14 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2614888103 |
0;
17622 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17623 t = w15 + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3248222580 |
0;
17631 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17632 w0 = t = (w1
>>> 7 ^ w1
>>> 18 ^ w1
>>> 3 ^ w1 <<
25 ^ w1 <<
14) + (w14
>>> 17 ^ w14
>>> 19 ^ w14
>>> 10 ^ w14 <<
15 ^ w14 <<
13) + w0 + w9 |
0;
17633 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3835390401 |
0;
17641 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17642 w1 = t = (w2
>>> 7 ^ w2
>>> 18 ^ w2
>>> 3 ^ w2 <<
25 ^ w2 <<
14) + (w15
>>> 17 ^ w15
>>> 19 ^ w15
>>> 10 ^ w15 <<
15 ^ w15 <<
13) + w1 + w10 |
0;
17643 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
4022224774 |
0;
17651 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17652 w2 = t = (w3
>>> 7 ^ w3
>>> 18 ^ w3
>>> 3 ^ w3 <<
25 ^ w3 <<
14) + (w0
>>> 17 ^ w0
>>> 19 ^ w0
>>> 10 ^ w0 <<
15 ^ w0 <<
13) + w2 + w11 |
0;
17653 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
264347078 |
0;
17661 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17662 w3 = t = (w4
>>> 7 ^ w4
>>> 18 ^ w4
>>> 3 ^ w4 <<
25 ^ w4 <<
14) + (w1
>>> 17 ^ w1
>>> 19 ^ w1
>>> 10 ^ w1 <<
15 ^ w1 <<
13) + w3 + w12 |
0;
17663 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
604807628 |
0;
17671 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17672 w4 = t = (w5
>>> 7 ^ w5
>>> 18 ^ w5
>>> 3 ^ w5 <<
25 ^ w5 <<
14) + (w2
>>> 17 ^ w2
>>> 19 ^ w2
>>> 10 ^ w2 <<
15 ^ w2 <<
13) + w4 + w13 |
0;
17673 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
770255983 |
0;
17681 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17682 w5 = t = (w6
>>> 7 ^ w6
>>> 18 ^ w6
>>> 3 ^ w6 <<
25 ^ w6 <<
14) + (w3
>>> 17 ^ w3
>>> 19 ^ w3
>>> 10 ^ w3 <<
15 ^ w3 <<
13) + w5 + w14 |
0;
17683 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1249150122 |
0;
17691 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17692 w6 = t = (w7
>>> 7 ^ w7
>>> 18 ^ w7
>>> 3 ^ w7 <<
25 ^ w7 <<
14) + (w4
>>> 17 ^ w4
>>> 19 ^ w4
>>> 10 ^ w4 <<
15 ^ w4 <<
13) + w6 + w15 |
0;
17693 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1555081692 |
0;
17701 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17702 w7 = t = (w8
>>> 7 ^ w8
>>> 18 ^ w8
>>> 3 ^ w8 <<
25 ^ w8 <<
14) + (w5
>>> 17 ^ w5
>>> 19 ^ w5
>>> 10 ^ w5 <<
15 ^ w5 <<
13) + w7 + w0 |
0;
17703 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1996064986 |
0;
17711 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17712 w8 = t = (w9
>>> 7 ^ w9
>>> 18 ^ w9
>>> 3 ^ w9 <<
25 ^ w9 <<
14) + (w6
>>> 17 ^ w6
>>> 19 ^ w6
>>> 10 ^ w6 <<
15 ^ w6 <<
13) + w8 + w1 |
0;
17713 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2554220882 |
0;
17721 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17722 w9 = t = (w10
>>> 7 ^ w10
>>> 18 ^ w10
>>> 3 ^ w10 <<
25 ^ w10 <<
14) + (w7
>>> 17 ^ w7
>>> 19 ^ w7
>>> 10 ^ w7 <<
15 ^ w7 <<
13) + w9 + w2 |
0;
17723 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2821834349 |
0;
17731 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17732 w10 = t = (w11
>>> 7 ^ w11
>>> 18 ^ w11
>>> 3 ^ w11 <<
25 ^ w11 <<
14) + (w8
>>> 17 ^ w8
>>> 19 ^ w8
>>> 10 ^ w8 <<
15 ^ w8 <<
13) + w10 + w3 |
0;
17733 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2952996808 |
0;
17741 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17742 w11 = t = (w12
>>> 7 ^ w12
>>> 18 ^ w12
>>> 3 ^ w12 <<
25 ^ w12 <<
14) + (w9
>>> 17 ^ w9
>>> 19 ^ w9
>>> 10 ^ w9 <<
15 ^ w9 <<
13) + w11 + w4 |
0;
17743 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3210313671 |
0;
17751 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17752 w12 = t = (w13
>>> 7 ^ w13
>>> 18 ^ w13
>>> 3 ^ w13 <<
25 ^ w13 <<
14) + (w10
>>> 17 ^ w10
>>> 19 ^ w10
>>> 10 ^ w10 <<
15 ^ w10 <<
13) + w12 + w5 |
0;
17753 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3336571891 |
0;
17761 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17762 w13 = t = (w14
>>> 7 ^ w14
>>> 18 ^ w14
>>> 3 ^ w14 <<
25 ^ w14 <<
14) + (w11
>>> 17 ^ w11
>>> 19 ^ w11
>>> 10 ^ w11 <<
15 ^ w11 <<
13) + w13 + w6 |
0;
17763 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3584528711 |
0;
17771 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17772 w14 = t = (w15
>>> 7 ^ w15
>>> 18 ^ w15
>>> 3 ^ w15 <<
25 ^ w15 <<
14) + (w12
>>> 17 ^ w12
>>> 19 ^ w12
>>> 10 ^ w12 <<
15 ^ w12 <<
13) + w14 + w7 |
0;
17773 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
113926993 |
0;
17781 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17782 w15 = t = (w0
>>> 7 ^ w0
>>> 18 ^ w0
>>> 3 ^ w0 <<
25 ^ w0 <<
14) + (w13
>>> 17 ^ w13
>>> 19 ^ w13
>>> 10 ^ w13 <<
15 ^ w13 <<
13) + w15 + w8 |
0;
17783 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
338241895 |
0;
17791 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17792 w0 = t = (w1
>>> 7 ^ w1
>>> 18 ^ w1
>>> 3 ^ w1 <<
25 ^ w1 <<
14) + (w14
>>> 17 ^ w14
>>> 19 ^ w14
>>> 10 ^ w14 <<
15 ^ w14 <<
13) + w0 + w9 |
0;
17793 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
666307205 |
0;
17801 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17802 w1 = t = (w2
>>> 7 ^ w2
>>> 18 ^ w2
>>> 3 ^ w2 <<
25 ^ w2 <<
14) + (w15
>>> 17 ^ w15
>>> 19 ^ w15
>>> 10 ^ w15 <<
15 ^ w15 <<
13) + w1 + w10 |
0;
17803 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
773529912 |
0;
17811 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17812 w2 = t = (w3
>>> 7 ^ w3
>>> 18 ^ w3
>>> 3 ^ w3 <<
25 ^ w3 <<
14) + (w0
>>> 17 ^ w0
>>> 19 ^ w0
>>> 10 ^ w0 <<
15 ^ w0 <<
13) + w2 + w11 |
0;
17813 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1294757372 |
0;
17821 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17822 w3 = t = (w4
>>> 7 ^ w4
>>> 18 ^ w4
>>> 3 ^ w4 <<
25 ^ w4 <<
14) + (w1
>>> 17 ^ w1
>>> 19 ^ w1
>>> 10 ^ w1 <<
15 ^ w1 <<
13) + w3 + w12 |
0;
17823 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1396182291 |
0;
17831 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17832 w4 = t = (w5
>>> 7 ^ w5
>>> 18 ^ w5
>>> 3 ^ w5 <<
25 ^ w5 <<
14) + (w2
>>> 17 ^ w2
>>> 19 ^ w2
>>> 10 ^ w2 <<
15 ^ w2 <<
13) + w4 + w13 |
0;
17833 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1695183700 |
0;
17841 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17842 w5 = t = (w6
>>> 7 ^ w6
>>> 18 ^ w6
>>> 3 ^ w6 <<
25 ^ w6 <<
14) + (w3
>>> 17 ^ w3
>>> 19 ^ w3
>>> 10 ^ w3 <<
15 ^ w3 <<
13) + w5 + w14 |
0;
17843 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1986661051 |
0;
17851 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17852 w6 = t = (w7
>>> 7 ^ w7
>>> 18 ^ w7
>>> 3 ^ w7 <<
25 ^ w7 <<
14) + (w4
>>> 17 ^ w4
>>> 19 ^ w4
>>> 10 ^ w4 <<
15 ^ w4 <<
13) + w6 + w15 |
0;
17853 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2177026350 |
0;
17861 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17862 w7 = t = (w8
>>> 7 ^ w8
>>> 18 ^ w8
>>> 3 ^ w8 <<
25 ^ w8 <<
14) + (w5
>>> 17 ^ w5
>>> 19 ^ w5
>>> 10 ^ w5 <<
15 ^ w5 <<
13) + w7 + w0 |
0;
17863 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2456956037 |
0;
17871 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17872 w8 = t = (w9
>>> 7 ^ w9
>>> 18 ^ w9
>>> 3 ^ w9 <<
25 ^ w9 <<
14) + (w6
>>> 17 ^ w6
>>> 19 ^ w6
>>> 10 ^ w6 <<
15 ^ w6 <<
13) + w8 + w1 |
0;
17873 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2730485921 |
0;
17881 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17882 w9 = t = (w10
>>> 7 ^ w10
>>> 18 ^ w10
>>> 3 ^ w10 <<
25 ^ w10 <<
14) + (w7
>>> 17 ^ w7
>>> 19 ^ w7
>>> 10 ^ w7 <<
15 ^ w7 <<
13) + w9 + w2 |
0;
17883 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2820302411 |
0;
17891 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17892 w10 = t = (w11
>>> 7 ^ w11
>>> 18 ^ w11
>>> 3 ^ w11 <<
25 ^ w11 <<
14) + (w8
>>> 17 ^ w8
>>> 19 ^ w8
>>> 10 ^ w8 <<
15 ^ w8 <<
13) + w10 + w3 |
0;
17893 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3259730800 |
0;
17901 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17902 w11 = t = (w12
>>> 7 ^ w12
>>> 18 ^ w12
>>> 3 ^ w12 <<
25 ^ w12 <<
14) + (w9
>>> 17 ^ w9
>>> 19 ^ w9
>>> 10 ^ w9 <<
15 ^ w9 <<
13) + w11 + w4 |
0;
17903 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3345764771 |
0;
17911 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17912 w12 = t = (w13
>>> 7 ^ w13
>>> 18 ^ w13
>>> 3 ^ w13 <<
25 ^ w13 <<
14) + (w10
>>> 17 ^ w10
>>> 19 ^ w10
>>> 10 ^ w10 <<
15 ^ w10 <<
13) + w12 + w5 |
0;
17913 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3516065817 |
0;
17921 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17922 w13 = t = (w14
>>> 7 ^ w14
>>> 18 ^ w14
>>> 3 ^ w14 <<
25 ^ w14 <<
14) + (w11
>>> 17 ^ w11
>>> 19 ^ w11
>>> 10 ^ w11 <<
15 ^ w11 <<
13) + w13 + w6 |
0;
17923 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3600352804 |
0;
17931 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17932 w14 = t = (w15
>>> 7 ^ w15
>>> 18 ^ w15
>>> 3 ^ w15 <<
25 ^ w15 <<
14) + (w12
>>> 17 ^ w12
>>> 19 ^ w12
>>> 10 ^ w12 <<
15 ^ w12 <<
13) + w14 + w7 |
0;
17933 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
4094571909 |
0;
17941 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17942 w15 = t = (w0
>>> 7 ^ w0
>>> 18 ^ w0
>>> 3 ^ w0 <<
25 ^ w0 <<
14) + (w13
>>> 17 ^ w13
>>> 19 ^ w13
>>> 10 ^ w13 <<
15 ^ w13 <<
13) + w15 + w8 |
0;
17943 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
275423344 |
0;
17951 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17952 w0 = t = (w1
>>> 7 ^ w1
>>> 18 ^ w1
>>> 3 ^ w1 <<
25 ^ w1 <<
14) + (w14
>>> 17 ^ w14
>>> 19 ^ w14
>>> 10 ^ w14 <<
15 ^ w14 <<
13) + w0 + w9 |
0;
17953 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
430227734 |
0;
17961 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17962 w1 = t = (w2
>>> 7 ^ w2
>>> 18 ^ w2
>>> 3 ^ w2 <<
25 ^ w2 <<
14) + (w15
>>> 17 ^ w15
>>> 19 ^ w15
>>> 10 ^ w15 <<
15 ^ w15 <<
13) + w1 + w10 |
0;
17963 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
506948616 |
0;
17971 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17972 w2 = t = (w3
>>> 7 ^ w3
>>> 18 ^ w3
>>> 3 ^ w3 <<
25 ^ w3 <<
14) + (w0
>>> 17 ^ w0
>>> 19 ^ w0
>>> 10 ^ w0 <<
15 ^ w0 <<
13) + w2 + w11 |
0;
17973 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
659060556 |
0;
17981 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17982 w3 = t = (w4
>>> 7 ^ w4
>>> 18 ^ w4
>>> 3 ^ w4 <<
25 ^ w4 <<
14) + (w1
>>> 17 ^ w1
>>> 19 ^ w1
>>> 10 ^ w1 <<
15 ^ w1 <<
13) + w3 + w12 |
0;
17983 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
883997877 |
0;
17991 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
17992 w4 = t = (w5
>>> 7 ^ w5
>>> 18 ^ w5
>>> 3 ^ w5 <<
25 ^ w5 <<
14) + (w2
>>> 17 ^ w2
>>> 19 ^ w2
>>> 10 ^ w2 <<
15 ^ w2 <<
13) + w4 + w13 |
0;
17993 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
958139571 |
0;
18001 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18002 w5 = t = (w6
>>> 7 ^ w6
>>> 18 ^ w6
>>> 3 ^ w6 <<
25 ^ w6 <<
14) + (w3
>>> 17 ^ w3
>>> 19 ^ w3
>>> 10 ^ w3 <<
15 ^ w3 <<
13) + w5 + w14 |
0;
18003 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1322822218 |
0;
18011 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18012 w6 = t = (w7
>>> 7 ^ w7
>>> 18 ^ w7
>>> 3 ^ w7 <<
25 ^ w7 <<
14) + (w4
>>> 17 ^ w4
>>> 19 ^ w4
>>> 10 ^ w4 <<
15 ^ w4 <<
13) + w6 + w15 |
0;
18013 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1537002063 |
0;
18021 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18022 w7 = t = (w8
>>> 7 ^ w8
>>> 18 ^ w8
>>> 3 ^ w8 <<
25 ^ w8 <<
14) + (w5
>>> 17 ^ w5
>>> 19 ^ w5
>>> 10 ^ w5 <<
15 ^ w5 <<
13) + w7 + w0 |
0;
18023 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1747873779 |
0;
18031 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18032 w8 = t = (w9
>>> 7 ^ w9
>>> 18 ^ w9
>>> 3 ^ w9 <<
25 ^ w9 <<
14) + (w6
>>> 17 ^ w6
>>> 19 ^ w6
>>> 10 ^ w6 <<
15 ^ w6 <<
13) + w8 + w1 |
0;
18033 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
1955562222 |
0;
18041 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18042 w9 = t = (w10
>>> 7 ^ w10
>>> 18 ^ w10
>>> 3 ^ w10 <<
25 ^ w10 <<
14) + (w7
>>> 17 ^ w7
>>> 19 ^ w7
>>> 10 ^ w7 <<
15 ^ w7 <<
13) + w9 + w2 |
0;
18043 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2024104815 |
0;
18051 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18052 w10 = t = (w11
>>> 7 ^ w11
>>> 18 ^ w11
>>> 3 ^ w11 <<
25 ^ w11 <<
14) + (w8
>>> 17 ^ w8
>>> 19 ^ w8
>>> 10 ^ w8 <<
15 ^ w8 <<
13) + w10 + w3 |
0;
18053 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2227730452 |
0;
18061 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18062 w11 = t = (w12
>>> 7 ^ w12
>>> 18 ^ w12
>>> 3 ^ w12 <<
25 ^ w12 <<
14) + (w9
>>> 17 ^ w9
>>> 19 ^ w9
>>> 10 ^ w9 <<
15 ^ w9 <<
13) + w11 + w4 |
0;
18063 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2361852424 |
0;
18071 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18072 w12 = t = (w13
>>> 7 ^ w13
>>> 18 ^ w13
>>> 3 ^ w13 <<
25 ^ w13 <<
14) + (w10
>>> 17 ^ w10
>>> 19 ^ w10
>>> 10 ^ w10 <<
15 ^ w10 <<
13) + w12 + w5 |
0;
18073 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2428436474 |
0;
18081 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18082 w13 = t = (w14
>>> 7 ^ w14
>>> 18 ^ w14
>>> 3 ^ w14 <<
25 ^ w14 <<
14) + (w11
>>> 17 ^ w11
>>> 19 ^ w11
>>> 10 ^ w11 <<
15 ^ w11 <<
13) + w13 + w6 |
0;
18083 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
2756734187 |
0;
18091 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18092 w14 = t = (w15
>>> 7 ^ w15
>>> 18 ^ w15
>>> 3 ^ w15 <<
25 ^ w15 <<
14) + (w12
>>> 17 ^ w12
>>> 19 ^ w12
>>> 10 ^ w12 <<
15 ^ w12 <<
13) + w14 + w7 |
0;
18093 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3204031479 |
0;
18101 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18102 w15 = t = (w0
>>> 7 ^ w0
>>> 18 ^ w0
>>> 3 ^ w0 <<
25 ^ w0 <<
14) + (w13
>>> 17 ^ w13
>>> 19 ^ w13
>>> 10 ^ w13 <<
15 ^ w13 <<
13) + w15 + w8 |
0;
18103 t = t + h + (e
>>> 6 ^ e
>>> 11 ^ e
>>> 25 ^ e <<
26 ^ e <<
21 ^ e <<
7) + (g ^ e & (f ^ g)) +
3329325298 |
0;
18111 a = t + (b & c ^ d & (b ^ c)) + (b
>>> 2 ^ b
>>> 13 ^ b
>>> 22 ^ b <<
30 ^ b <<
19 ^ b <<
10) |
0;
18121 function _core_heap(offset) {
18122 offset = offset |
0;
18123 _core(HEAP[offset |
0] <<
24 | HEAP[offset |
1] <<
16 | HEAP[offset |
2] <<
8 | HEAP[offset |
3], HEAP[offset |
4] <<
24 | HEAP[offset |
5] <<
16 | HEAP[offset |
6] <<
8 | HEAP[offset |
7], HEAP[offset |
8] <<
24 | HEAP[offset |
9] <<
16 | HEAP[offset |
10] <<
8 | HEAP[offset |
11], HEAP[offset |
12] <<
24 | HEAP[offset |
13] <<
16 | HEAP[offset |
14] <<
8 | HEAP[offset |
15], HEAP[offset |
16] <<
24 | HEAP[offset |
17] <<
16 | HEAP[offset |
18] <<
8 | HEAP[offset |
19], HEAP[offset |
20] <<
24 | HEAP[offset |
21] <<
16 | HEAP[offset |
22] <<
8 | HEAP[offset |
23], HEAP[offset |
24] <<
24 | HEAP[offset |
25] <<
16 | HEAP[offset |
26] <<
8 | HEAP[offset |
27], HEAP[offset |
28] <<
24 | HEAP[offset |
29] <<
16 | HEAP[offset |
30] <<
8 | HEAP[offset |
31], HEAP[offset |
32] <<
24 | HEAP[offset |
33] <<
16 | HEAP[offset |
34] <<
8 | HEAP[offset |
35], HEAP[offset |
36] <<
24 | HEAP[offset |
37] <<
16 | HEAP[offset |
38] <<
8 | HEAP[offset |
39], HEAP[offset |
40] <<
24 | HEAP[offset |
41] <<
16 | HEAP[offset |
42] <<
8 | HEAP[offset |
43], HEAP[offset |
44] <<
24 | HEAP[offset |
45] <<
16 | HEAP[offset |
46] <<
8 | HEAP[offset |
47], HEAP[offset |
48] <<
24 | HEAP[offset |
49] <<
16 | HEAP[offset |
50] <<
8 | HEAP[offset |
51], HEAP[offset |
52] <<
24 | HEAP[offset |
53] <<
16 | HEAP[offset |
54] <<
8 | HEAP[offset |
55], HEAP[offset |
56] <<
24 | HEAP[offset |
57] <<
16 | HEAP[offset |
58] <<
8 | HEAP[offset |
59], HEAP[offset |
60] <<
24 | HEAP[offset |
61] <<
16 | HEAP[offset |
62] <<
8 | HEAP[offset |
63]);
18125 function _state_to_heap(output) {
18126 output = output |
0;
18127 HEAP[output |
0] = H0
>>> 24;
18128 HEAP[output |
1] = H0
>>> 16 &
255;
18129 HEAP[output |
2] = H0
>>> 8 &
255;
18130 HEAP[output |
3] = H0 &
255;
18131 HEAP[output |
4] = H1
>>> 24;
18132 HEAP[output |
5] = H1
>>> 16 &
255;
18133 HEAP[output |
6] = H1
>>> 8 &
255;
18134 HEAP[output |
7] = H1 &
255;
18135 HEAP[output |
8] = H2
>>> 24;
18136 HEAP[output |
9] = H2
>>> 16 &
255;
18137 HEAP[output |
10] = H2
>>> 8 &
255;
18138 HEAP[output |
11] = H2 &
255;
18139 HEAP[output |
12] = H3
>>> 24;
18140 HEAP[output |
13] = H3
>>> 16 &
255;
18141 HEAP[output |
14] = H3
>>> 8 &
255;
18142 HEAP[output |
15] = H3 &
255;
18143 HEAP[output |
16] = H4
>>> 24;
18144 HEAP[output |
17] = H4
>>> 16 &
255;
18145 HEAP[output |
18] = H4
>>> 8 &
255;
18146 HEAP[output |
19] = H4 &
255;
18147 HEAP[output |
20] = H5
>>> 24;
18148 HEAP[output |
21] = H5
>>> 16 &
255;
18149 HEAP[output |
22] = H5
>>> 8 &
255;
18150 HEAP[output |
23] = H5 &
255;
18151 HEAP[output |
24] = H6
>>> 24;
18152 HEAP[output |
25] = H6
>>> 16 &
255;
18153 HEAP[output |
26] = H6
>>> 8 &
255;
18154 HEAP[output |
27] = H6 &
255;
18155 HEAP[output |
28] = H7
>>> 24;
18156 HEAP[output |
29] = H7
>>> 16 &
255;
18157 HEAP[output |
30] = H7
>>> 8 &
255;
18158 HEAP[output |
31] = H7 &
255;
18171 function init(h0, h1, h2, h3, h4, h5, h6, h7, total) {
18191 function process(offset, length) {
18192 offset = offset |
0;
18193 length = length |
0;
18195 if (offset &
63) return -
1;
18196 while ((length |
0)
>=
64) {
18197 _core_heap(offset);
18198 offset = offset +
64 |
0;
18199 length = length -
64 |
0;
18200 hashed = hashed +
64 |
0;
18202 TOTAL = TOTAL + hashed |
0;
18205 function finish(offset, length, output) {
18206 offset = offset |
0;
18207 length = length |
0;
18208 output = output |
0;
18209 var hashed =
0, i =
0;
18210 if (offset &
63) return -
1;
18211 if (~output) if (output &
31) return -
1;
18212 if ((length |
0)
>=
64) {
18213 hashed = process(offset, length) |
0;
18214 if ((hashed |
0) == -
1) return -
1;
18215 offset = offset + hashed |
0;
18216 length = length - hashed |
0;
18218 hashed = hashed + length |
0;
18219 TOTAL = TOTAL + length |
0;
18220 HEAP[offset | length] =
128;
18221 if ((length |
0)
>=
56) {
18222 for (i = length +
1 |
0; (i |
0) <
64; i = i +
1 |
0) HEAP[offset | i] =
0;
18223 _core_heap(offset);
18225 HEAP[offset |
0] =
0;
18227 for (i = length +
1 |
0; (i |
0) <
59; i = i +
1 |
0) HEAP[offset | i] =
0;
18228 HEAP[offset |
59] = TOTAL
>>> 29;
18229 HEAP[offset |
60] = TOTAL
>>> 21 &
255;
18230 HEAP[offset |
61] = TOTAL
>>> 13 &
255;
18231 HEAP[offset |
62] = TOTAL
>>> 5 &
255;
18232 HEAP[offset |
63] = TOTAL <<
3 &
255;
18233 _core_heap(offset);
18234 if (~output) _state_to_heap(output);
18237 function hmac_reset() {
18248 function _hmac_opad() {
18259 function hmac_init(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) {
18277 _core(p0 ^
1549556828, p1 ^
1549556828, p2 ^
1549556828, p3 ^
1549556828, p4 ^
1549556828, p5 ^
1549556828, p6 ^
1549556828, p7 ^
1549556828, p8 ^
1549556828, p9 ^
1549556828, p10 ^
1549556828, p11 ^
1549556828, p12 ^
1549556828, p13 ^
1549556828, p14 ^
1549556828, p15 ^
1549556828);
18287 _core(p0 ^
909522486, p1 ^
909522486, p2 ^
909522486, p3 ^
909522486, p4 ^
909522486, p5 ^
909522486, p6 ^
909522486, p7 ^
909522486, p8 ^
909522486, p9 ^
909522486, p10 ^
909522486, p11 ^
909522486, p12 ^
909522486, p13 ^
909522486, p14 ^
909522486, p15 ^
909522486);
18298 function hmac_finish(offset, length, output) {
18299 offset = offset |
0;
18300 length = length |
0;
18301 output = output |
0;
18302 var t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0, hashed =
0;
18303 if (offset &
63) return -
1;
18304 if (~output) if (output &
31) return -
1;
18305 hashed = finish(offset, length, -
1) |
0;
18306 t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;
18308 _core(t0, t1, t2, t3, t4, t5, t6, t7,
2147483648,
0,
0,
0,
0,
0,
0,
768);
18309 if (~output) _state_to_heap(output);
18312 function pbkdf2_generate_block(offset, length, block, count, output) {
18313 offset = offset |
0;
18314 length = length |
0;
18317 output = output |
0;
18318 var h0 =
0, h1 =
0, h2 =
0, h3 =
0, h4 =
0, h5 =
0, h6 =
0, h7 =
0, t0 =
0, t1 =
0, t2 =
0, t3 =
0, t4 =
0, t5 =
0, t6 =
0, t7 =
0;
18319 if (offset &
63) return -
1;
18320 if (~output) if (output &
31) return -
1;
18321 HEAP[offset + length |
0] = block
>>> 24;
18322 HEAP[offset + length +
1 |
0] = block
>>> 16 &
255;
18323 HEAP[offset + length +
2 |
0] = block
>>> 8 &
255;
18324 HEAP[offset + length +
3 |
0] = block &
255;
18325 // Closure compiler warning - The result of the 'bitor' operator is not being used
18326 //hmac_finish(offset, length +
4 |
0, -
1) |
0;
18327 hmac_finish(offset, length +
4 |
0, -
1);
18328 h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5,
18329 h6 = t6 = H6, h7 = t7 = H7;
18330 count = count -
1 |
0;
18331 while ((count |
0)
> 0) {
18333 _core(t0, t1, t2, t3, t4, t5, t6, t7,
2147483648,
0,
0,
0,
0,
0,
0,
768);
18334 t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;
18336 _core(t0, t1, t2, t3, t4, t5, t6, t7,
2147483648,
0,
0,
0,
0,
0,
0,
768);
18337 t0 = H0, t1 = H1, t2 = H2, t3 = H3, t4 = H4, t5 = H5, t6 = H6, t7 = H7;
18346 count = count -
1 |
0;
18356 if (~output) _state_to_heap(output);
18364 hmac_reset: hmac_reset,
18365 hmac_init: hmac_init,
18366 hmac_finish: hmac_finish,
18367 pbkdf2_generate_block: pbkdf2_generate_block
18370 var _sha256_block_size =
64, _sha256_hash_size =
32;
18371 function sha256_constructor(options) {
18372 options = options || {};
18373 options.heapSize = options.heapSize ||
4096;
18374 if (options.heapSize <=
0 || options.heapSize %
4096) throw new IllegalArgumentError(
"heapSize must be a positive number and multiple of 4096");
18375 this.heap = options.heap || new Uint8Array(options.heapSize);
18376 this.asm = options.asm || sha256_asm(global, null, this.heap.buffer);
18377 this.BLOCK_SIZE = _sha256_block_size;
18378 this.HASH_SIZE = _sha256_hash_size;
18381 function sha256_reset() {
18382 this.result = null;
18388 function sha256_process(data) {
18389 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
18390 var dpos =
0, dlen =
0, clen =
0;
18391 if (is_buffer(data) || is_bytes(data)) {
18392 dpos = data.byteOffset ||
0;
18393 dlen = data.byteLength;
18394 } else if (is_string(data)) {
18395 dlen = data.length;
18397 throw new TypeError(
"data isn't of expected type");
18400 clen = this.heap.byteLength - this.pos - this.len;
18401 clen = clen < dlen ? clen : dlen;
18402 if (is_buffer(data) || is_bytes(data)) {
18403 this.heap.set(new Uint8Array(data.buffer || data, dpos, clen), this.pos + this.len);
18405 for (var i =
0; i < clen; i++) this.heap[this.pos + this.len + i] = data.charCodeAt(dpos + i);
18410 clen = this.asm.process(this.pos, this.len);
18411 if (clen < this.len) {
18421 function sha256_finish() {
18422 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
18423 this.asm.finish(this.pos, this.len,
0);
18424 this.result = new Uint8Array(_sha256_hash_size);
18425 this.result.set(this.heap.subarray(
0, _sha256_hash_size));
18430 sha256_constructor.BLOCK_SIZE = _sha256_block_size;
18431 sha256_constructor.HASH_SIZE = _sha256_hash_size;
18432 var sha256_prototype = sha256_constructor.prototype;
18433 sha256_prototype.reset = sha256_reset;
18434 sha256_prototype.process = sha256_process;
18435 sha256_prototype.finish = sha256_finish;
18436 function sha512_asm(stdlib, foreign, buffer) {
18437 // Closure Compiler warning - commented out
18439 var H0h =
0, H0l =
0, H1h =
0, H1l =
0, H2h =
0, H2l =
0, H3h =
0, H3l =
0, H4h =
0, H4l =
0, H5h =
0, H5l =
0, H6h =
0, H6l =
0, H7h =
0, H7l =
0, TOTAL =
0;
18440 var I0h =
0, I0l =
0, I1h =
0, I1l =
0, I2h =
0, I2l =
0, I3h =
0, I3l =
0, I4h =
0, I4l =
0, I5h =
0, I5l =
0, I6h =
0, I6l =
0, I7h =
0, I7l =
0, O0h =
0, O0l =
0, O1h =
0, O1l =
0, O2h =
0, O2l =
0, O3h =
0, O3l =
0, O4h =
0, O4l =
0, O5h =
0, O5l =
0, O6h =
0, O6l =
0, O7h =
0, O7l =
0;
18441 var HEAP = new stdlib.Uint8Array(buffer);
18442 function _core(w0h, w0l, w1h, w1l, w2h, w2l, w3h, w3l, w4h, w4l, w5h, w5l, w6h, w6l, w7h, w7l, w8h, w8l, w9h, w9l, w10h, w10l, w11h, w11l, w12h, w12l, w13h, w13l, w14h, w14l, w15h, w15l) {
18475 var ah =
0, al =
0, bh =
0, bl =
0, ch =
0, cl =
0, dh =
0, dl =
0, eh =
0, el =
0, fh =
0, fl =
0, gh =
0, gl =
0, hh =
0, hl =
0, th =
0, tl =
0, xl =
0;
18492 tl =
3609767458 + w0l |
0;
18493 th =
1116352408 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
18495 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18496 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18498 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18499 xl = gl ^ el & (fl ^ gl) |
0;
18501 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18509 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18516 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18517 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18518 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18520 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18521 tl =
602891725 + w1l |
0;
18522 th =
1899447441 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
18524 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18525 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18527 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18528 xl = gl ^ el & (fl ^ gl) |
0;
18530 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18538 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18545 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18546 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18547 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18549 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18550 tl =
3964484399 + w2l |
0;
18551 th =
3049323471 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
18553 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18554 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18556 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18557 xl = gl ^ el & (fl ^ gl) |
0;
18559 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18567 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18574 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18575 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18576 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18578 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18579 tl =
2173295548 + w3l |
0;
18580 th =
3921009573 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
18582 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18583 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18585 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18586 xl = gl ^ el & (fl ^ gl) |
0;
18588 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18596 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18603 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18604 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18605 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18607 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18608 tl =
4081628472 + w4l |
0;
18609 th =
961987163 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
18611 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18612 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18614 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18615 xl = gl ^ el & (fl ^ gl) |
0;
18617 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18625 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18632 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18633 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18634 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18636 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18637 tl =
3053834265 + w5l |
0;
18638 th =
1508970993 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
18640 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18641 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18643 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18644 xl = gl ^ el & (fl ^ gl) |
0;
18646 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18654 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18661 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18662 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18663 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18665 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18666 tl =
2937671579 + w6l |
0;
18667 th =
2453635748 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
18669 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18670 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18672 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18673 xl = gl ^ el & (fl ^ gl) |
0;
18675 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18683 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18690 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18691 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18692 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18694 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18695 tl =
3664609560 + w7l |
0;
18696 th =
2870763221 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
18698 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18699 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18701 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18702 xl = gl ^ el & (fl ^ gl) |
0;
18704 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18712 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18719 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18720 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18721 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18723 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18724 tl =
2734883394 + w8l |
0;
18725 th =
3624381080 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
18727 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18728 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18730 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18731 xl = gl ^ el & (fl ^ gl) |
0;
18733 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18741 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18748 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18749 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18750 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18752 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18753 tl =
1164996542 + w9l |
0;
18754 th =
310598401 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
18756 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18757 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18759 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18760 xl = gl ^ el & (fl ^ gl) |
0;
18762 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18770 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18777 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18778 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18779 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18781 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18782 tl =
1323610764 + w10l |
0;
18783 th =
607225278 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
18785 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18786 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18788 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18789 xl = gl ^ el & (fl ^ gl) |
0;
18791 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18799 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18806 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18807 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18808 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18810 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18811 tl =
3590304994 + w11l |
0;
18812 th =
1426881987 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
18814 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18815 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18817 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18818 xl = gl ^ el & (fl ^ gl) |
0;
18820 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18828 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18835 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18836 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18837 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18839 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18840 tl =
4068182383 + w12l |
0;
18841 th =
1925078388 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
18843 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18844 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18846 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18847 xl = gl ^ el & (fl ^ gl) |
0;
18849 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18857 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18864 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18865 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18866 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18868 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18869 tl =
991336113 + w13l |
0;
18870 th =
2162078206 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
18872 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18873 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18875 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18876 xl = gl ^ el & (fl ^ gl) |
0;
18878 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18886 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18893 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18894 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18895 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18897 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18898 tl =
633803317 + w14l |
0;
18899 th =
2614888103 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
18901 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18902 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18904 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18905 xl = gl ^ el & (fl ^ gl) |
0;
18907 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18915 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18922 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18923 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18924 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18926 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18927 tl =
3479774868 + w15l |
0;
18928 th =
3248222580 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
18930 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18931 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18933 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18934 xl = gl ^ el & (fl ^ gl) |
0;
18936 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18944 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18951 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18952 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18953 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18955 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18956 w0l = w0l + w9l |
0;
18957 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
18958 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
18959 w0l = w0l + xl |
0;
18960 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18961 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
18962 w0l = w0l + xl |
0;
18963 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18964 tl =
2666613458 + w0l |
0;
18965 th =
3835390401 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
18967 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
18968 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
18970 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18971 xl = gl ^ el & (fl ^ gl) |
0;
18973 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18981 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
18988 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
18989 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
18990 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
18992 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18993 w1l = w1l + w10l |
0;
18994 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
18995 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
18996 w1l = w1l + xl |
0;
18997 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
18998 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
18999 w1l = w1l + xl |
0;
19000 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19001 tl =
944711139 + w1l |
0;
19002 th =
4022224774 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
19004 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19005 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19007 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19008 xl = gl ^ el & (fl ^ gl) |
0;
19010 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19018 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19025 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19026 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19027 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19029 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19030 w2l = w2l + w11l |
0;
19031 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
19032 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
19033 w2l = w2l + xl |
0;
19034 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19035 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
19036 w2l = w2l + xl |
0;
19037 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19038 tl =
2341262773 + w2l |
0;
19039 th =
264347078 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
19041 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19042 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19044 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19045 xl = gl ^ el & (fl ^ gl) |
0;
19047 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19055 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19062 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19063 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19064 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19066 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19067 w3l = w3l + w12l |
0;
19068 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
19069 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
19070 w3l = w3l + xl |
0;
19071 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19072 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
19073 w3l = w3l + xl |
0;
19074 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19075 tl =
2007800933 + w3l |
0;
19076 th =
604807628 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
19078 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19079 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19081 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19082 xl = gl ^ el & (fl ^ gl) |
0;
19084 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19092 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19099 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19100 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19101 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19103 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19104 w4l = w4l + w13l |
0;
19105 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
19106 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
19107 w4l = w4l + xl |
0;
19108 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19109 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
19110 w4l = w4l + xl |
0;
19111 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19112 tl =
1495990901 + w4l |
0;
19113 th =
770255983 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
19115 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19116 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19118 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19119 xl = gl ^ el & (fl ^ gl) |
0;
19121 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19129 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19136 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19137 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19138 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19140 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19141 w5l = w5l + w14l |
0;
19142 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
19143 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
19144 w5l = w5l + xl |
0;
19145 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19146 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
19147 w5l = w5l + xl |
0;
19148 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19149 tl =
1856431235 + w5l |
0;
19150 th =
1249150122 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
19152 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19153 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19155 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19156 xl = gl ^ el & (fl ^ gl) |
0;
19158 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19166 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19173 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19174 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19175 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19177 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19178 w6l = w6l + w15l |
0;
19179 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
19180 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
19181 w6l = w6l + xl |
0;
19182 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19183 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
19184 w6l = w6l + xl |
0;
19185 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19186 tl =
3175218132 + w6l |
0;
19187 th =
1555081692 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
19189 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19190 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19192 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19193 xl = gl ^ el & (fl ^ gl) |
0;
19195 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19203 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19210 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19211 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19212 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19214 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19215 w7l = w7l + w0l |
0;
19216 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
19217 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
19218 w7l = w7l + xl |
0;
19219 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19220 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
19221 w7l = w7l + xl |
0;
19222 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19223 tl =
2198950837 + w7l |
0;
19224 th =
1996064986 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
19226 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19227 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19229 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19230 xl = gl ^ el & (fl ^ gl) |
0;
19232 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19240 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19247 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19248 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19249 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19251 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19252 w8l = w8l + w1l |
0;
19253 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
19254 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
19255 w8l = w8l + xl |
0;
19256 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19257 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
19258 w8l = w8l + xl |
0;
19259 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19260 tl =
3999719339 + w8l |
0;
19261 th =
2554220882 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
19263 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19264 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19266 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19267 xl = gl ^ el & (fl ^ gl) |
0;
19269 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19277 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19284 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19285 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19286 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19288 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19289 w9l = w9l + w2l |
0;
19290 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
19291 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
19292 w9l = w9l + xl |
0;
19293 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19294 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
19295 w9l = w9l + xl |
0;
19296 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19297 tl =
766784016 + w9l |
0;
19298 th =
2821834349 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
19300 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19301 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19303 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19304 xl = gl ^ el & (fl ^ gl) |
0;
19306 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19314 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19321 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19322 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19323 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19325 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19326 w10l = w10l + w3l |
0;
19327 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
19328 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
19329 w10l = w10l + xl |
0;
19330 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19331 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
19332 w10l = w10l + xl |
0;
19333 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19334 tl =
2566594879 + w10l |
0;
19335 th =
2952996808 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
19337 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19338 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19340 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19341 xl = gl ^ el & (fl ^ gl) |
0;
19343 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19351 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19358 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19359 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19360 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19362 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19363 w11l = w11l + w4l |
0;
19364 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
19365 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
19366 w11l = w11l + xl |
0;
19367 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19368 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
19369 w11l = w11l + xl |
0;
19370 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19371 tl =
3203337956 + w11l |
0;
19372 th =
3210313671 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
19374 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19375 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19377 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19378 xl = gl ^ el & (fl ^ gl) |
0;
19380 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19388 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19395 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19396 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19397 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19399 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19400 w12l = w12l + w5l |
0;
19401 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
19402 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
19403 w12l = w12l + xl |
0;
19404 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19405 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
19406 w12l = w12l + xl |
0;
19407 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19408 tl =
1034457026 + w12l |
0;
19409 th =
3336571891 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
19411 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19412 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19414 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19415 xl = gl ^ el & (fl ^ gl) |
0;
19417 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19425 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19432 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19433 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19434 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19436 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19437 w13l = w13l + w6l |
0;
19438 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
19439 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
19440 w13l = w13l + xl |
0;
19441 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19442 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
19443 w13l = w13l + xl |
0;
19444 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19445 tl =
2466948901 + w13l |
0;
19446 th =
3584528711 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
19448 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19449 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19451 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19452 xl = gl ^ el & (fl ^ gl) |
0;
19454 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19462 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19469 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19470 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19471 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19473 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19474 w14l = w14l + w7l |
0;
19475 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
19476 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
19477 w14l = w14l + xl |
0;
19478 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19479 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
19480 w14l = w14l + xl |
0;
19481 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19482 tl =
3758326383 + w14l |
0;
19483 th =
113926993 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
19485 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19486 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19488 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19489 xl = gl ^ el & (fl ^ gl) |
0;
19491 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19499 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19506 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19507 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19508 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19510 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19511 w15l = w15l + w8l |
0;
19512 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
19513 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
19514 w15l = w15l + xl |
0;
19515 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19516 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
19517 w15l = w15l + xl |
0;
19518 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19519 tl =
168717936 + w15l |
0;
19520 th =
338241895 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
19522 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19523 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19525 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19526 xl = gl ^ el & (fl ^ gl) |
0;
19528 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19536 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19543 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19544 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19545 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19547 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19548 w0l = w0l + w9l |
0;
19549 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
19550 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
19551 w0l = w0l + xl |
0;
19552 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19553 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
19554 w0l = w0l + xl |
0;
19555 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19556 tl =
1188179964 + w0l |
0;
19557 th =
666307205 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
19559 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19560 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19562 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19563 xl = gl ^ el & (fl ^ gl) |
0;
19565 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19573 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19580 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19581 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19582 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19584 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19585 w1l = w1l + w10l |
0;
19586 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
19587 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
19588 w1l = w1l + xl |
0;
19589 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19590 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
19591 w1l = w1l + xl |
0;
19592 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19593 tl =
1546045734 + w1l |
0;
19594 th =
773529912 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
19596 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19597 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19599 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19600 xl = gl ^ el & (fl ^ gl) |
0;
19602 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19610 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19617 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19618 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19619 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19621 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19622 w2l = w2l + w11l |
0;
19623 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
19624 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
19625 w2l = w2l + xl |
0;
19626 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19627 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
19628 w2l = w2l + xl |
0;
19629 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19630 tl =
1522805485 + w2l |
0;
19631 th =
1294757372 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
19633 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19634 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19636 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19637 xl = gl ^ el & (fl ^ gl) |
0;
19639 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19647 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19654 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19655 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19656 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19658 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19659 w3l = w3l + w12l |
0;
19660 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
19661 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
19662 w3l = w3l + xl |
0;
19663 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19664 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
19665 w3l = w3l + xl |
0;
19666 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19667 tl =
2643833823 + w3l |
0;
19668 th =
1396182291 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
19670 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19671 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19673 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19674 xl = gl ^ el & (fl ^ gl) |
0;
19676 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19684 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19691 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19692 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19693 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19695 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19696 w4l = w4l + w13l |
0;
19697 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
19698 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
19699 w4l = w4l + xl |
0;
19700 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19701 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
19702 w4l = w4l + xl |
0;
19703 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19704 tl =
2343527390 + w4l |
0;
19705 th =
1695183700 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
19707 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19708 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19710 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19711 xl = gl ^ el & (fl ^ gl) |
0;
19713 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19721 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19728 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19729 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19730 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19732 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19733 w5l = w5l + w14l |
0;
19734 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
19735 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
19736 w5l = w5l + xl |
0;
19737 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19738 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
19739 w5l = w5l + xl |
0;
19740 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19741 tl =
1014477480 + w5l |
0;
19742 th =
1986661051 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
19744 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19745 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19747 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19748 xl = gl ^ el & (fl ^ gl) |
0;
19750 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19758 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19765 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19766 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19767 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19769 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19770 w6l = w6l + w15l |
0;
19771 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
19772 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
19773 w6l = w6l + xl |
0;
19774 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19775 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
19776 w6l = w6l + xl |
0;
19777 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19778 tl =
1206759142 + w6l |
0;
19779 th =
2177026350 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
19781 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19782 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19784 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19785 xl = gl ^ el & (fl ^ gl) |
0;
19787 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19795 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19802 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19803 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19804 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19806 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19807 w7l = w7l + w0l |
0;
19808 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
19809 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
19810 w7l = w7l + xl |
0;
19811 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19812 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
19813 w7l = w7l + xl |
0;
19814 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19815 tl =
344077627 + w7l |
0;
19816 th =
2456956037 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
19818 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19819 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19821 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19822 xl = gl ^ el & (fl ^ gl) |
0;
19824 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19832 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19839 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19840 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19841 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19843 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19844 w8l = w8l + w1l |
0;
19845 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
19846 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
19847 w8l = w8l + xl |
0;
19848 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19849 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
19850 w8l = w8l + xl |
0;
19851 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19852 tl =
1290863460 + w8l |
0;
19853 th =
2730485921 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
19855 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19856 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19858 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19859 xl = gl ^ el & (fl ^ gl) |
0;
19861 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19869 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19876 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19877 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19878 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19880 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19881 w9l = w9l + w2l |
0;
19882 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
19883 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
19884 w9l = w9l + xl |
0;
19885 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19886 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
19887 w9l = w9l + xl |
0;
19888 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19889 tl =
3158454273 + w9l |
0;
19890 th =
2820302411 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
19892 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19893 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19895 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19896 xl = gl ^ el & (fl ^ gl) |
0;
19898 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19906 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19913 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19914 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19915 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19917 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19918 w10l = w10l + w3l |
0;
19919 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
19920 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
19921 w10l = w10l + xl |
0;
19922 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19923 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
19924 w10l = w10l + xl |
0;
19925 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19926 tl =
3505952657 + w10l |
0;
19927 th =
3259730800 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
19929 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19930 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19932 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19933 xl = gl ^ el & (fl ^ gl) |
0;
19935 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19943 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19950 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19951 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19952 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19954 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19955 w11l = w11l + w4l |
0;
19956 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
19957 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
19958 w11l = w11l + xl |
0;
19959 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19960 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
19961 w11l = w11l + xl |
0;
19962 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19963 tl =
106217008 + w11l |
0;
19964 th =
3345764771 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
19966 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
19967 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
19969 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19970 xl = gl ^ el & (fl ^ gl) |
0;
19972 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19980 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
19987 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
19988 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
19989 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
19991 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19992 w12l = w12l + w5l |
0;
19993 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
19994 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
19995 w12l = w12l + xl |
0;
19996 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
19997 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
19998 w12l = w12l + xl |
0;
19999 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20000 tl =
3606008344 + w12l |
0;
20001 th =
3516065817 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
20003 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20004 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20006 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20007 xl = gl ^ el & (fl ^ gl) |
0;
20009 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20017 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20024 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20025 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20026 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20028 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20029 w13l = w13l + w6l |
0;
20030 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
20031 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
20032 w13l = w13l + xl |
0;
20033 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20034 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
20035 w13l = w13l + xl |
0;
20036 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20037 tl =
1432725776 + w13l |
0;
20038 th =
3600352804 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
20040 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20041 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20043 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20044 xl = gl ^ el & (fl ^ gl) |
0;
20046 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20054 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20061 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20062 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20063 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20065 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20066 w14l = w14l + w7l |
0;
20067 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
20068 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
20069 w14l = w14l + xl |
0;
20070 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20071 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
20072 w14l = w14l + xl |
0;
20073 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20074 tl =
1467031594 + w14l |
0;
20075 th =
4094571909 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
20077 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20078 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20080 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20081 xl = gl ^ el & (fl ^ gl) |
0;
20083 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20091 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20098 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20099 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20100 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20102 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20103 w15l = w15l + w8l |
0;
20104 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
20105 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
20106 w15l = w15l + xl |
0;
20107 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20108 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
20109 w15l = w15l + xl |
0;
20110 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20111 tl =
851169720 + w15l |
0;
20112 th =
275423344 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
20114 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20115 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20117 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20118 xl = gl ^ el & (fl ^ gl) |
0;
20120 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20128 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20135 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20136 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20137 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20139 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20140 w0l = w0l + w9l |
0;
20141 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
20142 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
20143 w0l = w0l + xl |
0;
20144 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20145 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
20146 w0l = w0l + xl |
0;
20147 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20148 tl =
3100823752 + w0l |
0;
20149 th =
430227734 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
20151 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20152 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20154 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20155 xl = gl ^ el & (fl ^ gl) |
0;
20157 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20165 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20172 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20173 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20174 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20176 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20177 w1l = w1l + w10l |
0;
20178 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
20179 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
20180 w1l = w1l + xl |
0;
20181 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20182 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
20183 w1l = w1l + xl |
0;
20184 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20185 tl =
1363258195 + w1l |
0;
20186 th =
506948616 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
20188 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20189 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20191 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20192 xl = gl ^ el & (fl ^ gl) |
0;
20194 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20202 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20209 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20210 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20211 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20213 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20214 w2l = w2l + w11l |
0;
20215 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
20216 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
20217 w2l = w2l + xl |
0;
20218 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20219 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
20220 w2l = w2l + xl |
0;
20221 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20222 tl =
3750685593 + w2l |
0;
20223 th =
659060556 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
20225 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20226 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20228 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20229 xl = gl ^ el & (fl ^ gl) |
0;
20231 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20239 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20246 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20247 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20248 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20250 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20251 w3l = w3l + w12l |
0;
20252 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
20253 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
20254 w3l = w3l + xl |
0;
20255 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20256 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
20257 w3l = w3l + xl |
0;
20258 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20259 tl =
3785050280 + w3l |
0;
20260 th =
883997877 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
20262 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20263 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20265 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20266 xl = gl ^ el & (fl ^ gl) |
0;
20268 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20276 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20283 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20284 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20285 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20287 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20288 w4l = w4l + w13l |
0;
20289 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
20290 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
20291 w4l = w4l + xl |
0;
20292 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20293 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
20294 w4l = w4l + xl |
0;
20295 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20296 tl =
3318307427 + w4l |
0;
20297 th =
958139571 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
20299 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20300 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20302 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20303 xl = gl ^ el & (fl ^ gl) |
0;
20305 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20313 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20320 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20321 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20322 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20324 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20325 w5l = w5l + w14l |
0;
20326 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
20327 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
20328 w5l = w5l + xl |
0;
20329 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20330 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
20331 w5l = w5l + xl |
0;
20332 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20333 tl =
3812723403 + w5l |
0;
20334 th =
1322822218 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
20336 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20337 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20339 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20340 xl = gl ^ el & (fl ^ gl) |
0;
20342 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20350 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20357 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20358 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20359 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20361 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20362 w6l = w6l + w15l |
0;
20363 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
20364 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
20365 w6l = w6l + xl |
0;
20366 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20367 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
20368 w6l = w6l + xl |
0;
20369 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20370 tl =
2003034995 + w6l |
0;
20371 th =
1537002063 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
20373 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20374 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20376 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20377 xl = gl ^ el & (fl ^ gl) |
0;
20379 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20387 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20394 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20395 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20396 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20398 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20399 w7l = w7l + w0l |
0;
20400 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
20401 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
20402 w7l = w7l + xl |
0;
20403 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20404 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
20405 w7l = w7l + xl |
0;
20406 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20407 tl =
3602036899 + w7l |
0;
20408 th =
1747873779 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
20410 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20411 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20413 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20414 xl = gl ^ el & (fl ^ gl) |
0;
20416 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20424 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20431 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20432 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20433 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20435 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20436 w8l = w8l + w1l |
0;
20437 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
20438 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
20439 w8l = w8l + xl |
0;
20440 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20441 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
20442 w8l = w8l + xl |
0;
20443 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20444 tl =
1575990012 + w8l |
0;
20445 th =
1955562222 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
20447 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20448 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20450 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20451 xl = gl ^ el & (fl ^ gl) |
0;
20453 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20461 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20468 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20469 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20470 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20472 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20473 w9l = w9l + w2l |
0;
20474 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
20475 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
20476 w9l = w9l + xl |
0;
20477 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20478 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
20479 w9l = w9l + xl |
0;
20480 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20481 tl =
1125592928 + w9l |
0;
20482 th =
2024104815 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
20484 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20485 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20487 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20488 xl = gl ^ el & (fl ^ gl) |
0;
20490 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20498 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20505 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20506 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20507 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20509 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20510 w10l = w10l + w3l |
0;
20511 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
20512 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
20513 w10l = w10l + xl |
0;
20514 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20515 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
20516 w10l = w10l + xl |
0;
20517 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20518 tl =
2716904306 + w10l |
0;
20519 th =
2227730452 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
20521 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20522 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20524 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20525 xl = gl ^ el & (fl ^ gl) |
0;
20527 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20535 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20542 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20543 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20544 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20546 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20547 w11l = w11l + w4l |
0;
20548 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
20549 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
20550 w11l = w11l + xl |
0;
20551 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20552 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
20553 w11l = w11l + xl |
0;
20554 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20555 tl =
442776044 + w11l |
0;
20556 th =
2361852424 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
20558 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20559 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20561 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20562 xl = gl ^ el & (fl ^ gl) |
0;
20564 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20572 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20579 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20580 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20581 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20583 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20584 w12l = w12l + w5l |
0;
20585 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
20586 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
20587 w12l = w12l + xl |
0;
20588 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20589 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
20590 w12l = w12l + xl |
0;
20591 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20592 tl =
593698344 + w12l |
0;
20593 th =
2428436474 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
20595 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20596 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20598 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20599 xl = gl ^ el & (fl ^ gl) |
0;
20601 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20609 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20616 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20617 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20618 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20620 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20621 w13l = w13l + w6l |
0;
20622 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
20623 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
20624 w13l = w13l + xl |
0;
20625 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20626 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
20627 w13l = w13l + xl |
0;
20628 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20629 tl =
3733110249 + w13l |
0;
20630 th =
2756734187 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
20632 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20633 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20635 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20636 xl = gl ^ el & (fl ^ gl) |
0;
20638 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20646 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20653 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20654 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20655 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20657 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20658 w14l = w14l + w7l |
0;
20659 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
20660 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
20661 w14l = w14l + xl |
0;
20662 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20663 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
20664 w14l = w14l + xl |
0;
20665 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20666 tl =
2999351573 + w14l |
0;
20667 th =
3204031479 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
20669 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20670 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20672 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20673 xl = gl ^ el & (fl ^ gl) |
0;
20675 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20683 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20690 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20691 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20692 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20694 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20695 w15l = w15l + w8l |
0;
20696 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
20697 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
20698 w15l = w15l + xl |
0;
20699 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20700 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
20701 w15l = w15l + xl |
0;
20702 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20703 tl =
3815920427 + w15l |
0;
20704 th =
3329325298 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
20706 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20707 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20709 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20710 xl = gl ^ el & (fl ^ gl) |
0;
20712 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20720 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20727 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20728 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20729 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20731 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20732 w0l = w0l + w9l |
0;
20733 w0h = w0h + w9h + (w0l
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
20734 xl = (w1l
>>> 1 | w1h <<
31) ^ (w1l
>>> 8 | w1h <<
24) ^ (w1l
>>> 7 | w1h <<
25) |
0;
20735 w0l = w0l + xl |
0;
20736 w0h = w0h + ((w1h
>>> 1 | w1l <<
31) ^ (w1h
>>> 8 | w1l <<
24) ^ w1h
>>> 7) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20737 xl = (w14l
>>> 19 | w14h <<
13) ^ (w14l <<
3 | w14h
>>> 29) ^ (w14l
>>> 6 | w14h <<
26) |
0;
20738 w0l = w0l + xl |
0;
20739 w0h = w0h + ((w14h
>>> 19 | w14l <<
13) ^ (w14h <<
3 | w14l
>>> 29) ^ w14h
>>> 6) + (w0l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20740 tl =
3928383900 + w0l |
0;
20741 th =
3391569614 + w0h + (tl
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
20743 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20744 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20746 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20747 xl = gl ^ el & (fl ^ gl) |
0;
20749 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20757 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20764 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20765 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20766 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20768 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20769 w1l = w1l + w10l |
0;
20770 w1h = w1h + w10h + (w1l
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
20771 xl = (w2l
>>> 1 | w2h <<
31) ^ (w2l
>>> 8 | w2h <<
24) ^ (w2l
>>> 7 | w2h <<
25) |
0;
20772 w1l = w1l + xl |
0;
20773 w1h = w1h + ((w2h
>>> 1 | w2l <<
31) ^ (w2h
>>> 8 | w2l <<
24) ^ w2h
>>> 7) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20774 xl = (w15l
>>> 19 | w15h <<
13) ^ (w15l <<
3 | w15h
>>> 29) ^ (w15l
>>> 6 | w15h <<
26) |
0;
20775 w1l = w1l + xl |
0;
20776 w1h = w1h + ((w15h
>>> 19 | w15l <<
13) ^ (w15h <<
3 | w15l
>>> 29) ^ w15h
>>> 6) + (w1l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20777 tl =
566280711 + w1l |
0;
20778 th =
3515267271 + w1h + (tl
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
20780 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20781 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20783 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20784 xl = gl ^ el & (fl ^ gl) |
0;
20786 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20794 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20801 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20802 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20803 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20805 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20806 w2l = w2l + w11l |
0;
20807 w2h = w2h + w11h + (w2l
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
20808 xl = (w3l
>>> 1 | w3h <<
31) ^ (w3l
>>> 8 | w3h <<
24) ^ (w3l
>>> 7 | w3h <<
25) |
0;
20809 w2l = w2l + xl |
0;
20810 w2h = w2h + ((w3h
>>> 1 | w3l <<
31) ^ (w3h
>>> 8 | w3l <<
24) ^ w3h
>>> 7) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20811 xl = (w0l
>>> 19 | w0h <<
13) ^ (w0l <<
3 | w0h
>>> 29) ^ (w0l
>>> 6 | w0h <<
26) |
0;
20812 w2l = w2l + xl |
0;
20813 w2h = w2h + ((w0h
>>> 19 | w0l <<
13) ^ (w0h <<
3 | w0l
>>> 29) ^ w0h
>>> 6) + (w2l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20814 tl =
3454069534 + w2l |
0;
20815 th =
3940187606 + w2h + (tl
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
20817 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20818 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20820 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20821 xl = gl ^ el & (fl ^ gl) |
0;
20823 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20831 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20838 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20839 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20840 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20842 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20843 w3l = w3l + w12l |
0;
20844 w3h = w3h + w12h + (w3l
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
20845 xl = (w4l
>>> 1 | w4h <<
31) ^ (w4l
>>> 8 | w4h <<
24) ^ (w4l
>>> 7 | w4h <<
25) |
0;
20846 w3l = w3l + xl |
0;
20847 w3h = w3h + ((w4h
>>> 1 | w4l <<
31) ^ (w4h
>>> 8 | w4l <<
24) ^ w4h
>>> 7) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20848 xl = (w1l
>>> 19 | w1h <<
13) ^ (w1l <<
3 | w1h
>>> 29) ^ (w1l
>>> 6 | w1h <<
26) |
0;
20849 w3l = w3l + xl |
0;
20850 w3h = w3h + ((w1h
>>> 19 | w1l <<
13) ^ (w1h <<
3 | w1l
>>> 29) ^ w1h
>>> 6) + (w3l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20851 tl =
4000239992 + w3l |
0;
20852 th =
4118630271 + w3h + (tl
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
20854 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20855 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20857 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20858 xl = gl ^ el & (fl ^ gl) |
0;
20860 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20868 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20875 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20876 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20877 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20879 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20880 w4l = w4l + w13l |
0;
20881 w4h = w4h + w13h + (w4l
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
20882 xl = (w5l
>>> 1 | w5h <<
31) ^ (w5l
>>> 8 | w5h <<
24) ^ (w5l
>>> 7 | w5h <<
25) |
0;
20883 w4l = w4l + xl |
0;
20884 w4h = w4h + ((w5h
>>> 1 | w5l <<
31) ^ (w5h
>>> 8 | w5l <<
24) ^ w5h
>>> 7) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20885 xl = (w2l
>>> 19 | w2h <<
13) ^ (w2l <<
3 | w2h
>>> 29) ^ (w2l
>>> 6 | w2h <<
26) |
0;
20886 w4l = w4l + xl |
0;
20887 w4h = w4h + ((w2h
>>> 19 | w2l <<
13) ^ (w2h <<
3 | w2l
>>> 29) ^ w2h
>>> 6) + (w4l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20888 tl =
1914138554 + w4l |
0;
20889 th =
116418474 + w4h + (tl
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
20891 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20892 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20894 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20895 xl = gl ^ el & (fl ^ gl) |
0;
20897 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20905 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20912 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20913 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20914 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20916 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20917 w5l = w5l + w14l |
0;
20918 w5h = w5h + w14h + (w5l
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
20919 xl = (w6l
>>> 1 | w6h <<
31) ^ (w6l
>>> 8 | w6h <<
24) ^ (w6l
>>> 7 | w6h <<
25) |
0;
20920 w5l = w5l + xl |
0;
20921 w5h = w5h + ((w6h
>>> 1 | w6l <<
31) ^ (w6h
>>> 8 | w6l <<
24) ^ w6h
>>> 7) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20922 xl = (w3l
>>> 19 | w3h <<
13) ^ (w3l <<
3 | w3h
>>> 29) ^ (w3l
>>> 6 | w3h <<
26) |
0;
20923 w5l = w5l + xl |
0;
20924 w5h = w5h + ((w3h
>>> 19 | w3l <<
13) ^ (w3h <<
3 | w3l
>>> 29) ^ w3h
>>> 6) + (w5l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20925 tl =
2731055270 + w5l |
0;
20926 th =
174292421 + w5h + (tl
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
20928 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20929 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20931 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20932 xl = gl ^ el & (fl ^ gl) |
0;
20934 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20942 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20949 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20950 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20951 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20953 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20954 w6l = w6l + w15l |
0;
20955 w6h = w6h + w15h + (w6l
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
20956 xl = (w7l
>>> 1 | w7h <<
31) ^ (w7l
>>> 8 | w7h <<
24) ^ (w7l
>>> 7 | w7h <<
25) |
0;
20957 w6l = w6l + xl |
0;
20958 w6h = w6h + ((w7h
>>> 1 | w7l <<
31) ^ (w7h
>>> 8 | w7l <<
24) ^ w7h
>>> 7) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20959 xl = (w4l
>>> 19 | w4h <<
13) ^ (w4l <<
3 | w4h
>>> 29) ^ (w4l
>>> 6 | w4h <<
26) |
0;
20960 w6l = w6l + xl |
0;
20961 w6h = w6h + ((w4h
>>> 19 | w4l <<
13) ^ (w4h <<
3 | w4l
>>> 29) ^ w4h
>>> 6) + (w6l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20962 tl =
3203993006 + w6l |
0;
20963 th =
289380356 + w6h + (tl
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
20965 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
20966 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
20968 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20969 xl = gl ^ el & (fl ^ gl) |
0;
20971 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20979 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
20986 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
20987 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
20988 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
20990 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20991 w7l = w7l + w0l |
0;
20992 w7h = w7h + w0h + (w7l
>>> 0 < w0l
>>> 0 ?
1 :
0) |
0;
20993 xl = (w8l
>>> 1 | w8h <<
31) ^ (w8l
>>> 8 | w8h <<
24) ^ (w8l
>>> 7 | w8h <<
25) |
0;
20994 w7l = w7l + xl |
0;
20995 w7h = w7h + ((w8h
>>> 1 | w8l <<
31) ^ (w8h
>>> 8 | w8l <<
24) ^ w8h
>>> 7) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20996 xl = (w5l
>>> 19 | w5h <<
13) ^ (w5l <<
3 | w5h
>>> 29) ^ (w5l
>>> 6 | w5h <<
26) |
0;
20997 w7l = w7l + xl |
0;
20998 w7h = w7h + ((w5h
>>> 19 | w5l <<
13) ^ (w5h <<
3 | w5l
>>> 29) ^ w5h
>>> 6) + (w7l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
20999 tl =
320620315 + w7l |
0;
21000 th =
460393269 + w7h + (tl
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
21002 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21003 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21005 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21006 xl = gl ^ el & (fl ^ gl) |
0;
21008 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21016 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21023 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21024 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21025 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21027 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21028 w8l = w8l + w1l |
0;
21029 w8h = w8h + w1h + (w8l
>>> 0 < w1l
>>> 0 ?
1 :
0) |
0;
21030 xl = (w9l
>>> 1 | w9h <<
31) ^ (w9l
>>> 8 | w9h <<
24) ^ (w9l
>>> 7 | w9h <<
25) |
0;
21031 w8l = w8l + xl |
0;
21032 w8h = w8h + ((w9h
>>> 1 | w9l <<
31) ^ (w9h
>>> 8 | w9l <<
24) ^ w9h
>>> 7) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21033 xl = (w6l
>>> 19 | w6h <<
13) ^ (w6l <<
3 | w6h
>>> 29) ^ (w6l
>>> 6 | w6h <<
26) |
0;
21034 w8l = w8l + xl |
0;
21035 w8h = w8h + ((w6h
>>> 19 | w6l <<
13) ^ (w6h <<
3 | w6l
>>> 29) ^ w6h
>>> 6) + (w8l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21036 tl =
587496836 + w8l |
0;
21037 th =
685471733 + w8h + (tl
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
21039 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21040 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21042 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21043 xl = gl ^ el & (fl ^ gl) |
0;
21045 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21053 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21060 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21061 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21062 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21064 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21065 w9l = w9l + w2l |
0;
21066 w9h = w9h + w2h + (w9l
>>> 0 < w2l
>>> 0 ?
1 :
0) |
0;
21067 xl = (w10l
>>> 1 | w10h <<
31) ^ (w10l
>>> 8 | w10h <<
24) ^ (w10l
>>> 7 | w10h <<
25) |
0;
21068 w9l = w9l + xl |
0;
21069 w9h = w9h + ((w10h
>>> 1 | w10l <<
31) ^ (w10h
>>> 8 | w10l <<
24) ^ w10h
>>> 7) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21070 xl = (w7l
>>> 19 | w7h <<
13) ^ (w7l <<
3 | w7h
>>> 29) ^ (w7l
>>> 6 | w7h <<
26) |
0;
21071 w9l = w9l + xl |
0;
21072 w9h = w9h + ((w7h
>>> 19 | w7l <<
13) ^ (w7h <<
3 | w7l
>>> 29) ^ w7h
>>> 6) + (w9l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21073 tl =
1086792851 + w9l |
0;
21074 th =
852142971 + w9h + (tl
>>> 0 < w9l
>>> 0 ?
1 :
0) |
0;
21076 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21077 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21079 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21080 xl = gl ^ el & (fl ^ gl) |
0;
21082 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21090 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21097 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21098 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21099 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21101 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21102 w10l = w10l + w3l |
0;
21103 w10h = w10h + w3h + (w10l
>>> 0 < w3l
>>> 0 ?
1 :
0) |
0;
21104 xl = (w11l
>>> 1 | w11h <<
31) ^ (w11l
>>> 8 | w11h <<
24) ^ (w11l
>>> 7 | w11h <<
25) |
0;
21105 w10l = w10l + xl |
0;
21106 w10h = w10h + ((w11h
>>> 1 | w11l <<
31) ^ (w11h
>>> 8 | w11l <<
24) ^ w11h
>>> 7) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21107 xl = (w8l
>>> 19 | w8h <<
13) ^ (w8l <<
3 | w8h
>>> 29) ^ (w8l
>>> 6 | w8h <<
26) |
0;
21108 w10l = w10l + xl |
0;
21109 w10h = w10h + ((w8h
>>> 19 | w8l <<
13) ^ (w8h <<
3 | w8l
>>> 29) ^ w8h
>>> 6) + (w10l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21110 tl =
365543100 + w10l |
0;
21111 th =
1017036298 + w10h + (tl
>>> 0 < w10l
>>> 0 ?
1 :
0) |
0;
21113 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21114 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21116 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21117 xl = gl ^ el & (fl ^ gl) |
0;
21119 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21127 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21134 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21135 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21136 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21138 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21139 w11l = w11l + w4l |
0;
21140 w11h = w11h + w4h + (w11l
>>> 0 < w4l
>>> 0 ?
1 :
0) |
0;
21141 xl = (w12l
>>> 1 | w12h <<
31) ^ (w12l
>>> 8 | w12h <<
24) ^ (w12l
>>> 7 | w12h <<
25) |
0;
21142 w11l = w11l + xl |
0;
21143 w11h = w11h + ((w12h
>>> 1 | w12l <<
31) ^ (w12h
>>> 8 | w12l <<
24) ^ w12h
>>> 7) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21144 xl = (w9l
>>> 19 | w9h <<
13) ^ (w9l <<
3 | w9h
>>> 29) ^ (w9l
>>> 6 | w9h <<
26) |
0;
21145 w11l = w11l + xl |
0;
21146 w11h = w11h + ((w9h
>>> 19 | w9l <<
13) ^ (w9h <<
3 | w9l
>>> 29) ^ w9h
>>> 6) + (w11l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21147 tl =
2618297676 + w11l |
0;
21148 th =
1126000580 + w11h + (tl
>>> 0 < w11l
>>> 0 ?
1 :
0) |
0;
21150 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21151 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21153 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21154 xl = gl ^ el & (fl ^ gl) |
0;
21156 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21164 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21171 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21172 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21173 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21175 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21176 w12l = w12l + w5l |
0;
21177 w12h = w12h + w5h + (w12l
>>> 0 < w5l
>>> 0 ?
1 :
0) |
0;
21178 xl = (w13l
>>> 1 | w13h <<
31) ^ (w13l
>>> 8 | w13h <<
24) ^ (w13l
>>> 7 | w13h <<
25) |
0;
21179 w12l = w12l + xl |
0;
21180 w12h = w12h + ((w13h
>>> 1 | w13l <<
31) ^ (w13h
>>> 8 | w13l <<
24) ^ w13h
>>> 7) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21181 xl = (w10l
>>> 19 | w10h <<
13) ^ (w10l <<
3 | w10h
>>> 29) ^ (w10l
>>> 6 | w10h <<
26) |
0;
21182 w12l = w12l + xl |
0;
21183 w12h = w12h + ((w10h
>>> 19 | w10l <<
13) ^ (w10h <<
3 | w10l
>>> 29) ^ w10h
>>> 6) + (w12l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21184 tl =
3409855158 + w12l |
0;
21185 th =
1288033470 + w12h + (tl
>>> 0 < w12l
>>> 0 ?
1 :
0) |
0;
21187 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21188 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21190 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21191 xl = gl ^ el & (fl ^ gl) |
0;
21193 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21201 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21208 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21209 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21210 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21212 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21213 w13l = w13l + w6l |
0;
21214 w13h = w13h + w6h + (w13l
>>> 0 < w6l
>>> 0 ?
1 :
0) |
0;
21215 xl = (w14l
>>> 1 | w14h <<
31) ^ (w14l
>>> 8 | w14h <<
24) ^ (w14l
>>> 7 | w14h <<
25) |
0;
21216 w13l = w13l + xl |
0;
21217 w13h = w13h + ((w14h
>>> 1 | w14l <<
31) ^ (w14h
>>> 8 | w14l <<
24) ^ w14h
>>> 7) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21218 xl = (w11l
>>> 19 | w11h <<
13) ^ (w11l <<
3 | w11h
>>> 29) ^ (w11l
>>> 6 | w11h <<
26) |
0;
21219 w13l = w13l + xl |
0;
21220 w13h = w13h + ((w11h
>>> 19 | w11l <<
13) ^ (w11h <<
3 | w11l
>>> 29) ^ w11h
>>> 6) + (w13l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21221 tl =
4234509866 + w13l |
0;
21222 th =
1501505948 + w13h + (tl
>>> 0 < w13l
>>> 0 ?
1 :
0) |
0;
21224 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21225 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21227 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21228 xl = gl ^ el & (fl ^ gl) |
0;
21230 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21238 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21245 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21246 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21247 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21249 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21250 w14l = w14l + w7l |
0;
21251 w14h = w14h + w7h + (w14l
>>> 0 < w7l
>>> 0 ?
1 :
0) |
0;
21252 xl = (w15l
>>> 1 | w15h <<
31) ^ (w15l
>>> 8 | w15h <<
24) ^ (w15l
>>> 7 | w15h <<
25) |
0;
21253 w14l = w14l + xl |
0;
21254 w14h = w14h + ((w15h
>>> 1 | w15l <<
31) ^ (w15h
>>> 8 | w15l <<
24) ^ w15h
>>> 7) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21255 xl = (w12l
>>> 19 | w12h <<
13) ^ (w12l <<
3 | w12h
>>> 29) ^ (w12l
>>> 6 | w12h <<
26) |
0;
21256 w14l = w14l + xl |
0;
21257 w14h = w14h + ((w12h
>>> 19 | w12l <<
13) ^ (w12h <<
3 | w12l
>>> 29) ^ w12h
>>> 6) + (w14l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21258 tl =
987167468 + w14l |
0;
21259 th =
1607167915 + w14h + (tl
>>> 0 < w14l
>>> 0 ?
1 :
0) |
0;
21261 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21262 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21264 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21265 xl = gl ^ el & (fl ^ gl) |
0;
21267 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21275 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21282 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21283 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21284 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21286 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21287 w15l = w15l + w8l |
0;
21288 w15h = w15h + w8h + (w15l
>>> 0 < w8l
>>> 0 ?
1 :
0) |
0;
21289 xl = (w0l
>>> 1 | w0h <<
31) ^ (w0l
>>> 8 | w0h <<
24) ^ (w0l
>>> 7 | w0h <<
25) |
0;
21290 w15l = w15l + xl |
0;
21291 w15h = w15h + ((w0h
>>> 1 | w0l <<
31) ^ (w0h
>>> 8 | w0l <<
24) ^ w0h
>>> 7) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21292 xl = (w13l
>>> 19 | w13h <<
13) ^ (w13l <<
3 | w13h
>>> 29) ^ (w13l
>>> 6 | w13h <<
26) |
0;
21293 w15l = w15l + xl |
0;
21294 w15h = w15h + ((w13h
>>> 19 | w13l <<
13) ^ (w13h <<
3 | w13l
>>> 29) ^ w13h
>>> 6) + (w15l
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21295 tl =
1246189591 + w15l |
0;
21296 th =
1816402316 + w15h + (tl
>>> 0 < w15l
>>> 0 ?
1 :
0) |
0;
21298 th = th + hh + (tl
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21299 xl = (el
>>> 14 | eh <<
18) ^ (el
>>> 18 | eh <<
14) ^ (el <<
23 | eh
>>> 9) |
0;
21301 th = th + ((eh
>>> 14 | el <<
18) ^ (eh
>>> 18 | el <<
14) ^ (eh <<
23 | el
>>> 9)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21302 xl = gl ^ el & (fl ^ gl) |
0;
21304 th = th + (gh ^ eh & (fh ^ gh)) + (tl
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21312 eh = dh + th + (el
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21319 al = tl + (bl & cl ^ dl & (bl ^ cl)) |
0;
21320 ah = th + (bh & ch ^ dh & (bh ^ ch)) + (al
>>> 0 < tl
>>> 0 ?
1 :
0) |
0;
21321 xl = (bl
>>> 28 | bh <<
4) ^ (bl <<
30 | bh
>>> 2) ^ (bl <<
25 | bh
>>> 7) |
0;
21323 ah = ah + ((bh
>>> 28 | bl <<
4) ^ (bh <<
30 | bl
>>> 2) ^ (bh <<
25 | bl
>>> 7)) + (al
>>> 0 < xl
>>> 0 ?
1 :
0) |
0;
21324 H0l = H0l + al |
0;
21325 H0h = H0h + ah + (H0l
>>> 0 < al
>>> 0 ?
1 :
0) |
0;
21326 H1l = H1l + bl |
0;
21327 H1h = H1h + bh + (H1l
>>> 0 < bl
>>> 0 ?
1 :
0) |
0;
21328 H2l = H2l + cl |
0;
21329 H2h = H2h + ch + (H2l
>>> 0 < cl
>>> 0 ?
1 :
0) |
0;
21330 H3l = H3l + dl |
0;
21331 H3h = H3h + dh + (H3l
>>> 0 < dl
>>> 0 ?
1 :
0) |
0;
21332 H4l = H4l + el |
0;
21333 H4h = H4h + eh + (H4l
>>> 0 < el
>>> 0 ?
1 :
0) |
0;
21334 H5l = H5l + fl |
0;
21335 H5h = H5h + fh + (H5l
>>> 0 < fl
>>> 0 ?
1 :
0) |
0;
21336 H6l = H6l + gl |
0;
21337 H6h = H6h + gh + (H6l
>>> 0 < gl
>>> 0 ?
1 :
0) |
0;
21338 H7l = H7l + hl |
0;
21339 H7h = H7h + hh + (H7l
>>> 0 < hl
>>> 0 ?
1 :
0) |
0;
21341 function _core_heap(offset) {
21342 offset = offset |
0;
21343 _core(HEAP[offset |
0] <<
24 | HEAP[offset |
1] <<
16 | HEAP[offset |
2] <<
8 | HEAP[offset |
3], HEAP[offset |
4] <<
24 | HEAP[offset |
5] <<
16 | HEAP[offset |
6] <<
8 | HEAP[offset |
7], HEAP[offset |
8] <<
24 | HEAP[offset |
9] <<
16 | HEAP[offset |
10] <<
8 | HEAP[offset |
11], HEAP[offset |
12] <<
24 | HEAP[offset |
13] <<
16 | HEAP[offset |
14] <<
8 | HEAP[offset |
15], HEAP[offset |
16] <<
24 | HEAP[offset |
17] <<
16 | HEAP[offset |
18] <<
8 | HEAP[offset |
19], HEAP[offset |
20] <<
24 | HEAP[offset |
21] <<
16 | HEAP[offset |
22] <<
8 | HEAP[offset |
23], HEAP[offset |
24] <<
24 | HEAP[offset |
25] <<
16 | HEAP[offset |
26] <<
8 | HEAP[offset |
27], HEAP[offset |
28] <<
24 | HEAP[offset |
29] <<
16 | HEAP[offset |
30] <<
8 | HEAP[offset |
31], HEAP[offset |
32] <<
24 | HEAP[offset |
33] <<
16 | HEAP[offset |
34] <<
8 | HEAP[offset |
35], HEAP[offset |
36] <<
24 | HEAP[offset |
37] <<
16 | HEAP[offset |
38] <<
8 | HEAP[offset |
39], HEAP[offset |
40] <<
24 | HEAP[offset |
41] <<
16 | HEAP[offset |
42] <<
8 | HEAP[offset |
43], HEAP[offset |
44] <<
24 | HEAP[offset |
45] <<
16 | HEAP[offset |
46] <<
8 | HEAP[offset |
47], HEAP[offset |
48] <<
24 | HEAP[offset |
49] <<
16 | HEAP[offset |
50] <<
8 | HEAP[offset |
51], HEAP[offset |
52] <<
24 | HEAP[offset |
53] <<
16 | HEAP[offset |
54] <<
8 | HEAP[offset |
55], HEAP[offset |
56] <<
24 | HEAP[offset |
57] <<
16 | HEAP[offset |
58] <<
8 | HEAP[offset |
59], HEAP[offset |
60] <<
24 | HEAP[offset |
61] <<
16 | HEAP[offset |
62] <<
8 | HEAP[offset |
63], HEAP[offset |
64] <<
24 | HEAP[offset |
65] <<
16 | HEAP[offset |
66] <<
8 | HEAP[offset |
67], HEAP[offset |
68] <<
24 | HEAP[offset |
69] <<
16 | HEAP[offset |
70] <<
8 | HEAP[offset |
71], HEAP[offset |
72] <<
24 | HEAP[offset |
73] <<
16 | HEAP[offset |
74] <<
8 | HEAP[offset |
75], HEAP[offset |
76] <<
24 | HEAP[offset |
77] <<
16 | HEAP[offset |
78] <<
8 | HEAP[offset |
79], HEAP[offset |
80] <<
24 | HEAP[offset |
81] <<
16 | HEAP[offset |
82] <<
8 | HEAP[offset |
83], HEAP[offset |
84] <<
24 | HEAP[offset |
85] <<
16 | HEAP[offset |
86] <<
8 | HEAP[offset |
87], HEAP[offset |
88] <<
24 | HEAP[offset |
89] <<
16 | HEAP[offset |
90] <<
8 | HEAP[offset |
91], HEAP[offset |
92] <<
24 | HEAP[offset |
93] <<
16 | HEAP[offset |
94] <<
8 | HEAP[offset |
95], HEAP[offset |
96] <<
24 | HEAP[offset |
97] <<
16 | HEAP[offset |
98] <<
8 | HEAP[offset |
99], HEAP[offset |
100] <<
24 | HEAP[offset |
101] <<
16 | HEAP[offset |
102] <<
8 | HEAP[offset |
103], HEAP[offset |
104] <<
24 | HEAP[offset |
105] <<
16 | HEAP[offset |
106] <<
8 | HEAP[offset |
107], HEAP[offset |
108] <<
24 | HEAP[offset |
109] <<
16 | HEAP[offset |
110] <<
8 | HEAP[offset |
111], HEAP[offset |
112] <<
24 | HEAP[offset |
113] <<
16 | HEAP[offset |
114] <<
8 | HEAP[offset |
115], HEAP[offset |
116] <<
24 | HEAP[offset |
117] <<
16 | HEAP[offset |
118] <<
8 | HEAP[offset |
119], HEAP[offset |
120] <<
24 | HEAP[offset |
121] <<
16 | HEAP[offset |
122] <<
8 | HEAP[offset |
123], HEAP[offset |
124] <<
24 | HEAP[offset |
125] <<
16 | HEAP[offset |
126] <<
8 | HEAP[offset |
127]);
21345 function _state_to_heap(output) {
21346 output = output |
0;
21347 HEAP[output |
0] = H0h
>>> 24;
21348 HEAP[output |
1] = H0h
>>> 16 &
255;
21349 HEAP[output |
2] = H0h
>>> 8 &
255;
21350 HEAP[output |
3] = H0h &
255;
21351 HEAP[output |
4] = H0l
>>> 24;
21352 HEAP[output |
5] = H0l
>>> 16 &
255;
21353 HEAP[output |
6] = H0l
>>> 8 &
255;
21354 HEAP[output |
7] = H0l &
255;
21355 HEAP[output |
8] = H1h
>>> 24;
21356 HEAP[output |
9] = H1h
>>> 16 &
255;
21357 HEAP[output |
10] = H1h
>>> 8 &
255;
21358 HEAP[output |
11] = H1h &
255;
21359 HEAP[output |
12] = H1l
>>> 24;
21360 HEAP[output |
13] = H1l
>>> 16 &
255;
21361 HEAP[output |
14] = H1l
>>> 8 &
255;
21362 HEAP[output |
15] = H1l &
255;
21363 HEAP[output |
16] = H2h
>>> 24;
21364 HEAP[output |
17] = H2h
>>> 16 &
255;
21365 HEAP[output |
18] = H2h
>>> 8 &
255;
21366 HEAP[output |
19] = H2h &
255;
21367 HEAP[output |
20] = H2l
>>> 24;
21368 HEAP[output |
21] = H2l
>>> 16 &
255;
21369 HEAP[output |
22] = H2l
>>> 8 &
255;
21370 HEAP[output |
23] = H2l &
255;
21371 HEAP[output |
24] = H3h
>>> 24;
21372 HEAP[output |
25] = H3h
>>> 16 &
255;
21373 HEAP[output |
26] = H3h
>>> 8 &
255;
21374 HEAP[output |
27] = H3h &
255;
21375 HEAP[output |
28] = H3l
>>> 24;
21376 HEAP[output |
29] = H3l
>>> 16 &
255;
21377 HEAP[output |
30] = H3l
>>> 8 &
255;
21378 HEAP[output |
31] = H3l &
255;
21379 HEAP[output |
32] = H4h
>>> 24;
21380 HEAP[output |
33] = H4h
>>> 16 &
255;
21381 HEAP[output |
34] = H4h
>>> 8 &
255;
21382 HEAP[output |
35] = H4h &
255;
21383 HEAP[output |
36] = H4l
>>> 24;
21384 HEAP[output |
37] = H4l
>>> 16 &
255;
21385 HEAP[output |
38] = H4l
>>> 8 &
255;
21386 HEAP[output |
39] = H4l &
255;
21387 HEAP[output |
40] = H5h
>>> 24;
21388 HEAP[output |
41] = H5h
>>> 16 &
255;
21389 HEAP[output |
42] = H5h
>>> 8 &
255;
21390 HEAP[output |
43] = H5h &
255;
21391 HEAP[output |
44] = H5l
>>> 24;
21392 HEAP[output |
45] = H5l
>>> 16 &
255;
21393 HEAP[output |
46] = H5l
>>> 8 &
255;
21394 HEAP[output |
47] = H5l &
255;
21395 HEAP[output |
48] = H6h
>>> 24;
21396 HEAP[output |
49] = H6h
>>> 16 &
255;
21397 HEAP[output |
50] = H6h
>>> 8 &
255;
21398 HEAP[output |
51] = H6h &
255;
21399 HEAP[output |
52] = H6l
>>> 24;
21400 HEAP[output |
53] = H6l
>>> 16 &
255;
21401 HEAP[output |
54] = H6l
>>> 8 &
255;
21402 HEAP[output |
55] = H6l &
255;
21403 HEAP[output |
56] = H7h
>>> 24;
21404 HEAP[output |
57] = H7h
>>> 16 &
255;
21405 HEAP[output |
58] = H7h
>>> 8 &
255;
21406 HEAP[output |
59] = H7h &
255;
21407 HEAP[output |
60] = H7l
>>> 24;
21408 HEAP[output |
61] = H7l
>>> 16 &
255;
21409 HEAP[output |
62] = H7l
>>> 8 &
255;
21410 HEAP[output |
63] = H7l &
255;
21431 function init(h0h, h0l, h1h, h1l, h2h, h2l, h3h, h3l, h4h, h4l, h5h, h5l, h6h, h6l, h7h, h7l, total) {
21467 function process(offset, length) {
21468 offset = offset |
0;
21469 length = length |
0;
21471 if (offset &
127) return -
1;
21472 while ((length |
0)
>=
128) {
21473 _core_heap(offset);
21474 offset = offset +
128 |
0;
21475 length = length -
128 |
0;
21476 hashed = hashed +
128 |
0;
21478 TOTAL = TOTAL + hashed |
0;
21481 function finish(offset, length, output) {
21482 offset = offset |
0;
21483 length = length |
0;
21484 output = output |
0;
21485 var hashed =
0, i =
0;
21486 if (offset &
127) return -
1;
21487 if (~output) if (output &
63) return -
1;
21488 if ((length |
0)
>=
128) {
21489 hashed = process(offset, length) |
0;
21490 if ((hashed |
0) == -
1) return -
1;
21491 offset = offset + hashed |
0;
21492 length = length - hashed |
0;
21494 hashed = hashed + length |
0;
21495 TOTAL = TOTAL + length |
0;
21496 HEAP[offset | length] =
128;
21497 if ((length |
0)
>=
112) {
21498 for (i = length +
1 |
0; (i |
0) <
128; i = i +
1 |
0) HEAP[offset | i] =
0;
21499 _core_heap(offset);
21501 HEAP[offset |
0] =
0;
21503 for (i = length +
1 |
0; (i |
0) <
123; i = i +
1 |
0) HEAP[offset | i] =
0;
21504 HEAP[offset |
123] = TOTAL
>>> 29;
21505 HEAP[offset |
124] = TOTAL
>>> 21 &
255;
21506 HEAP[offset |
125] = TOTAL
>>> 13 &
255;
21507 HEAP[offset |
126] = TOTAL
>>> 5 &
255;
21508 HEAP[offset |
127] = TOTAL <<
3 &
255;
21509 _core_heap(offset);
21510 if (~output) _state_to_heap(output);
21513 function hmac_reset() {
21532 function _hmac_opad() {
21551 function hmac_init(p0h, p0l, p1h, p1l, p2h, p2l, p3h, p3l, p4h, p4l, p5h, p5l, p6h, p6l, p7h, p7l, p8h, p8l, p9h, p9l, p10h, p10l, p11h, p11l, p12h, p12l, p13h, p13l, p14h, p14l, p15h, p15l) {
21585 _core(p0h ^
1549556828, p0l ^
1549556828, p1h ^
1549556828, p1l ^
1549556828, p2h ^
1549556828, p2l ^
1549556828, p3h ^
1549556828, p3l ^
1549556828, p4h ^
1549556828, p4l ^
1549556828, p5h ^
1549556828, p5l ^
1549556828, p6h ^
1549556828, p6l ^
1549556828, p7h ^
1549556828, p7l ^
1549556828, p8h ^
1549556828, p8l ^
1549556828, p9h ^
1549556828, p9l ^
1549556828, p10h ^
1549556828, p10l ^
1549556828, p11h ^
1549556828, p11l ^
1549556828, p12h ^
1549556828, p12l ^
1549556828, p13h ^
1549556828, p13l ^
1549556828, p14h ^
1549556828, p14l ^
1549556828, p15h ^
1549556828, p15l ^
1549556828);
21603 _core(p0h ^
909522486, p0l ^
909522486, p1h ^
909522486, p1l ^
909522486, p2h ^
909522486, p2l ^
909522486, p3h ^
909522486, p3l ^
909522486, p4h ^
909522486, p4l ^
909522486, p5h ^
909522486, p5l ^
909522486, p6h ^
909522486, p6l ^
909522486, p7h ^
909522486, p7l ^
909522486, p8h ^
909522486, p8l ^
909522486, p9h ^
909522486, p9l ^
909522486, p10h ^
909522486, p10l ^
909522486, p11h ^
909522486, p11l ^
909522486, p12h ^
909522486, p12l ^
909522486, p13h ^
909522486, p13l ^
909522486, p14h ^
909522486, p14l ^
909522486, p15h ^
909522486, p15l ^
909522486);
21622 function hmac_finish(offset, length, output) {
21623 offset = offset |
0;
21624 length = length |
0;
21625 output = output |
0;
21626 var t0h =
0, t0l =
0, t1h =
0, t1l =
0, t2h =
0, t2l =
0, t3h =
0, t3l =
0, t4h =
0, t4l =
0, t5h =
0, t5l =
0, t6h =
0, t6l =
0, t7h =
0, t7l =
0, hashed =
0;
21627 if (offset &
127) return -
1;
21628 if (~output) if (output &
63) return -
1;
21629 hashed = finish(offset, length, -
1) |
0;
21647 _core(t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l,
2147483648,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1536);
21648 if (~output) _state_to_heap(output);
21651 function pbkdf2_generate_block(offset, length, block, count, output) {
21652 offset = offset |
0;
21653 length = length |
0;
21656 output = output |
0;
21657 var h0h =
0, h0l =
0, h1h =
0, h1l =
0, h2h =
0, h2l =
0, h3h =
0, h3l =
0, h4h =
0, h4l =
0, h5h =
0, h5l =
0, h6h =
0, h6l =
0, h7h =
0, h7l =
0, t0h =
0, t0l =
0, t1h =
0, t1l =
0, t2h =
0, t2l =
0, t3h =
0, t3l =
0, t4h =
0, t4l =
0, t5h =
0, t5l =
0, t6h =
0, t6l =
0, t7h =
0, t7l =
0;
21658 if (offset &
127) return -
1;
21659 if (~output) if (output &
63) return -
1;
21660 HEAP[offset + length |
0] = block
>>> 24;
21661 HEAP[offset + length +
1 |
0] = block
>>> 16 &
255;
21662 HEAP[offset + length +
2 |
0] = block
>>> 8 &
255;
21663 HEAP[offset + length +
3 |
0] = block &
255;
21664 // Closure compiler warning - The result of the 'bitor' operator is not being used
21665 //hmac_finish(offset, length +
4 |
0, -
1) |
0;
21666 hmac_finish(offset, length +
4 |
0, -
1);
21683 count = count -
1 |
0;
21684 while ((count |
0)
> 0) {
21686 _core(t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l,
2147483648,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1536);
21704 _core(t0h, t0l, t1h, t1l, t2h, t2l, t3h, t3l, t4h, t4l, t5h, t5l, t6h, t6l, t7h, t7l,
2147483648,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1536);
21737 count = count -
1 |
0;
21755 if (~output) _state_to_heap(output);
21763 hmac_reset: hmac_reset,
21764 hmac_init: hmac_init,
21765 hmac_finish: hmac_finish,
21766 pbkdf2_generate_block: pbkdf2_generate_block
21769 var _sha512_block_size =
128, _sha512_hash_size =
64;
21770 function sha512_constructor(options) {
21771 options = options || {};
21772 options.heapSize = options.heapSize ||
4096;
21773 if (options.heapSize <=
0 || options.heapSize %
4096) throw new IllegalArgumentError(
"heapSize must be a positive number and multiple of 4096");
21774 this.heap = options.heap || new Uint8Array(options.heapSize);
21775 this.asm = options.asm || sha512_asm(global, null, this.heap.buffer);
21776 this.BLOCK_SIZE = _sha512_block_size;
21777 this.HASH_SIZE = _sha512_hash_size;
21780 function sha512_reset() {
21781 this.result = null;
21787 function sha512_process(data) {
21788 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
21789 var dpos =
0, dlen =
0, clen =
0;
21790 if (is_buffer(data) || is_bytes(data)) {
21791 dpos = data.byteOffset ||
0;
21792 dlen = data.byteLength;
21793 } else if (is_string(data)) {
21794 dlen = data.length;
21796 throw new TypeError(
"data isn't of expected type");
21799 clen = this.heap.byteLength - this.pos - this.len;
21800 clen = clen < dlen ? clen : dlen;
21801 if (is_buffer(data) || is_bytes(data)) {
21802 this.heap.set(new Uint8Array(data.buffer || data, dpos, clen), this.pos + this.len);
21804 for (var i =
0; i < clen; i++) this.heap[this.pos + this.len + i] = data.charCodeAt(dpos + i);
21809 clen = this.asm.process(this.pos, this.len);
21810 if (clen < this.len) {
21820 function sha512_finish() {
21821 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
21822 this.asm.finish(this.pos, this.len,
0);
21823 this.result = new Uint8Array(_sha512_hash_size);
21824 this.result.set(this.heap.subarray(
0, _sha512_hash_size));
21829 sha512_constructor.BLOCK_SIZE = _sha512_block_size;
21830 sha512_constructor.HASH_SIZE = _sha512_hash_size;
21831 var sha512_prototype = sha512_constructor.prototype;
21832 sha512_prototype.reset = sha512_reset;
21833 sha512_prototype.process = sha512_process;
21834 sha512_prototype.finish = sha512_finish;
21835 function hmac_constructor(options) {
21836 options = options || {};
21837 if (!options.hash) throw new SyntaxError(
"option 'hash' is required");
21838 if (!options.hash.HASH_SIZE) throw new SyntaxError(
"option 'hash' supplied doesn't seem to be a valid hash function");
21839 this.hash = options.hash;
21840 this.BLOCK_SIZE = this.hash.BLOCK_SIZE;
21841 this.HMAC_SIZE = this.hash.HASH_SIZE;
21843 this.verify = null;
21844 this.result = null;
21845 if (options.password !== undefined || options.verify !== undefined) this.reset(options);
21848 function hmac_sha256_constructor(options) {
21849 options = options || {};
21850 if (!(options.hash instanceof sha256_constructor)) options.hash = new sha256_constructor(options);
21851 hmac_constructor.call(this, options);
21854 function hmac_sha512_constructor(options) {
21855 options = options || {};
21856 if (!(options.hash instanceof sha512_constructor)) options.hash = new sha512_constructor(options);
21857 hmac_constructor.call(this, options);
21860 function _hmac_key(hash, password) {
21862 if (is_buffer(password) || is_bytes(password)) {
21863 key = new Uint8Array(hash.BLOCK_SIZE);
21864 if (password.byteLength
> hash.BLOCK_SIZE) {
21865 key.set(new Uint8Array(hash.reset().process(password).finish().result));
21866 } else if (is_buffer(password)) {
21867 key.set(new Uint8Array(password));
21871 } else if (is_string(password)) {
21872 key = new Uint8Array(hash.BLOCK_SIZE);
21873 if (password.length
> hash.BLOCK_SIZE) {
21874 key.set(new Uint8Array(hash.reset().process(password).finish().result));
21876 for (var i =
0; i < password.length; ++i) key[i] = password.charCodeAt(i);
21879 throw new TypeError("password isn't of expected type");
21883 function _hmac_init_verify(verify) {
21884 if (is_buffer(verify) || is_bytes(verify)) {
21885 verify = new Uint8Array(verify);
21886 } else if (is_string(verify)) {
21887 verify = string_to_bytes(verify);
21889 throw new TypeError("verify tag isn't of expected type");
21891 if (verify.length !== this.HMAC_SIZE) throw new IllegalArgumentError("illegal verification tag size");
21892 this.verify = verify;
21894 function hmac_reset(options) {
21895 options = options || {};
21896 var password = options.password;
21897 if (this.key === null && !is_string(password) && !password) throw new IllegalStateError("no key is associated with the instance");
21898 this.result = null;
21900 if (password || is_string(password)) this.key = _hmac_key(this.hash, password);
21901 var ipad = new Uint8Array(this.key);
21902 for (var i =
0; i < ipad.length; ++i) ipad[i] ^=
54;
21903 this.hash.process(ipad);
21904 var verify = options.verify;
21905 if (verify !== undefined) {
21906 _hmac_init_verify.call(this, verify);
21908 this.verify = null;
21912 function hmac_sha256_reset(options) {
21913 options = options || {};
21914 var password = options.password;
21915 if (this.key === null && !is_string(password) && !password) throw new IllegalStateError("no key is associated with the instance");
21916 this.result = null;
21918 if (password || is_string(password)) {
21919 this.key = _hmac_key(this.hash, password);
21920 this.hash.reset().asm.hmac_init(this.key[
0] <<
24 | this.key[
1] <<
16 | this.key[
2] <<
8 | this.key[
3], this.key[
4] <<
24 | this.key[
5] <<
16 | this.key[
6] <<
8 | this.key[
7], this.key[
8] <<
24 | this.key[
9] <<
16 | this.key[
10] <<
8 | this.key[
11], this.key[
12] <<
24 | this.key[
13] <<
16 | this.key[
14] <<
8 | this.key[
15], this.key[
16] <<
24 | this.key[
17] <<
16 | this.key[
18] <<
8 | this.key[
19], this.key[
20] <<
24 | this.key[
21] <<
16 | this.key[
22] <<
8 | this.key[
23], this.key[
24] <<
24 | this.key[
25] <<
16 | this.key[
26] <<
8 | this.key[
27], this.key[
28] <<
24 | this.key[
29] <<
16 | this.key[
30] <<
8 | this.key[
31], this.key[
32] <<
24 | this.key[
33] <<
16 | this.key[
34] <<
8 | this.key[
35], this.key[
36] <<
24 | this.key[
37] <<
16 | this.key[
38] <<
8 | this.key[
39], this.key[
40] <<
24 | this.key[
41] <<
16 | this.key[
42] <<
8 | this.key[
43], this.key[
44] <<
24 | this.key[
45] <<
16 | this.key[
46] <<
8 | this.key[
47], this.key[
48] <<
24 | this.key[
49] <<
16 | this.key[
50] <<
8 | this.key[
51], this.key[
52] <<
24 | this.key[
53] <<
16 | this.key[
54] <<
8 | this.key[
55], this.key[
56] <<
24 | this.key[
57] <<
16 | this.key[
58] <<
8 | this.key[
59], this.key[
60] <<
24 | this.key[
61] <<
16 | this.key[
62] <<
8 | this.key[
63]);
21922 this.hash.asm.hmac_reset();
21924 var verify = options.verify;
21925 if (verify !== undefined) {
21926 _hmac_init_verify.call(this, verify);
21928 this.verify = null;
21932 function hmac_sha512_reset(options) {
21933 options = options || {};
21934 var password = options.password;
21935 if (this.key === null && !is_string(password) && !password) throw new IllegalStateError("no key is associated with the instance");
21936 this.result = null;
21938 if (password || is_string(password)) {
21939 this.key = _hmac_key(this.hash, password);
21940 this.hash.reset().asm.hmac_init(this.key[
0] <<
24 | this.key[
1] <<
16 | this.key[
2] <<
8 | this.key[
3], this.key[
4] <<
24 | this.key[
5] <<
16 | this.key[
6] <<
8 | this.key[
7], this.key[
8] <<
24 | this.key[
9] <<
16 | this.key[
10] <<
8 | this.key[
11], this.key[
12] <<
24 | this.key[
13] <<
16 | this.key[
14] <<
8 | this.key[
15], this.key[
16] <<
24 | this.key[
17] <<
16 | this.key[
18] <<
8 | this.key[
19], this.key[
20] <<
24 | this.key[
21] <<
16 | this.key[
22] <<
8 | this.key[
23], this.key[
24] <<
24 | this.key[
25] <<
16 | this.key[
26] <<
8 | this.key[
27], this.key[
28] <<
24 | this.key[
29] <<
16 | this.key[
30] <<
8 | this.key[
31], this.key[
32] <<
24 | this.key[
33] <<
16 | this.key[
34] <<
8 | this.key[
35], this.key[
36] <<
24 | this.key[
37] <<
16 | this.key[
38] <<
8 | this.key[
39], this.key[
40] <<
24 | this.key[
41] <<
16 | this.key[
42] <<
8 | this.key[
43], this.key[
44] <<
24 | this.key[
45] <<
16 | this.key[
46] <<
8 | this.key[
47], this.key[
48] <<
24 | this.key[
49] <<
16 | this.key[
50] <<
8 | this.key[
51], this.key[
52] <<
24 | this.key[
53] <<
16 | this.key[
54] <<
8 | this.key[
55], this.key[
56] <<
24 | this.key[
57] <<
16 | this.key[
58] <<
8 | this.key[
59], this.key[
60] <<
24 | this.key[
61] <<
16 | this.key[
62] <<
8 | this.key[
63], this.key[
64] <<
24 | this.key[
65] <<
16 | this.key[
66] <<
8 | this.key[
67], this.key[
68] <<
24 | this.key[
69] <<
16 | this.key[
70] <<
8 | this.key[
71], this.key[
72] <<
24 | this.key[
73] <<
16 | this.key[
74] <<
8 | this.key[
75], this.key[
76] <<
24 | this.key[
77] <<
16 | this.key[
78] <<
8 | this.key[
79], this.key[
80] <<
24 | this.key[
81] <<
16 | this.key[
82] <<
8 | this.key[
83], this.key[
84] <<
24 | this.key[
85] <<
16 | this.key[
86] <<
8 | this.key[
87], this.key[
88] <<
24 | this.key[
89] <<
16 | this.key[
90] <<
8 | this.key[
91], this.key[
92] <<
24 | this.key[
93] <<
16 | this.key[
94] <<
8 | this.key[
95], this.key[
96] <<
24 | this.key[
97] <<
16 | this.key[
98] <<
8 | this.key[
99], this.key[
100] <<
24 | this.key[
101] <<
16 | this.key[
102] <<
8 | this.key[
103], this.key[
104] <<
24 | this.key[
105] <<
16 | this.key[
106] <<
8 | this.key[
107], this.key[
108] <<
24 | this.key[
109] <<
16 | this.key[
110] <<
8 | this.key[
111], this.key[
112] <<
24 | this.key[
113] <<
16 | this.key[
114] <<
8 | this.key[
115], this.key[
116] <<
24 | this.key[
117] <<
16 | this.key[
118] <<
8 | this.key[
119], this.key[
120] <<
24 | this.key[
121] <<
16 | this.key[
122] <<
8 | this.key[
123], this.key[
124] <<
24 | this.key[
125] <<
16 | this.key[
126] <<
8 | this.key[
127]);
21942 this.hash.asm.hmac_reset();
21944 var verify = options.verify;
21945 if (verify !== undefined) {
21946 _hmac_init_verify.call(this, verify);
21948 this.verify = null;
21952 function hmac_process(data) {
21953 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
21954 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21955 this.hash.process(data);
21958 function hmac_finish() {
21959 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
21960 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21961 var inner_result = this.hash.finish().result;
21962 var opad = new Uint8Array(this.key);
21963 for (var i =
0; i < opad.length; ++i) opad[i] ^=
92;
21964 var verify = this.verify;
21965 var result = this.hash.reset().process(opad).process(inner_result).finish().result;
21967 if (verify.length === result.length) {
21969 for (var i =
0; i < verify.length; i++) {
21970 diff |= verify[i] ^ result[i];
21972 this.result = !diff;
21974 this.result = false;
21977 this.result = result;
21981 function hmac_sha256_finish() {
21982 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
21983 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
21984 var hash = this.hash, asm = this.hash.asm, heap = this.hash.heap;
21985 asm.hmac_finish(hash.pos, hash.len,
0);
21986 var verify = this.verify;
21987 var result = new Uint8Array(_sha256_hash_size);
21988 result.set(heap.subarray(
0, _sha256_hash_size));
21990 if (verify.length === result.length) {
21992 for (var i =
0; i < verify.length; i++) {
21993 diff |= verify[i] ^ result[i];
21995 this.result = !diff;
21997 this.result = false;
22000 this.result = result;
22004 function hmac_sha512_finish() {
22005 if (this.key === null) throw new IllegalStateError("no key is associated with the instance");
22006 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
22007 var hash = this.hash, asm = this.hash.asm, heap = this.hash.heap;
22008 asm.hmac_finish(hash.pos, hash.len,
0);
22009 var verify = this.verify;
22010 var result = new Uint8Array(_sha512_hash_size);
22011 result.set(heap.subarray(
0, _sha512_hash_size));
22013 if (verify.length === result.length) {
22015 for (var i =
0; i < verify.length; i++) {
22016 diff |= verify[i] ^ result[i];
22018 this.result = !diff;
22020 this.result = false;
22023 this.result = result;
22027 var hmac_prototype = hmac_constructor.prototype;
22028 hmac_prototype.reset = hmac_reset;
22029 hmac_prototype.process = hmac_process;
22030 hmac_prototype.finish = hmac_finish;
22031 hmac_sha256_constructor.BLOCK_SIZE = sha256_constructor.BLOCK_SIZE;
22032 hmac_sha256_constructor.HMAC_SIZE = sha256_constructor.HASH_SIZE;
22033 var hmac_sha256_prototype = hmac_sha256_constructor.prototype;
22034 hmac_sha256_prototype.reset = hmac_sha256_reset;
22035 hmac_sha256_prototype.process = hmac_process;
22036 hmac_sha256_prototype.finish = hmac_sha256_finish;
22037 hmac_sha512_constructor.BLOCK_SIZE = sha512_constructor.BLOCK_SIZE;
22038 hmac_sha512_constructor.HMAC_SIZE = sha512_constructor.HASH_SIZE;
22039 var hmac_sha512_prototype = hmac_sha512_constructor.prototype;
22040 hmac_sha512_prototype.reset = hmac_sha512_reset;
22041 hmac_sha512_prototype.process = hmac_process;
22042 hmac_sha512_prototype.finish = hmac_sha512_finish;
22043 function pbkdf2_constructor(options) {
22044 options = options || {};
22045 if (!options.hmac) throw new SyntaxError("option 'hmac' is required");
22046 if (!options.hmac.HMAC_SIZE) throw new SyntaxError("option 'hmac' supplied doesn't seem to be a valid HMAC function");
22047 this.hmac = options.hmac;
22048 this.count = options.count ||
4096;
22049 this.length = options.length || this.hmac.HMAC_SIZE;
22050 this.result = null;
22051 var password = options.password;
22052 if (password || is_string(password)) this.reset(options);
22055 function pbkdf2_hmac_sha256_constructor(options) {
22056 options = options || {};
22057 if (!(options.hmac instanceof hmac_sha256_constructor)) options.hmac = new hmac_sha256_constructor(options);
22058 pbkdf2_constructor.call(this, options);
22061 function pbkdf2_hmac_sha512_constructor(options) {
22062 options = options || {};
22063 if (!(options.hmac instanceof hmac_sha512_constructor)) options.hmac = new hmac_sha512_constructor(options);
22064 pbkdf2_constructor.call(this, options);
22067 function pbkdf2_reset(options) {
22068 this.result = null;
22069 this.hmac.reset(options);
22072 function pbkdf2_generate(salt, count, length) {
22073 if (this.result !== null) throw new IllegalStateError("state must be reset before processing new data");
22074 if (!salt && !is_string(salt)) throw new IllegalArgumentError("bad 'salt' value");
22075 count = count || this.count;
22076 length = length || this.length;
22077 this.result = new Uint8Array(length);
22078 var blocks = Math.ceil(length / this.hmac.HMAC_SIZE);
22079 for (var i =
1; i <= blocks; ++i) {
22080 var j = (i -
1) * this.hmac.HMAC_SIZE;
22081 var l = (i < blocks ?
0 : length % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE;
22082 var tmp = new Uint8Array(this.hmac.reset().process(salt).process(new Uint8Array([ i
>>> 24 &
255, i
>>> 16 &
255, i
>>> 8 &
255, i &
255 ])).finish().result);
22083 this.result.set(tmp.subarray(
0, l), j);
22084 for (var k =
1; k < count; ++k) {
22085 tmp = new Uint8Array(this.hmac.reset().process(tmp).finish().result);
22086 for (var r =
0; r < l; ++r) this.result[j + r] ^= tmp[r];
22091 function pbkdf2_hmac_sha256_generate(salt, count, length) {
22092 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
22093 if (!salt && !is_string(salt)) throw new IllegalArgumentError(
"bad 'salt' value");
22094 count = count || this.count;
22095 length = length || this.length;
22096 this.result = new Uint8Array(length);
22097 var blocks = Math.ceil(length / this.hmac.HMAC_SIZE);
22098 for (var i =
1; i <= blocks; ++i) {
22099 var j = (i -
1) * this.hmac.HMAC_SIZE;
22100 var l = (i < blocks ?
0 : length % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE;
22101 this.hmac.reset().process(salt);
22102 this.hmac.hash.asm.pbkdf2_generate_block(this.hmac.hash.pos, this.hmac.hash.len, i, count,
0);
22103 this.result.set(this.hmac.hash.heap.subarray(
0, l), j);
22107 function pbkdf2_hmac_sha512_generate(salt, count, length) {
22108 if (this.result !== null) throw new IllegalStateError(
"state must be reset before processing new data");
22109 if (!salt && !is_string(salt)) throw new IllegalArgumentError(
"bad 'salt' value");
22110 count = count || this.count;
22111 length = length || this.length;
22112 this.result = new Uint8Array(length);
22113 var blocks = Math.ceil(length / this.hmac.HMAC_SIZE);
22114 for (var i =
1; i <= blocks; ++i) {
22115 var j = (i -
1) * this.hmac.HMAC_SIZE;
22116 var l = (i < blocks ?
0 : length % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE;
22117 this.hmac.reset().process(salt);
22118 this.hmac.hash.asm.pbkdf2_generate_block(this.hmac.hash.pos, this.hmac.hash.len, i, count,
0);
22119 this.result.set(this.hmac.hash.heap.subarray(
0, l), j);
22123 var pbkdf2_prototype = pbkdf2_constructor.prototype;
22124 pbkdf2_prototype.reset = pbkdf2_reset;
22125 pbkdf2_prototype.generate = pbkdf2_generate;
22126 var pbkdf2_hmac_sha256_prototype = pbkdf2_hmac_sha256_constructor.prototype;
22127 pbkdf2_hmac_sha256_prototype.reset = pbkdf2_reset;
22128 pbkdf2_hmac_sha256_prototype.generate = pbkdf2_hmac_sha256_generate;
22129 var pbkdf2_hmac_sha512_prototype = pbkdf2_hmac_sha512_constructor.prototype;
22130 pbkdf2_hmac_sha512_prototype.reset = pbkdf2_reset;
22131 pbkdf2_hmac_sha512_prototype.generate = pbkdf2_hmac_sha512_generate;
22132 global.IllegalStateError = IllegalStateError;
22133 global.IllegalArgumentError = IllegalArgumentError;
22134 global.SecurityError = SecurityError;
22135 exports.string_to_bytes = string_to_bytes;
22136 exports.hex_to_bytes = hex_to_bytes;
22137 exports.base64_to_bytes = base64_to_bytes;
22138 exports.bytes_to_string = bytes_to_string;
22139 exports.bytes_to_hex = bytes_to_hex;
22140 exports.bytes_to_base64 = bytes_to_base64;
22141 var SHA256_instance = new sha256_constructor({
22144 function sha256_bytes(data) {
22145 if (data === undefined) throw new SyntaxError(
"data required");
22146 return SHA256_instance.reset().process(data).finish().result;
22148 function sha256_hex(data) {
22149 var result = sha256_bytes(data);
22150 return bytes_to_hex(result);
22152 function sha256_base64(data) {
22153 var result = sha256_bytes(data);
22154 return bytes_to_base64(result);
22157 bytes: sha256_bytes,
22159 base64: sha256_base64
22161 var SHA512_instance = new sha512_constructor({
22164 function sha512_bytes(data) {
22165 if (data === undefined) throw new SyntaxError(
"data required");
22166 return SHA512_instance.reset().process(data).finish().result;
22168 function sha512_hex(data) {
22169 var result = sha512_bytes(data);
22170 return bytes_to_hex(result);
22172 function sha512_base64(data) {
22173 var result = sha512_bytes(data);
22174 return bytes_to_base64(result);
22177 bytes: sha512_bytes,
22179 base64: sha512_base64
22181 var hmac_sha256_instance = new hmac_sha256_constructor({
22182 hash: SHA256_instance
22184 function hmac_sha256_bytes(data, password) {
22185 if (data === undefined) throw new SyntaxError(
"data required");
22186 if (password === undefined) throw new SyntaxError(
"password required");
22187 return hmac_sha256_instance.reset({
22189 }).process(data).finish().result;
22191 function hmac_sha256_hex(data, password) {
22192 var result = hmac_sha256_bytes(data, password);
22193 return bytes_to_hex(result);
22195 function hmac_sha256_base64(data, password) {
22196 var result = hmac_sha256_bytes(data, password);
22197 return bytes_to_base64(result);
22199 exports.HMAC = exports.HMAC_SHA256 = {
22200 bytes: hmac_sha256_bytes,
22201 hex: hmac_sha256_hex,
22202 base64: hmac_sha256_base64
22204 var hmac_sha512_instance = new hmac_sha512_constructor({
22205 hash: SHA512_instance
22207 function hmac_sha512_bytes(data, password) {
22208 if (data === undefined) throw new SyntaxError(
"data required");
22209 if (password === undefined) throw new SyntaxError(
"password required");
22210 return hmac_sha512_instance.reset({
22212 }).process(data).finish().result;
22214 function hmac_sha512_hex(data, password) {
22215 var result = hmac_sha512_bytes(data, password);
22216 return bytes_to_hex(result);
22218 function hmac_sha512_base64(data, password) {
22219 var result = hmac_sha512_bytes(data, password);
22220 return bytes_to_base64(result);
22222 exports.HMAC_SHA512 = {
22223 bytes: hmac_sha512_bytes,
22224 hex: hmac_sha512_hex,
22225 base64: hmac_sha512_base64
22227 var pbkdf2_hmac_sha256_instance = new pbkdf2_hmac_sha256_constructor({
22228 hmac: hmac_sha256_instance
22230 function pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen) {
22231 if (password === undefined) throw new SyntaxError(
"password required");
22232 if (salt === undefined) throw new SyntaxError(
"salt required");
22233 return pbkdf2_hmac_sha256_instance.reset({
22235 }).generate(salt, iterations, dklen).result;
22237 function pbkdf2_hmac_sha256_hex(password, salt, iterations, dklen) {
22238 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen);
22239 return bytes_to_hex(result);
22241 function pbkdf2_hmac_sha256_base64(password, salt, iterations, dklen) {
22242 var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen);
22243 return bytes_to_base64(result);
22245 exports.PBKDF2 = exports.PBKDF2_HMAC_SHA256 = {
22246 bytes: pbkdf2_hmac_sha256_bytes,
22247 hex: pbkdf2_hmac_sha256_hex,
22248 base64: pbkdf2_hmac_sha256_base64
22250 var pbkdf2_hmac_sha512_instance = new pbkdf2_hmac_sha512_constructor({
22251 hmac: hmac_sha512_instance
22253 function pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen) {
22254 if (password === undefined) throw new SyntaxError(
"password required");
22255 if (salt === undefined) throw new SyntaxError(
"salt required");
22256 return pbkdf2_hmac_sha512_instance.reset({
22258 }).generate(salt, iterations, dklen).result;
22260 function pbkdf2_hmac_sha512_hex(password, salt, iterations, dklen) {
22261 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen);
22262 return bytes_to_hex(result);
22264 function pbkdf2_hmac_sha512_base64(password, salt, iterations, dklen) {
22265 var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen);
22266 return bytes_to_base64(result);
22268 exports.PBKDF2_HMAC_SHA512 = {
22269 bytes: pbkdf2_hmac_sha512_bytes,
22270 hex: pbkdf2_hmac_sha512_hex,
22271 base64: pbkdf2_hmac_sha512_base64
22273 var cbc_aes_instance = new cbc_aes_constructor({
22276 function cbc_aes_encrypt_bytes(data, key, padding, iv) {
22277 if (data === undefined) throw new SyntaxError(
"data required");
22278 if (key === undefined) throw new SyntaxError(
"key required");
22279 return cbc_aes_instance.reset({
22283 }).encrypt(data).result;
22285 function cbc_aes_decrypt_bytes(data, key, padding, iv) {
22286 if (data === undefined) throw new SyntaxError(
"data required");
22287 if (key === undefined) throw new SyntaxError(
"key required");
22288 return cbc_aes_instance.reset({
22292 }).decrypt(data).result;
22294 exports.AES = exports.AES_CBC = {
22295 encrypt: cbc_aes_encrypt_bytes,
22296 decrypt: cbc_aes_decrypt_bytes
22298 var ccm_aes_instance = new ccm_aes_constructor({
22299 heap: cbc_aes_instance.heap,
22300 asm: cbc_aes_instance.asm
22302 function ccm_aes_encrypt_bytes(data, key, nonce, adata, tagSize) {
22303 if (data === undefined) throw new SyntaxError(
"data required");
22304 if (key === undefined) throw new SyntaxError(
"key required");
22305 if (nonce === undefined) throw new SyntaxError(
"nonce required");
22306 var dataLength = data.byteLength || data.length ||
0;
22307 return ccm_aes_instance.reset({
22312 dataLength: dataLength
22313 }).encrypt(data).result;
22315 function ccm_aes_decrypt_bytes(data, key, nonce, adata, tagSize) {
22316 if (data === undefined) throw new SyntaxError(
"data required");
22317 if (key === undefined) throw new SyntaxError(
"key required");
22318 if (nonce === undefined) throw new SyntaxError(
"nonce required");
22319 var dataLength = data.byteLength || data.length ||
0;
22320 tagSize = tagSize || _aes_block_size;
22321 return ccm_aes_instance.reset({
22326 dataLength: dataLength - tagSize
22327 }).decrypt(data).result;
22329 exports.AES_CCM = {
22330 encrypt: ccm_aes_encrypt_bytes,
22331 decrypt: ccm_aes_decrypt_bytes
22333 var cfb_aes_instance = new cfb_aes_constructor({
22334 heap: cbc_aes_instance.heap,
22335 asm: cbc_aes_instance.asm
22337 function cfb_aes_encrypt_bytes(data, key, padding, iv) {
22338 if (data === undefined) throw new SyntaxError(
"data required");
22339 if (key === undefined) throw new SyntaxError(
"key required");
22340 return cfb_aes_instance.reset({
22344 }).encrypt(data).result;
22346 function cfb_aes_decrypt_bytes(data, key, padding, iv) {
22347 if (data === undefined) throw new SyntaxError(
"data required");
22348 if (key === undefined) throw new SyntaxError(
"key required");
22349 return cfb_aes_instance.reset({
22353 }).decrypt(data).result;
22355 exports.AES_CFB = {
22356 encrypt: cfb_aes_encrypt_bytes,
22357 decrypt: cfb_aes_decrypt_bytes
22359 var cfb_aes_decrypt_instance = new cfb_aes_decrypt_constructor({
22360 heap: cbc_aes_instance.heap,
22361 asm: cbc_aes_instance.asm
22363 function cfb_aes_decrypt_init(key, padding, iv) {
22364 if (key === undefined) throw new SyntaxError(
"key required");
22365 return cfb_aes_decrypt_instance.reset({
22371 exports.AES_CFB = exports.AES_CFB || {};
22372 exports.AES_CFB.decryptor = {
22373 init: cfb_aes_decrypt_init
22375 })({}, function() {
22380 <!--<script src="/js/jsbip39.js"></script>-->
22383 * Copyright (c)
2013 Pavol Rusnak
22385 * Permission is hereby granted, free of charge, to any person obtaining a copy of
22386 * this software and associated documentation files (the "Software"), to deal in
22387 * the Software without restriction, including without limitation the rights to
22388 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
22389 * of the Software, and to permit persons to whom the Software is furnished to do
22390 * so, subject to the following conditions:
22392 * The above copyright notice and this permission notice shall be included in all
22393 * copies or substantial portions of the Software.
22395 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22396 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22397 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22398 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22399 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22400 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22404 * Javascript port from python by Ian Coleman
22406 * Includes code from asmCrypto
22407 * https://github.com/tresorit/asmcrypto.js
22410 var Mnemonic = function(language) {
22412 var PBKDF2_ROUNDS =
2048;
22419 wordlist = WORDLISTS[language];
22420 if (wordlist.length != RADIX) {
22421 err = 'Wordlist should contain ' + RADIX + ' words, but it contains ' + wordlist.length + ' words.';
22426 self.generate = function(strength) {
22427 strength = strength ||
128;
22428 var r = strength %
32;
22430 throw 'Strength should be divisible by
32, but it is not (' + r + ').';
22432 var hasStrongCrypto = 'crypto' in window && window['crypto'] !== null;
22433 if (!hasStrongCrypto) {
22434 throw 'Mnemonic should be generated with strong randomness, but crypto.getRandomValues is unavailable';
22436 var buffer = new Uint8Array(strength /
8);
22437 var data = crypto.getRandomValues(buffer);
22438 return self.toMnemonic(data);
22441 self.toMnemonic = function(data) {
22442 if (data.length %
4 > 0) {
22443 throw 'Data length in bits should be divisible by
32, but it is not (' + data.length + ' bytes = ' + data.length*
8 + ' bits).'
22446 //h = hashlib.sha256(data).hexdigest()
22447 var uintArray = new Uint8Array(data);
22448 var h = asmCrypto.SHA256.bytes(uintArray);
22450 // b is a binary string, eg '
00111010101100...'
22451 //b = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8) + \
22452 // bin(int(h,
16))[
2:].zfill(
256)[:len(data) *
8 /
32]
22454 // a = bin(int(binascii.hexlify(data),
16))[
2:].zfill(len(data) *
8)
22455 // c = bin(int(h,
16))[
2:].zfill(
256)
22456 // d = c[:len(data) *
8 /
32]
22457 var a = byteArrayToBinaryString(data);
22458 var c = byteArrayToBinaryString(h);
22459 var d = c.substring(
0, data.length *
8 /
32);
22460 // b = line1 + line2
22464 var blen = b.length /
11;
22465 for (var i=
0; i
<blen; i++) {
22466 var idx = parseInt(b.substring(i *
11, (i +
1) *
11),
2);
22467 result.push(wordlist[idx]);
22469 return result.join(' ');
22472 self.check = function(mnemonic) {
22473 var mnemonic = mnemonic.split(' ')
22474 if (mnemonic.length %
3 > 0) {
22477 // idx = map(lambda x: bin(self.wordlist.index(x))[
2:].zfill(
11), mnemonic)
22479 for (var i=
0; i
<mnemonic.length; i++) {
22480 var word = mnemonic[i];
22481 var wordIndex = wordlist.indexOf(word);
22482 if (wordIndex == -
1) {
22485 var binaryIndex = zfill(wordIndex.toString(
2),
11);
22486 idx.push(binaryIndex);
22488 var b = idx.join('');
22490 //d = b[:l /
33 *
32]
22492 var d = b.substring(
0, l /
33 *
32);
22493 var h = b.substring(l - l /
33, l);
22494 //nd = binascii.unhexlify(hex(int(d,
2))[
2:].rstrip('L').zfill(l /
33 *
8))
22495 //nh = bin(int(hashlib.sha256(nd).hexdigest(),
16))[
2:].zfill(
256)[:l /
33]
22496 var nd = binaryStringToByteArray(d);
22497 var ndHash = asmCrypto.SHA256.bytes(nd);
22498 var ndBstr = zfill(byteArrayToBinaryString(ndHash),
256);
22499 var nh = ndBstr.substring(
0,l/
33);
22503 self.toSeed = function(mnemonic, passphrase) {
22504 passphrase = passphrase || '';
22505 mnemonic = normalizeString(mnemonic)
22506 passphrase = normalizeString(passphrase)
22507 passphrase =
"mnemonic" + passphrase;
22508 //return PBKDF2(mnemonic, 'mnemonic' + passphrase, iterations=PBKDF2_ROUNDS, macmodule=hmac, digestmodule=hashlib.sha512).read(
64)
22509 return asmCrypto.PBKDF2_HMAC_SHA512.hex(mnemonic, passphrase, PBKDF2_ROUNDS,
512/
8);
22512 function normalizeString(str) {
22513 if (typeof str.normalize ==
"function") {
22514 return str.normalize(
"NFKD");
22517 // TODO find a library to do this
22518 // Not supported on firefox mobile
22519 console.warn(
"NFKD Normalization is unavailable");
22524 function byteArrayToBinaryString(data) {
22526 for (var i=
0; i
<data.length; i++) {
22527 bin += zfill(data[i].toString(
2),
8);
22532 function binaryStringToByteArray(str) {
22533 var arrayLen = str.length /
8;
22534 var array = new Uint8Array(arrayLen);
22535 for (var i=
0; i
<arrayLen; i++) {
22536 var valueStr = str.substring(
0,
8);
22537 var value = parseInt(valueStr,
2);
22539 str = str.slice(
8);
22544 // Pad a numeric string on the left with zero digits until the given width
22546 // Note this differs to the python implementation because it does not
22547 // handle numbers starting with a sign.
22548 function zfill(source, length) {
22549 source = source.toString();
22550 while (source.length < length) {
22551 source = '
0' + source;
22562 "abandon",
"ability",
"able",
"about",
"above",
"absent",
"absorb",
"abstract",
"absurd",
"abuse",
22563 "access",
"accident",
"account",
"accuse",
"achieve",
"acid",
"acoustic",
"acquire",
"across",
"act",
22564 "action",
"actor",
"actress",
"actual",
"adapt",
"add",
"addict",
"address",
"adjust",
"admit",
22565 "adult",
"advance",
"advice",
"aerobic",
"affair",
"afford",
"afraid",
"again",
"age",
"agent",
22566 "agree",
"ahead",
"aim",
"air",
"airport",
"aisle",
"alarm",
"album",
"alcohol",
"alert",
22567 "alien",
"all",
"alley",
"allow",
"almost",
"alone",
"alpha",
"already",
"also",
"alter",
22568 "always",
"amateur",
"amazing",
"among",
"amount",
"amused",
"analyst",
"anchor",
"ancient",
"anger",
22569 "angle",
"angry",
"animal",
"ankle",
"announce",
"annual",
"another",
"answer",
"antenna",
"antique",
22570 "anxiety",
"any",
"apart",
"apology",
"appear",
"apple",
"approve",
"april",
"arch",
"arctic",
22571 "area",
"arena",
"argue",
"arm",
"armed",
"armor",
"army",
"around",
"arrange",
"arrest",
22572 "arrive",
"arrow",
"art",
"artefact",
"artist",
"artwork",
"ask",
"aspect",
"assault",
"asset",
22573 "assist",
"assume",
"asthma",
"athlete",
"atom",
"attack",
"attend",
"attitude",
"attract",
"auction",
22574 "audit",
"august",
"aunt",
"author",
"auto",
"autumn",
"average",
"avocado",
"avoid",
"awake",
22575 "aware",
"away",
"awesome",
"awful",
"awkward",
"axis",
"baby",
"bachelor",
"bacon",
"badge",
22576 "bag",
"balance",
"balcony",
"ball",
"bamboo",
"banana",
"banner",
"bar",
"barely",
"bargain",
22577 "barrel",
"base",
"basic",
"basket",
"battle",
"beach",
"bean",
"beauty",
"because",
"become",
22578 "beef",
"before",
"begin",
"behave",
"behind",
"believe",
"below",
"belt",
"bench",
"benefit",
22579 "best",
"betray",
"better",
"between",
"beyond",
"bicycle",
"bid",
"bike",
"bind",
"biology",
22580 "bird",
"birth",
"bitter",
"black",
"blade",
"blame",
"blanket",
"blast",
"bleak",
"bless",
22581 "blind",
"blood",
"blossom",
"blouse",
"blue",
"blur",
"blush",
"board",
"boat",
"body",
22582 "boil",
"bomb",
"bone",
"bonus",
"book",
"boost",
"border",
"boring",
"borrow",
"boss",
22583 "bottom",
"bounce",
"box",
"boy",
"bracket",
"brain",
"brand",
"brass",
"brave",
"bread",
22584 "breeze",
"brick",
"bridge",
"brief",
"bright",
"bring",
"brisk",
"broccoli",
"broken",
"bronze",
22585 "broom",
"brother",
"brown",
"brush",
"bubble",
"buddy",
"budget",
"buffalo",
"build",
"bulb",
22586 "bulk",
"bullet",
"bundle",
"bunker",
"burden",
"burger",
"burst",
"bus",
"business",
"busy",
22587 "butter",
"buyer",
"buzz",
"cabbage",
"cabin",
"cable",
"cactus",
"cage",
"cake",
"call",
22588 "calm",
"camera",
"camp",
"can",
"canal",
"cancel",
"candy",
"cannon",
"canoe",
"canvas",
22589 "canyon",
"capable",
"capital",
"captain",
"car",
"carbon",
"card",
"cargo",
"carpet",
"carry",
22590 "cart",
"case",
"cash",
"casino",
"castle",
"casual",
"cat",
"catalog",
"catch",
"category",
22591 "cattle",
"caught",
"cause",
"caution",
"cave",
"ceiling",
"celery",
"cement",
"census",
"century",
22592 "cereal",
"certain",
"chair",
"chalk",
"champion",
"change",
"chaos",
"chapter",
"charge",
"chase",
22593 "chat",
"cheap",
"check",
"cheese",
"chef",
"cherry",
"chest",
"chicken",
"chief",
"child",
22594 "chimney",
"choice",
"choose",
"chronic",
"chuckle",
"chunk",
"churn",
"cigar",
"cinnamon",
"circle",
22595 "citizen",
"city",
"civil",
"claim",
"clap",
"clarify",
"claw",
"clay",
"clean",
"clerk",
22596 "clever",
"click",
"client",
"cliff",
"climb",
"clinic",
"clip",
"clock",
"clog",
"close",
22597 "cloth",
"cloud",
"clown",
"club",
"clump",
"cluster",
"clutch",
"coach",
"coast",
"coconut",
22598 "code",
"coffee",
"coil",
"coin",
"collect",
"color",
"column",
"combine",
"come",
"comfort",
22599 "comic",
"common",
"company",
"concert",
"conduct",
"confirm",
"congress",
"connect",
"consider",
"control",
22600 "convince",
"cook",
"cool",
"copper",
"copy",
"coral",
"core",
"corn",
"correct",
"cost",
22601 "cotton",
"couch",
"country",
"couple",
"course",
"cousin",
"cover",
"coyote",
"crack",
"cradle",
22602 "craft",
"cram",
"crane",
"crash",
"crater",
"crawl",
"crazy",
"cream",
"credit",
"creek",
22603 "crew",
"cricket",
"crime",
"crisp",
"critic",
"crop",
"cross",
"crouch",
"crowd",
"crucial",
22604 "cruel",
"cruise",
"crumble",
"crunch",
"crush",
"cry",
"crystal",
"cube",
"culture",
"cup",
22605 "cupboard",
"curious",
"current",
"curtain",
"curve",
"cushion",
"custom",
"cute",
"cycle",
"dad",
22606 "damage",
"damp",
"dance",
"danger",
"daring",
"dash",
"daughter",
"dawn",
"day",
"deal",
22607 "debate",
"debris",
"decade",
"december",
"decide",
"decline",
"decorate",
"decrease",
"deer",
"defense",
22608 "define",
"defy",
"degree",
"delay",
"deliver",
"demand",
"demise",
"denial",
"dentist",
"deny",
22609 "depart",
"depend",
"deposit",
"depth",
"deputy",
"derive",
"describe",
"desert",
"design",
"desk",
22610 "despair",
"destroy",
"detail",
"detect",
"develop",
"device",
"devote",
"diagram",
"dial",
"diamond",
22611 "diary",
"dice",
"diesel",
"diet",
"differ",
"digital",
"dignity",
"dilemma",
"dinner",
"dinosaur",
22612 "direct",
"dirt",
"disagree",
"discover",
"disease",
"dish",
"dismiss",
"disorder",
"display",
"distance",
22613 "divert",
"divide",
"divorce",
"dizzy",
"doctor",
"document",
"dog",
"doll",
"dolphin",
"domain",
22614 "donate",
"donkey",
"donor",
"door",
"dose",
"double",
"dove",
"draft",
"dragon",
"drama",
22615 "drastic",
"draw",
"dream",
"dress",
"drift",
"drill",
"drink",
"drip",
"drive",
"drop",
22616 "drum",
"dry",
"duck",
"dumb",
"dune",
"during",
"dust",
"dutch",
"duty",
"dwarf",
22617 "dynamic",
"eager",
"eagle",
"early",
"earn",
"earth",
"easily",
"east",
"easy",
"echo",
22618 "ecology",
"economy",
"edge",
"edit",
"educate",
"effort",
"egg",
"eight",
"either",
"elbow",
22619 "elder",
"electric",
"elegant",
"element",
"elephant",
"elevator",
"elite",
"else",
"embark",
"embody",
22620 "embrace",
"emerge",
"emotion",
"employ",
"empower",
"empty",
"enable",
"enact",
"end",
"endless",
22621 "endorse",
"enemy",
"energy",
"enforce",
"engage",
"engine",
"enhance",
"enjoy",
"enlist",
"enough",
22622 "enrich",
"enroll",
"ensure",
"enter",
"entire",
"entry",
"envelope",
"episode",
"equal",
"equip",
22623 "era",
"erase",
"erode",
"erosion",
"error",
"erupt",
"escape",
"essay",
"essence",
"estate",
22624 "eternal",
"ethics",
"evidence",
"evil",
"evoke",
"evolve",
"exact",
"example",
"excess",
"exchange",
22625 "excite",
"exclude",
"excuse",
"execute",
"exercise",
"exhaust",
"exhibit",
"exile",
"exist",
"exit",
22626 "exotic",
"expand",
"expect",
"expire",
"explain",
"expose",
"express",
"extend",
"extra",
"eye",
22627 "eyebrow",
"fabric",
"face",
"faculty",
"fade",
"faint",
"faith",
"fall",
"false",
"fame",
22628 "family",
"famous",
"fan",
"fancy",
"fantasy",
"farm",
"fashion",
"fat",
"fatal",
"father",
22629 "fatigue",
"fault",
"favorite",
"feature",
"february",
"federal",
"fee",
"feed",
"feel",
"female",
22630 "fence",
"festival",
"fetch",
"fever",
"few",
"fiber",
"fiction",
"field",
"figure",
"file",
22631 "film",
"filter",
"final",
"find",
"fine",
"finger",
"finish",
"fire",
"firm",
"first",
22632 "fiscal",
"fish",
"fit",
"fitness",
"fix",
"flag",
"flame",
"flash",
"flat",
"flavor",
22633 "flee",
"flight",
"flip",
"float",
"flock",
"floor",
"flower",
"fluid",
"flush",
"fly",
22634 "foam",
"focus",
"fog",
"foil",
"fold",
"follow",
"food",
"foot",
"force",
"forest",
22635 "forget",
"fork",
"fortune",
"forum",
"forward",
"fossil",
"foster",
"found",
"fox",
"fragile",
22636 "frame",
"frequent",
"fresh",
"friend",
"fringe",
"frog",
"front",
"frost",
"frown",
"frozen",
22637 "fruit",
"fuel",
"fun",
"funny",
"furnace",
"fury",
"future",
"gadget",
"gain",
"galaxy",
22638 "gallery",
"game",
"gap",
"garage",
"garbage",
"garden",
"garlic",
"garment",
"gas",
"gasp",
22639 "gate",
"gather",
"gauge",
"gaze",
"general",
"genius",
"genre",
"gentle",
"genuine",
"gesture",
22640 "ghost",
"giant",
"gift",
"giggle",
"ginger",
"giraffe",
"girl",
"give",
"glad",
"glance",
22641 "glare",
"glass",
"glide",
"glimpse",
"globe",
"gloom",
"glory",
"glove",
"glow",
"glue",
22642 "goat",
"goddess",
"gold",
"good",
"goose",
"gorilla",
"gospel",
"gossip",
"govern",
"gown",
22643 "grab",
"grace",
"grain",
"grant",
"grape",
"grass",
"gravity",
"great",
"green",
"grid",
22644 "grief",
"grit",
"grocery",
"group",
"grow",
"grunt",
"guard",
"guess",
"guide",
"guilt",
22645 "guitar",
"gun",
"gym",
"habit",
"hair",
"half",
"hammer",
"hamster",
"hand",
"happy",
22646 "harbor",
"hard",
"harsh",
"harvest",
"hat",
"have",
"hawk",
"hazard",
"head",
"health",
22647 "heart",
"heavy",
"hedgehog",
"height",
"hello",
"helmet",
"help",
"hen",
"hero",
"hidden",
22648 "high",
"hill",
"hint",
"hip",
"hire",
"history",
"hobby",
"hockey",
"hold",
"hole",
22649 "holiday",
"hollow",
"home",
"honey",
"hood",
"hope",
"horn",
"horror",
"horse",
"hospital",
22650 "host",
"hotel",
"hour",
"hover",
"hub",
"huge",
"human",
"humble",
"humor",
"hundred",
22651 "hungry",
"hunt",
"hurdle",
"hurry",
"hurt",
"husband",
"hybrid",
"ice",
"icon",
"idea",
22652 "identify",
"idle",
"ignore",
"ill",
"illegal",
"illness",
"image",
"imitate",
"immense",
"immune",
22653 "impact",
"impose",
"improve",
"impulse",
"inch",
"include",
"income",
"increase",
"index",
"indicate",
22654 "indoor",
"industry",
"infant",
"inflict",
"inform",
"inhale",
"inherit",
"initial",
"inject",
"injury",
22655 "inmate",
"inner",
"innocent",
"input",
"inquiry",
"insane",
"insect",
"inside",
"inspire",
"install",
22656 "intact",
"interest",
"into",
"invest",
"invite",
"involve",
"iron",
"island",
"isolate",
"issue",
22657 "item",
"ivory",
"jacket",
"jaguar",
"jar",
"jazz",
"jealous",
"jeans",
"jelly",
"jewel",
22658 "job",
"join",
"joke",
"journey",
"joy",
"judge",
"juice",
"jump",
"jungle",
"junior",
22659 "junk",
"just",
"kangaroo",
"keen",
"keep",
"ketchup",
"key",
"kick",
"kid",
"kidney",
22660 "kind",
"kingdom",
"kiss",
"kit",
"kitchen",
"kite",
"kitten",
"kiwi",
"knee",
"knife",
22661 "knock",
"know",
"lab",
"label",
"labor",
"ladder",
"lady",
"lake",
"lamp",
"language",
22662 "laptop",
"large",
"later",
"latin",
"laugh",
"laundry",
"lava",
"law",
"lawn",
"lawsuit",
22663 "layer",
"lazy",
"leader",
"leaf",
"learn",
"leave",
"lecture",
"left",
"leg",
"legal",
22664 "legend",
"leisure",
"lemon",
"lend",
"length",
"lens",
"leopard",
"lesson",
"letter",
"level",
22665 "liar",
"liberty",
"library",
"license",
"life",
"lift",
"light",
"like",
"limb",
"limit",
22666 "link",
"lion",
"liquid",
"list",
"little",
"live",
"lizard",
"load",
"loan",
"lobster",
22667 "local",
"lock",
"logic",
"lonely",
"long",
"loop",
"lottery",
"loud",
"lounge",
"love",
22668 "loyal",
"lucky",
"luggage",
"lumber",
"lunar",
"lunch",
"luxury",
"lyrics",
"machine",
"mad",
22669 "magic",
"magnet",
"maid",
"mail",
"main",
"major",
"make",
"mammal",
"man",
"manage",
22670 "mandate",
"mango",
"mansion",
"manual",
"maple",
"marble",
"march",
"margin",
"marine",
"market",
22671 "marriage",
"mask",
"mass",
"master",
"match",
"material",
"math",
"matrix",
"matter",
"maximum",
22672 "maze",
"meadow",
"mean",
"measure",
"meat",
"mechanic",
"medal",
"media",
"melody",
"melt",
22673 "member",
"memory",
"mention",
"menu",
"mercy",
"merge",
"merit",
"merry",
"mesh",
"message",
22674 "metal",
"method",
"middle",
"midnight",
"milk",
"million",
"mimic",
"mind",
"minimum",
"minor",
22675 "minute",
"miracle",
"mirror",
"misery",
"miss",
"mistake",
"mix",
"mixed",
"mixture",
"mobile",
22676 "model",
"modify",
"mom",
"moment",
"monitor",
"monkey",
"monster",
"month",
"moon",
"moral",
22677 "more",
"morning",
"mosquito",
"mother",
"motion",
"motor",
"mountain",
"mouse",
"move",
"movie",
22678 "much",
"muffin",
"mule",
"multiply",
"muscle",
"museum",
"mushroom",
"music",
"must",
"mutual",
22679 "myself",
"mystery",
"myth",
"naive",
"name",
"napkin",
"narrow",
"nasty",
"nation",
"nature",
22680 "near",
"neck",
"need",
"negative",
"neglect",
"neither",
"nephew",
"nerve",
"nest",
"net",
22681 "network",
"neutral",
"never",
"news",
"next",
"nice",
"night",
"noble",
"noise",
"nominee",
22682 "noodle",
"normal",
"north",
"nose",
"notable",
"note",
"nothing",
"notice",
"novel",
"now",
22683 "nuclear",
"number",
"nurse",
"nut",
"oak",
"obey",
"object",
"oblige",
"obscure",
"observe",
22684 "obtain",
"obvious",
"occur",
"ocean",
"october",
"odor",
"off",
"offer",
"office",
"often",
22685 "oil",
"okay",
"old",
"olive",
"olympic",
"omit",
"once",
"one",
"onion",
"online",
22686 "only",
"open",
"opera",
"opinion",
"oppose",
"option",
"orange",
"orbit",
"orchard",
"order",
22687 "ordinary",
"organ",
"orient",
"original",
"orphan",
"ostrich",
"other",
"outdoor",
"outer",
"output",
22688 "outside",
"oval",
"oven",
"over",
"own",
"owner",
"oxygen",
"oyster",
"ozone",
"pact",
22689 "paddle",
"page",
"pair",
"palace",
"palm",
"panda",
"panel",
"panic",
"panther",
"paper",
22690 "parade",
"parent",
"park",
"parrot",
"party",
"pass",
"patch",
"path",
"patient",
"patrol",
22691 "pattern",
"pause",
"pave",
"payment",
"peace",
"peanut",
"pear",
"peasant",
"pelican",
"pen",
22692 "penalty",
"pencil",
"people",
"pepper",
"perfect",
"permit",
"person",
"pet",
"phone",
"photo",
22693 "phrase",
"physical",
"piano",
"picnic",
"picture",
"piece",
"pig",
"pigeon",
"pill",
"pilot",
22694 "pink",
"pioneer",
"pipe",
"pistol",
"pitch",
"pizza",
"place",
"planet",
"plastic",
"plate",
22695 "play",
"please",
"pledge",
"pluck",
"plug",
"plunge",
"poem",
"poet",
"point",
"polar",
22696 "pole",
"police",
"pond",
"pony",
"pool",
"popular",
"portion",
"position",
"possible",
"post",
22697 "potato",
"pottery",
"poverty",
"powder",
"power",
"practice",
"praise",
"predict",
"prefer",
"prepare",
22698 "present",
"pretty",
"prevent",
"price",
"pride",
"primary",
"print",
"priority",
"prison",
"private",
22699 "prize",
"problem",
"process",
"produce",
"profit",
"program",
"project",
"promote",
"proof",
"property",
22700 "prosper",
"protect",
"proud",
"provide",
"public",
"pudding",
"pull",
"pulp",
"pulse",
"pumpkin",
22701 "punch",
"pupil",
"puppy",
"purchase",
"purity",
"purpose",
"purse",
"push",
"put",
"puzzle",
22702 "pyramid",
"quality",
"quantum",
"quarter",
"question",
"quick",
"quit",
"quiz",
"quote",
"rabbit",
22703 "raccoon",
"race",
"rack",
"radar",
"radio",
"rail",
"rain",
"raise",
"rally",
"ramp",
22704 "ranch",
"random",
"range",
"rapid",
"rare",
"rate",
"rather",
"raven",
"raw",
"razor",
22705 "ready",
"real",
"reason",
"rebel",
"rebuild",
"recall",
"receive",
"recipe",
"record",
"recycle",
22706 "reduce",
"reflect",
"reform",
"refuse",
"region",
"regret",
"regular",
"reject",
"relax",
"release",
22707 "relief",
"rely",
"remain",
"remember",
"remind",
"remove",
"render",
"renew",
"rent",
"reopen",
22708 "repair",
"repeat",
"replace",
"report",
"require",
"rescue",
"resemble",
"resist",
"resource",
"response",
22709 "result",
"retire",
"retreat",
"return",
"reunion",
"reveal",
"review",
"reward",
"rhythm",
"rib",
22710 "ribbon",
"rice",
"rich",
"ride",
"ridge",
"rifle",
"right",
"rigid",
"ring",
"riot",
22711 "ripple",
"risk",
"ritual",
"rival",
"river",
"road",
"roast",
"robot",
"robust",
"rocket",
22712 "romance",
"roof",
"rookie",
"room",
"rose",
"rotate",
"rough",
"round",
"route",
"royal",
22713 "rubber",
"rude",
"rug",
"rule",
"run",
"runway",
"rural",
"sad",
"saddle",
"sadness",
22714 "safe",
"sail",
"salad",
"salmon",
"salon",
"salt",
"salute",
"same",
"sample",
"sand",
22715 "satisfy",
"satoshi",
"sauce",
"sausage",
"save",
"say",
"scale",
"scan",
"scare",
"scatter",
22716 "scene",
"scheme",
"school",
"science",
"scissors",
"scorpion",
"scout",
"scrap",
"screen",
"script",
22717 "scrub",
"sea",
"search",
"season",
"seat",
"second",
"secret",
"section",
"security",
"seed",
22718 "seek",
"segment",
"select",
"sell",
"seminar",
"senior",
"sense",
"sentence",
"series",
"service",
22719 "session",
"settle",
"setup",
"seven",
"shadow",
"shaft",
"shallow",
"share",
"shed",
"shell",
22720 "sheriff",
"shield",
"shift",
"shine",
"ship",
"shiver",
"shock",
"shoe",
"shoot",
"shop",
22721 "short",
"shoulder",
"shove",
"shrimp",
"shrug",
"shuffle",
"shy",
"sibling",
"sick",
"side",
22722 "siege",
"sight",
"sign",
"silent",
"silk",
"silly",
"silver",
"similar",
"simple",
"since",
22723 "sing",
"siren",
"sister",
"situate",
"six",
"size",
"skate",
"sketch",
"ski",
"skill",
22724 "skin",
"skirt",
"skull",
"slab",
"slam",
"sleep",
"slender",
"slice",
"slide",
"slight",
22725 "slim",
"slogan",
"slot",
"slow",
"slush",
"small",
"smart",
"smile",
"smoke",
"smooth",
22726 "snack",
"snake",
"snap",
"sniff",
"snow",
"soap",
"soccer",
"social",
"sock",
"soda",
22727 "soft",
"solar",
"soldier",
"solid",
"solution",
"solve",
"someone",
"song",
"soon",
"sorry",
22728 "sort",
"soul",
"sound",
"soup",
"source",
"south",
"space",
"spare",
"spatial",
"spawn",
22729 "speak",
"special",
"speed",
"spell",
"spend",
"sphere",
"spice",
"spider",
"spike",
"spin",
22730 "spirit",
"split",
"spoil",
"sponsor",
"spoon",
"sport",
"spot",
"spray",
"spread",
"spring",
22731 "spy",
"square",
"squeeze",
"squirrel",
"stable",
"stadium",
"staff",
"stage",
"stairs",
"stamp",
22732 "stand",
"start",
"state",
"stay",
"steak",
"steel",
"stem",
"step",
"stereo",
"stick",
22733 "still",
"sting",
"stock",
"stomach",
"stone",
"stool",
"story",
"stove",
"strategy",
"street",
22734 "strike",
"strong",
"struggle",
"student",
"stuff",
"stumble",
"style",
"subject",
"submit",
"subway",
22735 "success",
"such",
"sudden",
"suffer",
"sugar",
"suggest",
"suit",
"summer",
"sun",
"sunny",
22736 "sunset",
"super",
"supply",
"supreme",
"sure",
"surface",
"surge",
"surprise",
"surround",
"survey",
22737 "suspect",
"sustain",
"swallow",
"swamp",
"swap",
"swarm",
"swear",
"sweet",
"swift",
"swim",
22738 "swing",
"switch",
"sword",
"symbol",
"symptom",
"syrup",
"system",
"table",
"tackle",
"tag",
22739 "tail",
"talent",
"talk",
"tank",
"tape",
"target",
"task",
"taste",
"tattoo",
"taxi",
22740 "teach",
"team",
"tell",
"ten",
"tenant",
"tennis",
"tent",
"term",
"test",
"text",
22741 "thank",
"that",
"theme",
"then",
"theory",
"there",
"they",
"thing",
"this",
"thought",
22742 "three",
"thrive",
"throw",
"thumb",
"thunder",
"ticket",
"tide",
"tiger",
"tilt",
"timber",
22743 "time",
"tiny",
"tip",
"tired",
"tissue",
"title",
"toast",
"tobacco",
"today",
"toddler",
22744 "toe",
"together",
"toilet",
"token",
"tomato",
"tomorrow",
"tone",
"tongue",
"tonight",
"tool",
22745 "tooth",
"top",
"topic",
"topple",
"torch",
"tornado",
"tortoise",
"toss",
"total",
"tourist",
22746 "toward",
"tower",
"town",
"toy",
"track",
"trade",
"traffic",
"tragic",
"train",
"transfer",
22747 "trap",
"trash",
"travel",
"tray",
"treat",
"tree",
"trend",
"trial",
"tribe",
"trick",
22748 "trigger",
"trim",
"trip",
"trophy",
"trouble",
"truck",
"true",
"truly",
"trumpet",
"trust",
22749 "truth",
"try",
"tube",
"tuition",
"tumble",
"tuna",
"tunnel",
"turkey",
"turn",
"turtle",
22750 "twelve",
"twenty",
"twice",
"twin",
"twist",
"two",
"type",
"typical",
"ugly",
"umbrella",
22751 "unable",
"unaware",
"uncle",
"uncover",
"under",
"undo",
"unfair",
"unfold",
"unhappy",
"uniform",
22752 "unique",
"unit",
"universe",
"unknown",
"unlock",
"until",
"unusual",
"unveil",
"update",
"upgrade",
22753 "uphold",
"upon",
"upper",
"upset",
"urban",
"urge",
"usage",
"use",
"used",
"useful",
22754 "useless",
"usual",
"utility",
"vacant",
"vacuum",
"vague",
"valid",
"valley",
"valve",
"van",
22755 "vanish",
"vapor",
"various",
"vast",
"vault",
"vehicle",
"velvet",
"vendor",
"venture",
"venue",
22756 "verb",
"verify",
"version",
"very",
"vessel",
"veteran",
"viable",
"vibrant",
"vicious",
"victory",
22757 "video",
"view",
"village",
"vintage",
"violin",
"virtual",
"virus",
"visa",
"visit",
"visual",
22758 "vital",
"vivid",
"vocal",
"voice",
"void",
"volcano",
"volume",
"vote",
"voyage",
"wage",
22759 "wagon",
"wait",
"walk",
"wall",
"walnut",
"want",
"warfare",
"warm",
"warrior",
"wash",
22760 "wasp",
"waste",
"water",
"wave",
"way",
"wealth",
"weapon",
"wear",
"weasel",
"weather",
22761 "web",
"wedding",
"weekend",
"weird",
"welcome",
"west",
"wet",
"whale",
"what",
"wheat",
22762 "wheel",
"when",
"where",
"whip",
"whisper",
"wide",
"width",
"wife",
"wild",
"will",
22763 "win",
"window",
"wine",
"wing",
"wink",
"winner",
"winter",
"wire",
"wisdom",
"wise",
22764 "wish",
"witness",
"wolf",
"woman",
"wonder",
"wood",
"wool",
"word",
"work",
"world",
22765 "worry",
"worth",
"wrap",
"wreck",
"wrestle",
"wrist",
"write",
"wrong",
"yard",
"year",
22766 "yellow",
"you",
"young",
"youth",
"zebra",
"zero",
"zone",
"zoo"]
22770 <!--<script src="/js/index.js"></script>-->
22774 var mnemonic = new Mnemonic("english");
22775 var bip32RootKey = null;
22776 var bip32ExtendedKey = null;
22777 var network = Bitcoin.networks.bitcoin;
22778 var addressRowTemplate = $("#address-row-template");
22780 var phraseChangeTimeoutEvent = null;
22783 DOM.phrase = $(".phrase");
22784 DOM.passphrase = $(".passphrase");
22785 DOM.generate = $(".generate");
22786 DOM.rootKey = $(".root-key");
22787 DOM.extendedPrivKey = $(".extended-priv-key");
22788 DOM.extendedPubKey = $(".extended-pub-key");
22789 DOM.bip32path = $("#bip32-path");
22790 DOM.bip44path = $("#bip44-path");
22791 DOM.bip44purpose = $("#bip44 .purpose");
22792 DOM.bip44coin = $("#bip44 .coin");
22793 DOM.bip44account = $("#bip44 .account");
22794 DOM.bip44change = $("#bip44 .change");
22795 DOM.strength = $(".strength");
22796 DOM.addresses = $(".addresses");
22797 DOM.rowsToAdd = $(".rows-to-add");
22798 DOM.more = $(".more");
22799 DOM.feedback = $(".feedback");
22800 DOM.tab = $(".derivation-type a");
22801 DOM.indexToggle = $(".index-toggle");
22802 DOM.addressToggle = $(".address-toggle");
22803 DOM.privateKeyToggle = $(".private-key-toggle");
22805 var derivationPath = DOM.bip44path.val();
22809 DOM.phrase.on("keyup", delayedPhraseChanged);
22810 DOM.passphrase.on("keyup", delayedPhraseChanged);
22811 DOM.generate.on("click", generateClicked);
22812 DOM.more.on("click", showMore);
22813 DOM.bip32path.on("keyup", bip32Changed);
22814 DOM.bip44purpose.on("keyup", bip44Changed);
22815 DOM.bip44coin.on("keyup", bip44Changed);
22816 DOM.bip44account.on("keyup", bip44Changed);
22817 DOM.bip44change.on("keyup", bip44Changed);
22818 DOM.tab.on("click", tabClicked);
22819 DOM.indexToggle.on("click", toggleIndexes);
22820 DOM.addressToggle.on("click", toggleAddresses);
22821 DOM.privateKeyToggle.on("click", togglePrivateKeys);
22824 hideValidationError();
22829 function delayedPhraseChanged() {
22830 hideValidationError();
22832 if (phraseChangeTimeoutEvent != null) {
22833 clearTimeout(phraseChangeTimeoutEvent);
22835 phraseChangeTimeoutEvent = setTimeout(phraseChanged,
400);
22838 function phraseChanged() {
22840 hideValidationError();
22841 // Get the mnemonic phrase
22842 var phrase = DOM.phrase.val();
22843 var passphrase = DOM.passphrase.val();
22844 var errorText = findPhraseErrors(phrase);
22846 showValidationError(errorText);
22849 // Get the derivation path
22850 var errorText = findDerivationPathErrors();
22852 showValidationError(errorText);
22855 // Calculate and display
22856 calcBip32Seed(phrase, passphrase, derivationPath);
22857 displayBip32Info();
22861 function generateClicked() {
22864 setTimeout(function() {
22865 var phrase = generateRandomPhrase();
22873 function tabClicked(e) {
22874 var activePath = $(e.target.getAttribute("href") + " .path");
22875 derivationPath = activePath.val();
22876 derivationChanged();
22879 function derivationChanged() {
22880 delayedPhraseChanged();
22883 function bip32Changed() {
22884 derivationPath = DOM.bip32path.val();
22885 derivationChanged();
22888 function bip44Changed() {
22889 setBip44DerivationPath();
22890 derivationPath = DOM.bip44path.val();
22891 derivationChanged();
22894 function toggleIndexes() {
22895 $("td.index span").toggleClass("invisible");
22898 function toggleAddresses() {
22899 $("td.address span").toggleClass("invisible");
22902 function togglePrivateKeys() {
22903 $("td.privkey span").toggleClass("invisible");
22908 function generateRandomPhrase() {
22909 if (!hasStrongRandom()) {
22910 var errorText = "This browser does not support strong randomness";
22911 showValidationError(errorText);
22914 var numWords = parseInt(DOM.strength.val());
22915 // Check strength is an integer
22916 if (isNaN(numWords)) {
22917 DOM.strength.val("
12");
22920 // Check strength is a multiple of
32, if not round it down
22921 if (numWords %
3 !=
0) {
22922 numWords = Math.floor(numWords /
3) *
3;
22923 DOM.strength.val(numWords);
22925 // Check strength is at least
32
22926 if (numWords ==
0) {
22928 DOM.strength.val(numWords);
22930 var strength = numWords /
3 *
32;
22931 var words = mnemonic.generate(strength);
22932 DOM.phrase.val(words);
22936 function calcBip32Seed(phrase, passphrase, path) {
22937 var seed = mnemonic.toSeed(phrase, passphrase);
22938 var seedHash = Bitcoin.crypto.sha256(seed).toString("hex");
22939 bip32RootKey = Bitcoin.HDNode.fromSeedHex(seedHash, network);
22940 bip32ExtendedKey = bip32RootKey;
22941 // Derive the key from the path
22942 var pathBits = path.split("/");
22943 for (var i=
0; i
<pathBits.length; i++) {
22944 var bit = pathBits[i];
22945 var index = parseInt(bit);
22946 if (isNaN(index)) {
22949 var hardened = bit[bit.length-
1] ==
"'";
22951 bip32ExtendedKey = bip32ExtendedKey.deriveHardened(index);
22954 bip32ExtendedKey = bip32ExtendedKey.derive(index);
22959 function showValidationError(errorText) {
22965 function hideValidationError() {
22971 function findPhraseErrors(phrase) {
22972 // TODO make this right
22973 // Preprocess the words
22974 var parts = phrase.split(
" ");
22976 for (var i=
0; i
<parts.length; i++) {
22977 var part = parts[i];
22978 if (part.length
> 0) {
22979 // TODO check that lowercasing is always valid to do
22980 proper.push(part.toLowerCase());
22983 // TODO some levenstein on the words
22984 var properPhrase = proper.join(' ');
22985 // Check the words are valid
22986 var isValid = mnemonic.check(properPhrase);
22988 return
"Invalid mnemonic";
22993 function findDerivationPathErrors(path) {
22998 function displayBip32Info() {
23000 var rootKey = bip32RootKey.toBase58();
23001 DOM.rootKey.val(rootKey);
23002 var extendedPrivKey = bip32ExtendedKey.toBase58();
23003 DOM.extendedPrivKey.val(extendedPrivKey);
23004 var extendedPubKey = bip32ExtendedKey.toBase58(false);
23005 DOM.extendedPubKey.val(extendedPubKey);
23006 // Display the addresses and privkeys
23007 clearAddressesList();
23008 displayAddresses(
0,
20);
23011 function displayAddresses(start, total) {
23012 for (var i=
0; i
<total; i++) {
23013 var index = i+ start;
23014 var key = bip32ExtendedKey.derive(index);
23015 var address = key.getAddress().toString();
23016 var privkey = key.privKey.toWIF();
23017 addAddressToList(index, address, privkey);
23021 function showMore() {
23022 var start = DOM.addresses.children().length;
23023 var rowsToAdd = parseInt(DOM.rowsToAdd.val());
23024 if (isNaN(rowsToAdd)) {
23026 DOM.rowsToAdd.val(
"20");
23028 if (rowsToAdd
> 200) {
23029 var msg =
"Generating " + rowsToAdd +
" rows could take a while. ";
23030 msg +=
"Do you want to continue?";
23031 if (!confirm(msg)) {
23036 setTimeout(function() {
23037 displayAddresses(start, rowsToAdd);
23042 function clearDisplay() {
23043 clearAddressesList();
23045 hideValidationError();
23048 function clearAddressesList() {
23049 DOM.addresses.empty();
23052 function clearKey() {
23053 DOM.rootKey.val(
"");
23054 DOM.extendedPrivKey.val(
"");
23055 DOM.extendedPubKey.val(
"");
23058 function addAddressToList(index, address, privkey) {
23059 var row = $(addressRowTemplate.html());
23060 row.find(
".index span").text(index);
23061 row.find(
".address span").text(address);
23062 row.find(
".privkey span").text(privkey);
23063 DOM.addresses.append(row);
23066 function hasStrongRandom() {
23067 return 'crypto' in window && window['crypto'] !== null;
23070 function disableForms() {
23071 $(
"form").on(
"submit", function(e) {
23072 e.preventDefault();
23076 function setBip44DerivationPath() {
23077 var purpose = parseIntNoNaN(DOM.bip44purpose.val(),
44);
23078 var coin = parseIntNoNaN(DOM.bip44coin.val(),
0);
23079 var account = parseIntNoNaN(DOM.bip44account.val(),
0);
23080 var change = parseIntNoNaN(DOM.bip44change.val(),
0);
23082 path += purpose +
"'/";
23083 path += coin +
"'/";
23084 path += account +
"'/";
23086 DOM.bip44path.val(path);
23089 function parseIntNoNaN(val, defaultVal) {
23090 var v = parseInt(val);
23097 function showPending() {
23099 .text(
"Calculating...")
23103 function hidePending() {